事故: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 记录门闸架构与改代码硬约束 |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| api.py | ||
| helpers.py | ||
| media.py | ||
| models.py | ||
| skills.py | ||