核心问题
Coding Agent 处理目标明确、规模可控的任务很成熟,但面对上千文件的批量迁移任务,会遇到上下文耗尽、中断无法恢复、规模放大后行为不可控等问题。
Harness Engineering 的失败经验
Agent 的执行路径不完全相同
即使给了相同的 prompt 以及明确的步骤,Agent 的执行路径不完全相同。有时候 Agent 跑着跑着忘了同步代码;有时候同步代码的目标路径错了,覆盖了其他 Agent。
并发执行带来不确定性。多个 Agent 同步做任务,系统变得复杂。共享资源竞争、相互等待、死锁问题。
Agent 容易陷入循环
当 Agent 发现自己之前的计划不可行时,它会调整计划并继续执行。但问题在于,Agent 可能陷入一个循环:计划 -> 失败 -> 调整计划 -> 失败 -> 调整计划 -> 失败……
当 Agent 陷入循环时,它会消耗大量 token,却没有产生有效的结果。
长程任务的代价
一个长程 Agent 任务可能涉及数千个步骤。Token 成本会迅速增加。如果 Agent 在某一步卡住,重新启动可能需要从头开始,导致大量工作被浪费。
核心设计
File As Progress:让状态持久化
把每个任务的中间状态写入文件。下次启动时,Agent 先读取这些文件,恢复之前的进度,然后继续执行。不再依赖 Agent 的记忆,而是依赖文件的确定性。
任务拆解与并行执行
把大任务拆成小任务,每个子任务独立执行。并行执行可以提高效率,但需要处理好任务之间的依赖关系。
多层重试机制
Agent 在执行任务时可能会遇到各种错误。有些错误是暂时的(如网络问题),有些是永久的(如代码本身有问题)。多层重试机制让 Agent 能够区分这些错误,并采取不同的处理方式。
关键教训
- 给 Agent 明确的约束:任务边界和不做什么的声明至关重要。
- Agent 需要人类的判断力:Agent 擅长执行,但判断力需要人类提供。
- 状态持久化是关键:长程任务的中断和恢复能力决定了 Agent 的可靠性。