1. 配对成功却无响应:先搞清楚消息到底有没有到服务器
OpenClaw 对接钉钉或飞书之后,配对流程走完、机器人显示在线,但发消息过去石沉大海——这是阿里轻量服务器上最常见的一类问题。配对成功只证明了一件事:你的服务能主动向钉钉/飞书平台发起出站请求,鉴权凭证本身没写错。但消息推送是反方向的动作,是平台主动来访问你的服务器,这两条链路完全独立。所以配对成功不等于消息能进来,这是排查的第一原则。
无响应的根因基本只有两类:一是钉钉/飞书的消息请求压根没推送到你的阿里轻量服务器,这类占九成以上;二是请求到了服务器,但处理逻辑、权限校验或回复接口调用失败,导致返回不了消息。分清楚是哪一类,排查方向完全不同,不然就是瞎试。
我试过最省时间的做法是先开实时日志,再发测试消息,用日志有没有新内容来一刀切分。登录服务器执行:
openclaw logs --follow然后打开钉钉或飞书,给机器人发一条测试消息,盯着日志窗口看。如果日志完全没有新内容,说明消息根本没到服务器,优先查网络端口、回调地址、平台事件订阅和权限;如果日志有新请求或报错,说明消息已经进来了,问题出在服务配置、AI 密钥、回复权限或消息解析上,直接跳到对应平台的专属排查。
这个判断动作只需要一分钟,但能帮你省掉大量无效操作。很多人一上来就改配置、重装插件,结果方向从一开始就错了。下面按通用核心排查、钉钉专属、飞书专属、兜底方案的顺序逐层拆解,每一步都给出可复制的命令和验证动作。
2. TaoToken 前置:用统一 Key 通道核对鉴权与请求链路
在深入平台配置之前,先把 AI 侧的鉴权链路理清楚。OpenClaw 无响应很多时候不是钉钉/飞书没推消息,而是消息进来了、AI 接口调用失败,导致回复发不出去。这时候如果 AI 密钥配置混乱,排查会非常痛苦。TaoToken 在这里的作用是提供一个统一的 Key 和 API 通道,让你把鉴权和请求链路单独拎出来验证,不用在多个平台之间来回切换。
TaoToken 是一个面向开发者的 AI 模型 API 聚合服务,官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。它适合谁?适合需要在 OpenClaw 这类工具里统一管理模型调用、又不想为每个模型单独维护一套密钥和地址的开发者。核心能力是把多家模型的调用收敛到一个 Base URL 和一把 Key 上,OpenClaw 的配置项因此变得干净,出问题时也只需要检查一处。
为什么排查无响应要先过这一层?因为 OpenClaw 的回复链路是:平台推消息 → OpenClaw 收到 → 调用 AI 模型 → 拿到回复 → 调平台接口发回去。如果 AI 调用这一步失败,日志里会有报错,但表现就是机器人不回复。把 TaoToken 的 Key 和 Base URL 配好,等于给这条链路做了一个可控的基准点。
具体操作上,先在 TaoToken 控制台创建一个 API Key,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,然后在 API Keys 页面管理你的密钥:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。拿到 Key 之后,OpenClaw 里模型相关的配置就填这一套。如果你用的是 Claude Code 类的编码场景,TaoToken 也提供了对应的接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,ClaudeCodeAnthropic 的配置参考:https://taotoken.net/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=ClaudeCodeAnthropic&utm_campaign=rewrite 。
这里要强调一个排查思路:当你不确定是平台推送问题还是 AI 调用问题时,先在 OpenClaw 的 Web 控制台里直接发一条消息,看 AI 能不能正常回复。如果 Web 控制台里 AI 能回,说明 TaoToken 的 Key 和模型通道是通的,问题在平台推送侧;如果 Web 控制台里 AI 也不回,那先解决 AI 调用,再谈平台对接。这个隔离动作能帮你快速锁定问题域。
对于需要长期跑编码或 Agent 任务的场景,可以考虑 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它更适合持续性的调用需求。模型对话的入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite ,可以用来单独验证某个模型是否可用。
把这一层配好之后,OpenClaw 的模型配置大致是这样一段 JSON,路径是~/.openclaw/openclaw.json,注意 Base URL 和 Key 要和 TaoToken 控制台里的一致:
{ "models": { "default": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "modelId": "claude-3-5-sonnet" } } }Model ID 要填 TaoToken 支持的模型标识,具体以控制台或文档里列出的为准。配置改完必须重启服务,否则不生效:
systemctl restart openclaw这一步做完,AI 侧的鉴权链路就有了一个明确的基准。接下来排查平台推送问题时,如果日志显示消息进来了但回复失败,你就可以直接怀疑是模型调用或回复接口的问题,而不是在平台配置里绕圈。
3. 可复制配置:阿里轻量服务器端口放行与服务常驻
这一节是通用核心排查,九成的坑都在这里。配对成功是服务主动往外连平台,而消息推送是平台主动访问你的服务器,必须双向放行。很多人只放了 SSH 的 22 端口,漏掉了 OpenClaw 的服务端口,平台推消息时直接被挡在门外。
先确认 OpenClaw 的默认服务端口,一般是 18789。阿里云控制台的防火墙放行:登录阿里云轻量应用服务器控制台,进入你的实例,找到左侧【防火墙】,添加入站规则,协议选 TCP,端口填 18789,来源填 0.0.0.0/0,确定。这一步是云平台层面的放行,不做的话后面系统防火墙怎么配都没用。
然后是服务器系统内部的防火墙。CentOS 或 Alibaba Cloud Linux 系统执行:
firewall-cmd --zone=public --add-port=18789/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports最后一条命令用来验证是否放行成功,输出里应该能看到 18789/tcp。Ubuntu 或 Debian 系统执行:
ufw allow 18789/tcp ufw reload ufw status放行之后做公网连通性验证。用自己电脑的浏览器访问http://你的服务器公网IP:18789,如果能打开 OpenClaw 控制台,或者用 telnet 能通,说明端口放行成功。如果超时或无法访问,先解决端口问题,再往下走。这一步是硬门槛,端口不通后面全是白费。
第二个大坑是服务没有 7×24 小时后台常驻。新手最容易踩的坑是关闭 SSH 终端后服务就停了,平台发消息时服务已经不在运行,自然无响应。验证服务状态:
systemctl status openclaw正常结果会显示 active (running)。如果是 inactive 或 stopped,说明服务已停止。正确的后台常驻启动方式推荐用系统服务:
systemctl enable --now openclaw systemctl restart openclawenable --now会同时设置开机自启并立即启动。修改配置后必须 restart,否则改动不生效。临时后台运行可以用nohup openclaw start &,但不推荐长期用,因为终端会话结束或服务器重启后不会自动恢复。
第三个要校验的是核心凭证与基础配置。确认钉钉/飞书的 App ID(Client ID)、App Secret(Client Secret)和 OpenClaw 里配置的完全一致,多一个空格、少一个字符都会导致验签失败。确认 AI 大模型的 API 密钥已正确配置且有可用额度,这一步就是上一节 TaoToken 通道要保证的。确认服务器系统时间正确,钉钉/飞书的签名验签对时间戳要求极高,误差不能超过 5 分钟,时间不对会导致所有回调验签失败:
date timedatectl set-ntp true时间同步这条经常被忽略,但它是验签失败的高频原因。服务器时间漂移几分钟,平台侧验签直接不通过,消息推不过来,日志里却可能什么都不显示。
把端口、常驻、凭证、时间这四项过一遍,大部分无响应问题已经能定位。如果日志显示消息进来了但没回复,再往下看平台专属排查。
4. 验证请求与成功结果:钉钉与飞书专属排查
先看钉钉。登录钉钉开放平台,进入你的应用,做三件事。左侧【机器人】确认已启用机器人,且开启了【接收单聊消息】【接收群聊@消息】。左侧【权限管理】必须申请并开通以下权限,缺一不可:Message.Receive(消息接收权限)、Chat.Message.Send(消息发送权限)、Card.Streaming.Write(AI 流式卡片权限)、Card.Instance.Write(卡片实例写权限)。左侧【版本管理与发布】权限开通、机器人配置修改后,必须创建新版本并发布,且把测试用户加入【测试范围】,否则配置不生效。
消息接收模式有个避坑点:新手优先用 Stream 流式模式,无需配置公网回调地址,无需备案域名,直接长连接接收消息,彻底避开回调地址的坑。如果用 HTTP 回调模式,必须满足 HTTPS 协议加已备案的域名,不支持 IP 地址,不支持 HTTP 协议,否则钉钉不会推送任何消息。确认消息接收地址和 OpenClaw 里的回调路径完全一致,一个字符都不能错。
钉钉的安全配置也要临时放宽测试。左侧【机器人】-【安全设置】临时关闭关键词过滤、IP 白名单、加签校验,测试是否能正常响应,排除安全拦截。左侧【监控与运维】-【推送日志】能看到钉钉给你的服务推送消息的所有记录,重点看有没有推送记录:没有记录说明你没订阅事件、权限没开或应用没发布,钉钉根本没推;有推送失败原因的话,连接超时对应端口没放行或地址错了,验签失败对应凭证或 Token 错了,证书无效对应 HTTPS 证书有问题,直接对应解决。
OpenClaw 钉钉专属配置方面,确认钉钉插件已正确安装:
openclaw plugins install @dingtalk-real-ai/dingtalk-connector确认私聊/群聊策略不是完全封禁,可临时设置为开放模式测试。重新配对执行:
openclaw pairing reset dingtalk重置配对后重新完成配对码验证,重启服务再测。
再看飞书。登录飞书开放平台,进入你的应用,先开启机器人能力:左侧【应用能力】-【机器人】点击启用。事件订阅配置是九成无响应问题的所在:左侧【事件与回调】-【事件订阅】,新手优先选使用长连接(WebSocket)接收事件,无需公网 IP、无需回调地址,彻底避开网络坑。必须手动添加事件,搜索并添加im.message.receive_v1(接收消息事件),不添加这个事件,飞书永远不会给你推消息。如果用 HTTP 回调模式,必须完成【请求网址验证】,飞书会发带 challenge 参数的 GET 请求,你的服务必须正确返回 challenge 值,否则事件订阅无法启用。
权限开通与发布缺一不可。左侧【权限管理】必须开通以下核心权限:接收用户发送给机器人的单聊消息、获取用户发给机器人的单聊消息、以应用的身份发送消息、获取群组信息、读取用户基本信息。权限开通后必须点击左侧【版本管理与发布】创建新版本,提交发布,必须让企业管理员审批通过,权限才会生效。仅保存配置不发布,完全不生效。确认应用的【可用性状态】是已启用,可用范围包含了你的测试账号。
飞书的交互与安全配置也有坑。群聊场景必须 @机器人 才会触发消息事件,直接发消息机器人收不到;单聊场景无需 @,直接发即可。左侧【安全设置】临时关闭 IP 白名单测试,避免飞书的出口 IP 被拦截。飞书开放平台【事件订阅】-【日志查询】能看到所有消息推送记录,无推送记录说明事件没订阅、权限没开或应用没发布;推送失败说明地址错了、端口没放行、服务没运行或验签失败。
OpenClaw 飞书专属配置方面,确认飞书插件已正确安装:
openclaw plugins install @openclaw/feishu确认用户白名单配置正确。OpenClaw 默认会限制仅白名单用户可使用,没把你的飞书用户 ID 加入白名单,即使收到消息也不会回复。查看实时日志,给机器人发消息,日志里会打印你的飞书用户 ID(ou_ 开头的字符串)。编辑配置文件~/.openclaw/openclaw.json,把用户 ID 加入channels.feishu.allowFrom数组:
{ "channels": { "feishu": { "allowFrom": ["ou_你的飞书用户ID"] } } }保存后重启服务。重置配对执行:
openclaw pairing reset feishu重新完成配对码验证,重启服务测试。
成功的结果长什么样?给机器人发消息后,openclaw logs --follow里能看到完整的请求进入、模型调用、回复发送三段日志,钉钉/飞书的推送日志里显示推送成功,机器人正常回复内容。如果只看到请求进入但没有回复发送,问题在模型调用或回复接口;如果推送日志里根本没有记录,问题在平台订阅或权限。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
排查过程中会碰到几类典型报错,逐个对照处理。
401 未授权。这个报错通常出现在模型调用环节,说明 TaoToken 的 Key 或 Base URL 配错了。检查~/.openclaw/openclaw.json里的apiKey是否和控制台里的一致,baseUrl是否是https://taotoken.net/api。注意不要多空格、不要漏字符。如果 Key 刚创建,确认没有复制错行。改完重启服务再测。
local proxy failed。这个报错说明 OpenClaw 尝试走本地代理但失败了。检查服务器上是否有残留的代理环境变量,比如http_proxy、https_proxy,这些变量如果指向一个不可用的地址,会导致所有出站请求失败。执行env | grep -i proxy查看,如果有不需要的代理变量,用unset http_proxy https_proxy清掉,或者从配置文件里移除。阿里轻量服务器上一般不需要额外代理,直连即可。
reading choices 相关报错。这类报错通常出现在解析模型返回结果时,说明返回的 JSON 结构不符合预期。常见原因是 Model ID 填错了,或者 TaoToken 通道返回的格式和 OpenClaw 期望的不一致。先确认 Model ID 是 TaoToken 支持的标识,再检查 OpenClaw 版本是否过旧。更新到最新稳定版:
openclaw updateOAuth 相关报错。如果日志里出现 OAuth 字样,说明鉴权流程有问题。检查钉钉/飞书的 App ID 和 App Secret 是否配对,确认应用已发布且权限已审批。飞书侧还要确认事件订阅的请求网址验证是否通过。OAuth 报错往往伴随验签失败,时间同步也要一并检查。
还有一个高频问题是 CC Switch、Cline MCP、Codex auth.json 这类配置工具的场景。如果你用这些工具管理 OpenClaw 的模型配置,必须写全三件套:Base URL、Key、Model ID。Base URL 填https://taotoken.net/api,Key 填 TaoToken 控制台创建的密钥,Model ID 填具体模型标识。三者缺一不可,少任何一个都会导致调用失败。Codex 的 auth.json 路径通常在~/.codex/auth.json,Cline MCP 的配置在对应插件的设置里,CC Switch 则在它的配置文件中。改完都要重启对应服务。
排查时开启 debug 日志能精准定位报错:
openclaw config set log.level debug systemctl restart openclaw openclaw logs --follow发测试消息后,把日志里的报错关键词复制出来直接搜索,是最快的定位方式。如果以上都试过仍无效,用官方一键部署镜像重新部署,阿里云轻量服务器应用市场直接搜 OpenClaw 一键部署,避免手动环境配置的坑。或者把钉钉/飞书都从 HTTP 回调模式切换为 Stream/WebSocket 长连接模式,彻底解决公网回调、域名备案的问题。版本兼容问题也要考虑,更新 OpenClaw 到最新稳定版,旧版本可能存在插件兼容、平台接口适配的 bug。
6. 把鉴权链路收敛到一处,排查效率会高很多
整条排查链路走下来,你会发现最耗时间的不是某个具体配置,而是在多个平台之间来回切换确认。钉钉开放平台、飞书开放平台、阿里云控制台、服务器系统、OpenClaw 配置、AI 模型密钥,任何一处不一致都会表现为无响应,但报错信息往往不指向根因。
把 AI 侧的鉴权收敛到 TaoToken 一个通道上,好处是模型调用这一环有了明确的基准点。当日志显示消息进来了但回复失败时,你可以先在 Web 控制台直接发消息验证模型通道,通了就说明问题在平台回复接口,不通就说明问题在模型配置。这个隔离动作能把排查范围砍掉一半。
需要创建或管理 Key 的话,控制台在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,API Keys 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,模型对话验证入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 。长期跑编码或 Agent 任务可以看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。
最后留一个实用习惯:每次改完配置,先systemctl restart openclaw,再openclaw logs --follow,然后发一条测试消息,看日志三段是否完整。这个动作重复几次,你对整条链路的感知会清晰很多,下次再遇到无响应,基本能在一分钟内判断出是哪一段断了。