龙虾OpenClaw 里「Qwen 模型失效了」:现象、根因与百炼 DashScope 根治方案
飞书 / Telegram / WhatsApp等渠道与Qwen / Claude / 其它兼容端点解耦。IM 绿灯只证明「消息到了网关」;模型是否可用,要看 Provider 探测与。当你再遇到「飞书 504 + OAuth refresh」这类错误时,可以自信地判断:大概率是token 生命周期或接入形态(Portal vs DashScope)的问题,而不是「AI 突然不会说话了」。
OpenClaw 里「Qwen 像失效了」:现象、根因与百炼 DashScope 根治方案
摘要:飞书里机器人「已在线」却回复 504、或
openclaw status一片绿灯仍无对话,往往不是 OpenClaw 挂了,而是模型鉴权链路在「过期 token + 刷新失败」或「产品与文档不一致」上踩坑。本文把一次真实排障抽象成可复用的原理与配置示例,并给出阿里云百炼(DashScope)API Key 的稳定接入方式。
关键词:OpenClaw、飞书、通义千问、Qwen Portal、OAuth、DashScope、百炼、504、个人 AI 助手
适合读者:熟悉终端与 JSON 的 IT 开发者、对「本地 AI 网关 + IM 机器人」感兴趣的爱好者。
阅读时间:约 12 分钟。
一、先把「症状」说清楚:什么叫 Qwen「失效」
在 OpenClaw + 飞书场景里,用户体感上的「失效」通常分三类:
| 体感 | 典型表现 | 容易误判为 |
|---|---|---|
| A. 完全静默 | 飞书发消息无任何回复 | 飞书没连上、OpenClaw 没启动 |
| B. 有错误回执 | 机器人回一大段 HTML,含 504 Gateway Time-out、OAuth token refresh failed |
模型「坏了」、飞书回调关了 |
| C. 偶发/间歇 | 有时正常,有时 504 | 网络抖动(部分成立) |
真实案例里,A 与 B 可能同时出现:Gateway 与飞书频道显示正常,但一旦走到调用大模型,链路在鉴权或上游网关处失败。
(现象):飞书与 openClaw 机器人的对话截图——用户提问后,机器人返回带 ⚠️ Agent failed before reply 与 504、alibaba-ga 字样的长文本。(读者可自行打码敏感信息。)
二、OpenClaw 在本地到底做了什么(30 秒架构)
可以把 OpenClaw 理解成:本机常驻的「AI 网关」。
- 飞书:长连接把消息推到本机 Gateway。
- Gateway:解析会话、应用
dmPolicy/allowFrom等策略,再调用配置的 Provider 发补全请求。 - 模型:对 OpenClaw 来说,多数是 OpenAI 兼容 HTTP API(
openai-completions一类),区别只在 Base URL + 鉴权方式。
AI 元素小记:这里本质是「多 Agent 编排 + 工具调用」的壳,大模型只是其中一个 HTTP 后端;渠道健康 ≠ 模型可用。
三、根因深度:为什么「status 全绿」仍可能调不动 Qwen
3.1 两个「都叫 Qwen」、但不是同一条路
很多同学习惯把「通义千问」当成一个整体,但在工程接入上,至少常见两条路径:
| 维度 | Qwen Portal(chat/portal 体系) | 阿里云百炼 DashScope(Model Studio) |
|---|---|---|
| 典型 Base URL | https://portal.qwen.ai/v1 |
https://dashscope.aliyuncs.com/compatible-mode/v1 |
配置里 apiKey |
常为占位 "qwen-oauth" |
真实 sk-... |
| 鉴权 | OAuth:access + refresh,落盘在本地 profile | 静态 API Key |
| 计费感知 | 与 Portal/活动策略相关 | 控制台按量、资源包等,与阿里云账单对齐 |
| 与「百炼控制台文档」关系 | 不是百炼文档默认那条线 | 是官方「OpenClaw 接入百炼」文档默认线 |
若你以为自己在用「百炼按量」,但 openclaw.json 里仍是 qwen-portal + portal.qwen.ai,则属于产品与文档错配——不是「Qwen 坏了」,而是接错门。
3.2 OAuth 链路的「时间炸弹」:access 过期必然触发 refresh
OAuth 2.0 常见模式:
- access token:短命,用于真正调用 API。
- refresh token:长命,用于换新 access。
- access 过期后,客户端必须先 refresh,否则请求会被 401/403 拒绝。
OpenClaw 把 Portal OAuth 信息写在(默认布局下)类似路径:
~/.openclaw/agents/main/agent/auth-profiles.json
而 ~/.openclaw/openclaw.json 里常见:
"apiKey": "qwen-oauth"
这不是「密钥写成了字符串 qwen-oauth」,而是约定占位符:告诉运行时「去 auth profile 里取 OAuth,而不是用静态 sk」。
一旦 access 过期,每次对话都会走:
组装请求 → 发现 access 过期 → 调用刷新端点 → 拿到新 access → 再调模型
若刷新阶段遇到 504(网关超时),用户就会在飞书里看到整段 HTML 报错,而不是正常自然语言回复——这就是前文 症状 B 的典型技术解释。

图:终端执行 openclaw models status,其中 qwen-portal:default 一行显示 expires in 0m 即已过期提示。
3.3 504 与 alibaba-ga:不全是「你网络差」
504 表示网关/代理在等待上游响应时超时。出现 alibaba-ga 一类标识时,往往说明请求已经进入了阿里云相关链路,但上游(OAuth 服务或内部依赖)未及时返回。
因此:
- 可能是短时故障或区域链路抖动;
- 也可能是 refresh token 也已失效、或 Portal 侧策略变更,导致长时间挂起直至超时。
要点:这类问题改飞书事件订阅开关通常无效;应回到 模型 Provider 与鉴权 排查。
3.4 飞书侧其它「像失效」的因素(并列排查)
即使模型完全正常,以下配置仍会导致「无回复」或「只有错误」:
dmPolicy: "allowlist":私聊仅允许名单内open_id,其他人消息会被策略丢弃(体感像机器人死了)。- 通讯录类 scope 缺失:日志可能出现
99991672等,提示缺少contact:...权限——影响用户身份解析与白名单匹配。 - 模型额度 429:有消息、有日志,但回复为空或报错文本不同。
本文聚焦 Qwen 鉴权/接入形态;其它项建议在 openclaw logs --follow 与 openclaw status --deep 中交叉验证。
四、可复现的排查命令(建议收藏)
# 1) Gateway 是否真的在跑
openclaw gateway status
# 2) 渠道与浅层健康(「OK」不代表模型 OK)
openclaw status
# 3) 深度探测(能看到 Feishu 探测是否 400 等)
openclaw status --deep
# 4) 模型与 OAuth 过期时间(关键)
openclaw models status
# 5) 实时日志:发飞书消息的同时观察
openclaw logs --follow
判读小技巧:
models status里若expires in 0m或 expires 时间早于今天,优先怀疑 OAuth 刷新链路。- 日志里若反复出现
OAuth token refresh failed+504,与本文 3.2–3.3 高度吻合。
五、解决路径:从「能跑」到「跑得稳」
方案 1:继续 Qwen Portal,只做 OAuth 重登(治标)
适合:短期恢复、能接受 OAuth 依赖 Portal 可用性。
openclaw models auth login --provider qwen-portal
# 按提示完成浏览器授权,务必等终端显示成功后再退出
openclaw gateway restart
openclaw models status # 确认 expires 变为「还有几十分钟以上」
常见坑:浏览器显示「认证成功」,但终端侧未收到 token 落盘(例如只打开了 client=qwen-code 的页面、或提前关了 CLI)。成功标准应以 models status 过期时间刷新为准。
图:浏览器「认证成功」页但实际终端侧未收到 token 落盘
方案 2:迁移百炼 DashScope(推荐,治本)
适合:企业已开通百炼按量、手里有 sk-... API Key、希望摆脱 Portal OAuth 刷新。
官方思路见阿里云帮助中心:在 OpenClaw 中接入百炼(与百炼控制台文档入口一致)。
下面给出一份最小可运行的 models 配置骨架(务必把 API Key 换成你自己的,且勿提交到 Git):
{
"agents": {
"defaults": {
"models": {
"bailian/qwen-plus": { "alias": "qwen" }
},
"model": {
"primary": "bailian/qwen-plus"
}
}
},
"models": {
"providers": {
"bailian": {
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"apiKey": "sk-请在此处填写你的DashScopeKey",
"api": "openai-completions",
"models": [
{
"id": "qwen-plus",
"name": "Qwen Plus",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 128000,
"maxTokens": 8192
}
]
}
}
}
}
迁移时注意:
- 删除或停用对
qwen-portal的依赖:agents.defaults.model.primary不要再指向qwen-portal/...。 plugins.entries里若曾启用qwen-portal-auth,在完全切到 DashScope 后可按需关闭,避免混淆。auth.profiles中qwen-portal:default可保留无害,但会话层若写死authProfileOverride,需同步清理(路径通常在~/.openclaw/agents/main/sessions/下相关 JSON,以你本机为准)。- 改完后执行:
openclaw gateway restart
openclaw models status
模型 ID 说明:百炼侧模型名会随产品迭代更新(如文档中的 qwen3.6-plus 等),请以控制台当前可用模型名为准,避免「配置写对了但模型 ID 已下线」。
六、安全与合规:不要把「能跑」建立在「泄露」上
sk-...属于高敏感凭据:不要发到群聊、不要贴公众号、不要进 Git。openclaw.json权限:本机用户可读即可;备份时注意加密或脱敏。- 泄露后处置:在百炼控制台作废旧 Key、签发新 Key,比「全网搜一遍谁复制了」更可靠。
- 公司 Key vs 个人 Key:计费归属与合规不同;生产环境建议独立子账号 + RAM 最小权限 + 独立 Key。
七、结语:把「渠道 OK」和「模型 OK」拆成两件事
OpenClaw 这类产品的美妙之处在于:飞书 / Telegram / WhatsApp 等渠道与 Qwen / Claude / 其它兼容端点 解耦。也正因为如此,排障时要刻意训练一个思维习惯:
IM 绿灯只证明「消息到了网关」;模型是否可用,要看 Provider 探测与
models status。
当你再遇到「飞书 504 + OAuth refresh」这类错误时,可以自信地判断:大概率是 token 生命周期 或 接入形态(Portal vs DashScope) 的问题,而不是「AI 突然不会说话了」。
附录 A:命令速查
| 目的 | 命令 |
|---|---|
| 看网关 | openclaw gateway status |
| 看整体 | openclaw status |
| 深度健康 | openclaw status --deep |
| 看模型鉴权 | openclaw models status |
| Portal 重登 | openclaw models auth login --provider qwen-portal |
| 看日志 | openclaw logs --follow |
| 重启网关 | openclaw gateway restart |
版本说明:本文基于 OpenClaw 稳定通道常见行为整理;不同版本 CLI 子命令可能略有差异,以你本机 openclaw --help 与官方文档为准。
外部参考:
- 阿里云帮助中心:在 OpenClaw 中接入百炼
- 大模型服务平台百炼控制台(API-KEY、按量计费、地域与模型列表)
更多推荐


所有评论(0)