OpenAI写出了一个100万行的软件,而人类亲手写的代码是0行。秘诀?把代码交给代理,但把代理工作的环境本身设计好

3秒速览
AI代理失控问题 引入马具(Harness)概念 用Commands·Skills·Hooks控制 三大实战框架对比 应用到自己的项目

这是什么?

Harness本意是控制马匹的装备——缰绳、马鞍、马嚼,一整套把强大却任性的动物引导到正确方向的工具。AI编码代理需要的,正是同样的东西。

Harness Engineering(马具工程)是设计AI代理工作环境、约束和反馈循环的全新工程领域。 如果说Prompt Engineering(提示词工程)关注的是"让代理做什么",那么Harness Engineering关注的就是"让代理在什么环境下工作"。

Philipp Schmid(前Hugging Face)把它比作一台计算机——如果模型是CPU、上下文窗口是RAM,那么harness就是操作系统(OS)。它管理上下文,处理启动序列(提示词、钩子),提供标准驱动(工具调用)。

为什么现在火起来了?OpenAI Codex团队5个月内用代理写了超过100万行代码,3名工程师平均每天合并3.5个PR。人做的不是写代码,而是设计harness。 LangChain也保持模型不变,只换harness,就把基准测试排名从Top 30冲到了Top 5。

重点:三个概念的区分

提示词工程 = 在单次交互中写出有效的指令
上下文工程 = 优化模型看到的信息
马具工程 = 设计代理系统的整体(环境、约束、反馈、生命周期)

马具的组成要素——Commands、Skills、Hooks

@_petercha的vibe coding术语整理系列把这些组成要素讲得非常清楚。 以Claude Code为例,看看构成harness的三大核心工具。

1/3

Commands & Skills

给代理传授的"技能"。在.claude/commands/.claude/skills/下用Markdown定义,代理会自动识别并按情境执行。Superpowers就是把这一点推到极致的案例。

2/3

Hooks

在代理生命周期的特定时点自动执行的Shell命令。和Skills不同,它最大的优势在于无一例外、始终执行的确定性配置。 可以强制做到代码修改后自动lint、任务完成后发Slack通知等。

3/3

Subagents & Agent Teams

把单个代理扛不住的工作并行分发。Subagent只返回结果,而Agent Teams会互相对话,协调一份共享的任务清单。比如前端、后端、数据库各由一个代理负责,同时开工。

有什么不同?

没有harness直接用代理是什么体验,大家应该都见过。要么朝着错误方向狂奔,要么反复犯同样的错,要么上下文一长就忘了最初的指令。模型再强,没有harness也白搭

不用harness直接用代理应用harness
方向性依赖提示词,频繁跑偏用约束和反馈自动纠偏
质量一致性每次结果都不一样用架构规则+linter强制约束
长任务超过50步就开始漂移压缩上下文、用subagent分散
团队协作每人各搞各的共享harness让全队保持一致
可扩展性需要人持续介入自主运行→人只做review

NxCode的整理指出,马具工程的三大核心轴是这些。

  1. 上下文工程(Context Engineering)
    让代理在正确时点看到正确信息。把AGENTS.md当成"目录"而非百科全书,详细文档分散到结构化的docs/目录里。
  2. 架构约束
    不是"写好代码",而是用机制强制好代码的结构。依赖方向、命名规则、文件大小限制都通过linter和CI来验证。
  3. 熵管理
    AI生成的代码会随时间漂移。要定期跑一个"清理代理",扫描文档一致性、模式违反、冗余代码。

三大实战马具框架对比

理论说够了,看看现在就能用的开源harness框架对比。

框架核心理念GitHub Stars支持的代理
Superpowers基于TDD的自主开发工作流76.5KClaude Code、Codex、Cursor、OpenCode
Oh-my-claudecodeTeams优先的多代理编排9.2KClaude Code(+Codex、OpenCode变体)
Ouroboros用苏格拉底式提问提取意图、防止代理震荡1.1KClaude Code

Superpowers是Jesse Vincent做的代理式技能框架。 最酷的一点是它强制TDD(测试驱动开发)——代理在写代码前必须先写测试,遵循红灯→绿灯→重构的循环。安装后,代理会自动完成头脑风暴→设计→规划→subagent执行→代码评审→分支收尾的全套工作流。

Oh-my-claudecode是韩国开发者Heo Yeachan打造的框架,21个专业代理(代码审查员、调试器、架构师等)像团队一样协作。 它包含针对Claude Code的oh-my-claudecode、针对Codex的oh-my-codex,以及针对OpenCode的oh-my-openagent,形成了一整个家族。

Ouroboros是Q00做的框架,信奉"Stop prompting. Start specifying.(别再写提示词,开始写规格)"的理念。 它通过苏格拉底式提问挖出用户的真实意图,并用模糊度(Ambiguity Score)和代理震荡(Oscillation)的数值跟踪,防止代理迷路。

上手指南

  1. 先把CLAUDE.md(或AGENTS.md)整理好
    把项目的架构、编码规则、目录结构在100行内整理清楚。是目录,不是百科全书。
  2. 用Hooks设置确定性规则
    .claude/settings.json里加上PostToolUse钩子自动lint、Stop钩子在任务完成时通知,先试一试。
  3. 装一个harness框架试试
    Claude Code用户只要一行/plugin install superpowers就行,TDD工作流会自动应用。
  4. 逐步加约束
    别一开始就想造一个完美的harness。从基础lint开始,看到模式后再加架构约束,需要的时候再引入subagent。

注意:过度设计的陷阱

Philschmid的核心建议——"Build to Delete(为删除而构建)"。模型进步很快,2024年需要复杂流水线才能解决的功能,到2026年可能一句提示词就搞定了。控制流设计过度,下一次模型升级时整个系统就会崩。