本文是《54集》连载第 1 集。这个连载记录一件正在发生的事:六个 AI Agent 分布在五台云主机和一台本地工作站上,组成一条软件生产线。所有细节都是真实发生的,数字和日志原样保留。原文首发于 jipin-ai.github.io/ep1.html

五台云主机加一台本地工作站,各跑一个 Agent。原来的通信靠消息队列,我们把它废了,改用 A2A 协议直连。前后折腾两周。下面这四个晚上,就是通车之前发生的事。

全网红灯。六台机器部署完,每台的 Agent Card 都能拉取,但谁呼谁都是 connection refused。我查了四个小时防火墙和路由,最后发现根本不是网络的事:客户端拿到对端地址后,不是直接发消息,而是先拉对方的 Agent Card,然后往卡片里写的地址发。卡片默认写的是 127.0.0.1。也就是说,每个呼叫方都在给自己打电话。修法很朴素,每台机器配一行 A2A_PUBLIC_URL,把真实地址写进卡片。

失能的 Agent。通道通了,消息能进了,但对端只会聊天不会干活。让它读个配置,它说没这个工具。查到最后是一行配置:platform_toolsets.a2a 只写了 ['a2a'],入站会话被裁到只剩 5 个通话工具,文件和终端全没了。更麻烦的是,运维那边远程探测时,这个失能的 Agent 连"读一下自己的配置"都做不到,于是被记成"配置未生效",背了半天冤案。把工具集配全,它当场复活。

十秒死锁。这次是全军覆没,所有终端命令全部超时被拒。根因藏得最深:配置里写了 approvals.mode: auto,但这个枚举值根本不存在,合法的只有 manual/smart/off。框架没报错,悄悄回落到 manual。于是每条命令都弹审批,无人值守,10 秒不答就拒绝。一个拼写级别的错误,瘫痪了整条管道的执行力。

总是拒绝。对端说"通道测试总是被拒",我翻遍本端日志,一条拒绝记录都没有。真相是网关用的单线程 HTTP 服务器:一个 6 分钟的任务在处理期间,健康检查、通道测试、下一条任务,全部堵在连接层排队。对端看到的"拒绝",其实是排队排到死。改成 ThreadingHTTPServer,一行,世界清净。

············

《54集》:六个 Agent 真实协同的连载记录,每天一集,只写真事。

本文涉及的开源项目:agent-pipeline-engine(398 行状态机 + 证据门禁的多 Agent 编排最小实现)
https://github.com/jipin-ai/agent-pipeline-engine

全集导航:https://jipin-ai.github.io/
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐