AI 编程 Agent 实战(下):失败恢复、人工确认与执行轨迹
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一篇,咱们已经把 AI 编程 Agent 最核心的执行链路跑通了。
Provider 提出 Action,Runtime 校验并执行,Tool 返回 Observation,然后再根据新的 Observation 决定下一步。
这是上一小节的完整流程图,再给大家贴一下:
但是,凡事都有个但是。。。
这只是第一个场景的流程。
除了这个场景之外,咱们还有两个场景:
- 修复逾期时间边界错误:在这种场景下,测试失败以后,Plan v1 怎样变成 Plan v2
- 审批后删除废弃代码:delete_file 怎样暂停,用户批准后又怎样继续
两个场景跑完以后,再回头看一下页面中的执行轨迹和最终报告是怎样生成的。
代码地址:
Code/Node/第四章/06-software-engineering-agent为了得到和文章一致的执行轨迹,建议先选择
Replay模式。
场景一:失败测试怎样推动 Plan v2
打开项目页面,选择:
修复逾期时间边界错误
这里咱们的需求是:“修复任务在截止时间刚好相等时被错误标记为逾期的问题,并保证完成任务永远不算逾期。”
然后选择 Replay 模式,点击“启动 Agent”。
这次生成的 Plan v1 是:
服务端收到请求以后,会继续走中篇讲过的创建流程,最后通过 schedule() 启动 AgentRuntimeService 中的 execute() 方法。
对应文件为:
server/src/agent/agent-runtime.service.ts
execute() 的完整代码咱们上一小节的时候看过,核心逻辑是在一个 while 循环里面
哪怕不看上一节的内容,光看这个行数也知道,这里面的内容比较长
所以,这里给大家压缩了一下,大致就是下面这样:
// 只要 Run 仍处于运行状态,就持续执行 Agent 决策循环。
while (run.status === 'running') {
/**
* 检查是否存在已经获得人工批准、但尚未真正执行的 Action。
*
* 如果存在,则直接恢复该 Action;
* 否则请求 Provider 根据当前 Run 状态生成下一步决策。
*/
const providerResult = await this.provider.next(run)
const decision = providerResult.decision
// 在执行前校验决策结构、计划依赖和工具调用是否合法。
this.decisionValidator.validate(run, decision)
// Replan 表示根据最新 Observation 调整任务计划。
if (decision.type === 'replan') {
this.applyReplan(run, decision)
continue
}
// Final 表示 Provider 认为任务已经可以结束。
if (decision.type === 'final') {
await this.complete(run, decision.summary)
break
}
// 执行已经通过校验和审批的工具调用,并记录 Observation。本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
