
1. 为什么要在 Node.js 环境里跑 OpenClawOpenClaw 是一个开源的 AI 助手框架能让你把大模型能力接到 Slack、Discord、Telegram 这类聊天平台上做成一个能查天气、跑命令、读文件、定时任务的机器人。它本身是 Node.js 写的所以只要机器上有 Node.js v18 以上和 npm就能跑起来。适合谁适合已经会用 npm 装包、想让 AI 助手真正落到团队 Slack 频道里的开发者而不是只想在网页里聊两句的人。我这次的目标很具体在一台开发机上用 Node.js/npm 把 OpenClaw 装好让它连上 Slack并且所有模型请求都走同一个 Key 通道而不是每个技能、每个模型各配一套密钥。这个统一 Key 的角色我交给 TaoToken 来做——它提供一个兼容常见 API 格式的入口OpenClaw 里所有需要调模型的地方都指向同一个地址和同一个 Key省得后面加技能时到处翻配置。整篇会按「装环境 → 配 Key → 写 config.toml 和 settings.json → 启动 Gateway → Slack 回环验证 → 排错」的顺序走命令和配置都能直接复制。你跟着做最后应该能在 Slack 里 一下机器人它用你指定的模型回你一句话。2. 前置准备Node.js、npm 与 TaoToken 统一 Key先把地基打好。OpenClaw 对 Node.js 版本有要求低于 v18 会在启动 Gateway 时报奇怪的模块错误所以第一步就是确认版本。node -v npm -v如果 node 低于 18去 Node.js 官网下 LTS 版本重装或者用 nvm 切版本。npm 一般跟着 node 一起装好不用单独折腾。接着装 OpenClaw。官方推荐全局安装这样openclaw命令在任何目录都能用npm install -g openclaw openclaw --version能打印出版本号说明 CLI 就位。然后建配置目录OpenClaw 默认读~/.openclawmkdir -p ~/.openclaw mkdir -p ~/.openclaw/workspace现在处理 Key。打开 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后在控制台里创建一个 API Key。这个 Key 就是后面 OpenClaw 调模型时用的统一凭证。API 通道地址是 https://taotoken.net/api 注意这个地址不带任何查询参数配置里直接写它。提示Key 只显示一次创建后立刻复制到本地安全的地方。不要写进会提交到 Git 的文件里。拿到 Key 后先别急着写 OpenClaw 配置用一条 curl 确认这个 Key 和通道是通的curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer 你的Key返回一个模型列表 JSON就说明 Key 有效、通道可达。这一步能省掉后面「到底是 Key 错还是 OpenClaw 配置错」的扯皮。3. 可复制配置config.toml 与 settings.json 骨架OpenClaw 的配置分两层一层是主配置决定用哪个模型、开哪些技能一层是工作空间里的行为定义决定助手说话的风格。下面给的是能直接用的骨架你只需要把 Key 换成自己的。先写主配置~/.openclaw/openclaw.json。注意 OpenClaw 同时支持 JSON 和 TOML 风格的配置这里用 JSON 更直观{ models: { default: claude-3-5-sonnet, provider: { baseUrl: https://taotoken.net/api, apiKey: 你的TaoToken Key, api: openai-compatible } }, gateway: { port: 18789, host: 127.0.0.1 }, skills: { weather: true, slack: true, healthcheck: true } }几个关键点解释一下。baseUrl填 TaoToken 的 API 地址apiKey填你刚创建的 Keyapi字段声明走兼容格式这样 OpenClaw 内部不管调哪个模型都从这一个通道出去。default是你想默认用的模型名按 TaoToken 控制台里实际可用的模型填。如果你更习惯 TOML 写法等价骨架是这样[models] default claude-3-5-sonnet [models.provider] baseUrl https://taotoken.net/api apiKey 你的TaoToken Key api openai-compatible [gateway] port 18789 host 127.0.0.1 [skills] weather true slack true healthcheck true两种写法选一种即可别同时存在否则 OpenClaw 读取时可能以其中一个为准导致你以为改了其实没生效。再写 Slack 相关的settings.json。Slack 集成需要在 Slack 后台建一个 App拿到 Bot Token 和 Signing Secret。这部分在~/.openclaw/skills/slack/settings.json{ enabled: true, botToken: xoxb-你的SlackBotToken, signingSecret: 你的SlackSigningSecret, appToken: xapp-你的SlackAppToken, socketMode: true, channels: { allow: [#ai-test] } }socketMode设为 true 时OpenClaw 用 WebSocket 连 Slack不需要公网地址本地开发机就能收消息这点对新手很友好。channels.allow限制机器人只在指定频道响应避免它在全公司频道里乱说话。最后定义助手人格写~/.openclaw/workspace/SOUL.md# SOUL.md - Who You Are ## Core Truths Be genuinely helpful, not performatively helpful. Skip the Great question! and just help. Actions speak louder than filler words. ## Style - 中文回复简洁直接 - 不确定的事情明确说不确定 - 涉及命令执行时先说明要做什么这个文件决定助手回复的语气。你写什么风格它就往什么风格靠。4. 启动 Gateway 并验证 Slack 消息回环配置写完启动 Gatewayopenclaw gateway start openclaw gateway statusstatus显示 running说明服务起来了。如果起不来先看日志openclaw gateway logs日志里最常见的两类信息一类是端口 18789 被占用一类是模型通道返回 401。前者改gateway.port后者回去检查 Key。Gateway 起来后先做一次本地模型调用验证确认 TaoToken 通道在 OpenClaw 内部也通openclaw exec echo hello from openclaw openclaw skills healthcheckhealthcheck会返回各技能和模型通道的状态。如果模型那一项是 ok说明 OpenClaw 已经能用你配的 Key 调模型了。接下来验证 Slack 回环。在 Slack 里把机器人拉进#ai-test频道然后 它发一句话你的机器人 用一句话介绍你自己正常的话几秒内机器人会在频道里回复。这条回复的链路是Slack 消息 → OpenClaw Gatewaysocket mode 接收→ 模型通道TaoToken→ 模型返回 → Gateway 发回 Slack。整条链路走通说明 Node.js 环境、OpenClaw、TaoToken Key、Slack 配置四者都对上了。如果你想在本地先看消息处理过程可以开一个终端盯日志openclaw gateway logs -f然后在 Slack 发消息日志里会打印收到的事件和模型请求。这一步能帮你确认消息到底卡在哪一环。5. 本篇常见错排查Gateway 起不来报端口占用。先查谁占了 18789lsof -i :18789如果是上次没退干净的 OpenClaw 进程kill 掉再启。或者直接把gateway.port改成 18790 之类。Slack 里 了没反应。按顺序查三件事机器人是否被拉进频道settings.json里channels.allow是否包含该频道Slack App 是否开启了 Socket Mode 并授予了chat:write、app_mentions:read权限。三者缺一消息都进不来。模型调用返回 401 或 403。九成是 Key 问题。先用第 2 节那条 curl 单独测 Key确认 Key 本身有效。如果 curl 通、OpenClaw 不通检查openclaw.json里apiKey有没有多余空格或引号嵌套错误。改了配置不生效。OpenClaw 启动时读一次配置改完要重启 Gatewayopenclaw gateway stop openclaw gateway start回复风格不对。检查SOUL.md是否在~/.openclaw/workspace/下文件名大小写是否一致。有些系统对大小写敏感soul.md和SOUL.md是两回事。npm 全局装完找不到命令。多半是 npm 全局 bin 目录不在 PATH 里。用npm config get prefix看路径把它下面的 bin 加进 PATH。6. 把 Key 和通道固定下来后面加技能就不折腾走到这里你手上应该有一个能在 Slack 里回话的 OpenClaw 机器人而且它所有模型请求都从 TaoToken 这一个通道出去。这个结构的好处是以后你想加天气技能、加定时任务、换默认模型都只动openclaw.json里的default字段Key 和 baseUrl 不用碰。如果你后面要长期跑编码类或 Agent 类任务可以了解下 Coding Plan 这类按周期计费的方案适合高频调用场景只是想验证模型对话效果用模型对话页面直接试就行接入和排障过程中要管理 Key去 API Keys 页面配置字段拿不准翻接入文档最稳。这几个入口分别是模型对话https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chatCoding Planhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-planAPI Keyshttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys接入文档https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc最后留一个我踩过的坑Slack 的 Bot Token 和 App Token 是两回事xoxb-开头的是 Bot Tokenxapp-开头的是 App Tokensocket mode 必须用 App Token。我第一次配的时候把两个搞混日志里一直报连接失败换过来就好了。配置这东西字段名对不上就是不通别怀疑人生逐字对一遍。