Ollama
将本地 AI 模型作为工具添加到容器智能体中。将摘要、翻译和查询任务分流给 Ollama。
功能特性
- 在容器内将本地 Ollama 模型暴露为 MCP 工具
- Claude 保持编排者角色,将特定任务委派给本地模型
- 添加两个工具:ollama_list_models 和 ollama_generate
- 无需 API 密钥,直接使用本地 Ollama 实例
- 通过 OLLAMA_ADMIN_TOOLS 提供可选的模型管理工具(拉取、删除、查看)
前置条件
- 已安装并运行 NanoClaw
- 已在宿主机上安装并运行 Ollama
- 至少已拉取一个 Ollama 模型
安装
/add-ollama-tool 工作原理
/add-ollama-tool 技能添加一个基于 stdio 的 MCP 服务器,将容器智能体连接到你本地的 Ollama 实例。Claude 仍然担任编排者——它决定何时使用本地模型以及发送什么内容。这对于将摘要、翻译或通用知识查询等较简单或更快的任务分流给本地模型非常有用,同时保留 Claude 来处理复杂推理。
该技能为智能体添加两个工具:
- ollama_list_models — 列出你的 Ollama 实例中所有已安装的模型。
- ollama_generate — 向指定模型发送提示并返回响应。
当用户发送类似”用 Ollama 总结这篇文章”的消息时,Claude 会调用 ollama_list_models 查看可用的模型,选择合适的一个,然后调用 ollama_generate 发送提示。本地模型的响应会被整合到 Claude 的回复中。
设置
技能会检查 Ollama 是否已安装并运行,然后应用代码变更。它将 MCP 服务器复制到容器源码树中,并将一个环境变量转发辅助脚本复制到宿主机源码树中,在 agent-runner 的 mcpServers 中注册该服务器,将 OLLAMA_HOST / OLLAMA_ADMIN_TOOLS 转发到容器中,并重新构建镜像。
如果你还没有任何 Ollama 模型,技能建议从以下模型开始:
ollama pull gemma3:1b— 小巧快速(1 GB)ollama pull llama3.2— 通用性好(2 GB)ollama pull qwen3-coder:30b— 擅长代码任务(18 GB)
网络路由
容器内的 MCP 服务器连接到宿主机上的 Ollama。它默认使用 host.docker.internal:11434,如果该主机不可达,则自动回退到 localhost:11434。如果你的 Ollama 运行在不同的机器或端口上,请在 .env 文件中设置 OLLAMA_HOST。
监控
通过日志监控 Ollama 活动:
tail -f logs/nanoclaw.log | grep -i ollama
查看 [OLLAMA] >>> Generating 和 [OLLAMA] <<< Done 条目。
故障排查
智能体提示”Ollama is not installed.” 智能体试图在容器内运行 ollama CLI 而非使用 MCP 工具。这意味着 MCP 服务器未正确注册。重新运行技能,或检查 container/agent-runner/src/index.ts 的 mcpServers 配置中是否有 ollama 条目。
“Failed to connect to Ollama.” 确认 Ollama 在宿主机上正在运行(ollama list)。如果使用 Docker,确认容器可以访问宿主机网络。如果使用自定义地址,请检查 .env 中的 OLLAMA_HOST 值。
智能体不使用 Ollama 工具。 智能体可能不知道这些工具的存在。在消息中明确指示:“使用 ollama_generate 工具配合 gemma3:1b 来回答这个问题。“智能体使用过一次工具后,通常会在之后的消息中记住它们。
使用建议
- Claude 会根据任务判断何时使用 Ollama。你可以在消息中提及 Ollama 来引导它,也可以让 Claude 自行判断何时使用本地模型就够了。
- 较小的模型响应更快但输出质量较低。对于翻译或事实查询等简单任务,1-2 GB 的模型就足够了。对于需要推理的任务,让 Claude 直接处理。
- Ollama MCP 服务器作为 stdio 进程在容器内运行——它随每个智能体会话启动,会话结束时停止。没有持久的后台进程。