Harness Engineering
前言:Harness Engineering 的诞生
一个令人不安的事实
2026 年,AI Agent 是整个软件行业投入最集中的方向之一。
Claude Code 已成为 Anthropic 增长最快的产品线;Cursor 被硅谷的工程师称为"最好的 AI 编辑器";Devin 声称能独立完成软件工程任务;AutoGPT 变体层出不穷;LangChain 的 Star 数突破 100,000。每一周,都有新的 Agent 产品发布,声称"会改变一切"。
但在这股热潮背后,有一个被刻意回避的事实:
绝大多数 Agent 项目在 demo 阶段惊艳全场,到生产环境就一地鸡毛。
数据会说话。这不是印象流,几家可以点名的机构给出了方向一致的数字:
- 联想《CIO Playbook 2025: It's Time for AI-nomics》(2025 年 2 月发布,调研由 IDC 执行)报告:受访企业平均启动 33 个 AI POC,只有 4 个真正进入生产——88% 的 POC 止步于此。报告把原因归给组织侧的就绪度:数据、流程、IT 基础设施。
原文:https://pages.lenovo.com/rs/183-WCT-620/images/CIO%20Playbook%202025%20-%20Its%20Time%20for%20AI-nomics_February%202025_AP242508IB.pdf - Gartner 在 2025 年 6 月 25 日的新闻稿《Gartner Predicts Over 40% of Agentic AI Projects Will Be Canceled by End of 2027》中预测:到 2027 年底,超过 40% 的 agentic AI 项目将被取消,三条原因是成本失控、商业价值不清、风险控制不足。同一份材料还指出,市场上数千家号称做 agentic AI 的厂商里,Gartner 认为只有约 130 家名副其实,其余属于"agent washing"。
原文:https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027 - RAND 2024 年的研究报告《The Root Causes of Failure for Artificial Intelligence Projects and How They Can Succeed: Avoiding the Anti-Patterns of AI》(编号 RR-A2680-1)开篇引用的行业估计是:超过 80% 的 AI 项目以失败告终——是不涉及 AI 的普通 IT 项目失败率的两倍。这份报告本身的贡献不是这个数字,而是访谈 65 位一线数据科学家与工程师后归纳出的失败根因:几乎都在领导力与组织层面——目标错配、数据地基薄弱、高层支持中途消退,而不是技术不行。
原文:https://www.rand.org/pubs/research_reports/RRA2680-1.html
三条数据的口径并不相同:联想/IDC 统计的是 POC 的转化率,Gartner 预测的是 agentic 项目的取消率,RAND 转述的是 AI 项目的整体失败率。它们不能相加,也不该互相印证成一个"行业失败率"。放在一起只说明一件事:从能跑到能上线之间,隔着一层系统性的东西。
为什么会这样?不是模型不够强。GPT-5、Claude Opus 4.5、Gemini 3、DeepSeek-R1 的能力已经远超两年前的想象。问题出在模型之外——出在"驾驭模型"的那一层工程上。
我把这层工程叫做 Harness Engineering。
什么是 Harness Engineering
Harness 的英文原意是"马具"——缰绳、马鞍、马镫的总和。一匹烈马再强壮,没有马具也骑不动。
大模型就是这匹烈马。它的原始能力惊人:能写代码、会推理、懂多语言、支持 toolcall。但把这些能力安全、可靠、可观测地组织成一个真实的产品——这不是模型能自己做到的事。它需要一整套工程。
这套工程至少涵盖 9 个维度:
mindmap
root((Harness<br/>Engineering))
工具设计
粒度决策
接口稳定性
错误边界
提示词架构
System Prompt 分层
指令冲突消解
prompt template 管理
上下文工程
有限 context 的高效利用
历史对话压缩
长文档分块
状态与记忆
短期 vs 长期
session 状态机
记忆检索
权限与沙箱
能做什么
不能做什么
隔离策略
多 Agent 协调
任务分解
并发执行
结果合成
Human-in-the-Loop
何时插入人类
中断和恢复
人机协作 UX
可观测性
决策追踪
错误定位
行为回放
评估与测试
成功率度量
回归测试
对抗性测试
这张图里每一个分支,都对应本专栏的一个或几个章节。它们没有一个是模型能自己解决的——全都是工程问题。
为什么叫 "Harness" 而不是 "Framework"
Framework(框架)这个词被用滥了。市面上每一个 LangChain、Semantic Kernel、LlamaIndex 都把自己叫 framework。但问题是:
Framework 是可替换的,Harness 是不可替换的。
你可以今天用 LangChain、明天切 LangGraph、后天换自研——framework 一换,一半代码要重写。但 Harness Engineering 讲的那些设计原则不会过时:
- 工具粒度应该按"最小可撤销操作"设计——无论用哪个 framework 都这样
- System prompt 应该分层——无论你用 openai.chat.completions 还是 claude.messages 都这样
- Agent 崩溃恢复应该 fail-fast 不要半修复——无论在 Python 还是 TypeScript 都这样
Framework 是工具,Harness Engineering 是方法论。前者帮你解决具体问题,后者帮你判断什么是正确的问题。
为什么现在写这个专栏
本专栏的背景素材来自杨艺韬讲堂过去一年的系列源码专栏:
- 《Claude Code 源码深度解析》——对 Claude Code
src/目录 38 万行 TypeScript 的剖析 - 《LangChain 设计与实现》《LangGraph 设计与实现》——对两个通用 Agent 框架执行引擎的拆解
- 《OpenClaw 设计与实现》——对开源项目 OpenClaw(Provider 热切换、Agent 编排、可观测性)的源码剖析笔记
沿着这些专栏反向归纳,会发现一个反复出现的信号——Agent 工程这个领域的知识极度碎片化:
- 最佳实践散落在 Twitter 帖子、GitHub README、公司内部文档里
- 没有人做过系统整理
- 市面上的书要么是具体框架的教程(半年就过时),要么是笼统的 AI 概念科普(看完还是不会做)
这个专栏试图填补这个空白:讲方法论,而不是讲某个框架。
本专栏的材料来源
方法论必须有实例支撑。本专栏的素材来自四个真实项目:
| 项目 | 版本 | 代码规模 | 本专栏用途 |
|---|---|---|---|
| Claude Code | 2026.3.31 快照 | ~38 万行 TS(src/ 下 .ts 实测 379997 行) |
全专栏主要案例(工具、权限、记忆、编排) |
| LangGraph | 1.1.6 | ~6.1 万行 Py(libs/ 排除 tests 实测 61283 行) |
状态机、中断、checkpointer 实现参考 |
| LangChain | langchain-core 1.2.26 系 | ~14.7 万行 Py(libs/core+langchain+langchain_v1 排除 tests 实测 147303 行) |
工具抽象、Agent 基础组件对比 |
| OpenClaw | 2026.3.x(开源项目) | ~67 万行 TS(全仓实测,含测试与扩展) | Provider 路由、热切换、Gateway 架构 |
口径说明:上表每个数字都注明了统计范围,因为"多少万行"离开范围就没有意义——含不含测试、含不含 vendor、含不含 partner 包,结论可以差出一倍。Python 侧两个数字可以这样复现:
# LangGraph git clone https://github.com/langchain-ai/langgraph.git && cd langgraph find libs -name '*.py' -not -path '*/tests/*' -print0 | xargs -0 wc -l | tail -1 # LangChain(checkout 到与《LangChain 设计与实现》同一基准快照) git clone https://github.com/langchain-ai/langchain.git && cd langchain git checkout langchain-core==1.2.26 find libs/core libs/langchain libs/langchain_v1 -name '*.py' -not -path '*/tests/*' -print0 | xargs -0 wc -l | tail -1版本说明:LangChain 与 LangGraph 的 1.0 于 2025 年 10 月 17 日同日 GA。本专栏采用 1.x 分支,与《LangChain 设计与实现》专栏的基准快照保持一致;本专栏中出现的
StateGraph、interrupt/Command、langgraph.store、langchain_core.*等 API 均以 1.x 为准。涉及 0.x 时代的写法(如AgentExecutor)只在讲历史演进时出现,并会明确标注。
Claude Code 是引用最多的案例——它是目前少数可以近距离观察的、复杂度足够高的生产级 Agent Harness,其工具系统、权限模型、记忆机制、多 Agent 协调的设计都极具参考价值。本专栏中引用的 Claude Code 行为、prompt、数据结构来自对其公开文档、官方博客、技术分享的研究,以及作者对其可观测行为(CLI 交互、工具调用模式、错误处理策略等)的工程还原;部分实现细节基于作者获得的源码快照进行分析,会在相关章节注明。
本专栏的八篇结构
全专栏 22 章(含前言),分成八篇:
graph TB
subgraph "第一篇 · 开篇(ch00-01)"
P0[ch00 前言<br/>你在读的这一章]
P1[ch01 为什么是 Harness]
end
subgraph "第二篇 · 架构基础(ch02-04)"
P2[ch02 架构模式]
P3[ch03 Agent 主循环]
P4[ch04 上下文工程]
end
subgraph "第三篇 · 工具工程(ch05-07)"
P5[ch05 工具设计]
P6[ch06 工具编排]
P7[ch07 工具错误恢复]
end
subgraph "第四篇 · 提示词架构(ch08-10)"
P8[ch08 Prompt 架构]
P9[ch09 指令优先级]
P10[ch10 Few-shot、CoT 与动态提示策略]
end
subgraph "第五篇 · 状态与记忆(ch11-13)"
P11[ch11 短期记忆与上下文压缩]
P12[ch12 长期记忆与知识管理]
P13[ch13 多轮对话与会话状态机]
end
subgraph "第六篇 · 安全与权限(ch14-15)"
P14[ch14 权限模型]
P15[ch15 沙箱与隔离]
end
subgraph "第七篇 · 协调(ch16-17)"
P16[ch16 多 Agent 协作]
P17[ch17 Human-in-the-Loop]
end
subgraph "第八篇 · 生产化(ch18-21)"
P18[ch18 评估与测试]
P19[ch19 可观测性]
P20[ch20 成本控制与性能优化]
P21[ch21 设计模式总结]
end
P1 --> P2 & P3 & P4
P4 --> P5 & P6 & P7
P7 --> P8 & P9 & P10
P10 --> P11 & P12 & P13
P13 --> P14 & P15
P15 --> P16 & P17
P17 --> P18 & P19 & P20 & P21
style P0 fill:#3b82f6,color:#fff,stroke:none
style P21 fill:#10b981,color:#fff,stroke:none
八篇是一条自洽的工程 pipeline——从底层架构到顶层运营。你可以线性读完、也可以按问题驱动跳读。
每一章的写作节奏
本专栏每一章都按同一个节奏组织:
- 问题域:这一章解决的是什么工程问题?为什么它很难?
- 设计意图:理想的解法应该具备哪些特征?
- 真实系统的实现:Claude Code / LangGraph / OpenClaw 是怎么做的?为什么这样选?
- 可迁移的方法论:从具体实现提炼出来的、跨框架跨语言的工程原则
注意第 4 步——可迁移性是本专栏的核心承诺。具体代码会过时,但"工具粒度应该按最小可撤销操作设计"这样的原则不会过时。如果你读完一章只记住了某个 framework 的 API 调用,那我们都失败了。
读者画像
本专栏为以下几类人写:
- AI 应用开发者:正在构建或准备构建 Agent 系统的工程师;每天都在和"prompt 不听话"、"工具调用出错"、"多轮对话失忆"斗争
- 技术负责人:需要评估 Agent 方案可行性、制定技术策略的决策者;需要一套可信的工程论证而不是 demo 视频
- 框架开发者:正在设计或改进 Agent 框架的架构师;从"造轮子"角度看别人的方案怎么做
- 研究者:对 Agent 系统架构感兴趣的学术研究者
- 所有被 Agent 的不可控性折磨过的人:尤其是那些看过 Claude Code 的能力、又被自己的 Agent 频繁崩溃气到怀疑人生的工程师
你不需要是 Python/JavaScript 大神。但需要:
- 用过至少一个 Agent(Claude Code、Cursor、ChatGPT 等)
- 懂基本的 LLM 概念(token、context window、temperature)
- 有软件工程基础(设计模式、并发、测试的基本概念)
一个约定:重原则、轻代码
本专栏重方法论、轻具体框架。真实系统的分析难免会引用源码路径、字段名或版本号;这些细节仅用于理解设计意图,不是需要记忆的 API 规范。我会引用大量代码作为案例,但这些代码不是让你照抄——是让你理解"它为什么这样设计"。
这意味着:
- 我讲 "权限模型" 时会引用 Claude Code 的
allowedTools机制,但不会让你记住具体的 JSON schema 字段名 - 我讲 "状态机" 时会引用 LangGraph 的
StateGraphAPI,但不会讲add_node和add_edge的用法细节 - 我讲 "工具编排" 时会引用 OpenClaw 的 Gateway 架构,但不会教你 HTTP 框架的路由细节
当你关闭这个专栏,脑子里留下的应该是"Agent 系统应该怎么设计"的思维框架,而不是"具体某个 API 怎么用"的记忆。前者保值 10 年,后者保值 3 个月。
一次写作的诚实披露
这个专栏由我一个人写成,但它的素材来自无数前人的工作:
- Claude Code 团队的 Boris Cherny 等工程师的分享
- LangChain 团队(Harrison Chase、Ankush Gola 等)的框架设计
- OpenAI、Anthropic、Google DeepMind 公开的 agentic capability 研究
- 所有开源社区的 issue、PR、讨论线程
如果说这个专栏有什么独特价值,那就是把这些碎片连成一张完整的工程地图。地图上的每一块石头都不是我挖出来的,但地图是我画的。
起步
Agent 工程是一门年轻的学科。它的最佳实践还在快速演进。任何敢说"我已经把它搞明白了"的人都是骗子——包括我自己。本专栏试图捕捉的是当前阶段(2026 年)的最佳共识。五年后回头看,某些章节可能会显得幼稚。那没关系——好的方法论是阶梯,踩上去达到下一层后拆掉就好。
如果你读完这个专栏后觉得"我现在对 Agent 工程有了清晰的判断框架"——就是它的全部目标。
下面从第 1 章开始。
延伸阅读的推荐起点
- Claude Code 公开文档:https://docs.claude.com/en/docs/claude-code
- LangGraph 文档:https://langchain-ai.github.io/langgraph/
- Anthropic 的 Building Effective Agents 博客:https://www.anthropic.com/research/building-effective-agents
- OpenAI 的 Agents 指南:https://platform.openai.com/docs/guides/agents
- 杨艺韬讲堂《Claude Code 源码深度解析》专栏:https://www.yangyitao.com/books/claude-code/