打开网易新闻 查看精彩图片

去年有个数据在圈子里传疯了:一个中等规模的AI Agent项目,平均有40%的代码是在处理"谁该说话、说什么、说完交给谁"这种脏活。不是业务逻辑,不是模型调优,就是纯粹的胶水代码——定义节点、画流程图、维护状态机。

一位叫Shawn的开发者算过账:他想让Claude写代码、Gemini做安全审查,结果在LangChain里写了300多行Python,还没跑通第一个循环。他当时的原话是:「我只想写三句话:A交给B,B检查不过就回A,过了就部署。为什么非要我造一辆坦克去碾一只蚂蚁?」

三个月后,他开源了aqm。一个用YAML配置就能跑多Agent工作流的工具,零SDK、零API密钥(如果你本地已经配好了Claude或Gemini的CLI),一行命令直接执行。

YAML凭什么能省55%的token成本

YAML凭什么能省55%的token成本

Shawn的解法听起来像偷懒,但底层有套精算逻辑。传统框架把Agent当成"需要被Python代码组装的黑盒",aqm把它降级成"配置文件里的一个条目"。

核心差异在上下文策略。aqm内置了5种token优化方案,只给Agent看它必须看的东西——不是把整个对话历史塞过去,而是按场景裁剪。实测数据是省55%到85%,取决于你的流程复杂度。

这有点像快递分拣:传统做法是每个站点把整车货卸下来再装上去,aqm做的是按目的地预分拣,中转站只碰该碰的箱子。

更隐蔽的好处是移植性。一个YAML文件丢给同事,对方有CLI环境就能跑,不用对齐Python版本、不用配虚拟环境、不用解释"这段继承自BaseNode的类是干嘛的"。配置即代码,代码即文档。

质量门:让AI自己当裁判的三种判法

质量门:让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秒能看懂的配置长什么样

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回了个笑哭表情,没接话。