CyberStrikeAI 已支持多 Agent:说明与实现概要(后附群二维码)
1. 背景
CyberStrikeAI 之前以 单 Agent(ReAct)+ MCP 工具 为主。复杂任务里,一个 Agent 要同时承担理解需求、选工具、看结果、再规划下一步,上下文容易被工具输出占满,职责也容易混在一起。
现在增加 多 Agent 模式(可选):由 主代理 拆分任务,通过调度把子任务交给 子代理 执行。单 Agent 路径保留,可按配置和前端开关切换。
2. 当前能力(用户侧)
开关: config.yaml里multi_agent.enabled;可配默认模式、机器人/批量任务是否单独用多 Agent 等(详见仓库docs/MULTI_AGENT_EINO.md)。定义子代理:在 agents/下放*.md(front matter + 正文);主协调者用orchestrator.md或kind: orchestrator的 md。可与配置里的sub_agents合并,同名时 Markdown 可覆盖。接口:多 Agent 对话走 POST /api/multi-agent/stream(SSE);另有非流式POST /api/multi-agent。流式事件尽量与原有主聊天流式一致(工具调用、增量回复、思考流等),方便现有前端复用。使用范围:主聊天、WebShell AI、钉钉/飞书机器人、批量任务队列均可按配置接入多 Agent(具体开关见文档)。
3. 实现概要(技术侧)
编排:使用 CloudWeGo Eino 的 DeepAgent( adk/prebuilt/deep):主代理用task调子代理;adk.NewRunner执行,开启流式。核心组装在internal/multiagent/runner.go。工具: internal/einomcp把现有 MCP 工具定义转成 Eino 可调用的 Tool,执行仍走Agent.ExecuteMCPToolForConversation,并用会话 ID 关联,与单 Agent 同一套工具执行链。会话与工具白名单: internal/handler/multi_agent_prepare.go里准备会话(含 WebShell),工具策略与单 Agent 对齐。长上下文:Eino Summarization 中间件挂在主/子代理上,触发阈值与 openai.max_total_tokens等相关逻辑在internal/multiagent/eino_summarize.go一带,细节见docs/EINO_INTEGRATION_DEEP_ANALYSIS.md。
4. 后续计划:
继续扩展多 Agent 形态:在统一 MCP 与审计前提下,尝试其他编排方式(不同协作结构、不同阶段拆分等),而不是绑死在一种拓扑上。 把现有实现做扎实:按文档优先级逐步修历史语义、工具链消息保真、观测与测试、配置与契约文档等,让行为可预期、可排障。
5. 小结
多 Agent 已可用:配置 + Markdown 子代理 + Eino DeepAgent 编排 + MCP 复用 + 主聊天/WebShell/机器人/批量的可选接入。 单 Agent 不删:适合简单对话与原有习惯。 文档: docs/MULTI_AGENT_EINO.md(功能与文件索引)、docs/EINO_INTEGRATION_DEEP_ANALYSIS.md(问题与改进方向)。
项目地址:https://github.com/Ed1s0nZ/CyberStrikeAI
为方便 问题反馈 和 使用交流,故开通微信群,请小伙伴按需加入: