单步调用很稳,十步串起来就开始飘。这节记录我们把一个 12 步流程从 40% 做到 90% 成功率的过程。
可复现前提: 流程为"新员工入职环境准备",12 步。mock 版本在 demos/onboarding-agent,不接内部系统也能跑通。
起点:40% 成功率
最初的做法是把 12 步全写进一个 prompt,让它自己按顺序做。问题:
- 中间某步失败后,它会假装成功继续往下走
- 步骤顺序偶尔颠倒
- 长会话后期开始遗忘前面的产出
改动一:显式的状态清单(+22 个点)
让 Agent 每完成一步就更新一个状态文件,每步开始前先读它。
{
"steps": [
{ "id": "create_account", "status": "done", "result": "u_8812" },
{ "id": "assign_licenses", "status": "failed", "error": "配额不足" },
{ "id": "setup_repo_access", "status": "pending" }
]
}把状态放在上下文之外的文件里,是这次提升最大的一步改动。上下文会遗忘,文件不会。
改动二:每步定义验收条件(+18 个点)
每步不只写"做什么",还写"怎么算做完了":
步骤 3:配置仓库权限
完成标准:执行 `praxis repo check --user <id>` 返回 3 个仓库均为 write
若不满足:重试一次;仍失败则标记 failed 并继续下一步,最后统一汇报这条解决了"假装成功"的问题。
改动三:失败不中断,最后汇总(+10 个点)
早期版本一步失败就整个中止,人工接手时不知道做到哪了。现在的规则是:可跳过的步骤失败后标记并继续,最后输出一份"已完成 / 需人工处理"的清单。
现在的数字
连续 50 次真实入职流程:45 次全自动完成,5 次部分完成并正确汇报了失败项,0 次假装成功。最后这个数字比 90% 更重要。
评论与复现反馈 1
这个思路我们迁移到了部署流水线的 Agent 上,同样有效。12 步的发布流程从经常卡住变成基本一次过。