agent-Specialization/modules/sub_agent
JOJO a1a9a47446 fix(multi-agent): 终结子智能体改为吸收态,修复终结后复活/停止无效
terminate_sub_agent 彻底化:
- 通过 _sub_agent_instances 找到活实例直接 cancel 其 _task(原实现只查
  _running_tasks,多 manager 并存时拿不到句柄导致 cancel 未送达)
- 实例置 _cancelled 并从注册表移除,防止 inject 找到活实例直接复活
- MultiAgentState 同步标记 terminated(原实现不写,侧边栏一直显示 idle)
- output.json 改写为 terminated 终态快照(原实现保留陈旧 idle 快照,
  会被 _check_task_status 读回复活任务记录)
- 新增 control.json 跨 manager 击杀/软停止信号通道,子智能体运行循环
  每个 idle tick / 每轮开始自行消费

注入/复活路径拒绝终结者:
- inject_message_to_sub_agent 检查最新任务记录,terminated 拒绝注入并
  清理孤儿实例;_revive_sub_agent 排除 terminated 记录
- send_message_to_sub_agent 工具返回明确的'已被终结'错误
- stop_sub_agent / soft_stop_all_agents 跳过 terminated,本地无实例时
  经 control.json 让对端 manager 上的实例自行软停止

terminated 吸收态防护:
- _check_task_status/_handle_running_snapshot 不再用陈旧快照覆盖终结记录
- output.json 为 terminated 时同步本地记录(跨 manager 终结广播)
- reconcile_task_states 的 idle/running 修正跳过终态任务
- MultiAgentState.mark_status 禁止 terminated 被覆盖回 idle/running
- 硬取消路径 output.json 写 terminated 而非 failed,避免 failed 被复活
2026-07-21 15:46:24 +08:00
..
__init__.py fix(sub_agent): export TERMINAL_STATUSES in package __init__ 2026-06-20 12:15:18 +08:00
creation.py fix(multi-agent): 终结子智能体改为吸收态,修复终结后复活/停止无效 2026-07-21 15:46:24 +08:00
manager.py fix(multi-agent): 终结子智能体改为吸收态,修复终结后复活/停止无效 2026-07-21 15:46:24 +08:00
prompts.py feat(multi_agent): 提取prompt、恢复任务、优化侧边栏与sleep工具 2026-07-13 14:01:48 +08:00
state.py fix(multi-agent): 终结子智能体改为吸收态,修复终结后复活/停止无效 2026-07-21 15:46:24 +08:00
stats.py refactor(sub_agent): 子智能体从 Node.js 子进程改为主进程内 Python 协程 2026-06-20 00:26:45 +08:00
task.py fix(multi-agent): 终结子智能体改为吸收态,修复终结后复活/停止无效 2026-07-21 15:46:24 +08:00
toolkit.py fix(sub_agent): 移除 search_workspace 工具并清理内存调试代码 2026-07-17 14:05:35 +08:00
tools.py fix(sub_agent): 移除 search_workspace 工具并清理内存调试代码 2026-07-17 14:05:35 +08:00