让手机上的LLM真正动手:Off Grid AI工具调用与MCP服务器接入实战
【免费下载链接】OGAMThe Swiss Army Knife of Offline AI. Chat, see, speak, and generate images on your phone or Mac — GGUF LLMs, vision, Whisper speech-to-text, Stable Diffusion, tool calling, and local-network servers. Runs on your CPU, GPU, or NPU. No account, no API key, zero data leaves your device.项目地址: https://gitcode.com/gh_mirrors/of/OGAM
Off Grid AI是一款完全运行在本地设备上的离线 AI 助手——手机或 Mac 上的 LLM 不仅能聊天,还能工具调用(联网搜索、计算器、知识库检索),甚至接入MCP 服务器把 Linear、Notion、GitHub 等外部工具挂到模型上。无需账号、无需 API Key,所有数据都留在你的设备上。本文将带你从零上手这套"让 LLM 真正动手干活"的本地 AI 工具调用体系。
什么是工具调用:从"只会说"到"能动手"
普通聊天机器人只会"说"——它无法查实时新闻,也无法真的执行一个计算。而工具调用(Tool Calling)的工作方式是:
- 你把一批工具(函数)的"说明书"随提示词发给 LLM;
- 模型在回答时输出一个结构化的工具调用,比如"调用 web_search,参数是 query=今日金价";
- 应用替它执行,把结果塞回对话;
- 模型基于真实结果给你最终答案。
Off Grid AI 把这个过程做成了一个全自动工具循环,并且内置了"防失控"机制:每一轮最多执行多少次工具调用(maxToolCalls设置)、每次工具结果的最大长度,都会兜底,避免小模型在小屏手机上"绕圈死循环"。核心循环实现在 generationToolLoop.ts。
开箱即用:6 个内置工具清单 🧰
打开工具页面,你会看到这些免费内置工具,全部由 registry.ts 定义:
| 工具 | 能干什么 | 需要联网 |
|---|---|---|
| 🔍Web Search | 实时联网搜索,返回标题、摘要和链接 | 是 |
| 🧮Calculator | 精确计算数学表达式 | 否 |
| 🕐Date & Time | 获取当前日期时间(支持指定时区) | 否 |
| 📱Device Info | 查询本机电量、存储、内存等硬件信息 | 否 |
| 📚Knowledge Base | 检索你上传到项目知识库的 PDF/文本文档 | 否 |
| 🔗URL Reader | 抓取任意网页的完整正文 | 是 |
小知识:search_knowledge_base会自动出现在项目对话里——你上传的文档会被分块、用设备端嵌入模型向量化,存在本地 SQLite 中,检索全程离线。
三步开启工具:最快配置方法
- 进入 Tools 页面:在聊天界面打开工具入口,进入 ToolsScreen;
- 拨动开关:每个工具行右侧有一个 Switch,按需打开(需要联网的工具旁边有 wifi 小图标提示);
- 直接提问:回到对话,直接问"现在纽约几点?"或"搜一下 XX 的最新价格",模型会自动挑对工具、执行、再总结。
回答气泡下方会出现一个"Tools sent in request (N)"折叠行(ToolsSentCollapsible),点开后能看到这一轮模型实际拿到了哪些工具——调试时非常直观。
💡官方提示:开启超过 3 个工具时,界面会弹出黄色提醒——工具太多会"迷惑"模型、拖慢首字响应。2-3 个工具是最佳实践。
接入 MCP 服务器:把外部世界装进离线 LLM 🔌
MCP(Model Context Protocol)是一个开放标准,让 AI 助手能统一连接外部工具和数据源。Off Grid AI 把它做进了Pro Tools:工具页最顶部有一行带皇冠图标的入口——"Email, calendar and MCP servers"(ToolsScreen 源码)。
接入流程大致是:
- 添加服务器:在 Pro Tools 里填入 MCP 服务器地址(如 Linear、Notion、GitHub 对应的 MCP 服务);
- OAuth 登录:需要授权的服务器会拉起系统内嵌浏览器完成登录,令牌安全存入设备钥匙串(Keychain/Keystore),回跳地址是应用私有的
offgrid://oauth/callback(mcpOAuthNativeAdapters.ts); - 起草—批准:Pro 工具遵循"先起草、后批准"哲学——模型帮你起草回复或工单,你不点确认,什么都不会真正发出去。
MCP 编排层的完整行为测试可以在 mcpService.test.ts 中阅读,同目录下还有 OAuth、客户端、schema 裁剪等一系列测试。
为什么手机上跑工具循环依然流畅 ⚡
接了多个 MCP 服务器后,几十个工具说明书如果全部塞进提示词,模型要先"预填充"完才能开口回答,首字延迟会很难看。Off Grid AI 用三个工程手段解决:
- 嵌入路由选工具:复用 RAG 那个约 25MB 的 MiniLM 嵌入模型,对"你的问题 + 每个工具的描述"做向量匹配,只把最相关的一批工具(Top-K,默认 12 个)交给主模型,嵌入结果还有磁盘缓存(toolEmbeddingRouter.ts);
- 错误永远有类型:工具抛错不会让整轮崩溃,而是被归类为 timeout / network / validation / not-found / internal 五类之一,模型能分辨"重试可能有用"还是"调用本身错了"(toolResult.ts);
- 结果永不"假成功":空结果会被显式标记为
empty,失败时回传给模型的字符串永远非空且明确说明失败——这正是小模型最容易把"没连上服务器"当成"查无数据"的坑。
常见坑与实用建议
- 别贪多:同时开启 5 个以上工具,小模型的选择准确率明显下降,首字变慢;
- 分清联网工具:Web Search 与 URL Reader 需要网络,其余全部离线可用——断网时关掉这两个最省心;
- MCP 授权失败:确认设备有可用的系统浏览器;令牌保存在钥匙串里,卸载重装应用会清除,需要重新登录;
- 想排查"它为什么没用工具":点开回答下方的 "Tools sent in request",确认目标工具确实被路由进了这一轮。
延伸阅读:源码地图 🗺️
- 内置工具定义与 OpenAI 格式转换:src/services/tools/registry.ts
- 工具执行分发(搜索、计算、知识库):src/services/tools/handlers.ts
- 自动工具循环与防失控预算:src/services/generationToolLoop.ts
- MCP OAuth 原生适配器:src/services/mcpOAuthNativeAdapters.ts
- MCP 测试套件:tests/pro/mcp/
- Pro 授权与工具策略说明:docs/pro-licensing-plan.md
- 项目总览与工具调用特性介绍:README.md
一句话总结:Off Grid AI 的工具调用 + MCP 接入,让"离线 AI"不再只是安静的聊天框,而是一个能查、能算、能读你的文档、还能连接外部工作流,并且每一步都经你确认的本地 AI 助理。
【免费下载链接】OGAMThe Swiss Army Knife of Offline AI. Chat, see, speak, and generate images on your phone or Mac — GGUF LLMs, vision, Whisper speech-to-text, Stable Diffusion, tool calling, and local-network servers. Runs on your CPU, GPU, or NPU. No account, no API key, zero data leaves your device.项目地址: https://gitcode.com/gh_mirrors/of/OGAM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考