1. 跨平台 OpenClaw 本地部署:从零跑通自然语言操控电脑
OpenClaw 是一个开源 AI 智能体项目,能读懂自然语言并自动执行电脑本地操作,比如整理文件、生成表格、抓取网页数据、批量处理文档。它适合想用自然语言驱动电脑干活、又不想把敏感数据传到云端的职场人和开发者。我这次在 Windows、macOS、Linux 三端各跑了一遍,把环境变量、配置文件、验证动作都整理成可复制的片段。核心思路是:本地跑 OpenClaw 服务,模型调用统一走 TaoToken 的 Key,这样三端配置一致,换机器不用重新折腾模型接入。
先说清楚 OpenClaw 的定位。它不是编辑器插件,也不是单纯的聊天窗口,而是一个常驻本地的 Gateway 服务,接收你的自然语言指令,拆解成具体动作,再调用系统接口去执行。所以部署分两层:一层是 OpenClaw 本体运行环境,一层是模型接入配置。很多人卡在第二层,因为不同模型供应商的 Base URL、Key、Model ID 写法不一样。用 TaoToken 统一 Key 的好处是,三端只需要维护一份配置,模型切换只改一个 Model ID。
跨平台部署最容易踩的坑是路径和权限。Windows 上中文路径、空格路径会让依赖安装失败;macOS 上 Gatekeeper 会拦截未签名脚本;Linux 上非 root 用户对某些目录没有写权限。我实测下来,三端都建议把 OpenClaw 装在纯英文、无空格的目录,比如~/openclaw或D:\openclaw。下面按平台分别给出可复制的环境变量和配置文件片段。
先给一个整体流程,方便你对照操作:第一步,确认本机有 Node.js 18+ 和 Git;第二步,拉取 OpenClaw 源码或解压部署包;第三步,配置环境变量,写入 TaoToken 的 Base URL 和 Key;第四步,启动 Gateway 服务;第五步,发送一条自然语言安装指令,检查工具是否就绪。每一步我都会给出具体命令和预期输出。
关于模型接入,TaoToken 提供统一的 API 入口,Base URL 是https://taotoken.net/api,Key 在控制台生成。你需要在 OpenClaw 的配置文件里填三样东西:Base URL、API Key、Model ID。这三件套缺一不可,后面排障章节会专门讲 401 和 model not found 的对照处理。如果你还没生成 Key,可以去控制台的 API Keys 页面创建,模型对话页面可以先验证 Key 是否可用。
2. TaoToken 前置准备:统一 Key 与三端环境变量
在开始部署 OpenClaw 之前,先把 TaoToken 的接入信息准备好。这一步不分平台,三端通用。你需要拿到三样东西:Base URL、API Key、Model ID。Base URL 固定是https://taotoken.net/api,注意不要加 UTM 参数,也不要写成带/v1结尾的旧格式,OpenClaw 的 OpenAI 兼容层会自动拼接路径。API Key 在控制台生成,建议单独建一个给 OpenClaw 用的 Key,方便后续轮换和排查。
生成 Key 的入口在控制台的 API Keys 页面。点新建,起个名字比如openclaw-local,复制生成的字符串。这个 Key 只显示一次,建议先存到密码管理器。如果你只是想先验证模型能不能通,可以去模型对话页面发一条测试消息,确认 Key 有效再往下走。长期跑编码和 Agent 任务的话,Coding Plan 的额度更适合高频调用,这个后面 CTA 会再提。
环境变量三端写法不同,但变量名保持一致,这样 OpenClaw 的配置文件可以共用。我统一用这几个变量名:TAOTOKEN_BASE_URL、TAOTOKEN_API_KEY、TAOTOKEN_MODEL_ID。Windows 用 PowerShell 设置,macOS 和 Linux 用 shell 的 export。注意 Windows 上设置完要重启终端,否则当前会话读不到。
Windows PowerShell 写法:
$env:TAOTOKEN_BASE_URL="https://taotoken.net/api" $env:TAOTOKEN_API_KEY="sk-你的Key" $env:TAOTOKEN_MODEL_ID="claude-sonnet-4-20250514"如果要永久生效,用setx:
setx TAOTOKEN_BASE_URL "https://taotoken.net/api" setx TAOTOKEN_API_KEY "sk-你的Key" setx TAOTOKEN_MODEL_ID "claude-sonnet-4-20250514"macOS 和 Linux 写法,写进~/.zshrc或~/.bashrc:
export TAOTOKEN_BASE_URL="https://taotoken.net/api" export TAOTOKEN_API_KEY="sk-你的Key" export TAOTOKEN_MODEL_ID="claude-sonnet-4-20250514"写完执行source ~/.zshrc让配置生效。验证是否写入成功:
echo $TAOTOKEN_BASE_URL echo $TAOTOKEN_MODEL_ID预期输出是https://taotoken.net/api和你的模型 ID。如果输出为空,说明没写进当前 shell,检查是不是写错了文件,或者终端没重载。这一步看起来简单,但后面 OpenClaw 读不到配置,八成是这里没生效。
Model ID 的选择上,OpenClaw 做工具调用和文件操作,建议用支持 function calling 的模型。我实测下来,Claude 系列在指令拆解和工具调用上比较稳,Sonnet 级别足够日常办公自动化。如果你只是做简单文件整理,用更轻的模型也行,但复杂多步任务容易断。Model ID 要写完整,不要只写claude,否则会报 model not found。
还有一个容易忽略的点:代理设置。有些环境里HTTP_PROXY或HTTPS_PROXY会干扰请求,导致 local proxy failed。如果你本机没有配代理,检查一下这两个变量是不是空的。有的话先 unset 掉再启动 OpenClaw。这个在排障章节会详细讲。
3. 可复制配置:OpenClaw 三端 settings 与 JSON 片段
OpenClaw 的配置分两部分:一部分是 Gateway 服务本身的配置,一部分是模型接入配置。模型接入配置我统一写成一个 JSON 文件,放在 OpenClaw 的配置目录下,三端路径不同但内容一致。这样你换平台只需要改路径,不用重写配置。下面给出完整的 JSON 片段,你可以直接复制,把 Key 和 Model ID 替换成自己的。
先看模型接入配置,文件名建议叫model-config.json,放在 OpenClaw 根目录的config文件夹下:
{ "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的Key", "modelId": "claude-sonnet-4-20250514", "timeout": 60000, "maxRetries": 2, "tools": { "fileSystem": true, "browser": true, "shell": true } }注意baseUrl不要带/v1,OpenClaw 的 OpenAI 兼容层会自动补/v1/chat/completions。如果你手动加了/v1,会变成/v1/v1/chat/completions,直接 404。timeout设 60 秒,复杂任务可能跑得久,设太短会中途断。maxRetries设 2,网络抖动时自动重试。
然后是 Gateway 服务配置,文件名gateway-config.json:
{ "host": "127.0.0.1", "port": 18789, "logLevel": "info", "workspace": "./workspace", "modelConfig": "./config/model-config.json", "autoStart": true }host用127.0.0.1只监听本机,避免暴露到局域网。port默认 18789,如果被占用可以改。workspace是 OpenClaw 执行文件操作的根目录,建议单独建一个,不要指向整个磁盘。modelConfig指向上面那个 JSON 的相对路径。
三端路径对照:
| 平台 | OpenClaw 根目录 | 配置文件路径 |
|---|---|---|
| Windows | D:\openclaw | D:\openclaw\config\model-config.json |
| macOS | ~/openclaw | ~/openclaw/config/model-config.json |
| Linux | ~/openclaw | ~/openclaw/config/model-config.json |
如果你用的是 Claude Code 或 Cline 这类工具,配置写法略有不同。Claude Code 的 settings 文件在~/.claude/settings.json,需要写env字段:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }Cline 的 MCP 配置在cline_mcp_settings.json,写法是:
{ "mcpServers": { "openclaw": { "command": "node", "args": ["./openclaw/gateway.js"], "env": { "TAOTOKEN_BASE_URL": "https://taotoken.net/api", "TAOTOKEN_API_KEY": "sk-你的Key", "TAOTOKEN_MODEL_ID": "claude-sonnet-4-20250514" } } } }Codex 的auth.json在~/.codex/auth.json,写法:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model": "claude-sonnet-4-20250514" }不管用哪种工具,三件套都是 Base URL、Key、Model ID。这三个值必须和 TaoToken 控制台里的一致,写错一个就会报错。我建议先把model-config.json写好,用cat或type检查一遍内容,再启动服务。
配置写完后,检查 JSON 格式是否合法。Windows 上用 PowerShell:
Get-Content D:\openclaw\config\model-config.json | ConvertFrom-JsonmacOS 和 Linux 上用:
python3 -m json.tool ~/openclaw/config/model-config.json如果输出格式化后的 JSON,说明格式没问题。如果报错,检查是不是多了逗号或者引号没闭合。这一步能省掉后面很多莫名其妙的启动失败。
4. 启动服务与验证:发送自然语言安装指令
配置写好后,启动 OpenClaw Gateway 服务。三端启动命令基本一致,进入 OpenClaw 根目录,执行:
cd ~/openclaw node gateway.js --config ./config/gateway-config.jsonWindows 上:
cd D:\openclaw node gateway.js --config .\config\gateway-config.json预期输出:
[INFO] Gateway starting on 127.0.0.1:18789 [INFO] Loading model config from ./config/model-config.json [INFO] Model provider: openai-compatible [INFO] Model ID: claude-sonnet-4-20250514 [INFO] Tools registered: fileSystem, browser, shell [INFO] Gateway ready看到Gateway ready就说明服务起来了。如果卡在Loading model config,检查 JSON 路径和格式。如果报ECONNREFUSED,检查 Base URL 是不是写错了。如果报401,检查 Key 是否有效。
服务起来后,另开一个终端,发送一条自然语言指令测试。OpenClaw 提供 HTTP 接口,用 curl 发:
curl -X POST http://127.0.0.1:18789/chat \ -H "Content-Type: application/json" \ -d '{"message": "帮我检查本机是否安装了 git 和 node,如果没有安装,告诉我安装命令"}'预期返回:
{ "reply": "本机已安装 git 2.40.0 和 node v18.17.0,无需额外安装。", "actions": [ {"tool": "shell", "command": "git --version", "result": "git version 2.40.0"}, {"tool": "shell", "command": "node --version", "result": "v18.17.0"} ] }这个返回说明 OpenClaw 正确调用了 shell 工具,执行了命令,并把结果整理成自然语言回复。如果你看到actions里有实际命令和结果,说明工具链通了。如果actions为空,说明模型没有触发工具调用,检查 Model ID 是否支持 function calling。
再发一条文件操作指令,验证文件系统工具:
curl -X POST http://127.0.0.1:18789/chat \ -H "Content-Type: application/json" \ -d '{"message": "在 workspace 目录下创建一个 test 文件夹,里面放一个 hello.txt,内容写 hello openclaw"}'预期返回里会有fileSystem工具的执行记录。然后去~/openclaw/workspace/test/hello.txt检查文件是否存在:
cat ~/openclaw/workspace/test/hello.txt输出hello openclaw就说明文件操作也通了。到这里,OpenClaw 本地部署和自然语言操控电脑的核心链路就验证完了。你可以继续发更复杂的指令,比如整理下载文件夹、生成表格、抓取网页数据。
如果你用的是图形界面版本,启动后主界面右上角会显示 Gateway 状态。显示「在线」就说明服务就绪。底部输入框直接输入自然语言,Enter 发送。界面左侧菜单有聊天对话、渠道配置、定时任务、技能管理。新手先用默认自动模式,不用调参数。
验证模型是否真的走了 TaoToken,可以看 Gateway 日志。日志里会打印请求的 Base URL 和 Model ID。如果看到https://taotoken.net/api和你的 Model ID,说明配置生效。如果看到别的地址,检查环境变量是不是覆盖了配置文件。环境变量优先级高于配置文件,这点要注意。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
部署过程中最常见的报错有四类,我按实际遇到的频率排序,逐个给出对照处理。这些报错在三端都可能出现,排查思路一致。
第一类:401 Unauthorized。报错原文通常是:
Error: 401 Unauthorized {"error":{"message":"Invalid API key","type":"invalid_request_error"}}原因有三个:Key 写错、Key 过期、Key 没传到 OpenClaw。先检查model-config.json里的apiKey是不是和控制台一致。然后检查环境变量TAOTOKEN_API_KEY是否覆盖了配置文件。如果环境变量是空的,OpenClaw 会读配置文件;如果环境变量有值但写错了,会覆盖正确的配置。处理办法:先echo $TAOTOKEN_API_KEY确认,不对就 unset 掉,让 OpenClaw 读配置文件。或者直接改环境变量为正确值。
第二类:local proxy failed。报错原文:
Error: local proxy failed: connect ECONNREFUSED 127.0.0.1:7890这是本机代理设置干扰了请求。OpenClaw 读到了HTTP_PROXY或HTTPS_PROXY环境变量,试图走代理,但代理没开。处理办法:检查这两个变量:
echo $HTTP_PROXY echo $HTTPS_PROXY如果有值,unset 掉:
unset HTTP_PROXY unset HTTPS_PROXYWindows 上用:
Remove-Item Env:HTTP_PROXY Remove-Item Env:HTTPS_PROXY然后重启 Gateway 服务。如果确实需要代理,确保代理地址和端口正确,且代理服务在运行。
第三类:reading choices。报错原文:
TypeError: Cannot read properties of undefined (reading 'choices')这是模型返回格式不符合预期。常见原因是 Base URL 写成了带/v1的格式,导致请求路径变成/v1/v1/chat/completions,返回 404 页面而不是 JSON。处理办法:把baseUrl改成https://taotoken.net/api,不要带/v1。另一个原因是 Model ID 写错,返回了错误信息而不是正常响应。检查 Model ID 是否和控制台一致。
第四类:OAuth 相关报错。报错原文:
Error: OAuth token expired or invalid如果你用的是 Claude Code 或 Codex 这类带 OAuth 的工具,可能残留了旧的 OAuth 配置。处理办法:检查~/.claude/settings.json或~/.codex/auth.json,确保用的是 API Key 而不是 OAuth token。把ANTHROPIC_API_KEY或api_key字段改成 TaoToken 的 Key,删掉 OAuth 相关字段。然后重启工具。
除了这四类,还有几个小问题。Gateway 启动后端口被占用,报EADDRINUSE,改gateway-config.json里的port就行。文件操作报权限错误,检查workspace目录是否有写权限,Linux 上用chmod -R 755 ~/openclaw/workspace。模型响应超时,把timeout从 60000 调到 120000。
排查时建议先看 Gateway 日志,日志里会打印请求的完整 URL 和返回状态码。日志级别设debug能看到更详细的信息。如果日志里 Base URL 和 Model ID 都对,但还报错,那就是 Key 的问题。如果日志里 Base URL 不对,那就是环境变量覆盖了配置。
6. 长期编码与 Agent 任务:Coding Plan 与接入文档
OpenClaw 跑通后,如果你打算长期用它做编码辅助、Agent 任务、批量办公自动化,建议关注 TaoToken 的 Coding Plan。它适合高频调用场景,额度比按量付费更划算。我实测下来,日常文件整理和表格生成用按量付费就够,但如果每天跑几十次 Agent 任务,Coding Plan 的性价比更高。
模型选择上,复杂多步任务用 Sonnet 级别,简单任务用轻量模型。OpenClaw 的工具调用能力依赖模型的 function calling 支持,选模型时注意这一点。如果你不确定哪个模型适合,可以先去模型对话页面测试几条指令,看模型能不能正确拆解任务。
接入文档里有完整的 API 说明和示例,包括 OpenAI 兼容层的请求格式、错误码对照、限流策略。遇到报错时,先查文档里的错误码表,大部分问题都能定位。文档入口在官网导航栏,或者直接访问接入文档页面。
如果你用的是 Claude Code,配置步骤和 OpenClaw 略有不同。Claude Code 的 settings 文件在~/.claude/settings.json,需要写env字段,把ANTHROPIC_BASE_URL指向https://taotoken.net/api,ANTHROPIC_API_KEY填 TaoToken 的 Key,ANTHROPIC_MODEL填 Model ID。改完重启 Claude Code,发一条测试指令验证。
Cline 的 MCP 配置在cline_mcp_settings.json,把 OpenClaw 作为 MCP server 注册进去,env 里填三件套。这样 Cline 可以直接调用 OpenClaw 的工具能力。Codex 的auth.json在~/.codex/auth.json,写法是base_url、api_key、model三个字段。
不管用哪个工具,核心都是三件套:Base URL、Key、Model ID。这三个值写对,基本不会出问题。写错一个,就会报 401 或 model not found。我建议把三件套存成一个模板,换工具时直接复制,只改字段名。
最后给一个实用技巧:OpenClaw 的workspace目录建议单独建,不要指向整个磁盘。这样文件操作范围可控,避免误删。定时任务和技能管理可以后续再配,先把基础链路跑通。如果你在部署过程中遇到本文没覆盖的报错,可以去接入文档页面查错误码,或者去 API Keys 页面确认 Key 状态。模型对话页面可以快速验证 Key 和模型是否可用,排障时先用它排除模型接入问题,再查 OpenClaw 本身。