模块以 src/tools/__init__.py 中的 _discover_subclasses() 为核心:启动时通过 pkgutil.iter_modules 扫描本包所有非下划线前缀的 .py 文件并导入,再递归收集 BaseTool 子类完成自动注册;build_registry() 是装配入口,按顺序注入 RememberTool、SwarmTool、目标类(如 StartResearchGoalTool)等需要外部依赖注入的工具实例,并按 include_shell_tools 白名单屏蔽 bash/background_run/cancel_background 等危险工具。
- 本地工具:每个
*_tool.py定义一个继承自src.agent.tools.BaseTool的类,声明name、description、parameters(JSON Schema)、repeatable、is_readonly及execute(**kwargs) -> str方法,由注册器自动发现。 - 共享基础设施:
_shell_safety.py提供 shell 命令安全拦截(禁止宽泛 kill Python),redaction.py提供统一的敏感信息脱敏(凭证键、PII、内部路径),_result_paging.py处理分页结果,path_utils.py提供路径辅助。 - OCR 子包
ocr/:封装OcrEngine抽象,提供llm_vision_ocr与rapid_ocr两种实现,通过get_ocr_engine()选择。 - 远程工具(MCP):
mcp.py基于fastmcp客户端构建MCPServerAdapter,支持 stdio/SSE/Streamable HTTP 三种传输,带 OAuth token 持久化(FileTreeStore,权限 0700)、list_tools瞬态错误重试、schema 归一化为 OpenAI 兼容 JSON Schema;MCPRemoteTool将远端工具包装成本地BaseTool,名称形如mcp_<server>_<tool>,并通过enabled_tools白名单过滤暴露。 - 注册器还集成 live broker 检测:当 MCP server 被识别为 live broker(如 Robinhood)且未授权时,跳过注册并提示
connector authorize;否则通过wrap_live_broker_tools对写操作施加 mandate + kill switch 保护。 - 依赖方向:工具单向依赖
src.agent.tools.BaseTool、src.market_data、src.memory、src.config.schema等上层能力,不反向被 agent 核心以外代码直接引用。