
1. 从只会聊天到真能干活OpenClaw 本地部署踩坑记OpenClaw 这个开源 AI 助手中文圈里管它叫“龙虾”图标就是一只红彤彤的龙虾。它跟网页版 ChatGPT 最大的区别是整套调度逻辑跑在你自己的电脑上聊天记录、文件索引、技能配置都留在本地只有真正调用大模型那一步才走网络。换句话说它是个“本地大脑壳 云端算力”的组合体。适合谁适合那些想让飞书、Telegram、Discord 变成 AI 入口又不想把公司文档随手丢进第三方云盘的人。我把自己那只“龙虾”接上 TaoToken 喂了三天从只会复读“你好有什么可以帮你”变成能读文件、能跑脚本、能定时推待办中间踩的坑比想象中多。先说清楚它到底能做什么。OpenClaw 本体是一个 Node.js 写的网关服务默认监听127.0.0.1:18789提供一个 Web 聊天界面。它的扩展能力靠“技能包”Skills和“渠道适配器”Channel Adapter。技能包决定它能不能执行代码、读 PDF、查网页渠道适配器决定你能从飞书还是 Telegram 给它发指令。真正让它“干活”的关键是背后接的大模型 API。默认向导里推荐 Qwen 或 Minimax但如果你想用 Claude、GPT 系列或者想统一管理多个模型的 Key就需要一个兼容 OpenAI 协议的聚合通道。TaoToken 在这里扮演的就是这个角色一个 Base URL 加一个 Key就能让 OpenClaw 同时调度多个模型不用在配置文件里塞七八个厂商的密钥。我第一天的状态是装好了Web 界面能打开问它“今天天气怎么样”它说“我无法获取实时信息”。这就是典型的“只会聊天”。问题不在 OpenClaw而在模型通道没配对技能也没装。下面按我实际操作的顺序把环境准备、TaoToken 接入、飞书打通、验证请求、报错排查这几段拆开讲。你跟着做基本能复现我第三天那个状态在飞书里发一句“把这份会议纪要的待办提取出来发我”它真的会去读文件、调模型、回消息。2. TaoToken 前置准备统一 Key 与 API 通道在动 OpenClaw 的配置文件之前先把 TaoToken 这边的入口理清楚。很多人卡在“我到底该填哪个地址”上。记住两个东西官网入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 请求地址是https://taotoken.net/api注意 API 地址后面不加任何 UTM 参数配置文件里填错一个字符就是 401。你需要先去控制台创建一个 API Key路径是 console 里的 api-keys 页面。创建完复制那串sk-开头的字符串后面 OpenClaw 的环境变量和配置文件都要用它。为什么不用 OpenClaw 向导里默认的 Qwen 或 Minimax两个原因。第一OpenClaw 的模型提供商列表更新有延迟有些新模型没进下拉菜单第二如果你同时想用 Claude 写代码、用便宜模型做摘要分开配 Key 很麻烦。TaoToken 的通道兼容 OpenAI 的/v1/chat/completions格式OpenClaw 里选“自定义 OpenAI 兼容端点”就能接。我实测下来把 Base URL 填成https://taotoken.net/apiModel ID 填claude-3-5-sonnet或者gpt-4o-mini都能正常返回。这里有个细节OpenClaw 的配置文件分两层。一层是环境变量存在~/.openclaw/.envWindows 是%USERPROFILE%\.openclaw\.env另一层是主配置~/.openclaw/config.json。环境变量里放 Key主配置里放 Base URL 和 Model ID。这样做的目的是避免 Key 被写进版本控制。如果你用 Docker 跑 OpenClaw就把这两个值通过-e传进去。我试过把 Key 直接写进 config.json结果 OpenClaw 启动时报“insecure credential storage”虽然能跑但每次启动都弹警告后来还是挪回.env了。还有一点TaoToken 的 Key 有额度概念。如果你在 OpenClaw 里配了定时任务比如每天早上 9 点跑一次摘要记得在 console 里看一眼余额。余额不足时 OpenClaw 返回的是Insufficient quota不是 401这个错误信息在日志里不太显眼容易误判成网络问题。建议先在模型对话页面手动发一条消息确认 Key 能通再去配 OpenClaw。模型对话的入口在 deep link 的模型对话页发一句“test”看有没有回复这一步花不了一分钟但能省掉后面半小时的排查。3. 可复制配置环境变量与 config.json 片段这一节直接给能粘贴的片段。先确认你的 Node.js 版本。OpenClaw 要求 22 以上终端执行node -v如果低于 22Windows 去官网下安装程序Mac 用brew install node22。装完再跑npm i -g openclawlatest然后openclaw -v看到版本号就算装好了。接下来不要急着跑openclaw onboard因为向导里的模型选择会覆盖你手动写的配置。正确顺序是先手动写好.env和config.json再启动 gateway。先建环境变量文件。路径是~/.openclaw/.envWindows 用户在 PowerShell 里执行notepad $env:USERPROFILE\.openclaw\.env。内容如下# TaoToken 统一通道 OPENAI_API_KEYsk-你的TaoTokenKey OPENAI_BASE_URLhttps://taotoken.net/api # 默认模型可被 config.json 覆盖 OPENCLAW_DEFAULT_MODELclaude-3-5-sonnet注意变量名是OPENAI_API_KEY和OPENAI_BASE_URL不是TAOTOKEN_开头。OpenClaw 内部走的是 OpenAI SDK认这两个名字。如果你写成别的启动时不会报错但请求会打到默认的 OpenAI 官方地址然后因为 Key 不对返回 401。然后是主配置~/.openclaw/config.json。这个文件如果不存在就新建存在的话把models和gateway两段合并进去。完整片段{ models: { default: claude-3-5-sonnet, providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKeyEnv: OPENAI_API_KEY, models: [ claude-3-5-sonnet, gpt-4o-mini, qwen-max ] } } }, gateway: { port: 18789, host: 127.0.0.1 }, channels: { feishu: { enabled: true, appId: cli_你的飞书AppID, appSecret: 你的飞书AppSecret, verificationToken: 你的VerificationToken } } }apiKeyEnv这个字段是关键它告诉 OpenClaw 去读环境变量里的OPENAI_API_KEY而不是把 Key 硬编码在 JSON 里。models数组里列出的模型 ID 就是你在 TaoToken 模型对话页能看到的名字。如果你不确定某个模型 ID 怎么写去模型对话页面选一下地址栏或者请求体里会显示。配好之后执行openclaw gateway restart然后浏览器打开http://127.0.0.1:18789/chat。如果页面能打开但发消息报错先看终端日志里有没有local proxy failed这个后面排错章节讲。飞书那段配置需要你先去飞书开放平台创建企业自建应用拿到 App ID、App Secret 和 Verification Token。这三个值填进上面channels.feishu里。填完重启 gateway飞书那边还要配事件订阅回调地址下一节细说。如果你暂时不接飞书把enabled改成false不影响 Web 界面使用。4. 验证请求从 Web 聊天到飞书触发链路配置写完后第一步验证不是直接上飞书而是先在 Web 界面确认模型通道通了。打开http://127.0.0.1:18789/chat输入一句“用 Python 写一个批量重命名 JPG 的脚本按时间顺序编号”。如果 3 到 5 秒后返回了完整代码说明 TaoToken 通道和模型 ID 都对了。如果返回的是“模型不可用”或者一直转圈去终端看日志大概率是 Base URL 末尾多了斜杠或者 Model ID 拼错。我踩过一次坑把claude-3-5-sonnet写成了claude-3.5-sonnetOpenClaw 不报错只是静默超时排查了二十分钟。Web 通了之后装两个基础技能包让它从“聊天”变成“干活”。终端执行openclaw skills install code-interpreter openclaw skills install file-manager装完重启 gateway。然后在 Web 界面发一条带文件路径的指令比如“读取我桌面上的 todo.md把里面所有未完成项列出来”。如果它真的去读文件并返回列表说明技能加载成功。这一步是分水岭之前它只能凭训练数据回答现在它能碰你本地的文件了。接下来打通飞书。在飞书开放平台的应用后台找到“事件订阅”页面请求地址填https://你的公网地址/feishu/webhook。如果你在本地跑需要用一个内网穿透工具把127.0.0.1:18789暴露出去或者直接把 OpenClaw 部署在有公网 IP 的服务器上。填完地址后飞书会发一个 challenge 请求OpenClaw 的飞书适配器会自动回应。然后在“权限管理”里勾选im:message、im:message:send_as_bot、im:resource这几个权限最后发布应用版本。发布后在飞书里搜索你创建的机器人发一句“帮我总结一下这份会议纪要的待办事项”再上传一个文档。如果机器人回复了摘要整条链路就通了。我第三天验证时用的指令是“读取我上传的合同.pdf找出所有涉及付款期限的条款用表格列出来发我。” 它先调 file-manager 解析 PDF再把文本塞给 TaoToken 通道里的 Claude 模型最后把表格通过飞书消息发回来。整个过程大概 12 秒。这个动作证明它不再是聊天玩具而是能执行多步任务的助手。你可以把这条指令存成模板以后换文件就行。5. 常见错排查401、local proxy failed 与 OAuth 报错第一个高频错误是 401。日志里看到401 Unauthorized或者invalid api key先检查.env里的OPENAI_API_KEY是不是复制时带了空格。TaoToken 的 Key 是sk-开头的一长串粘贴到.env时不要加引号。然后确认OPENAI_BASE_URL是https://taotoken.net/api末尾没有斜杠。如果这两项都对去 console 的 api-keys 页面看这个 Key 是不是被禁用了。还有一种情况你在 config.json 里写了apiKey字段但值是空的OpenClaw 会优先读这个空值导致 401。删掉那个字段只留apiKeyEnv。第二个错误是local proxy failed。这个通常出现在你配了多个 provider 但默认 provider 指向了一个不存在的名字。比如 config.json 里default写的是taotoken但providers下面没有taotoken这个键或者拼写不一致。OpenClaw 启动时不会校验这个只有发请求时才报local proxy failed to resolve provider。解决办法把default的值改成providers里实际存在的键名。另外如果你之前跑过openclaw onboard向导向导可能往 config.json 里写了一个openaiprovider跟你的taotoken冲突。手动把多余的 provider 删掉只留一个。第三个错误是reading choices。日志里出现Cannot read properties of undefined (reading choices)说明请求发出去了但返回体不是标准的 OpenAI 格式。常见原因是 Base URL 填成了https://taotoken.net而不是https://taotoken.net/api。少了/api路径请求会打到官网首页返回 HTMLSDK 解析时找不到choices字段。改回带/api的地址即可。如果改了还报检查 Model ID 是不是 TaoToken 不支持的。去模型对话页面确认一下可用模型列表别填一个不存在的名字。第四个是飞书侧的 OAuth 报错。飞书机器人回复OAuth failed或者app not found先确认 App ID 和 App Secret 没有填反。然后检查飞书应用是否已经发布版本未发布的版本只有开发者自己能用。还有事件订阅里的 Verification Token 必须和 config.json 里的一致不一致时飞书会拒绝回调。如果飞书一直提示“请求地址校验失败”把 OpenClaw 的日志级别调到 debug看有没有收到 challenge 请求。没收到就是公网地址不通收到但没回应就是 Verification Token 错了。最后一个坑定时任务不触发。你配了openclaw cron add但到点没反应。先跑openclaw gateway status看 gateway 是不是在运行。然后检查 cron 表达式是不是写成了 6 位秒级OpenClaw 用的是标准 5 位 cron。还有定时任务里如果调用了文件路径要用绝对路径相对路径在 gateway 进程的工作目录下会找不到文件。我踩过一次任务里写./todo.md结果 gateway 的工作目录是/root文件在/home/user任务静默失败。改成/home/user/todo.md就好了。6. 长期编码与 Agent 场景的 CTA如果你只是想让“龙虾”在飞书里回回消息、做做摘要上面这套配置够用了。但如果你打算把它当成长期编码助手或者 Agent 调度中心比如让它每天自动拉取 Git 仓库、跑测试、生成报告那建议把模型通道换成 Coding Plan。Coding Plan 的入口在 deep link 的 coding-plan 页面它针对高频代码生成和长上下文做了优化比按量计费的 API Key 更适合每天跑几十次任务的场景。我自己的用法是日常问答走 API Key定时任务和代码生成走 Coding Plan两边共用一个 Base URL只是在 config.json 里把default模型换成 Coding Plan 支持的 ID。接入文档在 doc 页面里面有完整的 Base URL 和 Model ID 对照表。如果你在配 OpenClaw 时遇到本文没覆盖的报错先去 doc 里搜错误关键词大部分常见问题都有说明。API Keys 的管理在 api-keys 页面建议给 OpenClaw 单独建一个 Key方便随时吊销和查看用量。模型对话页面可以用来快速验证某个模型 ID 是否可用不用每次都重启 gateway。最后说一个实用技巧OpenClaw 的日志默认输出到终端但你可以用openclaw gateway start --log-file ~/.openclaw/gateway.log把日志落盘。这样排查 401 或者local proxy failed时直接tail -f那个文件比在终端里翻滚动条快得多。我第三天调飞书回调时就是靠这个日志文件发现 Verification Token 少复制了一位。把日志和配置文件放在同一个目录下备份和迁移都方便。