Claude code泄漏源码,Harness Engineering(驾驭工程)分析
深度拆解 Claude Code 源码:揭秘 AI 智能体的“黄金缰绳”——驾驭工程
前言:
很多人认为 AI 智能体(Agent)的强大在于模型能力,但 Claude Code 的源码告诉我们:真正能落地的 AI,靠的是“驾驭工程”(Harness Engineering)。 >
如果说 LLM 是野性难驯的千里马,那么“驾驭工程”就是那一套精密的缰绳、马鞍和嚼子。本文将带你深入 Claude Code 源码底层,看 Anthropic 是如何通过约束、反馈、控制和改进,构建出一套工业级的 Agent 运行框架。
核心哲学:人类掌舵,智能体执行
驾驭工程 (Harness Engineering) 并非为了削弱 AI,而是为了给它打造一套约束机制、反馈回路、工作流控制与持续改进循环。
其核心思想可以概括为:Human Steer, Agent Execute.
一、 架构全景图:Agent 的“马具”系统
在 Claude Code 的设计中,Agent 不是孤立运行的,它被包裹在一个多层的“缰绳系统”中:
四大核心支柱:
-
1. 约束机制 (Constraints): 权限、沙箱、路径验证,确保 AI 不越界。 -
2. 反馈回路 (Feedback Loops): 实时进度、上下文传递、权限询问,实现人机协同。 -
3. 工作流控制 (Workflow Control): 任务调度、并发管理、生命周期循环。 -
4. 持续改进 (Continuous Improvement): 记忆系统、自动压缩、成本追踪。
二、 约束机制:构建纵深防御体系
Claude Code 的安全不是靠一句 Prompt,而是靠多层物理隔离。
2.1 权限系统:声明式规则
源码中定义了严密的权限优先级,确保企业级策略(Policy)永远高于 AI 的自主决定。
-
• 最高优先级: policySettings(组织政策) -
• 最低优先级: session(当前会话)
2.2 危险操作的“熔断”
在 readOnlyValidation.ts 中,系统会严格校验 Bash 命令。例如:
-
• 防止沙箱逃逸: 自动阻止 cd + git的组合攻击。 -
• 路径保护: 严禁 AI 触碰 .claude/skills/等核心敏感目录。
源码金句: “优先拒绝(Fail-Safe)”是驾驭工程的第一准则。
三、 反馈回路:让 AI 执行透明化
如何避免 AI 陷入“黑盒执行”?Claude Code 引入了高度复杂的反馈机制。
3.1 实时进度报告 (onProgress)
通过 AgentToolProgress 和 BashProgress 回调,用户可以在终端实时看到 AI 正在做什么,而不是死等结果。
3.2 交互式权限询问 (canUseTool)
当 AI 尝试执行高危操作(如删除文件)时,系统会从 allow 状态自动降级为 ask。此时,决策权交还给人类,触发交互式对话框。
四、 工作流控制:复杂的任务调度
4.1 核心主循环 (query.ts)
Claude Code 的运行是一个无限 while(true) 循环,每一轮循环都在做四件事:
-
1. 上下文压缩: 清理冗余 Token。 -
2. API 调用: 与 Claude 交互。 -
3. 工具执行: 运行代码或命令。 -
4. 终止判定: 检查预算或步数是否超限。
4.2 并发与安全
并不是所有的工具都能并行。源码通过 isConcurrencySafe 接口对任务进行分批(Batching),确保文件操作不会产生冲突。
五、 持续改进:AI 的“长期记忆”
5.1 三层压缩架构
为了解决上下文限制,Claude Code 实现了精妙的压缩阶梯:
-
• Snip (快速释放): 每轮删除极旧消息。 -
• MicroCompact (缓存编辑): 空闲 60 分钟后自动清理。 -
• AutoCompact (摘要生成): 接近限制时,将对话浓缩为摘要。
5.2 记忆系统 (MEMORY.md)
这是驾驭工程的精髓。系统会自动维护一个 MEMORY.md 文件,存储用户偏好(如“不要使用 mock 数据库”)和项目背景。这让 AI 在下一次启动时,依然记得你的习惯。
六、 总结:驾驭工程的马具隐喻
我们可以用马具的部件来完美对应 Claude Code 的工程实现:
| 马具部件 | 源码实现 | 功能作用 |
|---|---|---|
| 缰绳 (Reins) | Permission Rules |
方向控制
|
| 马鞍 (Saddle) | QueryEngine |
稳定支撑
|
| 嚼子 (Bit) | Interrupt Mechanism |
紧急制动
|
| 笼头 (Halter) | Sandbox |
边界限制
|
| 马衣 (Blanket) | Compaction |
持久舒适
|
结语
Claude Code 的源码向我们展示了,未来的 AI 竞争,不仅是模型的竞争,更是工程化驾驭能力的竞争。 只有通过严密的“驾驭工程”,AI 才能从一个会聊天的机器人,进化为真正能够交付工业级成果的智能体助手。
📂 源码文件索引(部分):
-
• 权限核心: utils/permissions/permissions.ts -
• 沙箱适配: utils/sandbox/sandbox-adapter.ts -
• 主循环逻辑: query.ts -
• 记忆管理: memdir/memdir.ts
💡 互动环节:
你认为在 AI 智能体的开发中,最难“驾驭”的部分是什么?欢迎在评论区分享你的看法。
关注公众号,获取源码压缩包哦。
夜雨聆风