Agent 越强,人越重要:我对 Harness 的理解
工具负责执行循环,人负责目标、边界与验收。更强的 Agent,需要更好的掌舵者。
最近用 Coding Agent 做项目,我越来越觉得:Agent 能力越强,人的作用未必越小,反而更需要人把方向、边界和验收标准说清楚。
我会把这个想法概括成一句话:人是更重要的 Harness。
这是一种工作方式上的比喻,不是严格的软件术语定义,也不是说人应该盯着 Agent 的每一行代码。更准确地说:工具把执行能力组织起来,人把执行能力与真正的目标、风险和责任连接起来。
我说的 Harness 是什么
在这篇文章里,我把软件层面的 Harness 理解为模型周围的执行框架:它向模型提供上下文和工具,组织执行与反馈循环,并管理权限、状态和检查。不同产品的实现不一样,这不是对所有 Coding Agent 的统一规格。
模型回答“下一步可以做什么”,框架让这一步真的发生。它可能读文件、修改代码、跑测试、操作浏览器,也可能连接线上环境。Skill 则可以沉淀某一类任务的操作方法与约束,不必为每个垂直场景重新造一个完整 Agent 产品。
但一个框架即使能把动作跑通,也不一定知道这个动作是否值得做。
越能执行,越需要清晰的边界
过去,一个不准确的回答可能只是一段不好用的文字。现在,同样的不准确理解可能变成一次错误迁移、一条真实通知,或者一批被覆盖的文件。能力增强扩大了成果,也扩大了理解偏差的影响范围。
所以我不认为“更好的控制”就是更多打断。它应该是把控制放在正确的位置:开始前约定目标和权限,过程中看关键证据,在风险升级或对外生效时做决定。
如果 Agent 每改一行都问我,我没有获得多少效率;如果它连部署、删除数据、发通知都自行决定,我也没有得到可靠的协作。理想状态是:常规实现可以自主推进,重要边界不能靠猜。
人要提供的,不只是提示词
首先是定义问题。一个功能到底为谁服务,什么算完成,哪些事情暂时不做?这些判断来自使用场景,而不是代码补全。
其次是提供约束。包括现有数据不能丢、用户手改的链接不能覆盖、外部通知不能擅自发送,以及测试环境和生产环境不能混用。相比“认真一点”,这些可检查的约束更有用。
最后是判断证据。测试通过证明的是测试覆盖的行为,不是产品一定好用;页面能打开,不代表手机布局合理;脚本退出成功,不代表线上版本和配置一定正确。
人需要做的是选择验收信号,并在信号冲突时作出判断。这比不断写更长的提示词更接近工程工作。
廖雪峰的实践给我的启发
廖雪峰在 MyPassword 的 Vibe Coding 复盘 中,把产品功能、软件架构和安全加固分开讨论;他也描述了小步实现、及时保存版本的实践。这让我注意到:代码生成速度之外,设计和验证仍需要主动安排。
在 串口调试器的 Spec Coding 复盘 中,他强调规格需要交代架构与示例,后续还通过运行反馈调整打包问题。我的理解是,清楚的规格并没有消灭人的参与,而是把参与从反复补充口头要求,前移到设计,后移到验收。
“人是更重要的 Harness”是我自己的总结,不是上述文章的原话。我也不会把“AI 不会主动考虑安全”视为所有模型的绝对规律;关键在于,不能把安全责任寄托在它是否碰巧主动发现问题上。
在我的项目里,这意味着什么
做抖抖先知时,AI 可以帮忙实现轮询、状态机和部署流程;但首次观察要不要提醒、用户是否愿意接受重复风险、是否允许发送真实测试通知,需要人明确。把这些判断写入部署契约,才有可能重复执行而不重复踩坑。
改 Proofline 时,代码正确并不能替代视觉判断。我会在本地看实际页面,对比布局,再决定是否上线;已有文章里手工添加的链接,也要作为保护边界,而不是让 Agent 顺手“整理”。
另一个例子是 Academic Research Agent。我暂时把它挂起,因为继续做完整产品的效果,未必比“Codex + 学术研究 Skill”更好。这里不是对两者做过严格的性能比较,而是基于能力重叠和维护成本的阶段性取舍。Agent 擅长推进任务,人还要判断这个任务是否值得继续推进。
我希望形成的协作方式
我会尽量把一项任务拆成四个明确的交接点:
- 目标:描述要解决的问题、完成标准和不做的范围。
- 执行:把低风险实现交给 Agent,允许它自行检查和修正。
- 验收:看 diff、测试、真实界面或线上状态,而不只看总结。
- 生效:对部署、真实消息、删除与权限变化单独确认。
能够复用的部分,再沉淀成文档、脚本、测试和 Skill。人的经验不应该永远停留在聊天里;重复出现的边界,最好成为系统默认就能检查的规则。
人的判断本身也会出错,所以“由人掌舵”不是免检证明。可回滚的变更、自动检查和清晰记录,同样在约束人的决定。
结语
我不想成为 Agent 的逐行监工,也不想成为只会按下“继续”的使用者。
能力增强以后,更值得练习的是提出准确的问题、识别真正的风险、设计可靠的反馈,以及在必要时说“到这里就够了”。好的 Harness 不只是让 Agent 跑得更远,还要知道它应该往哪里跑,何时停下来。
这是我目前对人与 Coding Agent 分工的理解:把执行交出去,把判断和责任留下来,再把可靠的判断尽可能变成可复用的约束。