多个AI智能体之间上下文如何传递?揭秘Antfarm的KEY变量传递与验证-重试闭环
【免费下载链接】antfarmBuild your agent team in OpenClaw with one command.项目地址: https://gitcode.com/gh_mirrors/antf/antfarm
当多个 AI 智能体(Agent)协作完成一项任务时,最核心的难题是上下文传递:规划者探明的仓库路径、开发者改动的分支、验证者发现的问题,如何准确"接力"给下一个智能体?Antfarm 是一款开源的多智能体工作流编排工具(一句话在 OpenClaw 上搭出一支会协作的 AI 代理团队),它用一个极简却优雅的机制解决了这个问题——KEY: value 变量传递 + 验证-重试闭环。下面带你彻底看懂这套机制。
为什么多智能体协作离不开"上下文传递"?
Antfarm 的设计哲学是"每个步骤都是全新会话"(fresh context):规划者、开发者、验证者各自在独立的、干净的上下文中运行,谁也不会被前面几十条消息"污染"。这带来两大好处:
- 不出现"上下文窗口爆炸",每个智能体都专注当前任务;
- 不会出现"50 条消息前的幻觉状态"。
但新会话意味着智能体之间不能靠记忆沟通,必须有一套显式的上下文传递协议。Antfarm 的答案只有 9 个字:约定输出 KEY: value 键值对。
核心机制:KEY: value 变量如何一步步接力
整个传递链路分四步,全部由 src/installer/step-ops.ts 自动完成:
第 1 步:智能体按约定格式输出
每个步骤的输入模板都会要求智能体用KEY: value行回复结果。例如 feature-dev 工作流的 plan 步骤(见 workflows/feature-dev/workflow.yml):
Reply with: STATUS: done REPO: /path/to/repo BRANCH: feature-branch-name STORIES_JSON: [ ... ]第 2 步:解析并合并进"运行上下文"
步骤完成后,parseOutputKeyValues 会把输出解析成键值对(键名统一转小写,并支持多行值),随后在 completeStep 中合并写入 SQLite 的 run 上下文——这份 JSON 就是整个工作流的"公共记忆板"。
第 3 步:用 {{占位符}} 注入下一个智能体
下一步启动前,resolveTemplate 会把输入模板里的{{repo}}、{{branch}}、{{build_cmd}}替换成上下文中的真实值。比如 setup 步骤的模板:
REPO: {{repo}} BRANCH: {{branch}}开发者智能体拿到的,就是填充好的完整任务书。上下文就这样在智能体之间无缝接力,全程无需人工干预。
第 4 步:缺少变量会提前报错,而不是带病运行
如果模板引用了上下文中不存在的键,Antfarm 会直接把该步骤标记失败([missing: xxx]),避免智能体拿着残缺信息干活——这是很多多智能体框架忽略的细节。
一个真实案例:feature-dev 全流程的变量接力
Antfarm 内置的 feature-dev 工作流展示了完整链路:plan → setup → implement → verify → test → pr → review(见 workflows/feature-dev/workflow.yml)。
| 步骤 | 产出的 KEY 变量 | 被谁消费 |
|---|---|---|
| plan(规划者) | repo、branch、stories_json | setup、implement |
| setup(环境准备) | build_cmd、test_cmd | implement、verify |
| implement(开发者) | changes、tests | verify、test、pr |
| test(测试者) | results | pr |
| pr(开发者) | pr | review |
可以看到:每个智能体只负责"产出"自己的 KEY,后面所有步骤按需"消费"。这就是 KEY 变量传递的本质——把隐式的对话变成了显式的、可追踪的数据流。
验证-重试闭环:ISSUES 如何回流成 {{verify_feedback}}
光有传递还不够,Antfarm 的另一套精髓是验证-重试闭环:开发者不能给自己作业打分,验证者(verifier)在独立会话中逐条检查验收标准。
- 验证通过:回复
STATUS: done+VERIFIED: 确认内容,流程继续; - 验证失败:回复
STATUS: retry+ISSUES: 缺失项清单。
此时 handleVerifyEachCompletion 会做一件关键的事:把ISSUES内容写入上下文的verify_feedback键,并让 implement 步骤带着重试次数重新执行。而 implement 的输入模板里正好有:
VERIFY FEEDBACK (if retrying): {{verify_feedback}}于是验证者的批评被原封不动地"回喂"给开发者,开发者在修复时就能直接看到问题清单,而不是盲目重来。若重试次数超过max_retries,流程会escalate_to: human升级给人处理——没有任何失败会被静默吞掉。
如何为自己的工作流设计 KEY 变量与重试闭环?
看懂机制后,你也很容易照此设计自己的工作流,官方指南见 docs/creating-workflows.md。三条黄金法则:
- 每个步骤的模板里写明输出格式——告诉智能体必须返回哪些
KEY: value,且 KEY 用大写; - 验证步骤永远配
retry_step——用on_fail.retry_step指定回跳步骤,用max_retries控制重试上限; - 一个智能体只干一件事——传递越清晰,闭环越可靠。
写在最后
Antfarm 证明了:多智能体上下文传递不需要复杂的消息队列,"KEY: value 约定 + 集中式上下文存储 + 模板占位符"三件套,配合验证-重试闭环,就能让一支 AI 智能体团队像真正的研发流水线一样可靠运转。YAML + SQLite + cron,极简之下全是巧思。
【免费下载链接】antfarmBuild your agent team in OpenClaw with one command.项目地址: https://gitcode.com/gh_mirrors/antf/antfarm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考