1. 为什么要在 Ubuntu 上把 OpenClaw 和 Ollama 接起来如果你在 Ubuntu 上折腾过本地 AI 工具链大概率遇到过这种局面Ollama 装好了ollama run qwen2.5也能聊但一旦想把它接进 OpenClaw 这类工具框架做自动化就开始卡在配置上——环境变量写错、端口对不上、模型名不匹配报错还特别含糊。这篇就围绕「Ubuntu 系统配置 OpenClaw 并使用 Ollama」这条链路把每一步拆到可复制。先说清楚这三个东西分别是什么、能做什么、适合谁。Ollama 是本地大模型运行工具一条命令就能拉起 Qwen、Llama 这类模型模型跑在你自己的机器上不依赖外部网络。OpenClaw 是轻量级 AI 工具框架支持对接本地或在线模型通过技能扩展做自动化操作。TaoToken 则是统一 Key 接入层当你需要在线模型比如 Claude、GPT 系列和本地 Ollama 模型混用时用同一个 Key 和 Base URL 就能统一管理不用在多个平台之间来回切换配置。适合的读者手上有一台 Ubuntu 22.04 或 24.04 的机器物理机、虚拟机都行内存 8GB 以上想在本地跑通「工具框架 本地模型 统一 Key」这套组合的开发者。整条链路跑通后你可以用 OpenClaw 调 Ollama 做本地问答也可以在同一套配置里切到 TaoToken 接入的在线模型做代码生成、文档处理这类任务。我试过在一台 16GB 内存的 Ubuntu 22.04 上从零配这套环境中间踩了几个坑下面按顺序来你跟着做基本能一次跑通。2. 前置准备Ubuntu 环境检查与 TaoToken Key 获取2.1 系统依赖更新与基础工具安装打开终端CtrlAltT先更新软件包列表并升级已安装的包。这一步别跳过依赖版本过低是后面各种报错的根源。sudo apt update sudo apt upgrade -y升级完成后安装 git、curl、python3 和 pip3。OpenClaw 拉源码要 git下载 Ollama 要 curlPython 依赖管理要 pip3。sudo apt install git curl python3 python3-pip -y验证一下四个工具是否都可用git --version curl --version python3 --version pip3 --version每个命令都能输出版本号就说明没问题。如果某个提示command not found重新执行对应的安装命令即可。Ubuntu 22.04 默认自带 python3不要再去装 python2容易引起环境冲突。2.2 获取 TaoToken 统一 KeyTaoToken 的作用是把在线模型的接入统一到一个 Key 和 Base URL 上。你需要先拿到 API Key再在 OpenClaw 的配置里填进去。访问 TaoToken 官网注册并登录然后进入控制台创建 API Key。地址是官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI Keys 管理页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite创建好 Key 之后先复制保存后面配置 OpenClaw 时要用。TaoToken 的 API Base URL 是https://taotoken.net/api这个地址在配置在线模型时填写。注意API Key 只显示一次创建后立刻复制到安全的地方。不要把它硬编码到会提交到 git 的文件里建议用环境变量或.env文件管理。2.3 确认 Ollama 服务端口Ollama 默认监听11434端口OpenClaw 配置里要填的ollama_url就是http://localhost:11434。先确认这个端口没有被其他程序占用ss -tlnp | grep 11434如果没有输出说明端口空闲可以继续。如果有输出记下占用进程后面可能需要改 Ollama 的监听端口。3. 可复制配置OpenClaw 接入 Ollama 与 TaoToken3.1 安装 Ollama 并拉取本地模型Ollama 在 Ubuntu 上用官方脚本一键安装curl -fsSL https://ollama.com/install.sh | sh安装完成后验证版本ollama --version输出版本号比如ollama version 0.5.x就说明安装成功。Ollama 安装后会自动注册为 systemd 服务并启动监听 11434 端口。拉取一个本地模型这里用 Qwen2.5 7B 做示例中文支持好、内存占用适中ollama pull qwen2.5:7b模型文件大约 4-5GB下载时间取决于网络。下载中断了重新执行ollama pull会自动续传。拉取完成后确认ollama list能看到qwen2.5:7b就说明模型就绪。内存 8GB 的机器建议用 q4 量化版本比如qwen2.5:7b-instruct-q4_K_M占用更小。3.2 OpenClaw 配置文件片段OpenClaw 的核心配置是config.yaml。下面是一份可直接复制的配置片段同时包含 Ollama 本地模型和 TaoToken 在线模型的接入# 服务配置 server: host: 0.0.0.0 port: 8080 # 模型配置 model: # 默认使用的模型提供方ollama 或 taotoken provider: ollama # Ollama 本地模型配置 ollama: base_url: http://localhost:11434 default_model: qwen2.5:7b timeout: 120 # TaoToken 统一 Key 接入在线模型 taotoken: base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} default_model: claude-sonnet-4-20250514 timeout: 120这里api_key用了环境变量${TAOTOKEN_API_KEY}避免把 Key 写死在文件里。在~/.bashrc或.env里设置export TAOTOKEN_API_KEY你的Key然后source ~/.bashrc让它生效。如果你用的是 JSON 格式的配置部分 OpenClaw 版本支持config.json对应片段如下{ server: { host: 0.0.0.0, port: 8080 }, model: { provider: ollama, ollama: { base_url: http://localhost:11434, default_model: qwen2.5:7b, timeout: 120 }, taotoken: { base_url: https://taotoken.net/api, api_key: ${TAOTOKEN_API_KEY}, default_model: claude-sonnet-4-20250514, timeout: 120 } } }三件套对照表配置时逐项核对项目Ollama 本地TaoToken 在线Base URLhttp://localhost:11434https://taotoken.net/apiAPI Key不需要控制台创建的 KeyModel IDqwen2.5:7bclaude-sonnet-4-202505143.3 启动 OpenClaw 服务配置写好后启动服务python3 main.py看到OpenClaw server started on http://0.0.0.0:8080就说明启动成功。想后台运行nohup python3 main.py openclaw.log 21 日志会写到openclaw.log排查问题时看这个文件。4. 验证请求curl 测试模型连通性配置写完不算完得实际发请求验证链路通不通。分两步先验证 Ollama 本身再验证 OpenClaw 转发。4.1 直接测试 Ollama 接口用 curl 直接调 Ollama 的 API确认本地模型能正常响应curl -X POST http://localhost:11434/api/generate \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, prompt: 用一句话介绍Ubuntu, stream: false }预期返回是一段 JSON包含response字段里面是模型的回答。如果返回{error:model not found}说明模型名写错了用ollama list核对。如果连接被拒绝说明 Ollama 服务没起来执行sudo systemctl start ollama。4.2 测试 OpenClaw 转发到 Ollama通过 OpenClaw 的 API 间接调用 Ollamacurl -X POST http://localhost:8080/api/chat \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, message: 如何查看Ubuntu的内存占用 }预期返回 JSONresponse字段是模型回答。这一步通了说明 OpenClaw 到 Ollama 的链路没问题。4.3 测试 TaoToken 在线模型切换到 TaoToken 接入的在线模型验证统一 Key 是否生效curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复OK}] }预期返回标准的 OpenAI 兼容格式choices[0].message.content里有模型回复。如果返回 401说明 Key 不对或没生效检查环境变量是否source过。5. 本篇常见报错排查配置过程中最容易卡在这几个报错上逐个对照排查。报错一401 Unauthorized{error:{message:Invalid API key,type:authentication_error}}原因通常是 Key 没设置或环境变量没生效。检查echo $TAOTOKEN_API_KEY是否有输出没有就重新source ~/.bashrc。如果 Key 里有特殊字符确认引号包裹正确。另外确认请求头是Authorization: Bearer key格式Bearer 后面有一个空格。报错二local proxy failed / connection refusedcurl: (7) Failed to connect to localhost port 11434Ollama 服务没启动或端口不对。执行sudo systemctl status ollama看状态没运行就sudo systemctl start ollama。如果 Ollama 跑在别的端口改配置里的base_url。还有一种情况是 OpenClaw 跑在容器里localhost指向容器自身而不是宿主机这时要把localhost换成宿主机的实际 IP。报错三reading choices 相关错误Error reading choices: unexpected end of JSON input这通常是模型返回了空响应或流式响应被截断。检查stream参数是否和客户端处理逻辑匹配。如果用的是流式接口但客户端按非流式解析就会报这个。把stream设为false再试一次能通说明是流式处理的问题。报错四OAuth / 认证流程报错OAuth error: invalid_client如果你在 OpenClaw 里配了需要 OAuth 的在线服务确认回调地址和客户端信息填对。用 TaoToken 统一 Key 接入的话走的是 Bearer Token 认证不涉及 OAuth 流程把 provider 切到 taotoken 就能绕过这类问题。报错五模型名不匹配model qwen2.5 not found, try pulling it firstOllama 的模型名要带 tagqwen2.5和qwen2.5:7b是两个不同的标识。用ollama list看实际拉下来的完整名称配置里一字不差地填进去。报错六端口被占用OSError: [Errno 98] Address already in use8080 端口被别的程序占了。ss -tlnp | grep 8080找到占用进程要么停掉它要么把 OpenClaw 的port改成 8081 或其他空闲端口。6. 统一 Key 接入后的扩展用法链路跑通之后OpenClaw 的价值在于把本地模型和在线模型放在同一套配置里调度。日常问答、代码补全这类对延迟敏感、数据不想出本地的任务走 Ollama 的qwen2.5:7b需要更强推理能力或处理复杂文档时切到 TaoToken 接入的在线模型改一下provider字段就行不用重新配 Key 和地址。如果你打算长期用这套组合做编码或 Agent 类任务可以了解下 Coding Plan它针对持续性的代码生成场景做了额度优化Coding Plan 入口https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite想直接在网页上对比不同模型的效果可以用模型对话页快速测试模型对话https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite接入过程中遇到配置细节问题文档里有各语言的完整示例接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite最后提醒一个实操细节Ollama 的模型文件默认存在/usr/share/ollama/.ollama/models拉多个模型后磁盘占用会涨得很快。定期用ollama list检查不需要的用ollama rm 模型名删掉。另外 OpenClaw 的config.yaml改完后一定要重启服务才生效前台启动的 CtrlC 再跑一次后台启动的用pkill -f main.py停掉再重新nohup拉起。