当前位置: 首页 > news >正文

【智能体cooragent】创建 workflow 时 候选 Agent 和 Tool 获取来源详细分析

基于对 AgentManager 类的深入分析,这段代码中的 agent 和 tool 来源如下:

🏗️ AgentManager 初始化架构

# 在 src/manager/agents.py 中
agent_manager = AgentManager(tools_dir, agents_dir, prompts_dir)
asyncio.run(agent_manager.initialize())

目录结构:

  • tools_dir = 项目根目录/store/tools/
  • agents_dir = 项目根目录/store/agents/
  • prompts_dir = 项目根目录/store/prompts/

🤖 Agent 获取来源

1. 默认内置 Agent (代码硬编码)
async def _load_default_agents(self):# 四个内置的共享 agent

内置 Agent 列表:

Agent 名称用途工具用户ID
researcher研究任务专家tavily_tool, crawl_tool"share"
coder软件开发专家python_repl_tool, bash_tool"share"
browser网页交互专家browser_tool"share"
reporter报告生成专家[] (无工具)"share"
2. 文件系统存储的 Agent (JSON 文件)
# 从 store/agents/ 目录加载
for agent_path in self.agents_dir.glob("*.json"):agent_name = agent_path.stemif agent_name not in self.available_agents:load_tasks.append(self._load_agent(agent_name, user_agent_flag))

当前文件系统中的 Agent:

  • store/agents/reporter.json
  • store/agents/browser.json
  • store/agents/coder.json
  • store/agents/researcher.json

Agent JSON 文件格式示例:

{"user_id": "share","agent_name": "reporter", "nick_name": "reporter","description": "...","llm_type": "basic","selected_tools": [],"prompt": "..."
}
3. Agent 过滤规则
for agent in agent_manager.available_agents.values():if agent.user_id == "share":                           # 1️⃣ 共享 AgentTEAM_MEMBERS.append(agent.agent_name)if agent.user_id == user_id or agent.agent_name in coor_agents:  # 2️⃣ 用户专属或协作 AgentTEAM_MEMBERS.append(agent.agent_name)

过滤逻辑:

  • ✅ 共享 Agent (user_id == "share"): 所有用户可用
  • ✅ 用户专属 Agent (user_id == 当前用户): 只有创建者可用
  • ✅ 协作 Agent (agent_name in coor_agents): 在协作列表中的 Agent

🛠️ Tool 获取来源

1. 内置工具 (代码导入)
async def load_tools(self):        self.available_tools.update({bash_tool.name: bash_tool,           # bash 命令执行browser_tool.name: browser_tool,     # 浏览器自动化crawl_tool.name: crawl_tool,         # 网页爬取python_repl_tool.name: python_repl_tool,  # Python 代码执行tavily_tool.name: tavily_tool,       # 搜索引擎})

内置工具来源: src/tools/ 模块中的各个工具文件

  • src/tools/bash_tool.py → bash_tool
  • src/tools/browser.py → browser_tool
  • src/tools/crawl.py → crawl_tool
  • src/tools/python_repl.py → python_repl_tool
  • src/tools/search.py → tavily_tool
2. MCP 工具 (外部协议)
if USE_MCP_TOOLS:await self.load_mcp_tools()async def load_mcp_tools(self):mcp_client = MultiServerMCPClient(mcp_client_config())mcp_tools = await mcp_client.get_tools()for _tool in mcp_tools:self.available_tools[_tool.name] = _tool

MCP 工具: 通过 Model Context Protocol 从外部服务器加载的工具

3. 工具过滤
if not USE_BROWSER:del self.available_tools[browser_tool.name]  # 禁用浏览器工具

📊 数据流总结

Agent 数据流:
1. 内置默认 Agent (代码) ↓
2. JSON 文件 Agent (文件系统)↓  
3. 用户权限过滤↓
4. available_agents 字典↓
5. 工作流 TEAM_MEMBERS 列表
Tool 数据流:
1. 内置工具 (src/tools/ 模块)↓
2. MCP 外部工具 (可选)↓
3. 环境配置过滤↓
4. available_tools 字典↓
5. 工作流 TOOLS_DESCRIPTION

🎯 实际应用场景

场景 1: 标准用户
# 可用的共享 Agent
- researcher (搜索+爬取)
- coder (Python+Bash)  
- browser (网页操作)
- reporter (报告生成)# 可用的工具
- bash_tool, crawl_tool, python_repl_tool, tavily_tool
- (browser_tool 如果启用)
场景 2: 协作模式
# 除了共享 Agent,还包括
- 指定的协作 Agent (coor_agents 参数)
- 用户自定义的 Agent
场景 3: 企业部署
# 可以添加
- 自定义 JSON Agent 文件到 store/agents/
- 外部 MCP 工具服务器
- 用户特定的 Agent (user_id != "share")

💡 设计优势

  1. 多层次架构: 内置 + 文件 + 外部协议
  2. 权限控制: 基于 user_id 的访问控制
  3. 动态扩展: 支持运行时添加 Agent 和 Tool
  4. 配置灵活: 通过环境变量控制功能开关
  5. 协作支持: 支持跨用户的 Agent 协作

这种设计让系统既有稳定的基础能力(内置 Agent/Tool),又具备强大的扩展性(文件系统 + MCP 协议),同时保证了安全性(权限控制)和灵活性(协作机制)。

http://www.xdnf.cn/news/1232641.html

相关文章:

  • 深入 Go 底层原理(六):垃圾回收(GC)
  • Kafka——关于Kafka动态配置
  • 洛谷 P3870 [TJOI2009] 开关-普及+/提高
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第7章 事务
  • 【Java】在一个前台界面中动态展示多个数据表的字段及数据
  • InfluxDB 与 Node.js 框架:Express 集成方案(二)
  • 中州养老项目:Mybatis自动填充拦截器
  • 大模型Agent记忆的主流技术与优缺点解析
  • 网页操作自动化解决方案:如何用Browser-Use+CPolar提升企业运营效率
  • CYUSB3014-BZXC-USB3.0接口芯片-富利威
  • 解锁智能油脂润滑系统:加速度与温振传感器选型协同攻略
  • Javascript面试题及详细答案150道之(016-030)
  • 前端与后端部署大冒险:Java、Go、C++三剑客
  • SQL语言学习(group by,having)
  • 半导体物理复习
  • TypeScript03-web项目知识
  • 路面障碍物识别漏检率↓76%:陌讯多模态融合算法实战解析
  • linux 启动流程?
  • C++入门基础(三):const引用、指针和引用的关系、inline(修饰内联函数)替代宏、nullptr代替null
  • .env 文件
  • 对于考研数学的理解
  • 【MySQL】增删改查操作 —— CRUD
  • 【软考中级网络工程师】知识点之级联
  • 驾驶场景玩手机识别:陌讯行为特征融合算法误检率↓76% 实战解析
  • 数字化转型驱动中小制造企业的质量管理升级
  • 梦幻花瓣雨
  • [mssql] 分析SQL Server中执行效率较低的SQL语句
  • 关于echarts的性能优化考虑
  • 蓝桥杯----串口
  • 我的世界进阶模组教程——物品(2)