前十四章分别解释一种机制。s15 不再增加孤立能力,而是回答:组件接到同一系统时,谁先运行、状态放在哪里、异步事件如何回到对话?

前面章节在叙事上递进,但并非每个 code.py 都完整继承上一章:s11、s12、s14 等是从较小内核分出的机制样例,s15 才是累计能力的重组点。

用户输入与异步事件

Hooks → 压缩 → Memory/Skills/MCP prompt 组装

LLM
        ├── 无 tool_use → Stop Hooks → 返回或继续
        └── tool_use → Permission → 分发 → PostToolUse → 下一轮

集成的关键是顺序

  • cron 与后台通知在模型调用前进入消息;
  • 压缩在组装请求前运行,但不能拆散工具调用与结果;
  • Permission 必须在 handler 前;
  • PostToolUse 观察已允许并执行的结果;
  • Memory 和 Skills 进入 prompt,完整技能按需加载;
  • Stop Hook 在没有实际 tool_use 时决定是否结束。

多种“任务”需要分层命名

机制作用
TodoWrite当前会话的轻量清单
Task graph可依赖、可认领的持久任务
task 工具一次性、隔离上下文的 Subagent
Background task已启动但未完成的 Shell 工作
Cron job未来重新交付的 prompt
Workflow tasks16 中脚本编排的一次运行

若代码和产品都只叫它们 task,状态、权限与恢复会难以推理。

当前源码与正文清单共有 26 个内建工具;上游 README 后部对比表写成 25,是文档与实现的小偏差。核对能力数量时应以完整清单和源码为准。

异步事件必须能唤醒主循环

后台命令、cron 和 teammate 可能在用户没有输入时产生事件。宿主监听队列和收件箱,事件到达即可开启新一轮,Lead 无需轮询。

自动唤醒不等于自动授权。异步轮次无法确认时,需要确认的工具直接拒绝,避免线程争抢输入或无人观察的副作用。

所有执行入口经过同一政策

Lead、Subagent 和 teammate 都能调用工具。若只有前台 Agent 经过 PreToolUse,委派就成为权限绕过路径。每个入口必须共享权限与审计,同时按角色收窄工具集合。

MCP 声明不改变这条原则;Worktree 只改变默认 cwd,不是安全沙箱。

错误恢复也是循环的一部分

课程处理限流、服务不可用、输出 token 不足和 prompt 过长。恢复策略需要预算与停止条件,否则退避、continuation 或 reactive compact 也可能形成无限循环。

建议覆盖的集成测试

  • Hook 与 Permission 对所有角色一致生效;
  • 压缩后工具调用与结果仍成对;
  • MCP 连接后下一轮工具池更新;
  • 后台、cron 和团队事件唤醒 Lead;
  • 异步轮次不弹出确认;
  • task owner、worktree cwd 与计划审批一致;
  • 模型失败后队列消息可恢复。

小结

Integrated Harness 的核心不是堆功能,而是让机制共享一个可解释的事件循环。组件顺序、执行入口、异步唤醒、角色权限和错误恢复共同决定系统可靠性。

参考资料