ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI多Agent协作系统实战(四十八):改个名,整个AI团队都不认识人了

AI多Agent协作系统实战(四十八):改个名,整个AI团队都不认识人了 我们把AI员工小虾改成了小武。然后所有超时重试的任务都送到了一个叫开发的人手里。系统里根本没有这个人。背景我们的AI团队有四个角色统筹、开发、测试、体验。员工可以改名——用户觉得小虾不够正式改成了小武。改名很顺利。配置中心保存前端显示小武任务派发到inbox/main/——一切都对。直到第二天凌晨统筹报告突然刷屏❌ 未知Agent: 开发×4 ⚠️ 重试文件接收人: 开发仍然不是小武 DEV-20260822-005: pending等待处理——31分钟问题任务送给了开发任务超时后系统会自动生成重试文件重新唤醒agent处理。但重试文件的接收人变成了开发——一个【不存在的角色】。openclaw的agent列表里只有main小武和xnew小杰。开发是谁打开重试文件看{from:小文,to:开发,// ← 谁content:任务超时请重试}排查名字从哪来的顺着代码找。重试文件是task_monitor_retry.py生成的。它的角色映射# 理想情况读取config.json的员工名小武/小杰/小文def_agent_names():nm{xiaomi:统筹,main:开发,xnew:测试,xbai:体验}# 读config.json覆盖...看到没——默认值里main的中文名是开发如果config.json读不到函数就返回默认值——main → 开发。那为什么读不到config.json# 路径候选for_cfgpin[os.path.join(WS_DIR,config,config.json),# D:\workspace\config\config.jsonos.path.join(SCRIPTS_DIR,..,..,config,config.json)]:# D:\workspace\scripts\send_Check\..\..\configWindows上WS_DIR\config\config.json→D:\workspace\config\config.json—— 不存在配置在安装目录SCRIPTS_DIR\..\..\config→ 而SCRIPTS_DIR来自task_monitor_common.pySCRIPT_DIRos.path.join(WS_DIR,scripts,send_Check)# D:\workspace\scripts\send_Check —— 这个目录根本不存在两个候选路径全是错的——config.json一个都没读到——函数回退到默认名——main → 开发。类比改名后通讯录还是旧的就像公司里张三改名叫李四但系统里的工单系统还写着张三转交。人事系统更新了工单系统没更新——所有新工单都发给了一个已经不存在的张三。我们的问题一模一样✅ 配置中心人事系统员工叫小武❌ task_monitor_retry工单系统还写着开发角色默认名修复一条路读不到就多给几条路# 修复加安装目录\config路径__file__定位——Windows/容器通用_hereos.path.dirname(os.path.abspath(__file__))for_cfgpin[os.path.join(_here,..,..,config,config.json),# 安装目录\config ← 新增os.path.join(WS_DIR,config,config.json),os.path.join(SCRIPTS_DIR,..,..,config,config.json)]:同时把task_monitor_common.py的SCRIPT_DIR也修了——优先用脚本自身目录_HERE_DIRos.path.dirname(os.path.abspath(__file__))ifos.path.exists(os.path.join(_HERE_DIR,task_monitor.py)):SCRIPT_DIR_HERE_DIR# 脚本在app/scripts——产品化后正确位置else:SCRIPT_DIRos.path.join(WS_DIR,scripts,send_Check)# 旧开发环境兼容还有AGENT_IDS/ROLE_MAP全部动态化——从config.json读员工名改名后自动跟随。经验总结改名是个全局操作——不是改一个配置文件就完事。所有用到旧名的地方角色映射/目录判断/通知文案都要跟着变默认值会咬人——{main: 开发}这种回退默认名平时看不见一旦配置读取失败就把任务送给一个不存在的人路径候选要多给几条——Windows/容器/Linux的目录结构不同一条路径读不到就回退回退就出错回退本身要可观测——如果默认值被用了应该打日志“⚠️ 使用默认角色名——config.json未读取”而不是静默回退
返回列表