先把当时的情况摆出来。autogen-agentchat 0.4.5,RoundRobinGroupChat 里注册了两个都叫 assistant 的 agent,初始化抛 ValueError: Agent names must be unique,改成不同名字仍然报。

排查方向其实有限,先把可能性排一排。两个 agent 的 name 字段完全相同。也可能是继承基类时没有改默认 name。

少数情况下是participants 列表里同一个实例被加了两次。不容易想到的是,终止条件里又引用了一个同名 agent。

上来先打印参与者的名字

python -c "from app.team import team;print([a.name for a in team.participants])"

再往下逐个显式命名后重建

python -c "from autogen_agentchat.agents import AssistantAgent;from autogen_ext.models.openai import OpenAIChatCompletionClient;print('named')"

然后确认名字唯一再启动

python -c "from app.team import build;t=build();print(len({a.name for a in t.participants})==len(t.participants))"

剩下的就是跑一轮看轮次日志

python -c "import asyncio;from app.team import build;asyncio.run(build().run(task='写一段'))"

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

白天有业务在跑,能验证的部分都压到了晚上做。

恢复的判定其实很直接。团队能正常启动,轮次日志里四个角色名各不相同,任务在五轮内收敛。

补一句。AutoGen 用 name 做消息路由的键,名字重复比配置错误更难查,建团队前先断言唯一性。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189