通过 Claude Code 源码,来分析 Anthropic 是如何使用 Harness 让 Agent 可以稳定长时间运行?
一场意外的”公开课”
前两天, Claude Code 的源码泄露了。史诗级“被动开源”:Claude Code 50万行源码泄露,大模型巨头的底牌全被看光了?
全球开发者社区都开始狂欢了。
但不仅仅是拿到了源码,而是因为终于能看到 Anthropic 是怎么让 AI 写代码这么稳定的了,了解它底层实现逻辑。
说实话,很多人以为 AI 写代码靠的是”模型聪明”或者”神奇的 Prompt”。
看完源码,才发现——完全不是这么回事。
真正让 Claude Code 稳定运行的,是一套厚重的工程结构,叫 Harness (Agent 治具)。
今天我就用大白话,给你拆解一下这套系统。
Harness 是什么
Harness(Agent Harness)是 AI Agent 技术栈中的一个层级概念。要理解它,需要先区分三层架构:
Framework → Runtime → Harness
LangChain 团队提出了这个分层:LangChain 是 Agent Framework(提供抽象和构建模块),LangGraph 是 Agent Runtime(提供持久化执行、流式传输、人在回路等基础设施),而 DeepAgents 是 Agent Harness(在框架之上进一步封装,自带默认 prompt、工具处理、规划能力、文件系统访问等,开箱即用)。
简单说:Harness 是一个管理不确定性的系统。
大语言模型( LLM )有个致命问题:不稳定。
Harness 的任务,就是把不稳定的模型,变成可预期、可管理的产品。
因为这个词本身带有”马具/缰绳”的隐喻——LLM 就像一匹强壮的马,能力强大但没有方向感和边界意识,Harness 就是缰绳和马具,控制它的方向和行为。
没有 Harness ,模型就是一台失控的野马。
核心 1 :三层记忆架构
问题: AI 容易忘事
你跟 AI 聊着聊着,它突然问你:”我们刚才在说什么?”
这就是上下文太长,模型”注意力”分散了。
Claude Code 的解决方案:状态外部化
不把对话当唯一载体,而是把任务状态写到文件里。
比如: – feature-list.md – 功能清单 – progress-log.md – 进度记录 – CLAUDE.md – 项目说明
每次 AI 重新进场,先读这些文件,直接知道当前状态,不用盲猜。
三层记忆架构
|
|
|
|
|---|---|---|
| 绘画记忆 |
|
|
| 持久记忆 |
|
|
| 团队记忆 |
|
|
核心思想:不要指望模型记得住,而是帮它”记笔记”。
核心 2 :四层上下文压缩
问题:对话太长, AI 会忘
你跟 AI 聊了 100 轮,它还记得第 1 轮说什么吗?
记不住。
Claude Code 的解决方案:压缩旧内容
关键原则:能用规则,就不用模型。
|
|
|
|
|---|---|---|
| V 压缩 |
|
|
| 自动压缩 |
|
|
| 传统压缩 |
|
|
| Session Memory 压缩 |
|
|
目标:保证长对话下,记忆依然清晰。
核心 3 :确定性控制下沉
问题: Prompt 不靠谱
很多人把规则写在 Prompt 里:”你一定要记得 XXX”。
但 AI 会忘,尤其是上下文太长的时候。
Claude Code 的解决方案:下沉到系统层
把”必须遵守的规则”写到代码里,而不是 Prompt 里。
比如: – “编辑后必须格式化” → 系统自动执行 – “配置改动必须记录” → Hook 自动拦截 – “危险操作必须审批” → 权限系统强制执行
不要期待模型乖乖听话,而是用系统强制保证。
核心 4 :三段式权限设计
问题: AI 太危险
AI 能改文件、跑命令、连网络,这很危险。
但如果每次都要人工审批,用户会烦,然后盲目点”同意”。
Claude Code 的解决方案:三段式中介层
|
|
|
|
|---|---|---|
| 自动放行 |
|
|
| 条件式自动 |
|
|
| 高风险拦截 |
|
|
目标:减少无意义的审批,聚焦真正危险的操作。
核心 5 :上下文防火墙
问题:主对话被污染
AI 在调试代码时,会输出大量报错信息、失败尝试。
这些东西都堆在主对话里,会把上下文撑爆。
Claude Code 的解决方案:多 Agent 架构
主控 Agent 只负责规划和决策。
具体任务交给子 Agent (如 generator 、 evaluator )处理。
子 Agent 完成后,只回传结论和产出,不回传中间的调试、报错、失败尝试。
这就是”上下文防火墙”:隔离噪音,保护主对话。
核心 6 :验证回路
问题: AI 生成 ≠ 正确
AI 能生成代码,但不代表代码是对的。
Claude Code 的解决方案:验证比生成更重要
让 AI “看到执行后的世界”。
|
|
|
|---|---|
| 运行测试 |
|
| 查看日志 |
|
| 端到端检查 |
|
| Reviewer Agent |
|
只有具备验证回路, AI 才能从”代码生成器”变成”可靠交付系统”。
总结: Claude Code 的工程哲学
看完这套系统,我总结了一个核心思想:
不要指望单一模型解决所有问题。
把模型当引擎,用 Harness 兜底。
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
这才是让 AI Agent 长时间稳定运行的真正秘密。
这对你意味着什么
如果你是开发者
学习 Harness 思想 – 不要只靠 Prompt ,要设计系统 – 把规则下沉到代码层
参考这套架构 – 状态外部化 – 上下文压缩 – 权限分层 – 验证回路
关注 AI Agent 开发 – LangChain 、 Dify 等框架 – 多 Agent 协作模式
如果你是产品经理
理解 AI 的局限性 – AI 不稳定,需要系统兜底 – 不要指望 AI 一次做对
设计 AI 产品时考虑 Harness – 权限控制 – 状态管理 – 验证机制
降低用户预期 – AI 不是万能的 – 需要人工审核和兜底
最后说一句
这次源码泄露,其实全球开发者来说都是件好事。
它让我们看到: AI 产品的成功,不只是模型的能力,更是工程的智慧。
现在 AI 产品能稳定运行很久,不只是”模型聪明”,更是后面的产品能力。
要夸的是背后的 Harness 设计。
这才是真正的功臣。
AI 的未来,不只是模型,更是系统。

夜雨聆风