用途
该项目实现了一个多智能体研究系统,用于处理需要多视角和迭代调查的深度复杂研究查询。它既可以用于编码辅助,也可以用于通用研究任务。系统基于 Anthropic 文章《Building a Multi-Agent Research System》中描述的概念构建,通过协调多个 AI 智能体来完成研究。
主要能力
系统围绕一个 Lead Research Agent(主研究智能体)进行编排,该主智能体拥有一个强大的 deployAgent 工具,可以动态创建专门的 Research Subagent(研究子智能体)来处理复杂查询的特定方面。主智能体可以同时部署多个子智能体,并可在每次迭代后根据研究任务不断变化的需求选择部署更多子智能体。
该多智能体架构使系统能够:
- 将复杂查询分解为可管理的子任务
- 跨多个领域执行并行研究
- 根据中间发现进行迭代和优化
- 综合来自多个专门智能体的结果
主研究智能体
主研究智能体是整个系统的编排者,它:
- 分析传入的复杂查询并确定最佳方法
- 使用 deployAgent 工具部署多个子智能体
- 协调并行研究活动
- 将所有子智能体的结果综合为全面答案
- 根据中间发现迭代部署额外子智能体
- 管理对话历史并在需要时压缩(超过 20 条消息时)
- 使用 Gemini Pro 模型进行高级推理
- 支持最多 50 次迭代以处理复杂任务
- 具备并行工具执行能力
- 支持动态子智能体部署和管理
研究子智能体
研究子智能体是由主智能体创建的专门智能体,用于处理特定研究任务。每个子智能体:
- 专注于研究查询的特定方面
- 使用自然语言查询进行网络搜索
- 从特定 URL 获取详细内容
- 将发现报告回主智能体
- 使用 Gemini Flash 模型进行高效处理
- 针对聚焦研究任务进行优化(最多 30 次迭代)
- 配备网络搜索和内容抓取工具
- 具有唯一标识以便跟踪和协调
使用方式
系统通过两种接口暴露其功能:
- Model Context Protocol (MCP):系统实现 MCP 以暴露 DeepResearch 工具,允许与兼容 MCP 的客户端集成。
- 标准 HTTP API:同样可用。
两种接口使用相同的底层主研究智能体,并提供相同的功能。
安装与运行
环境设置:通过复制示例环境文件来配置环境变量。
构建与运行:服务器成功启动后,会显示相应信息。
智能体配置
- 主智能体:Gemini Pro 模型,最多 50 次迭代,历史压缩
- 子智能体:Gemini Flash 模型,最多 30 次迭代,聚焦工具
- 并行执行:两种智能体类型均启用
- 工具注册表:动态工具注册和管理
搜索配置
- 搜索提供方:Sonar Search Manager(使用 Perplexity 的 Sonar 模型)
- 模型选择:整个应用使用 OpenRouter 访问不同模型,包括用于搜索功能的 Sonar by Perplexity 模型
- 内容抓取:从网页提取内容
- 自然语言结果:以对话格式处理搜索结果
适用场景
- 复杂研究查询
- 多领域调查
- 编码辅助
- 通用研究任务
技术栈
该实现使用 Koog AI Framework 构建,这是一个基于 Kotlin 的框架,用于构建复杂的 AI 智能体系统。Koog 提供:
- 智能体管理:核心智能体生命周期和执行管理
- 工具注册表:动态工具注册和执行
- 策略模式:声明式智能体行为定义
- 提示管理:复杂的提示工程能力
- 模型集成:支持多个 LLM 提供方
关键依赖
- Koog Agents Core:ai.koog.agents.core.* - 主智能体框架
- Koog Prompts:ai.koog.prompt.dsl.* - 提示工程工具
- Ktor:Web 服务器和 HTTP 客户端功能
- Model Context Protocol:用于外部工具访问的 MCP 集成
- OpenRouter:LLM 模型访问和执行
项目结构(非最终版)
- LeadResearchAgent:主编排智能体
- ResearchSubagent:专门研究智能体
- ResearchLeadAgentTools:主智能体可用的工具(deployAgent、completeTask)
- ResearchSubagentTools:子智能体可用的工具(webSearch、webFetch)
- SonarSearchManager:搜索和内容抓取实现
注意:complete task 工具目前已无用。
限制与扩展方向
该项目展示了多智能体协调,可通过以下方向扩展:
- 优化并行处理
- 管理智能体内存以节省上下文窗口
- 增强搜索能力
- 集成更多 LLM 提供方
- 功能性引用管理
- 性能监控和分析
更多细节请查看 Roadmap.md。