@tencent-ai/codebuddy-code 2.97.4 → 2.97.5-next.4404f36.20260522

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ CodeBuddy Code 的所有重要更新都会记录在这里。
7
7
 
8
8
  ## [未发布]
9
9
 
10
+ ## [2.97.5] - 2026-05-22
11
+
12
+ ### 🐛 修复
13
+
14
+ - **专家团:修复多类卡死/无产物/异常结束问题**:本次集中修复了 4.22.x ~ 4.24.0 用户在使用专家团(包括"腾讯自选股"、"一人公司"、"专业文档生成"、"深度研究"等)时反馈的多种异常:任务异常结束无任何产物输出;子成员任务已完成但主会话卡在"思考中"无响应;专家团运行中途自行结束、制品丢失。根因覆盖 team-lead inbox 调度、成员身份解析、并发 spawn 时序、shutdown 协调等多条链路。
15
+ - **Team:修复成员 task 已完成时 team-lead 发起 shutdown 后无回应**:成员已 `completed` 后,team-lead 调用 `SendMessage(type=shutdown_request)`,旧路径直接经 `mailbox.send` 写出 `shutdown_response`,绕过了 `SendMessage` 工具的 `handleShutdownResponse`,导致 lead 端 `ShutdownCoordinator` 永远收不到 fulfillResponse、Mode B 队列等待 `agent_end` 触发 dispatch 形成竞态。现在在 `startTeamLeadInboxPolling` 回调入口识别 `shutdown_response` 短路:调 `ShutdownCoordinator.fulfillResponse` 解锁 lead 等待,从 `TeamMemberRegistry` 摘除成员(兜底),不注入主 agent 会话、不入队 RichMessageQueue
16
+ - **Team:修复并发 spawn 时 SendMessage 找不到对端导致消息丢失**:在主 lead 短时间内并发拉起多个成员的场景下,旧逻辑"先校验 recipient 存在再投递"会直接报错 `Recipient not found`;现对齐 "writeToMailbox first, resolve later" 策略:`resolveRecipient` 命中失败时降级一次 `TeamManager.refreshFromDisk()`,即便仍未注册也直接写入 inbox 文件并附 `notice` 字段提示
17
+ - **Team:修复成员会话被错误认定为 team-lead,导致 inbox `from` 字段串号**:respawn 出来的成员 session 在某些边界下 `session.meta` 尚未持久化,`teamContext` 写不回,旧逻辑会把成员发出的全部消息标成 `team-lead`;现强制 materialise `session.meta`,`SendMessage` lead 分支额外校验 `session.id === team.leadSessionId`,成员 sender 解析在 in-process miss 时回落 `TeamMemberRegistry`
18
+ - **Team:修复同毫秒并发 shutdown_request 的 ID 冲突**:lead 向多成员并行发起 shutdown 时,旧 `shutdown-${Date.now()}` 在同一 ms 内会撞 ID,第二个 pending 直接覆盖第一个;现改为 `shutdown-${recipient}-${Date.now()}-${rand}`
19
+ - **Team:补齐进程退出时的 session-team 清理兜底**:`TeamManager` 维护本会话创建的 team 集合,进程退出时通过 `Promise.allSettled` 并发清理 `~/.codebuddy/teams/<name>/` 与 task 目录,避免长期累积污染;仅清理本进程显式创建的 team,绝不动其他会话遗留目录
20
+ - **Agent:新增环境变量隐藏并禁用 Fork subagent**:修复线上观察到 fork subagent 递归派生导致请求量爆炸(单日 3141 条,teammate 编号涨到 fork-56)。当环境变量 `CODEBUDDY_DISABLE_FORK_SUBAGENT` 为 truthy 值时,工具描述层自动隐藏 fork-mode 段落;运行时层通过统一的 `shouldApplyForkSpecialization()` helper 在三处入口(AgentTool / AgentTask.setupPhase / AgentTask.setupSubAgentSession)一致判定,禁用时跳过 fork 特殊化;模型若仍传 `subagent_type='fork'` 会优先匹配用户自定义同名 agent,未定义则改写为 `general-purpose`,避免 "Task agent fork is not available" 报错
21
+ - **User-Agent 头部修复**:修复 HTTP `User-Agent` 头部在缺少 `productName` 时回退到固定字符串 `WorkBuddy/unknown` 的问题,避免污染下游统计;现仅在 `productName` 存在时拼入产品名段
22
+
23
+
10
24
  ## [2.97.4] - 2026-05-21
11
25
 
12
26
  ### 🔧 功能改进