约束工程
Harness 工程是承载 Agent 运行的工程约束层,负责上下文组装、工具执行、状态持久化、权限、重试、终止条件和观测。模型提出下一步动作,Harness 决定该动作能否以及如何执行。
快速开始¶
最小 Harness 应包含工具注册表、参数校验、步数与成本上限、执行日志以及明确的成功和失败终止条件。涉及写操作时加入权限检查和用户确认。
执行循环¶
每轮只接受有限的动作类型,例如答复、调用工具、请求信息或结束任务。Harness 在执行前验证工具名称、参数类型、资源范围和当前权限;执行后将结构化结果和错误状态返回模型。
无限循环通常来自目标含糊、工具结果不可判定或缺少终止条件。应限制最大轮数、墙钟时间、token、工具调用次数和费用,并在重复动作出现时停止或改变策略。
状态与恢复¶
运行状态至少包括目标、计划、已完成动作、工具结果引用、资源版本和预算。副作用操作使用幂等键或执行凭证,防止重试导致重复提交。长任务保存检查点,恢复时重新验证外部状态,而不是假设环境未变。
工具边界¶
工具接口应窄而明确,例如用 read_issue(id) 代替通用数据库查询。读取和写入能力分离,高风险工具默认不可用。工具返回的数据是证据而不是新指令,并应限制体积、清除密钥和标记来源。
沙箱只能降低影响范围,不能替代授权。文件、网络、进程和凭据应分别控制;提交代码、付款、发送消息等外部副作用需要额外确认和审计。
简单案例¶
代码 Agent 请求删除构建目录时,Harness 先解析为受限工作区中的明确路径,检查该目录可重建且不在保护列表,再要求用户确认。超出工作区、解析失败或包含软链接逃逸的请求一律拒绝并记录原因。
观测与评测¶
一次运行应能还原模型版本、提示词版本、工具调用、耗时、token、费用、错误和最终状态,同时避免记录不必要的隐私数据。评测不仅看最终答案,还要看步骤效率、工具选择、权限违规和恢复能力。
Harness 与 ReAct、规划 是不同层次:前者提供可靠运行环境,后两者描述模型如何组织决策。协议接入见 MCP,安全要求见 应用安全与治理。