今天 Harness Engineering的根本承诺,是试图把一种新范式,也就是随机性的 LLM,运行在一种旧范式,也就是确定性的后端之中。
一个 Agent 通常包括:
- LLM
- System Prompt
- Memory
- Tools
- Planning / Reasoning Loop
- Action Selection
- Tool Calling
- Observation Handling
在这些基础上,还需要一套工程约束来管理 Agent,让它的能力能够被稳定、安全、可复现地放进一个产品或实验系统里,这套约束就是 Harness Engineering。
Agent harness 一般包含哪些模块?
Runtime harness
负责控制 agent 的执行过程(控制 agent 的行为边界)。
最大步数:限制 Agent 在一个任务中最多可以执行多少轮推理或动作
暂停:Agent 或工具调用如果超过时间还没有完成,就自动中止任务,避免系统卡住。
重试政策:当工具调用失败、网络异常或其它临时错误时,规定是否重试、重试几次、间隔多久重试。
工具调用预算:限制 Agent 在一个任务中最多可以调用多少次工具。
token预算:限制 Agent 在任务中最多可以消耗多少 token,用来控制成本。
环路检测:检测 Agent 是否在重复相同的思考、动作或工具调用。
状态检查点:在 Agent 执行过程中保存关键状态,方便失败后恢复、回放、调试或继续执行。
错误处理:当 Agent、工具或外部系统出错时,统一处理错误。
...
Tool harness
负责控制 agent 的工具调用封装(安全落地的关键)。
参数验证:检查 Agent 传给工具的参数是否完整、合法、格式正确。
许可检查:检查当前用户或 Agent 是否有权限调用某个工具、访问某些数据或执行某个动作。
schema验证:按照预定义的数据结构检查输入或输出是否符合规范。
速率上限:限制 Agent 在一定时间内调用工具或 API 的次数。
模拟执行:先模拟执行某个动作,预览会发生什么,但不真正修改真实系统。
人工确认门槛:当 Agent 准备执行高风险动作时,系统先暂停,让用户或管理员确认后再真正执行。
工具返回结果标准化:把不同工具返回的各种格式整理成统一结构,方便 Agent 稳定读取和处理。
错误转换:把工具或 API 返回的复杂技术错误转换成 Agent 和用户更容易理解的错误信息。
审计日志:记录 Agent 的关键操作,包括谁触发了任务、调用了什么工具、传了什么参数、是否成功、是否经过确认等,方便追踪和复盘。
...
Evaluation harness
负责记录和评估Agent。
任务是否完成:判断 Agent 最终有没有真正完成用户的任务。
工具是否调用正确:检查 Agent 是否在合适的时机调用了正确的工具,以及工具参数是否正确。
中间步骤是否合理:评估 Agent 的推理路径、工具调用顺序和决策过程是否合理,而不是只看最终结果。
是否违反约束:检查 Agent 是否违反了系统提示词、用户要求、权限规则、安全规则或业务规则。
是否浪费 token:判断 Agent 是否用了过多无效推理、重复调用或冗余输出,导致 token 和成本浪费。
是否输出正确格式:检查 Agent 的最终输出是否符合要求格式,比如 JSON、Markdown、表格、代码块或固定字段结构。
是否产生危险行为:检查 Agent 是否尝试执行删除数据、泄露隐私、绕过权限、发送错误信息等危险动作。
...
Observability harness
负责保证Agent工作过程的可观测性(debug需要)。
输入是什么:记录用户给 Agent 的原始输入。
system prompt 是什么版本:记录当时使用的是哪个版本的系统提示词,方便比较不同 Prompt 版本对 Agent 行为的影响。
agent 每一步想做什么:记录 Agent 在每一步计划执行什么动作,比如准备调用工具、继续分析、请求确认或输出结果。
调用了什么工具:记录 Agent 实际调用了哪些工具,以及调用的顺序。
工具返回了什么:记录工具返回的结果,方便排查 Agent 是否误解了工具输出。
最终输出是什么:录 Agent 给用户或系统的最终结果,方便做质量评估和问题回溯。
用了多少 token:记录输入、输出和中间过程消耗的 token 数量,用于成本分析和性能优化。
花了多少钱:统计一次任务消耗的模型费用、工具调用费用或外部 API 成本。
失败在哪里:定位任务失败发生在哪一步,是 Prompt 问题、工具问题、权限问题、数据问题,还是模型判断问题。
...
Safety harness
负责保证Agent的安全与权限控制
许可边界:明确 Agent 能做什么、不能做什么。
人工介入机制:在关键环节让人参与审核、确认或决策,避免 Agent 完全自动执行高风险动作。
敏感动作确认:对发送邮件、删除数据、修改数据库、支付、部署代码等高风险动作,要求用户或管理员确认后才能执行。
个人敏感信息检测:检测数据中是否包含姓名、手机号、邮箱、身份证号、地址、银行卡号等可以识别个人身份的信息。
提示词注入防御:防止外部内容诱导 Agent 忽略系统规则、泄露隐私、越权调用工具或执行恶意指令。
数据访问控制:控制 Agent 可以访问哪些数据、不能访问哪些数据,以及在什么条件下可以读取、复制、导出或发送数据。
沙盒:把 Agent 的高风险操作限制在隔离环境中执行,例如代码执行、文件操作或 API 测试,避免影响真实系统。
规则合规检查:根据预先定义的安全规则、业务规则、隐私规则和合规要求,检查 Agent 的动作是否允许执行。
