OpenClaw手动配置火山引擎方舟coding plan

来自个人维基
Hovercool留言 | 贡献2026年5月23日 (六) 07:20的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索
  1. 添加 volcengine-plan provider 排查记录
    • 日期**:2026-05-23
    • 目标**:让 `volcengine-plan/ark-code-latest` 等模型能正常使用
    1. 背景

`volcengine-plan` 是 volcengine 的 Coding 套餐 provider,端点是 `https://ark.cn-beijing.volces.com/api/coding/v3`,跟标准 `volcengine` (`/api/v3`) 是不同 baseUrl + 不同 API key。

调用 `volcengine-plan/ark-code-latest` 时一直失败,401 AuthenticationError。

    1. 排查过程
      1. 第一步:确认 API 本身可用

直接 curl 测试 `volcengine-plan` 的端点 → 200 OK,正常返回。

      1. 第二步:检查 OpenClaw 配置

在 `openclaw.json` 里 `models.providers.volcengine-plan` 已有,但 `auth.profiles` 缺少 `volcengine-plan:default`。

      1. 第三步:第一次尝试(错误方向)

往 `openclaw.json` 的 `auth.profiles` 加声明后重启,仍然 401。

      1. 第四步:找到真正的 auth profile 文件

跑 `openclaw models status --json` 发现 `storePath` 指向:
`~/.openclaw/agents/main/agent/auth-profiles.json`

这个文件才是实际密钥存储,里面只有 `volcengine:default`,没有 `volcengine-plan:default`。所以 `volcengine-plan` 的模型调用一直 fallback 用了 `volcengine` 的 key(两者不同),导致 401。

      1. 第五步:修复

在 `auth-profiles.json` 里追加正确的条目后重启 → 验证通过。

    1. 关键经验

1. **`openclaw.json` 的 `auth.profiles` 只是声明**,实际密钥存储在每个 agent 的 `auth-profiles.json` 里
2. **`openclaw.json` 的 `models.providers.apiKey` 可以省略**,密钥只需写在 `auth-profiles.json`
3. **真实存储路径**:`~/.openclaw/agents/<agent-id>/agent/auth-profiles.json`
4. **诊断命令**:`openclaw models status --json` 能看到 `storePath` 和实际加载的 profiles
5. **路由 fallback 行为**:当 provider 没有对应 auth profile 时,OpenClaw 会用同 provider 家族的其他 key,导致认证失败
6. **`models.json` 自动生成**,不需要手动修改

---

  1. 三者的关系与作用(源码级)
    1. 1️⃣ `openclaw.json` — 全局配置声明

OpenClaw 的**主配置文件**,声明了"可以有什么"。

      1. `models.providers` — Provider 定义

定义 provider 是谁、端点在哪、包含哪些模型。**apiKey 字段可留空**。

      1. `auth.profiles` — Auth profile 声明
    • 源码证据**(`order-BpP0LHg3.js:resolveAuthProfileOrder`):OpenClaw 运行时读取 `cfg.auth.profiles` 作为**优先级排序参考**和**命名注册**。
    • 不包含实际密钥!** 只声明了名字和模式。
    1. 2️⃣ `auth-profiles.json` — 实际密钥存储

路径:`~/.openclaw/agents/<agent-id>/agent/auth-profiles.json`

    • 源码路径**(`models-config-hNCfzm-l.js:830`、`store-BYnn-xRZ.js`)
    • 关键要点**:

- **每个 agent 独立**
- **`openclaw.json` 的声明不会自动写入这里**
- 源码函数:`saveAuthProfileStore()` / `upsertAuthProfile()` / `markAuthProfileSuccess()`

    1. 3️⃣ `models.json` — 自动缓存的模型清单
    • 自动生成**,不需要手动修改,删了也会重建。触发时机:重启、`openclaw models scan`、配置变化。

生成时会合并 `openclaw.json` 的 providers + 插件发现的 provider + `auth-profiles.json` 里的密钥。

---

  1. 通用步骤:给 OpenClaw 添加新 provider
    1. 第 1 步:在 `openclaw.json` 声明
      1. 1.1 模型别名(`agents.defaults.models`)

```json
"volcengine-plan/ark-code-latest": {}
```

      1. 1.2 Provider 定义(`models.providers`)

```json
"volcengine-plan": {

 "baseUrl": "https://ark.cn-beijing.volces.com/api/coding/v3",
 "api": "openai-completions",
 "models": [
   { "id": "ark-code-latest", "name": "ark-code-latest", "contextWindow": 256000, "maxTokens": 32000, "input": ["text", "image"] }
 ]

}
```

> apiKey 可选,密钥只需在 auth-profiles.json 写。

      1. 1.3 Auth profile 声明(`auth.profiles`)

```json
"volcengine-plan:default": {

 "provider": "volcengine-plan",
 "mode": "api_key"

}
```

    1. 第 2 步:在 auth-profiles.json 写入密钥(关键!)

路径:`~/.openclaw/agents/main/agent/auth-profiles.json`

```json
"volcengine-plan:default": {

 "type": "api_key",
 "provider": "volcengine-plan",
 "key": "你的API密钥"

}
```

    1. 第 3 步:重启 gateway

```bash
openclaw gateway restart
```

    1. 第 4 步:验证

```bash
openclaw models status --json | jq '.auth.providers[] | select(.provider=="volcengine-plan")'
openclaw models list --provider volcengine-plan
/model volcengine-plan/ark-code-latest
```

    1. 检查清单

| 步骤 | 文件 | 必需 |
|------|------|------|
| Provider 定义 | `openclaw.json` → `models.providers` | ✅ |
| 模型别名 | `openclaw.json` → `agents.defaults.models` | ✅ |
| Auth profile 声明 | `openclaw.json` → `auth.profiles` | ✅ 推荐 |
| **写入密钥** | `agents/main/agent/auth-profiles.json` | ✅ **必需** |
| 重启 | - | ✅ |
| models.json | 自动生成 | ❌ |