去年有个数据在圈子里传疯了:一个中等规模的AI Agent项目,平均有40%的代码是在处理"谁该说话、说什么、说完交给谁"这种脏活。不是业务逻辑,不是模型调优,就是纯粹的胶水代码——定义节点、画流程图、维护状态机。
一位叫Shawn的开发者算过账:他想让Claude写代码、Gemini做安全审查,结果在LangChain里写了300多行Python,还没跑通第一个循环。他当时的原话是:「我只想写三句话:A交给B,B检查不过就回A,过了就部署。为什么非要我造一辆坦克去碾一只蚂蚁?」
三个月后,他开源了aqm。一个用YAML配置就能跑多Agent工作流的工具,零SDK、零API密钥(如果你本地已经配好了Claude或Gemini的CLI),一行命令直接执行。
YAML凭什么能省55%的token成本
Shawn的解法听起来像偷懒,但底层有套精算逻辑。传统框架把Agent当成"需要被Python代码组装的黑盒",aqm把它降级成"配置文件里的一个条目"。
核心差异在上下文策略。aqm内置了5种token优化方案,只给Agent看它必须看的东西——不是把整个对话历史塞过去,而是按场景裁剪。实测数据是省55%到85%,取决于你的流程复杂度。
这有点像快递分拣:传统做法是每个站点把整车货卸下来再装上去,aqm做的是按目的地预分拣,中转站只碰该碰的箱子。
更隐蔽的好处是移植性。一个YAML文件丢给同事,对方有CLI环境就能跑,不用对齐Python版本、不用配虚拟环境、不用解释"这段继承自BaseNode的类是干嘛的"。配置即代码,代码即文档。
质量门:让AI自己当裁判的三种判法
多Agent系统最烦的不是搭建,是失控。A写完B审,B说改,A改了B又说还差点,循环到第7轮人类介入才发现俩Agent在互相敷衍。
aqm的解法叫Quality Gate,三种触发模式:
LLM自评:让第三个模型当裁判,问"这代码能上线吗",答案为否就触发重试或回退,最多可设3次循环上限。
规则硬拦:正则匹配、长度检查、关键词过滤,适合有明确红线的情况。
人工兜底:关键节点弹窗等人点确认,防止AI在深夜互相甩锅。
Shawn的示例里有个典型场景:developer节点用Claude,handoffs指向reviewer;reviewer用Gemini,gate检查"Is this production-ready?",通过就交给deployer,失败就回developer,max_retries锁死在3。整个流程的控制流肉眼可读,没有隐式的状态跳转。
他还塞了个叫Session Node的东西,专门处理"设计会议"场景——多个Agent来回讨论直到达成共识。这通常是多Agent最难写的部分,因为涉及动态轮次和终止条件判断,现在变成YAML里的一个节点类型。
30秒能看懂的配置长什么样
这是Shawn文档里的完整示例,从代码生成到部署:
agents:
- id: developer
runtime: claude
system_prompt: "Implement: {{ input }}"
handoffs: [{ to: reviewer }]
- id: reviewer
runtime: gemini
system_prompt: "Review for security: {{ input }}"
gate:
type: llm
prompt: "Is this production-ready?"
max_retries: 3
handoffs:
- { to: deployer, condition: on_approve }
- { to: developer, condition: on_reject }
执行命令是:aqm run "Create a login form with JWT"
没有__init__.py,没有Pydantic模型定义,没有画DAG图。Shawn的假设很直接:80%的Agent编排需求不需要图灵完备的表达力,YAML的层级结构足够描述"谁→在什么条件下→交给谁"。
剩下20%的复杂需求?他留了个口子:aqm支持在节点里调用外部脚本,真要写Python也能塞进去,只是默认假设你不需要。
开源两周后收到的最狠反馈
aqm在GitHub上挂的是MIT协议,Shawn的README写得像求骂:「来拆它,来 critique,来告诉我缺了什么。」
他收到的第一条issue是个灵魂拷问:YAML确实省代码,但调试的时候怎么定位问题?Python至少有stack trace,YAML解析失败时错误信息像天书。
Shawn的回应是加了个--verbose模式,把每个节点的输入输出、token消耗、gate判断结果全吐出来。不是完美的解法,但他优先保的是"写配置"这个核心体验,调试工具可以后补。
另一个高频问题是:为什么不做成Web界面?他的判断是,目标用户是"已经用惯了Claude Code和Gemini CLI"的那群人,他们要的不是低代码平台,是能把现有CLI工具链串起来的胶水——只是这瓶胶水本身不该再用Python写。
目前aqm的安装命令是pip install aqm,依赖极简。Shawn没提路线图,只在讨论区留了两个问题:YAML-only是否符合你的工作流?你现在用的Agent框架最缺什么功能?
第二个问题下面,有个回复被点了47个赞:「缺的是'知道自己该什么时候闭嘴'的Agent。」Shawn回了个笑哭表情,没接话。
热门跟贴