现象
review 会话可以正常创建并产出 review 结果(#2100 已修复),但从 review 结果点击「开始修复」时报错:
审核失败
Failed to start dialog turn: Unknown session mode: ReviewFixer
根因:PR #2106 的修复不完整
#2106(修复 #2100)只放行了会话创建/首轮使用的 CodeReview / DeepReview 两个 agent。但 review 流程的「修复阶段」由前端以 agentType='ReviewFixer' 提交(DeepReviewActionBar.handleStartFixing → sendMessage(..., 'ReviewFixer', 'agentic')),后端 turn 启动路径的 primary-agent 解析(resolve_primary_agent_for_turn)白名单中不包含 ReviewFixer,导致:
Failed to start dialog turn: Unknown session mode: ReviewFixer
与原 issue #2100 的关联
影响面(同一解析函数的全部路径)
- turn 启动:scheduler start_turn → coordinator.rs
resolve_session_primary_agent 报错(用户所见)
- 手动压缩:coordinator.rs 手动压缩路径同样失败
- 会话恢复:session_manager.rs 恢复路径解析失败后会把会话 agent_type 静默改写为
agentic(修复中途重启会丢失 ReviewFixer 绑定,后续修复轮以 agentic 运行且持久化改写)
修复建议
在后端共享解析层放行 ReviewFixer(is_builtin_session_primary_agent 白名单加入 REVIEW_FIXER_AGENT_TYPE,常量已存在于 bitfun-agent-runtime::deep_review::constants)。ReviewFixer 注册为 hidden(["CodeReview","DeepReview"]),普通模式不可选,放行不会暴露给普通会话;ReviewWorker/ReviewJudge 等 team 角色保持受限。
现象
review 会话可以正常创建并产出 review 结果(#2100 已修复),但从 review 结果点击「开始修复」时报错:
根因:PR #2106 的修复不完整
#2106(修复 #2100)只放行了会话创建/首轮使用的
CodeReview/DeepReview两个 agent。但 review 流程的「修复阶段」由前端以agentType='ReviewFixer'提交(DeepReviewActionBar.handleStartFixing → sendMessage(..., 'ReviewFixer', 'agentic')),后端 turn 启动路径的 primary-agent 解析(resolve_primary_agent_for_turn)白名单中不包含ReviewFixer,导致:与原 issue #2100 的关联
ca94825ad(feat(extensions): activate external primary agent profiles,2026-08-04)。该 commit 把 external primary agent 解析接入会话创建与 turn 启动路径;此前 turn 启动直接用 agent_type,不经过 registry 解析,ReviewFixer一直可用。影响面(同一解析函数的全部路径)
resolve_session_primary_agent报错(用户所见)agentic(修复中途重启会丢失 ReviewFixer 绑定,后续修复轮以 agentic 运行且持久化改写)修复建议
在后端共享解析层放行
ReviewFixer(is_builtin_session_primary_agent白名单加入REVIEW_FIXER_AGENT_TYPE,常量已存在于bitfun-agent-runtime::deep_review::constants)。ReviewFixer 注册为hidden(["CodeReview","DeepReview"]),普通模式不可选,放行不会暴露给普通会话;ReviewWorker/ReviewJudge等 team 角色保持受限。