Comprehensive Agent — 全部机制,归到一个循环

"机制很多,循环一个" — 工具、权限、记忆、任务、团队、插件都挂在同一个 while True 上。

Github 原文:shareAI-lab/learn-claude-code

恭喜你学到了这里!现在你已经把前面 19 章的全部基础的内容学会了,感谢你的刻苦努力!

问题

就像原文中说的,前面19 章每一章只加了一个模块,因为要考虑方便教学和学习,但不言而喻,一个真正的 Agent一定是这些全部都有的:

  • 工具分发和权限边界

  • hooks 扩展点

  • todo 计划和任务图

  • 技能、记忆、系统 prompt 组装

  • 压缩和错误恢复

  • 后台任务和 cron 调度

  • 团队、协议、自治认领

  • worktree 隔离

  • MCP 外部工具接入

难点不是把功能堆起来,而是看清楚它们都挂在循环的哪个位置。这一章就是充分发挥 harness 的思想——把所有组件归位。

解决方案

Comprehensive Agent — 全部机制,归到一个循环

我们这次,终于不用在新加上什么东西了,这次,就是组合成一个完整的 harness:

用户输入
  → UserPromptSubmit hooks
  → cron/background 通知注入
  → context compact
  → memory + skills + MCP 状态组装 system prompt
  → LLM
  → has tool_use block?
      否 → Stop hooks → 返回
      是 → PreToolUse hooks + permission
          → TOOL_HANDLERS / MCP handlers / background dispatch
          → PostToolUse hooks
          → tool_result / task_notification 回 messages
          → 下一轮

循环本身仍然是同一个结构:

  1. 调用模型,检查响应里是否出现 tool_use block

  2. 执行工具,把结果追加回 messages(CC 源码里也不直接信任 stop_reason == "tool_use",而是以实际出现的 tool_use block 作为是否继续工具轮的信号)。

真正变化的是循环周围的 harness 变完整了