1. 为什么 Mac 上跑 OpenClaw 本地模型会“发消息没反应”如果你在 Mac 上用 Ollama 跑 OpenClaw 本地大模型大概率会遇到这个场景Web UI 里输入一句话界面显示“思考中”然后就没有然后了。终端日志里可能只有一行[agent] [timeout-compaction] compaction succeeded... retrying prompt或者干脆什么都不输出。你以为是模型没下载完重新ollama pull一遍还是没反应你以为是 OpenClaw 装错了重装一遍问题依旧。这个问题的本质不是“模型坏了”而是 OpenClaw 和 Ollama 之间的通道配置不对。OpenClaw 默认走的是 OpenAI 兼容协议而 Ollama 原生 API 和 OpenAI 兼容 API 是两套不同的路径。如果你在baseUrl后面加了/v1OpenClaw 会按 OpenAI 格式发请求Ollama 虽然能接但返回结构对不上Agent 层解析失败表现就是“发消息没反应”。另一个常见原因是用了 coder 模型做对话模型输出被代码块包裹Agent 的回复解析器直接卡住。这篇内容聚焦 Mac 上用 Ollama 跑 OpenClaw 本地大模型时“发消息没反应”的排查与修复围绕 TaoToken 统一 Key/API 通道完成settings.json与config.toml骨架配置。我会给出可复制的配置文件片段、CC Switch/Cline 接入步骤以及逐项验证动作帮你从报错定位到稳定运行。适合已经装过 OpenClaw、但卡在本地模型接入这一步的零基础用户。2. TaoToken 前置统一 Key 与 API 通道准备在动手改配置之前先把 TaoToken 的 Key 和通道准备好。TaoToken 在这里的角色是统一 API 入口让你在 OpenClaw、CC Switch、Cline 之间共用同一套 Key不用每个工具单独配一遍。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址后面不加 UTM 参数。操作步骤很简单打开官网注册后进入控制台在 API Keys 页面创建一个新 Key。创建时建议命名成openclaw-local这种能一眼看出用途的名字方便后面在多个工具里区分。Key 创建后只显示一次复制到本地临时文件里后面配置settings.json和config.toml都要用。如果你还没装 OpenClaw先确认 Node.js 版本。Mac 上用 Homebrew 装 Node 22brew install node22 echo export PATH/opt/homebrew/opt/node22/bin:$PATH ~/.zshrc source ~/.zshrc node --version然后全局安装 OpenClawsudo npm install -g openclawlatest --registryhttps://registry.npmmirror.com openclaw --version如果openclaw --version报 command not found手动建软链接sudo ln -s /opt/homebrew/lib/node_modules/openclaw/bin/openclaw.js /opt/homebrew/bin/openclaw export PATH/opt/homebrew/bin:$PATHOllama 的安装从官网下载.app拖进应用程序文件夹即可。装完后先拉一个对话模型不要一上来就拉 coder 模型ollama pull qwen2.5:7b ollama list到这里TaoToken Key、OpenClaw、Ollama 三样东西就齐了。接下来进入配置环节。3. 可复制配置settings.json 与 config.toml 骨架OpenClaw 的配置分两层settings.json管全局通道和 Keyconfig.toml管 Agent 行为和模型路由。先找到配置目录ls ~/.openclaw/如果目录不存在先跑一次openclaw onboard让它生成默认结构。然后编辑~/.openclaw/settings.json写入以下骨架{ apiKeys: { taotoken: sk-你的TaoTokenKey }, providers: { taotoken: { baseUrl: https://taotoken.net/api, api: openai, models: [gpt-4o-mini, claude-3-5-sonnet] }, ollama: { baseUrl: http://127.0.0.1:11434, api: ollama, models: [qwen2.5:7b, qwen2.5-coder:14b] } } }这里有两个关键点。第一ollama的baseUrl后面不要加/v1加了就会触发前面说的“发消息没反应”。第二api字段必须显式写成ollama不能留空或写成openai否则 OpenClaw 会用 OpenAI 协议去解析 Ollama 的返回。接着编辑~/.openclaw/config.toml配置 Agent 默认行为和超时[agents.defaults] model ollama/qwen2.5:7b timeoutSeconds 180 systemPrompt 你是一个中文AI助手请用中文回答问题。 [agents.defaults.memorySearch] enabled false [gateway] authMode nonetimeoutSeconds设成 180 是因为 14B 模型首次加载可能要 10 秒以上默认 60 秒容易超时。memorySearch关掉是为了减少 token 消耗本地模型上下文窗口有限开着内存搜索容易把上下文撑爆。authMode设成none是本地开发环境省事如果你要暴露到局域网改成token并配一个密钥。配置写完后重启网关openclaw gateway restart如果你同时用 CC Switch 或 Cline它们的配置也指向同一个 TaoToken Key。CC Switch 里新增一个 ProviderBase URL 填https://taotoken.net/apiKey 填刚才创建的。Cline 在 VS Code 设置里找cline.apiProvider选 OpenAI CompatibleBase URL 同样填 TaoToken 的 API 地址。这样三个工具共用一套 Key换 Key 时只改一处。4. 验证请求从 Ollama 原生到 OpenClaw Agent配置写完不代表通了要逐层验证。第一步先确认 Ollama 本身能回话curl http://127.0.0.1:11434/api/chat -d { model: qwen2.5:7b, messages: [{role: user, content: 你好}], stream: false }如果返回 JSON 里有message.content字段说明 Ollama 正常。如果返回 500 或超时先看 Ollama 日志tail -f ~/.ollama/logs/server.log第二步验证 OpenClaw 能否通过 Ollama 通道回话openclaw agent --agent main --message 写一个快速排序的Python函数如果这一步成功返回代码说明通道通了。如果还是“发消息没反应”看 OpenClaw 实时日志openclaw logs --limit 100 --follow日志里如果出现LLM request timed out说明超时设太短回去把timeoutSeconds调到 180 或 240。如果出现pairing required说明设备没配对openclaw devices list openclaw devices approve Request ID第三步验证 TaoToken 通道是否可用用来做对比openclaw agent --agent main --message 用一句话介绍你自己 --model taotoken/gpt-4o-mini如果 TaoToken 通道能回、Ollama 通道不能回问题就锁定在 Ollama 配置上重点检查baseUrl有没有多写/v1、api字段是不是ollama。实测下来最容易出问题的就是baseUrl和api这两个字段。我试过把baseUrl写成http://127.0.0.1:11434/v1OpenClaw 日志里没有任何报错就是一直“思考中”排查了半小时才发现是路径问题。5. 本篇常见错排查5 个高频报错与修复5.1 NO_REPLY 与 timeout-compaction 循环现象是 Web UI 一直“思考中”日志里反复出现compaction succeeded... retrying prompt。原因是用了 coder 模型做对话模型输出被代码块包裹Agent 解析器无法提取纯文本回复。修复方法是把默认模型换成对话模型openclaw config set agents.defaults.model.primary ollama/qwen2.5:7b openclaw gateway restart5.2 gateway connect failed: pairing required新版 OpenClaw 要求设备配对日志里出现这行说明当前设备没批准。执行openclaw devices list openclaw devices approve Request ID批准后重启网关。5.3 Ollama 日志 POST /api/chat 500Ollama 返回 500 通常是上下文窗口太小或并发太多。默认上下文 204814B 模型很容易撑爆。设置环境变量launchctl setenv OLLAMA_NUM_CTX 16384 launchctl setenv OLLAMA_NUM_PARALLEL 1 launchctl setenv OLLAMA_MAX_LOADED_MODELS 1 killall ollama open -a OllamaOLLAMA_NUM_CTX设成 16384 是 16k 上下文OLLAMA_NUM_PARALLEL设成 1 是单并发避免多个请求同时抢内存。5.4 LLM request timed out after 180000msOpenClaw 日志里出现这行说明请求发出去了但模型没在超时时间内返回。14B 模型首次加载慢把超时调到 240 秒openclaw config set agents.defaults.timeoutSeconds 240 openclaw gateway restart同时确认memorySearch已关闭开着会额外消耗上下文。5.5 回复乱码或只输出英文用中文提问但回复英文通常是模型选错了。coder 模型偏向代码输出对话场景要用 instruct 模型。另外在config.toml里加系统提示[agents.defaults] systemPrompt 你是一个中文AI助手请用中文回答问题。改完重启网关生效。6. 语义一致 CTA按场景分流如果你卡在排障或接入环节先去 TaoToken 控制台确认 Key 状态然后对照接入文档检查settings.json和config.toml的字段。API Keys 页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果你想先验证模型对话是否正常不急着配本地 Ollama可以直接用模型对话页面测试 TaoToken 通道https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。这样能快速区分是通道问题还是本地模型问题。如果你打算长期用 OpenClaw 做编码或 Agent 任务建议上 Coding Plan把 TaoToken 通道和本地 Ollama 做成双路由日常对话走本地复杂代码任务走 TaoToken 的云端模型。Coding Plan 入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。控制台在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content ClaudeCodeAnthropic 相关配置在 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后给一个实用技巧把~/.openclaw/整个目录用 Git 管起来每次改配置前先 commit。这样一旦改崩了git checkout .就能回到上一个能用的状态比手动记配置快得多。