agent-Specialization/core/main_terminal_parts/context
JOJO 99f4d3d1dd fix(server): 对话级主任务门闸,修复并发主任务交叉写入对话历史
事故:socketio 用户任务(不在 task_manager 注册)与完成通知轮询器
派发的通知任务并发写入共享 conversation_history,产生 assistant 乱序段,
导致 Kimi API 400(tool_call_id is not found)与通知永久丢失。

- 新增 server/main_task_gate.py:对话级主任务门闸(单写者不变量,
  一个 WebTerminal 同一时刻只允许一个主聊天任务)
- process_message_task 作为唯一入口获取/认领门闸,拿不到即拒绝;
  通知链 token 经 session_data 移交,失败释放并回滚通知标记;
  _run_chat_task finally 兜底释放防泄漏
- execute_tool_calls 改守护包装(try/finally 复位 _tool_loop_active),
  杜绝并发交错导致标志卡死
- build_messages 增加孤儿 tool 消息剥离防御层(止血,不替代门闸)
- AGENTS.md 新增 §12 记录门闸架构与改代码硬约束
2026-08-12 18:01:32 +08:00
..
__init__.py refactor(server,modules,utils,frontend): split oversized modules into packages and fix regressions 2026-06-20 15:54:48 +08:00
base.py refactor(naming): 移除代码中的第三方产品名 2026-07-28 18:43:03 +08:00
conversation.py refactor(naming): 移除代码中的第三方产品名 2026-07-28 18:43:03 +08:00
memory.py refactor(naming): 移除代码中的第三方产品名 2026-07-28 18:43:03 +08:00
messages.py fix(server): 对话级主任务门闸,修复并发主任务交叉写入对话历史 2026-08-12 18:01:32 +08:00
mode.py refactor(runtime-mode): 运行期模式切换通知改为基线漂移检测机制 2026-08-01 10:02:24 +08:00
prompt.py refactor(naming): 移除代码中的第三方产品名 2026-07-28 18:43:03 +08:00