多 agent 工作流卡住怎么办:给 skill 加一层只读 trace
问题:多 agent 工作流是个黑盒
在九问 jiuwenswarm 上落地 PPT 专家 agent,跑起来后发现一个硬痛点:看不见里面发生了什么。
PPT 生成是典型的多步骤协作 ——researcher 出大纲、designer 定设计、presenter 生成、critic 评审、reviser 修订、exporter 导出,中间还夹着 HITL(human-in-the-loop,人介入审批)环节。
环节一多,黑盒就完全不可调试:
- workflow 卡住,不知道停在哪一步、哪个 agent
- 子 agent 返回什么、审批是否触发、串行还是并行,只能靠最终产物反推
- 没有审计抓手
本周其他进展
- 深挖 workflow 原语(
agent()、agent_session())实现机理,确认 swarmflow 是薄封装 - 修复解析器,追根溯源到」如何解析」这一层
- 联通三个 skill 跑通,Deepsearch agent 设计验证完成
深入:给 skill 加一层只读 trace
核心方案是在 skill 的每个阶段边界、每个 agent 调用后,旁路写一份 trace 文件到 {workspace}/.trace/。
flowchart LR
A[skill run 9 阶段] --> B[阶段边界 write_trace]
B --> C[.trace/ 目录]
C --> D[manifest.json 审计汇总]
C --> E[按阶段编号子目录]
E --> F[每个 agent 完整返回 JSON]trace 目录按阶段编号落盘,结构清晰:
{workspace}/.trace/ |
实现上有两条硬约束:
- 只读旁路:
write_trace只写文件,不改变任何控制流、schemas、原语调用。观测不能改变被观测对象的行为,否则 trace 不可信。 - trace 写 workspace,不写 skill 目录:skill 目录是只读的技能定义,workspace 才是运行时产物区。每次跑用不同 workspace,trace 互不污染。
效果:validator 0 error;stubbed 测试全过。卡住时 ls {workspace}/.trace/ 看最后写的文件,一眼定位停在哪一步哪个 agent。
沉淀
可观察性是多 agent 工作流从」能跑」到」可调」的分水岭。而可观察性设计本身有一条铁律:只读旁路,不改控制流。trace 是观测窗口,不是执行路径 —— 这条边界划对了,后面才敢放心加观测点。