跳到主要内容

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 编程工具的竞争力不在于"用了多大的模型",而在于工程机制的设计质量