)
1. 为什么要在本地养一只“龙虾”OpenClaw 是一个可以跑在自己电脑上的 AI Agent 运行时它能读写文件、执行命令、调用浏览器把“对话”变成“动手干活”。和纯云端助手最大的区别在于模型可以走本地推理数据不出机器日常使用没有按次计费的心理负担。适合谁手里有 MacBook、Windows 台式机或 Linux 小主机的开发者想拿它做代码整理、文档批处理、项目脚手架生成这类重复劳动。但真正动手时坑往往不在 OpenClaw 本身而在“模型接入”这一环。本地 Ollama 拉模型慢、显存吃紧远程 API 又要到处找 Key、改 base_url、对不同的客户端重复配置。我试过把同一套 Key 分别填进 Cline、CC Switch 和 OpenClaw改一处忘一处排查半天才发现是环境变量没生效。这篇就按“全平台部署 → 统一 Key 接入 → 配置骨架 → 启动自检”的顺序走一遍。核心思路是OpenClaw 负责 Agent 调度模型通道统一走 TaoToken 的 OpenAI 兼容接口这样 Windows、macOS、Linux 三端只需要维护一份配置。下面所有命令和配置都可以直接复制改掉路径和 Key 就能跑。2. 前置准备TaoToken 统一 Key 与全平台环境2.1 拿到一把能用的 KeyTaoToken 提供 OpenAI 兼容的 API 通道OpenClaw、Cline、CC Switch 这类工具都能直接对接。先到控制台创建 API Key控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteKey 管理页https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite创建后复制那串sk-开头的 Key先存到本地环境变量里别直接写进会提交到 Git 的配置文件。API 基础地址统一用https://taotoken.net/api注意这个地址后面不加 UTM 参数它是给程序调用的不是给人点的。想先确认模型能不能通可以到模型对话页发一句话试试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite2.2 三端环境依赖OpenClaw 依赖 Node 20 和 Python 3.11Windows 建议走 WSL2避免路径和权限的奇怪问题。macOSHomebrewbrew install git node20 python3.11 node -v # 应输出 v20.xUbuntu / Debiansudo apt update sudo apt install -y git curl python3 python3-pip curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -vWindows在 WSL2 的 Ubuntu 里执行上面这段即可。如果你坚持用原生 Windows需要自行装 Node 20 和 Python 3.11并把下面所有~路径换成实际盘符路径踩坑概率会高一些。2.3 设置环境变量把 Key 写进 shell 配置三端通用# macOS / Linux写入 ~/.zshrc 或 ~/.bashrc export TAOTOKEN_API_KEYsk-你的Key export TAOTOKEN_BASE_URLhttps://taotoken.net/apiWindows PowerShell 临时会话$env:TAOTOKEN_API_KEYsk-你的Key $env:TAOTOKEN_BASE_URLhttps://taotoken.net/api改完执行source ~/.zshrc或重开终端用echo $TAOTOKEN_API_KEY确认能打印出来。这一步没做对后面配置文件里引用变量就会拿到空值报 401 你还以为是 Key 错了。3. 安装 OpenClaw 并写入可复制配置骨架3.1 三种安装方式选一个官方脚本推荐Linux/macOSgit clone https://github.com/openclaw/openclaw.git cd openclaw ./install.shnpm 全局安装三端通用最省事npm install -g openclaw openclaw --versionDocker适合想隔离环境的docker pull openclaw/openclaw:latest docker run -it --rm \ -v $(pwd)/workspace:/home/claw/workspace \ -v $(pwd)/config:/home/claw/.openclaw \ -e TAOTOKEN_API_KEY$TAOTOKEN_API_KEY \ openclaw/openclaw:latestDocker 方式记得把环境变量透传进去否则容器里读不到 Key。3.2 settings.json 骨架OpenClaw 的主配置默认在~/.openclaw/settings.json。下面这份是走 TaoToken 通道的最小可用骨架provider用openai_compatibleapi_base指向 TaoToken{ model: { provider: openai_compatible, api_base: https://taotoken.net/api, api_key: ${TAOTOKEN_API_KEY}, name: claude-sonnet-4-5, parameters: { temperature: 0.7, max_tokens: 4096 } }, workspace: ~/openclaw-workspace, allowed_paths: [~/projects, ~/documents], denied_paths: [~/.ssh, ~/.aws], permissions: { file_write: true, shell_exec: sandboxed, network_access: ask, code_execution: sandboxed }, session: { max_history_turns: 50, auto_save_interval: 300, session_dir: ~/.openclaw/sessions } }${TAOTOKEN_API_KEY}这种写法表示从环境变量读取OpenClaw 启动时会做替换。模型名按你实际要用的填TaoToken 支持多种模型具体可用列表在文档里查。3.3 config.toml 骨架部分版本使用有些发行版把配置换成了 TOML 格式等价写法如下[model] provider openai_compatible api_base https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} name claude-sonnet-4-5 [model.parameters] temperature 0.7 max_tokens 4096 [permissions] file_write true shell_exec sandboxed network_access ask code_execution sandboxed [session] max_history_turns 50 auto_save_interval 300 session_dir ~/.openclaw/sessions两种格式别同时存在否则加载顺序不确定容易读到旧配置。确认你的版本用哪种openclaw config path会打印实际读取的文件路径。3.4 权限字段含义字段取值说明file_writetrue / false是否允许写文件shell_exectrue / sandboxed / ask / disabled命令执行策略network_accesstrue / ask / disabled联网请求策略code_executionsandboxed / disabled代码运行隔离sandboxed表示在受限环境里跑ask表示每次操作前问你。生产或长期挂机场景建议把shell_exec和network_access都设成ask避免 Agent 自作主张。4. 在 Cline / CC Switch 里复用同一把 KeyOpenClaw 不是孤岛你大概率同时用着编辑器里的 AI 插件。把 TaoToken 通道配一次多处复用。4.1 Cline 配置片段Cline 的模型设置里选 “OpenAI Compatible”填入Base URL: https://taotoken.net/api API Key: sk-你的Key Model ID: claude-sonnet-4-5如果 Cline 支持配置文件对应片段大致是{ apiProvider: openai, openAiBaseUrl: https://taotoken.net/api, openAiApiKey: ${TAOTOKEN_API_KEY}, openAiModelId: claude-sonnet-4-5 }4.2 CC Switch 配置片段CC Switch 用来在多个模型通道间切换把 TaoToken 作为一个 profile 加进去{ profiles: { taotoken: { base_url: https://taotoken.net/api, api_key: ${TAOTOKEN_API_KEY}, model: claude-sonnet-4-5 } }, active: taotoken }这样 OpenClaw、Cline、CC Switch 三处共用同一个环境变量换 Key 只改一处。长期跑编码任务、Agent 循环调用比较多的话可以看下 Coding Plan额度模型更适合高频场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite5. 启动自检与连通性验证5.1 先用 curl 验证通道在启动 OpenClaw 之前先确认 TaoToken 通道本身是通的把问题范围缩小curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 只回复两个字通了}] }返回 JSON 里choices[0].message.content有内容说明 Key 和地址都没问题。如果这里就报 401别往下走了先回去检查环境变量。5.2 启动 OpenClaw 并自检openclaw config path # 确认读的是哪个配置文件 openclaw config validate # 校验 JSON/TOML 语法 openclaw startconfig validate会检查必填字段和变量替换结果。如果它提示api_key为空基本就是环境变量没导出到当前 shell。5.3 发一条真实任务openclaw chat 在当前工作目录创建一个 Python Flask 项目骨架包含 app.py 和 requirements.txtAgent 正常工作时应该能看到解析需求 → 创建目录 → 写文件 → 回报结果。执行完检查~/openclaw-workspace下是否真的出现了文件。这一步能跑通说明模型接入、权限、工作目录三者都对了。6. 本篇常见报错排查6.1 401 Unauthorized九成是 Key 没读到。按顺序查echo $TAOTOKEN_API_KEY是否有值 → 配置文件里是不是写成了${TAOTOKEN_API_KEY}而不是硬编码 → Docker 场景有没有-e透传。还有一种情况是 Key 复制时带了空格或换行重新复制一次。6.2 Connection refused / 超时先确认api_base写的是https://taotoken.net/api不要多加/v1后缀不同客户端对路径拼接方式不一样多写会变成/api/v1/v1/...。如果 curl 能通但 OpenClaw 不通检查是不是配了本地代理变量HTTP_PROXY干扰了请求。6.3 模型名不存在报model not found时去文档页核对当前可用的模型 ID别凭记忆填。模型名大小写和连字符都要一致。https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite6.4 权限被拒 / 文件写不进去检查allowed_paths是否包含目标目录denied_paths有没有误伤。macOS 上如果装在/usr/local/bin可能需要chmod x。WSL2 里注意别把工作目录设在/mnt/c下跨文件系统权限容易出问题放到 Linux 家目录里更稳。6.5 配置改了不生效OpenClaw 可能缓存了旧配置。先openclaw config path确认路径再重启进程。如果 settings.json 和 config.toml 同时存在删掉不用的那个。7. 把通道固定下来后面就省心了整套流程跑通后你手里其实只有三样东西需要维护一个环境变量、一份settings.json或config.toml、一个https://taotoken.net/api地址。OpenClaw 负责调度TaoToken 负责模型通道Cline 和 CC Switch 复用同一把 Key。三端部署的差异被压缩到“装依赖”这一步配置层完全一致。想继续深入的话接入文档里有各客户端的详细参数说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite需要管理多把 Key 或查看用量去控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite最后留一个实用习惯每次改完配置先跑openclaw config validate再用 curl 打一发最小请求两步都过了再启动 Agent。这样出问题时你能立刻判断是通道挂了还是 Agent 逻辑的问题省掉大量瞎猜的时间。