建立 @team 执行期间的用户干预通道,支持 /stop、/debate <topic>、 普通文本追加上下文。 ExpertTeam (src/agentkit/experts/team.py): - 新增 _interventions: asyncio.Queue (maxsize=64) 干预队列 - add_user_intervention(msg): 广播 + 入队 - consume_user_interventions(): 排空并返回待处理干预 - broadcast_user_message 现在同时入队干预队列 TeamOrchestrator (src/agentkit/experts/orchestrator.py): - 新增 _user_context: list[str] 累积普通文本干预 - 新增 _process_interventions(lead, plan) 在每层执行前调用: * /stop → 终止执行,广播 plan_update(stopped_by_user) * /debate <topic> → 动态插入 DEBATE phase(受 MAX_DEBATES 限制) * 普通文本 → 累积到 _user_context - _synthesize_results 将 _user_context 追加到 synthesis prompt WS 路由 (src/agentkit/server/routes/chat.py): - 模块级 _active_teams dict 跟踪每个 session 的活跃团队 - _execute_team_collab 执行前注册、finally 注销 - WS 消息循环:若 session 有活跃团队,message 路由为干预而非新任务 - 新增 team_intervention_ack 确认消息 测试:tests/unit/experts/test_team_intervention.py(20 测试), 覆盖队列基础、/stop、/debate、普通文本、混合消息、synthesis 影响。 同步更新 test_orchestrator_debate.py 的干预通道兼容性测试 (U4 已实现 consume_user_interventions)。 全部 418 experts 测试 + 325 server 测试通过。 |
||
|---|---|---|
| .. | ||
| documents | ||
| e2e | ||
| integration | ||
| routes | ||
| tools | ||
| unit | ||
| __init__.py | ||
| conftest.py | ||
| test_routing_chain.py | ||