Claude Code -0 有 Harness 和没 Harness,AI 编码工具差距有多大

0 阅读5分钟

有 Harness 和没 Harness,AI 编码工具差距有多大

同一个模型,同一台电脑,同一个开发者——没有 Harness 和有 Harness,结果不是"差一点",是"能用和不能用的区别"。


一个场景看懂差距

你让 Claude Code 给项目加一个用户注册功能。

没有 Harness:

改了 8 个文件,能编译,注册页面出来了。合入主分支。

三天后安全团队找上门:注册接口没做速率限制,密码用的 MD5,API Key 硬编码在前端,欢迎邮件里直接拼接用户输入——XSS 漏洞。

你回去改 Prompt:"注意安全规范。"下次它换了地方犯同样的错。再改,又在新任务里忘了。每次新会话,从零开始。

有 Harness:

→ 开工前,CLAUDE.md 里写着"密码必须用 Argon2,API Key 走环境变量,用户输入必须转义"——它一开始就不会选 MD5

→ 写完代码,PostToolUse Hook 自动跑 ESLint,两个 lint 问题当场修了

→ 提交前,Stop Hook 跑类型检查和单元测试——有一个测试没过:注册接口没做速率限制。它自己补上了

→ 推到 CI,Semgrep 发现一处 SQL 注入,Trivy 发现新依赖有高危 CVE,PR 打回。它修了注入,换了安全版本的依赖

→ 最终合入的代码:类型安全、测试通过、无已知漏洞、无硬编码密钥

同一个模型,同一个任务。没有 Harness 是"能用但不敢用",有 Harness 是"放心合入"。


Harness 是什么

包裹在 AI 模型外面的一切——规则、工具、约束、反馈、安全边界。

Agent = Model + Harness

模型是大脑,Harness 是身体、神经系统、安全带。这个公式来自 HashiCorp 联合创始人 Mitchell Hashimoto,2026 年 2 月提出后被 OpenAI、LangChain、Anthropic 迅速采纳。

Harness 本意是"马具"。没有缰绳的马是野马,力气再大也拉不了车。Harness 不让马变强,但让马的力量变得有用。


没有 vs 有:核心对比

没有 Harness有 Harness
质量开发者肉眼看自动化测试 + 静态分析 + 类型检查
安全出了事才知道写入瞬间拦截密钥泄露,CI 拦截漏洞依赖
规范靠 Prompt 说,AI 可能忘CLAUDE.md 每次自动加载,Hook 不通过就拦
修正人发现 → 改 Prompt → 下次可能还犯Hook 自动检测 → 错误结构化反馈 → AI 当场自修
集成复制粘贴到 IDEGit 工作流 + CI/CD 自动化
评估"感觉还行"代码接受率、一次通过率可量化
心态"AI 写的我不敢用""过了关卡我放心用"

本质区别:没有 Harness,约束是软的——靠 AI "记住"。有 Harness,约束是硬的——靠系统"强制"。

Prompt 下次会忘,CLAUDE.md 每次加载,CI 永远拦截。


犯错之后:Prompt 思维 vs Harness 思维

AI 犯了错,你怎么处理?这是有没有 Harness 的根本分歧。

"每次 AI 犯了错,不是只修这一次,而是把这个错误变成结构上不可能再发生的约束。" —— Mitchell Hashimoto

AI 犯了什么错Prompt 思维Harness 思维
写了不安全的代码"注意安全"安全扫描接入 CI
忘了处理边界"处理边界"CLAUDE.md 加规则 + 单元测试覆盖
删错了文件"别删文件"权限 deny rm -rf
代码风格不一致"遵循规范"Hook 自动跑 Prettier
注释掉了测试"别注释测试"Hook 检测 .skip()xit

Prompt 思维:靠 AI 记住——下次可能忘,新会话从零开始。

Harness 思维:靠系统强制——CLAUDE.md 每次加载,CI 永远拦截,Hook 自动执行。

像棘轮,只能前进不能后退。每个错误变成一条永久规则,Harness 越来越紧,Agent 越来越可靠。


有 Harness 的 Agent 长什么样

Claude Code:简单循环 + 严格纪律

核心是单线程主循环——"笨循环",但 Harness 不简陋:

组件作用
CLAUDE.md开工前就告诉 AI 规则,不让它进入错误区域
实时转向执行中随时插入新指令
上下文压缩92% 时自动触发,保留关键信息
权限系统高危操作 deny,安全操作 allow
HooksPostToolUse 跑 Lint,Stop Hook 跑测试
检查点每次编辑前自动存档,Esc×2 秒回退
沙箱OS 内核级隔离

好的 Harness 不需要复杂,但需要纪律。

企业级 Harness:Stripe 和 Anthropic 的做法

Stripe 的做法是分层隔离——入口标准化、工具按需分发、执行在隔离沙箱、编排用状态机混合确定性节点和 Agent 节点、反馈从秒级 lint 到全量测试、安全层隔绝生产环境。核心设计:该确定的地方确定,该灵活的地方灵活。

Anthropic 的做法是让 AI 查 AI——Generator 生成,Evaluator 审查,形成对抗循环。Evaluator 配备 Playwright MCP 像人类 QA 一样操作浏览器,明确定义评分权重,惩罚"AI 风格"。核心设计:AI 无法有效自我评价,必须外部化审查。

两家形态不同,但都在做同一件事:不靠 AI 自觉,靠系统保障。


你已经在用 Harness 了

如果你在用 Claude Code,这些配置就是在搭建 Harness——只是可能没意识到它们构成一套体系:

你在用的功能Harness 角色没有 vs 有
CLAUDE.md约束前馈AI 摸黑干活 vs AI 开工前就知道规则
Rules 文件精细化约束所有规则一把抓 vs 按场景精准加载
权限系统质量门控出了事才发现 vs 高危操作直接拦住
Hooks反馈回路人肉跑 Lint vs AI 写完自动检查当场修
沙箱安全边界信任 AI 不乱来 vs OS 级强制隔离
子代理编排层一个 Agent 扛所有 vs 任务分解并行
Headless 模式集成层手动跑 CI vs 自动化 Pipeline

理解了这个框架,你就能从"零散配置"升级为"系统搭建"。