AnyTool
AI Agent 通用工具编排框架,一行代码让 AI 调用 MCP/Shell/GUI/Web 四类
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI Agent 通用工具编排框架,一行代码让 AI 调用 MCP/Shell/GUI/Web 四类
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:HKUDS 研究团队徽标(AnyTool 由香港大学数据科学实验室开发)
想象一下:你对 AI 说「帮我查一下 GitHub 上最近最火的 AI 编程工具,把它们的功能和用户反馈整理成对比报告」。目前的 AI 助手大多只能「动动嘴皮子」——给你一段文字回答,然后就没了。而 AnyTool 的出现,就是为了解决这个根本问题:让 AI 不只是回答,还能真正调用工具、操控电脑、执行复杂的多步骤任务。
AnyTool(通用工具层)由香港大学数据科学实验室(HKUDS)开发,是一个专门为 AI Agent 设计的工具编排框架。它的核心理念很简单:不追求做最聪明的 AI,而是让 AI 能够可靠地使用工具。2025 年初开源后迅速获得关注,目前已在 GitHub 斩获 663 颗星,成为 MCP 生态中最受关注的工具编排项目之一。
当前 AI Agent 在工具调用领域面临三个根本性挑战:
挑战一:工具上下文过载(MCP Tool Context Overload)。当 Agent 连接多个 MCP 服务器时,所有服务器的所有工具在每次执行步骤中都会被加载。这带来三个问题:每次加载大量工具导致执行速度下降;用户无法预览工具效果,只能「宁多勿缺」地配置;每次执行步骤都重复加载工具,没有缓存,资源浪费严重。
挑战二:社区工具质量参差不齐。MCP 生态依赖社区贡献,存在工具描述夸大其词、实际功能与文档不符、无法事先评估工具可靠性、存在安全风险等问题。Agent 往往会浪费调用次数去试探不可靠的工具。
挑战三:工具能力边界受限。现有 MCP 生态主要覆盖 Web API,缺乏对本地系统操作、GUI 图形界面自动化、复杂跨平台任务的支持,导致很多真实场景根本无法自动化。
AnyTool 采用分层架构来解决上述问题:
第一层:工具上下文管理(Tool Context Management)。AnyTool 实现了多阶段工具检索管道(Multi-Stage Tool Retrieval Pipeline),将工具选择分为四个阶段:服务器筛选、工具名匹配、语义搜索、LLM 排序。每个阶段逐步缩小候选范围,既保证精确度又兼顾速度。同时引入长期工具记忆机制,预计算工具嵌入并持久化到磁盘,实现「一次加载,永久复用」。按需懒加载(Lazy Loading)策略让 MCP 服务器只在需要时才启动,而非启动时就加载全部。
第二层:质量感知与安全控制。AnyTool 内置工具质量评估模块,通过 LLM 分析工具描述的清晰度和完整性,结合历史调用成功率自动排序。安全策略模块拦截危险操作(如任意代码执行),敏感工具需用户确认。自我修复机制(Self-Healing)能在某个 MCP 工具调用失败时,自动在本地切换到替代工具,而无需重新启动整个规划循环。
第三层:多后端统一接口。AnyTool 的最大创新是引入了 MCP 之外的三种工具后端:Shell 后端(subprocess 执行 Bash/Python)、GUI 后端(pyautogui 像素级桌面自动化)、Web 后端(深度网页研究)。四种后端对外暴露统一工具 Schema,Agent 无需知道背后是哪个后端在处理,实现了透明切换和智能路由。
从代码结构看,AnyTool 是典型的 Python Monorepo 项目。核心依赖包括:litellm(统一 LLM 抽象层)、mcp(MCP 协议客户端)、anthropic(GUI 自动化截图分析)、flask(本地服务器)、pyautogui(跨平台 GUI 自动化)、pydantic(数据验证)。
代码组织分为六大模块:agents(Agent 实现)、grounding/backends(四大后端)、grounding/core(工具基类/质量/安全)、recording(操作录制)、platform(截图/系统信息)、local_server(Flask 服务)。质量保障包含 pytest 测试、Black 格式化、Flake8 检查和 Mypy 静态分析。MIT 许可证。
AnyTool 提供 Local 模式(默认)和 Server 模式。Local 模式适合本地直接运行,无需启动额外服务:
conda create -n anytool python=3.12 ffmpeg -c conda-forge -y
conda activate anytool
pip install -r requirements.txt
配置 .env 后,通过 Python 代码调用。Server 模式适合远程 VM 或多机部署,需安装平台依赖并启动 Flask 服务。AnyTool 依赖外部 LLM API,本地不需要 GPU,4GB 内存即可运行基础功能。
1. 依赖外部 LLM API:所有推理依赖 OpenAI/Anthropic,存在隐私风险和使用成本问题。
2. 跨平台支持成熟度不一:macOS 支持最完善,Windows 相对较弱,企业级部署需评估。
3. 社区 MCP 工具质量不可控:内置质量评估能缓解但无法根治此问题。
4. 尚无 Docker 支持:不支持容器化一键部署。
AnyTool 的出现标志着 AI Agent 工具调用从「能用就行」进入「工程化可靠」阶段。传统 MCP Agent 像拿着万能钥匙的人,每次都要把所有钥匙掏出来试;AnyTool 相当于装了一个智能钥匙管理系统——根据任务自动选钥匙、用过的记住、下次直接拿最优的。
多后端架构让 AI Agent 第一次能够完成从 Web-API 到本地桌面的全覆盖自动化。随着 MCP 协议生态的扩张,AnyTool 有望成为 Agent 工具编排领域的基础设施级项目。