我自己的划分方法很直接:
- Prompt engineering 解决的是“这一次模型怎么想、怎么说”
- Harness engineering 解决的是“系统允许模型看到什么、做什么、失败后怎么办、结果如何被验证”
也就是说,prompt 是局部认知合同,harness 是运行时控制面。
凡是下面这些问题,基本都该归到 harness:
- 工具能不能调用、怎么路由、失败怎么重试
- 哪些上下文常驻、哪些需要摘要、哪些该丢弃
- 什么时候必须请求人工确认
- 如何做预算、限速、权限和沙箱
- 产出之后由谁验证、用什么 gate 放行
什么时候“明明改 prompt 也能缓解”,仍然要上升到 harness?答案是:
- 需要稳定重复执行时
- 需要可审计、可观测时
- 需要跨模型、跨任务复用时
- 需要防止模型临场发挥越界时
对 coding agent 和通用 agent 来说,最值得先工程化的通常不是花哨的人设提示,而是这几件事:
- 状态与记忆管理
- 工具调用治理
- 验证与回滚机制
- 人工审批边界
- 成本与时长约束
一句话说,prompt 决定“模型怎么说”,harness 决定“系统怎么让它可靠地工作”。