Claude Code 内部机制:从日志蒸馏出来的 6 个发现
通过完整记录一次 Claude Code 任务的 LLM 日志,我们看到了它告诉模型有哪些工具、如何处理上下文压缩、如何并行执行工具、以及如何保证多指令的 JSON 完整性。
背景
Claude Code 是一个黑盒产品。你输入指令,它输出代码——中间发生了什么?通过分析一次完整任务执行过程中 Claude Code 与 LLM 之间的完整交互日志,我们蒸馏出了 6 个关键机制。
发现 1:多指令分割与 JSON 完整性保证
当用户同时发出多个指令时(比如"先创建项目结构,再写配置文件,最后跑测试"),Claude Code 需要确保每个指令都被正确执行,且不会因为 JSON 格式不完整而中断。
机制:
- 指令被分割为独立的任务单元,每个单元有明确的开始和结束标记
- 在执行过程中,Claude Code 维护一个 JSON 缓冲区,只有确认当前单元的 JSON 完整后才提交
- 如果 JSON 不完整(模型输出被截断),Claude Code 会发起补全请求,而不是直接失败
启示:AI 编程工具的可靠性很大程度上取决于输出完整性校验。模型本身是不可靠的(可能截断、可能格式错误),工具层必须做校验和补全。
发现 2:上下文压缩与任务连贯性
随着任务执行,上下文会越来越长。Claude Code 怎么处理?
机制:
- 不是简单截断,而是语义压缩——保留关键决策点、删除冗余的中间推理步骤
- 压缩时保持任务的"连贯性"——即使删除了某些中间步骤,模型仍然知道"现在进行到哪一步"
- 使用一种类似"摘要 + 锚点"的策略:用摘要概括已完成的工作,用锚点标记当前进度
启示:上下文管理不是"删旧留新",而是"保留决策链路"。好的上下文管理让模型不会"失忆"。
发现 3:工具列表的动态呈现
Claude Code 不会把所有可用工具一次性灌给模型。
机制:
- 根据当前任务阶段,动态选择哪些工具对模型可见
- 比如写代码阶段,文件操作工具优先级高;部署阶段,Shell 命令工具优先级高
- 工具描述中包含使用约束(比如"这个工具只能读,不能写"),减少误用
启示:不是给模型"所有能力",而是给模型"当前需要的能力"。能力过多反而增加混淆和错误率。
发现 4:System Prompt 的层次结构
Claude Code 的 System Prompt 不是一个大段落,而是分层的:
- 身份层:你是谁(编程助手)、你的目标是什么
- 规则层:你必须遵守的规则(比如"先思考再行动"、"不确定的事情问用户")
- 工具层:你能调用哪些工具、每个工具的契约
- 格式层:你的输出必须是什么格式(JSON schema 等)
启示:System Prompt 的层次化设计让模型更容易理解自己的角色边界。这也是为什么 CLAUDE.md 能生效——它补充了规则层的内容。
发现 5:流式输出中的并行工具调用
在用户看到流式输出的同时,Claude Code 在后台并行执行多个工具调用。
机制:
- 模型输出一个"计划"(接下来要做 A、B、C),Claude Code 解析计划
- 如果 A、B、C 之间没有依赖关系,并行执行
- 流式输出给用户的是"正在做什么"的进度,而不是等待所有工具执行完才输出
启示:流式输出的核心价值不是"让用户看到 token 逐字出现",而是让用户知道系统正在工作,同时后台最大化并行度。
发现 6:压缩后的任务连贯性
这是发现 2 的补充。上下文压缩后,Claude Code 如何确保模型不"迷路"?
机制:
- 每次压缩时生成一个"进度快照"——当前状态、已完成项、待办项、阻塞项
- 这个快照作为新的上下文的"锚点",模型以此为起点继续推理
- 快照中包含关键的决策理由(为什么选了 A 方案),防止模型在后续执行中做出矛盾的决策
启示:决策理由的保留比决策结果更重要。模型可能忘记"做了什么",但只要记得"为什么这么做",就能保持一致性。
对 FDE 的启示
如果你要自己搭建一个类似 Claude Code 的系统,这 6 个发现直接对应了你需要解决的技术问题:
| 发现 | 对应技术问题 |
|---|---|
| JSON 完整性 | 输出校验与补全机制 |
| 上下文压缩 | 语义摘要 + 进度快照 |
| 动态工具列表 | 工具路由与权限管理 |
| System Prompt 分层 | 规则引擎设计 |
| 并行工具调用 | 任务依赖图解析与调度 |
| 压缩后连贯性 | 决策理由持久化 |
这些问题不是"大模型"的问题,而是工程系统的问题。这也正是 FDE 岗位的核心价值——把概率模型变成可靠的工程系统。
总结
Claude Code 看起来"智能"的背后,是一层又一层的工程机制在支撑。模型提供了"理解"和"生成"的能力,但可靠性、效率、用户体验,全靠工具层的工程实现。
这 6 个发现告诉我们:AI 编程工具的竞争力不在于"用了多大的模型",而在于工程机制的设计质量。