00:为什么要拆 Claude Code:从一次回答到工程系统
00:为什么要拆 Claude Code:从一次回答到工程系统
后面这个系列,我准备把 Claude Code 当成一个真实的 coding agent 来拆。
这里先不急着讲安装、命令和使用技巧。我真正想追的问题是:
一个能在真实代码仓库里持续工作的 AI Coding Agent,到底由哪些工程系统组成?
普通的大模型问答更像一次请求响应。用户问一个问题,模型根据当前输入给出答案。这个过程可以很强,但它主要发生在文本里。
Claude Code 面对的是另一种现场。用户给它的往往是一个工程目标:修一个报错、补一个功能、解释一段代码、重构一个模块、跑测试,最后还要说明改了什么、怎么验证。
只看模型本身,很难解释完整过程。
真正让 Claude Code 从聊天框变成工程系统的,是模型周围那套运行时机制:它要读仓库、找文件、选择上下文、调用工具、修改代码、执行命令、处理失败、维持计划,还要判断什么时候继续、什么时候停下来、什么时候问用户。
所以 00 这篇先把系列入口铺好:
我为什么要写这个系列,后面准备怎么拆,最后希望沉淀出什么。

这个系列的写法边界
我会把它写成学习笔记和拆解记录。
安装、配置、命令用法、slash command 写法这些内容,后面可能会顺手提到,但不会作为主线。它们更像使用层面的入口,能帮人上手,却还不能解释一个 coding agent 为什么能持续完成任务。
提示词也一样。Prompt System 会单独写一篇,因为它确实影响 agent 的行为。但如果只盯着提示词,很容易把 Claude Code 看成“会说话的模型”。真实的 coding agent 还要靠工具、上下文、权限、计划、观测和恢复机制一起工作。
我更想把 Claude Code 当成一个工程样本来看:
- 它如何把用户的一句话变成可推进的任务状态。
- 它如何决定什么时候读文件、什么时候搜索、什么时候修改。
- 它如何把工具结果放回下一轮判断。
- 它如何处理权限、失败、上下文过长和目标漂移。
- 它如何在长任务里保持可观察、可恢复、可收束。
换成一句更朴素的话:
我想看懂 Claude Code 背后那套让 agent 持续工作的工程机制。
我为什么要做这个系列
我一开始对 coding agent 的理解很直接:模型够强,工具接好,应该就能做事。
真正用起来以后,这个理解很快变得不够用了。
同样是“帮我修一个 bug”,普通聊天模型可能会列出几种原因;coding agent 要进入仓库现场,先看目录,再读相关文件,必要时跑命令,拿到错误输出以后继续判断,最后完成修改并验证结果。
这里面每一步都牵涉工程选择:
- 工具怎么设计,模型才更容易选对、用对。
- 上下文怎么筛,才能把关键证据放进去。
- 计划什么时候需要显式列出来。
- 文件写入和命令执行怎么控风险。
- 测试失败以后,是继续排查、换路,还是停下来问用户。
- 最后怎么证明任务确实完成了。
这些问题比某一个产品更稳定。
产品会变,模型会变,API 会变。只要 agent 要在真实环境里完成任务,它就会碰到这些工程问题。
这也是我写这个系列的原因。我想把“Claude Code 好用在哪里”“某个 agent 为什么卡住”这类感受,拆成可以复盘的工程判断。
以后再看 Cursor、Codex、Devin、OpenHands、LangGraph 或其他 agent 系统时,我希望脑子里有一套稳定的问题清单,而不是只看产品表面。
后面会按什么顺序拆
后面的文章会先拆 11 个基础模块,最后再用一篇文章把它们串成完整运行链路。
这个顺序按 coding agent 跑起来时遇到的问题来排。
1. Agent Loop / 运行时主循环
第一篇先看主循环。
用户给出目标以后,Claude Code 如何一轮一轮地观察、判断、行动、接收反馈,直到任务完成、阻塞或需要用户决策?
这一篇要回答的是:
为什么 coding agent 不能只是一次 LLM 调用?
2. Tool System / 工具系统
主循环负责推进任务,工具系统让 agent 真正能动手。
这一篇会拆最小工具集:看目录、搜索、读文件、编辑、执行命令,以及工具结果如何回到下一轮判断。
核心问题是:
模型说“我要做一件事”以后,系统如何把它变成可检查、可执行、可回收结果的工具动作?
3. Prompt System / 提示词与行为协议
提示词更像 agent 的行为协议。
这一篇会拆 system prompt、工具描述、项目规则、协作风格分别约束什么,以及哪些规则适合写进 prompt,哪些更适合交给工具和权限系统。
核心问题是:
Prompt 规则和工程规则的边界在哪里?
4. Memory System / 记忆系统
记忆解决长期适配问题。
这一篇会看 CLAUDE.md、项目规则、用户偏好、历史经验分别适合保存什么,也会看错误记忆如何污染后续任务。
核心问题是:
什么信息值得长期保存,什么信息只应该留在当前会话?
5. Context Management / 上下文管理
真实仓库太大,模型一次读不完。
这一篇会拆 agent 如何决定读什么、跳过什么,保留什么、压缩什么,什么时候搜索,什么时候打开文件,什么时候总结历史。
核心问题是:
Prompt engineering 和 context engineering 到底有什么不同?
6. Planning & Task State / 计划与任务状态
复杂任务需要一套外显的状态。
这一篇会看 todo、task state、阶段性验证、完成条件这些机制如何让长任务保持方向。
核心问题是:
什么样的任务需要显式计划?计划太粗或太细分别会带来什么问题?
7. Permission & Safety / 权限与安全
只要 agent 能写文件、跑命令,权限系统就会进入核心链路。
这一篇会拆文件写入、shell 命令、网络访问、敏感信息读取的风险差异,以及 allow、deny、ask 这类策略如何影响效率和信任。
核心问题是:
哪些行为绝不能只靠 prompt 约束?
8. Observability / 可观测系统
执行过程看得见,agent 才更容易调试,也更容易被信任。
这一篇会拆工具调用日志、命令输出、错误信息、上下文变化、token 使用、成本追踪这些信息为什么重要。
核心问题是:
如何从执行轨迹里看懂 agent 为什么做出某个决策?
9. Fallback & Recovery / 兜底与失败恢复
Agent 一定会失败,恢复能力决定它能走多远。
这一篇会看工具失败、命令失败、测试失败、上下文不足、权限拒绝、模型误判时,系统应该如何重试、换路、降级或请求用户介入。
核心问题是:
Agent 如何避免在失败后反复执行无效动作?
10. Hooks & Extension / Hook 与扩展机制
Claude Code 可以接入真实工作流。
这一篇会拆 hook、skill、slash command、MCP 分别解决什么问题,哪些规则适合自动化,哪些流程适合沉淀为可复用能力。
核心问题是:
Prompt、hook、skill、MCP 的边界分别在哪里?
11. Multi-Agent / Subagent / 多 Agent 协作
多 agent 解决的是任务隔离、角色分工和上下文边界问题。
这一篇会拆 subagent 解决什么问题,多个 agent 如何隔离上下文、任务和权限,以及 planner、coder、reviewer、tester 这类角色什么时候真的有必要。
核心问题是:
什么时候应该引入 subagent,什么时候单 agent 反而更合适?
12. 完整运行链路
前面 11 篇按模块拆。最后一篇换一个角度,把它们重新串起来。
这时问题变成:
用户输入一个目标以后,一个 coding agent 内部到底经历了什么?
这一篇会把目标理解、记忆加载、提示词拼装、上下文选择、工具调用、权限判断、失败恢复、验证结果放到同一条链路里看。
如果前面是在拆零件,最后这一篇就是看机器如何跑起来。
最后想得到什么
这个系列写完以后,我希望得到一套理解 coding agent 的工程框架。
以后再看任何一个 agent 系统,都可以先问同一组问题:
- 它的主循环是什么?
- 它有哪些基础工具?
- 它如何组织提示词和项目规则?
- 它如何管理记忆和上下文?
- 它如何规划任务并维护状态?
- 它如何处理权限和安全?
- 它如何记录执行轨迹?
- 它如何从失败中恢复?
- 它如何扩展到外部工作流?
- 它什么时候需要多 agent?
这些问题能帮助我把一个产品拆回工程系统。
更进一步,如果以后自己做一个 coding agent,这个系列也应该能沉淀出一张设计清单:最小工具集是什么,主循环怎么跑,状态怎么维护,权限怎么拦,失败怎么处理,最后怎么验证。
所以我拆 Claude Code,不是为了证明它完美。
我更想借它回答一个更大的问题:
AI Agent 如何从一次聪明的回答,变成一个可维护、可调试、可协作的工程系统?
更多推荐

所有评论(0)