Github 原文:shareAI-lab/learn-claude-code
恭喜你学到了这里!现在你已经把前面 19 章的全部基础的内容学会了,感谢你的刻苦努力!
问题
就像原文中说的,前面19 章每一章只加了一个模块,因为要考虑方便教学和学习,但不言而喻,一个真正的 Agent一定是这些全部都有的:
-
工具分发和权限边界
-
hooks 扩展点
-
todo 计划和任务图
-
技能、记忆、系统 prompt 组装
-
压缩和错误恢复
-
后台任务和 cron 调度
-
团队、协议、自治认领
-
worktree 隔离
-
MCP 外部工具接入
难点不是把功能堆起来,而是看清楚它们都挂在循环的哪个位置。这一章就是充分发挥 harness 的思想——把所有组件归位。
解决方案
我们这次,终于不用在新加上什么东西了,这次,就是组合成一个完整的 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
→ 下一轮
循环本身仍然是同一个结构:
-
调用模型,检查响应里是否出现
tool_useblock -
执行工具,把结果追加回
messages(CC 源码里也不直接信任stop_reason == "tool_use",而是以实际出现的 tool_use block 作为是否继续工具轮的信号)。
真正变化的是循环周围的 harness 变完整了。