1 Harness Engineering 是什么:让 Agent 不靠记忆也不跑偏
系列进度
Harness Engineering 从零教程 · 第 1 / 5 篇
你好,我是郭震。
这套新系列讲 Harness Engineering。这里说的 Harness,不是某个 CI/CD 品牌,而是 Agent Harness Engineering:把大模型放进一个外部编排系统里,让系统负责目标、状态、计划、工具、检查点和记忆,模型每次只专注当前一步推理。
很多人刚开始做 Agent,会把希望都压在一个超长 System Prompt 上:让模型记住目标、记住历史、记住下一步,还要自己判断什么时候结束。短任务还能凑合,一旦任务变成几十步,漂移就会出现。它可能忘记最初目标,可能被中间搜索结果带走,也可能在已经完成的步骤上反复打转。
Harness 的核心思想很朴素:不是让模型一直记住主线,而是让系统帮模型不断找回主线。主线不应该只藏在上下文里,而应该被单独保存、结构化更新,并在每轮调用前重新注入。
所以这套教程会按一个工程视角来讲:Goal 负责目标,State 负责当前状态,Planner 负责拆步骤,Executor 负责执行当前任务,Checkpoint 负责阶段刷新,Memory 负责沉淀长期偏好和关键事实。
这也是为什么现在很多 Agent 从 Prompt Engineering 逐渐走向 State Engineering 和 Harness Engineering。提示词仍然重要,但提示词解决的是“这一轮怎么说清楚”;Harness 解决的是“几十轮以后还怎么不跑偏”。
1. Prompt 不是主线管理器
Prompt 可以定义角色、语气、约束和输出格式,但它不适合独自承担长任务状态管理。你可以在提示词里写“请始终记住目标”,但任务一长,模型看到的是越来越大的上下文、越来越多的观察结果和越来越模糊的优先级。
更稳的做法是把主线放在模型外面。每次调用时,系统都明确告诉模型:当前目标是什么,已经完成什么,下一步要做什么,这一步的验收标准是什么。模型不需要从漫长历史里猜主线,系统直接把主线递给它。
2. 一个最小 Harness 长什么样
最小 Harness 不需要一上来就做成复杂框架。你只需要四个字段:Goal、State、CurrentTask、Acceptance。Goal 写最终目标,State 写已完成和待完成,CurrentTask 写当前一步,Acceptance 写这一轮怎么判断完成。
比如用户说“帮我写一篇公众号文章并配图”,普通聊天会直接开始写。Harness 会先变成一个任务状态:目标是完成文章,已完成是空,待办是选题、资料、结构、正文、配图、复核,当前任务先做选题和角度确认。
3. Harness 的六层结构
第一层是 Goal,保存不随中间步骤轻易变化的主目标。第二层是 State,保存进度、决策、产物和阻塞。第三层是 Planner,把目标拆成可执行步骤。第四层是 Executor,只处理当前一步。第五层是 Checkpoint,定期把当前进度重新压缩成短状态。第六层是 Memory,把长期有价值的信息留下来。
这六层不一定都要独立成服务,但在设计时要分清职责。混在一起之后,Agent 看起来更“自由”,实际更容易漂移。
4. 从今天可以怎么练
先选一个你常做的任务,比如写文章、调研工具、检查仓库、整理课程。不要先写复杂代码,先写一张 Harness 卡片:目标是什么,当前状态是什么,下一步是什么,完成标准是什么,什么时候需要重新规划。
如果这张卡片写不清楚,就说明任务本身还没有被编排好。模型再强,也只是被放进了一团雾里。
5. 本节小结
Harness Engineering 的重点不是让模型更会聊天,而是让模型被放进一个更稳定的任务系统里。主线由系统保存,状态由系统更新,计划由系统维护,模型负责当前一步的判断和生成。
下一节我们先讲 Goal Manager:为什么一个持久化目标,比一段很长的提示词更能防止 Agent 跑偏。
相关教程
相关入口
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
相关内容



