Aman1984头像
OpenClaw 配置 GLM 大模型 API Key 遇到的问题封面图

OpenClaw 配置 GLM 大模型 API Key 遇到的问题

🐛 问题现象

在使用 OpenClaw 可视化界面(Chat 界面)与 GLM 大模型进行对话时,系统弹出错误提示,无法正常进行推理调用。

错误信息 OpenClaw requires working inference: No API key found for provider "glm". Auth store: C:\Users\***.openclaw\agents\main\agent\openclaw-agent.sqlite (agentDir: C:\Users\***.openclaw\agents\main\agent). Configure an API key (openclaw models auth paste-api-key --provider glm; add --agent <id> for a non‑default agent) or copy only portable static auth profiles from the main agentDir.

尽管已经在 .env 文件中配置了 ZAI_API_KEY,系统仍然提示找不到 glm provider 的 API Key。

🔍 问题原因分析

经过对 OpenClaw 配置文件的详细排查,发现问题出在 API Key 的存储位置与读取方式不匹配 上。

1. 配置结构分析

OpenClaw 的主配置文件 openclaw.json 中,自定义了一个名为 glm 的 provider:

"providers": {
  "glm": {
    "baseUrl": "[https://open.bigmodel.cn/api/paas/v4](https://open.bigmodel.cn/api/paas/v4)",
    "api": "openai‑completions",
    "models": [
      { "id": "glm‑4.5‑air", "name": "glm‑4.5‑air" },
      { "id": "glm‑5.3‑flash", "name": "glm‑5.3‑flash" }
    ]
  }
}

2. 关键发现:两种认证机制

OpenClaw 实际上存在两套 API Key 存储机制:

        A. 环境变量方式 .env 文件中的 ZAI_API_KEY → 系统内置的 zai provider 使用

        B. Agent 认证存储方式 SQLite 数据库 (openclaw‑agent.sqlite) → 自定义 provider(如 glm)使用

核心问题 当使用 自定义 provider 名称(如 glm)时,OpenClaw 不会自动从环境变量中读取对应的 API Key,而是要求通过 CLI 命令将密钥显式保存到 Agent 的 SQLite 认证存储中。

3. 环境变量命名陷阱

虽然 .env 中配置了 ZAI_API_KEY,但系统内置的 zai provider 与自定义的 glm provider 是两个不同的配置体系。对于自定义 provider,OpenClaw 默认会按照 {PROVIDER_NAME}_API_KEY 的规则查找环境变量,即期望找到 GLM_API_KEY 而非 ZAI_API_KEY。

配置项值说明
Provider 名称glm用户自定义,非系统内置
环境变量名ZAI_API_KEY与 provider 名不匹配,无法被 glm provider 识别
期望的环境变量名GLM_API_KEY或需通过 CLI 存入 SQLite
实际读取位置openclaw‑agent.sqliteAgent 级认证存储

✅ 解决方法

解决该问题的核心思路是:将 API Key 通过 OpenClaw CLI 正确写入到 glm provider 的认证存储中。

步骤一:确认 openclaw 命令可用

where.exe openclaw

输出示例:

C:\Users\***\AppData\Roaming\npm\openclaw
C:\Users\***\AppData\Roaming\npm\openclaw.cmd

步骤二:使用 paste‑api‑key 命令写入密钥

这是最关键的一步。使用 OpenClaw 提供的 models auth paste‑api‑key 命令,将 API Key 保存到 glm provider 的认证配置中:

# PowerShell 方式
$apiKey = "your‑api‑key‑here"
$apiKey | openclaw.cmd models auth paste‑api‑key --provider glm

成功输出 Auth profile: glm:manual (glm/api_key)

步骤三:验证配置

配置完成后,可以查看已保存的认证配置列表:

openclaw.cmd models auth list

注意:如果 Gateway 正在运行,可能会提示需要独占状态所有权。此时需要先停止 Gateway,或在非运行时查看。

步骤四:重启 OpenClaw 并测试

完成上述配置后,重新打开 OpenClaw 可视化界面,进入 Chat 界面即可正常与 GLM 模型对话。

💡 经验总结与建议

1. 内置 Provider vs 自定义 Provider

  • 内置 Provider(如 zai、openai、anthropic):通常支持从环境变量直接读取 API Key
  • 自定义 Provider(如本文的 glm):需要通过 CLI 命令显式配置认证信息到 Agent 的 SQLite 存储中

2. 推荐配置方式

对于智谱AI(GLM)模型,建议采用以下任一方式:

方案 A:使用内置 zai provider(推荐) OpenClaw 内置了 zai provider,与智谱AI的 Z.AI 平台对应。直接使用内置 provider 可以省去很多配置麻烦,且环境变量 ZAI_API_KEY 能被自动识别。

方案 B:使用自定义 glm provider 如果确实需要自定义 provider 名称(如区分不同环境),务必通过 openclaw models auth paste‑api‑key --provider glm 命令配置密钥,而不是仅依赖环境变量。

3. 排错检查清单

  • ✓ 确认 openclaw.json 中的 provider 名称与 API Key 配置方式匹配
  • ✓ 检查环境变量名是否符合 {PROVIDER_NAME}_API_KEY 规则
  • ✓ 对于自定义 provider,使用 openclaw models auth paste‑api‑key 显式配置
  • ✓ 确认模型 ID 在智谱AI平台真实存在(如 glm‑4.5‑air、glm‑5.3‑flash 等)
  • ✓ 配置完成后重启 Gateway 或 OpenClaw 客户端

4. 相关配置文件位置

文件路径作用
主配置~/.openclaw/openclaw.json定义 provider、模型列表、默认模型等
环境变量~/.openclaw/.env存储 API Key(适用于内置 provider)
认证存储~/.openclaw/agents/main/agent/openclaw‑agent.sqliteAgent 级认证信息(适用于自定义 provider)

最终效果 通过 openclaw models auth paste‑api‑key --provider glm 命令成功配置 API Key 后,OpenClaw Chat 界面恢复正常,可以顺畅地与 GLM 大模型进行对话。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/Aman1984/article/details/81395445

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--