在大模型能力快速跃迁的当下,行业叙事正从“模型有多强”转向“系统如何驾驭模型”。近期围绕 Claude Code 的源码分析,意外揭开了一个更关键的趋势:AI 编程助手的竞争,已经从 Prompt Engineering 走向更复杂的系统工程——Harness Engineering。
这不仅是一个工具层的升级,更像是一场软件工程范式的重构。
过去两年,开发者社区的共识是:AI 可以写代码。
但当 Agent 真正进入生产系统,一个更本质的问题浮现出来——AI 的问题不在能力,而在可控性。
Claude Code 的工程化设计恰好回应了这一点:它并不是“LLM + Prompt + Tools”的简单拼装,而是一个围绕模型构建的完整操作系统。这种设计思路,也揭示了当前 AI 工程演进的方向:
问题开始从“生成代码”转向“控制系统行为”。
从源码结构来看,Claude Code 更接近一个“Agent 操作系统”,而非传统意义上的开发工具。其核心设计可以概括为几个关键层:
Claude Code 并不依赖静态 Prompt,而是通过运行时动态拼装上下文,包括:
git status)CLAUDE.md)本质上,Prompt 被“工程化”为一种系统级配置,而非文本技巧。
这也是 Context Engineering 的进阶形态——上下文不再是输入,而是环境。
系统内部通过多种模式(如 plan / auto / manual)以及子 Agent 机制,实现职责拆分:
这种“读写分离 + 执行与评估分离”的设计,本质上是在解决一个核心问题:
避免模型在“边想边做”过程中产生幻觉和逻辑混乱。
Claude Code 的一个关键理念是:生成不等于完成。
系统内置大量验证机制:
/doctor 的诊断工具甚至引入“破坏性验证”思路,让 Agent 主动尝试“搞坏系统”。
这标志着 AI 编程从“生成代码”走向“保证正确性”。
在工具调用层,Claude Code 并不假设模型是可靠的,而是默认“会出错”:
这种设计体现了一种工程哲学:AI 系统必须在错误中运行,而不是避免错误。
区别于 Demo 级工具,Claude Code 具备完整的生命周期管理能力:
/resume)这类能力并不“炫技”,但正是其迈向企业级系统的关键。
很多团队在实践 Agent 时,会引入 Loop 机制:
任务 → Agent → 输出 → 再输入 → Agent
这看似是“闭环”,但实际上只是让系统持续运行,并没有解决失控问题。
典型问题包括:
Claude Code 的启发在于:Loop ≠ 可控系统。
所谓 Harness Engineering,可以理解为:
为 Agent 构建一个具备约束、反馈和上下文的执行环境,使其行为可预测、可修正、可持续运行。
其核心由三部分构成:
减少错误的产生,而不是事后修复:
限制系统的“可行动空间”:
实现自动纠偏:
三者共同构成一个典型的控制系统。
如果用更宏观的视角来看,这一变化类似于控制论的回归。
传统软件工程:
AI 时代的软件工程:
这带来一个关键变化:
工程对象,从“代码”,变成了“行为系统”。
因此,工程关注点也发生转移:
Claude Code 的架构给行业释放了一个明确信号:
Agent 的竞争,正在从模型能力转向系统能力。
关键能力包括:
换句话说,决定一个 AI 工具上限的不再只是模型,而是围绕模型构建的工程体系。
随着大模型不断进化,“AI 会不会取代程序员”已经不再是最重要的问题。
更关键的是:
当系统开始持续生成代码,我们如何保证它不会走向失控?
Harness Engineering 给出的答案不是更强的模型,而是更严密的系统设计。
这或许意味着一个新的工程时代已经到来——
软件工程,不再只是构建系统,而是设计一个能够自我修正的控制系统。