Harness 承担什么

Harness 是围绕模型组织输入、工具、状态、执行约束与验证的运行环境。模型提出下一步,运行环境决定动作是否允许、怎样执行、怎样记录,以及何时结束。能够生成补丁和声称“测试通过”,与实际修改文件、运行测试和满足需求是不同状态。

Coding Agent 可利用软件工程已有的类型检查、测试和版本控制形成反馈。测试覆盖不完整或预期写错时,反馈也会失真,因此要让验收条件来自任务要求,而非由模型随意改写。

一次代码任务的组件

组件 应持有的信息 验证重点
任务契约 允许修改的文件、预期行为、完成条件 需求发生修订后使用最新版本
工作区 起始提交、独立副本、读写范围 不覆盖其他人的未提交修改
工具适配 参数 schema、调用 ID、超时、实际参数 模型看到的参数与执行参数一致
执行边界 文件与网络权限、隔离进程、资源限额 生成代码不能自行扩大权限
验证器 类型检查、任务测试、产物检查 测试修改与业务修改分开审查
状态记录 补丁、stdout/stderr、退出码、未完成项 运行失败或中断不能记成成功

工具返回应能说明执行了什么以及结果在哪里。长输出可以截断,但必须明示截断并提供完整记录位置;“没有看到错误”不能代替检查退出码和预期产物。

原创任务设计

假设需要修复一个 CSV 解析函数,让带引号的逗号和换行能够被正确读取。先在固定起始版本建立独立用例,再允许 Agent 修改解析器。验收同时检查新用例、已有用例、修改范围和实际导出结果;只检查函数存在或代码能编译是不够的。

一次可审查的循环是:读取相关实现,提出最小补丁,校验补丁适用位置,执行检查,再根据具体失败修正。没有命中预期位置时应重新读取文件,避免模糊替换误改邻近代码。新增测试不能只重复实现内部步骤,应检查用户关心的行为。

故障与恢复

故障位置 例子 恢复方式
模型服务 限流、网络断开、输出被截断 在剩余 deadline 与重试预算内恢复完整响应
工具 参数非法、对象不存在、权限不足 修正参数或停止,不能原样无限重试
上下文 工具结果缺失、压缩丢掉约束 回查来源和已执行状态,重建必要记录
控制流 同一失败反复发生、恢复又失败 识别无进展,终止或交接未完成事项

模型请求可以重试,不代表它之前发起的外部写入也可以重复。结果未知时,先按操作 ID 查询实际状态。工作区 checkpoint 保存成功也不证明外部操作成功;两者需要单独核验。

练习与完成标准

为上述 CSV 任务设计五种失败:补丁位置不匹配、测试失败、工具超时、重复调用、用户缩小修改范围。逐一写出运行环境的状态、恢复动作和最终报告。留下起始版本、任务用例、补丁与执行记录后,才可判断实现是否完成。

复习时解释:为什么验证器应独立于生成者?如何检测重复调用中的无进展?什么证据支持“已完成”,什么状态只能报告“结果未知”?

阅读来源与核验

2026-10-10:AI 助手协助原创整理;CSV 案例为设计练习,未记录模型执行成绩。

原始资料与核验依据

继续探索

哪些笔记引用了这里

学习路径:Agent 工程进阶 从执行到持续改进

第 2 / 8 步 · 验证任务:写修改范围、工具契约、失败出口和独立验收条件。