# Claude Code (/docs/zh-CN/code-cli/claude-code)

[Claude Code](https://code.claude.com/docs) 开箱即可接入 OhMyGPT。设置两个环境变量，它就会使用你的 OhMyGPT Key 运行；所有 Claude 模型和模型列表里的其他模型，一条 `/model` 命令就能切换。费用从你的 OhMyGPT 余额扣除，整套配置可以先用 `ohmygpt/mock` 免费测试。

## 配置 [#配置]

设置以下变量，然后在同一个 shell 里启动 Claude Code：

```bash
export ANTHROPIC_BASE_URL="https://api.ohmygpt.com"
export ANTHROPIC_AUTH_TOKEN="$OHMYGPT_API_KEY"
export ANTHROPIC_MODEL="anthropic/claude-sonnet-5-5"
claude
```

- `ANTHROPIC_BASE_URL` 不带 `/v1`，Claude Code 会自己拼上 `/v1/messages`。
- `ANTHROPIC_AUTH_TOKEN` 以 `Authorization: Bearer` 发送你的 Key。用 `ANTHROPIC_API_KEY`（以 `x-api-key` 发送）也可以，但 Claude Code 会要求你确认一次。
- `ANTHROPIC_MODEL` 可以是[选择模型](#选择模型)中的任意模型 ID。

想在所有终端里都保留这套配置，把同样的值写进 `~/.claude/settings.json` 的 `env` 块：

```json title="~/.claude/settings.json"
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.ohmygpt.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-...",
    "ANTHROPIC_MODEL": "anthropic/claude-sonnet-5-5"
  }
}
```

<Callout type="warn">
  不要把 Key 写进项目里的 `.claude/settings.json`，这个文件会随代码仓库一起提交。请使用 `~/.claude/settings.json`，或已被 git 忽略的 `.claude/settings.local.json`。
</Callout>

## 检查连接 [#检查连接]

向免费测试模型 `ohmygpt/mock` 发送一个和 Claude Code 相同格式的请求：

```bash
curl https://api.ohmygpt.com/v1/messages \
  -H "Authorization: Bearer $OHMYGPT_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "ohmygpt/mock", "max_tokens": 64, "messages": [{"role": "user", "content": "ping"}]}'
```

```json
{
  "id": "chatcmpl-ohmygpt-mock",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "This is a mock reply from OhMyGPT. Your integration works; switch to a real model when ready."
    }
  ],
  "model": "mock",
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 19, "output_tokens": 17 }
}
```

然后启动 `claude` 并运行 `/status`。**Anthropic base URL** 一行应显示 `https://api.ohmygpt.com`，凭据一行应显示 `ANTHROPIC_AUTH_TOKEN`。

也可以直接用 `claude --model ohmygpt/mock` 让 Claude Code 跑在 mock 模型上。Claude Code 发送工具时，mock 会先调用第一个工具，再回复一段文本，这样你不花钱就能看到 agent 循环完整跑一轮。账户完成充值后即可使用 mock 模型。

## 选择模型 [#选择模型]

列出可以在 Claude Code 中使用的模型：

```bash
curl -s https://api.ohmygpt.com/v1/models \
  | jq -r '.data[] | select(.available and any(.protocols[]?; .id == "anthropic-messages")) | .id'
```

各模型的价格见[模型](https://www.ohmygpt.com/models)页面。

Claude Code 是为 Claude 打造的，用 `anthropic/claude-*` 模型能获得完整体验。列表中的其他模型（如 `zhipu/glm-5.3`）也能运行 Claude Code，工具调用和思考设置同样可用。

在会话中用 `/model <model id>` 切换模型。Claude Code 内置的选项（`opus`、`sonnet`、`haiku`、`fable`）也能用，因为 OhMyGPT 接受它们发送的 Claude 模型名，例如 `claude-sonnet-5-5`。

Claude Code 的一些后台任务（比如生成会话标题）跑在它的 Haiku 级模型上。要同时指定这个模型，设置：

```bash
export ANTHROPIC_DEFAULT_HAIKU_MODEL="anthropic/claude-haiku-5-5"
```

想在 `/model` 选择器里看到 OhMyGPT 的 Claude 模型，设置 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1`。Claude Code 启动时会读取 `GET /v1/models`，列出所有包含 `claude` 或 `anthropic` 的 ID。

## GitHub Actions [#github-actions]

[claude-code-action](https://github.com/anthropics/claude-code-action) 把 `anthropic_api_key` 输入以 `x-api-key` 发送，OhMyGPT 接受这种方式。把你的 OhMyGPT Key 存为仓库 secret，并在 `env` 中设置 base URL：

```yaml
env:
  ANTHROPIC_BASE_URL: https://api.ohmygpt.com

steps:
  - uses: anthropics/claude-code-action@v1
    with:
      anthropic_api_key: ${{ secrets.OHMYGPT_API_KEY }}
```

## 问题排查 [#问题排查]

| 现象 | 原因 | 解决办法 |
|---|---|---|
| 所有请求都返回 `404 page not found` | `ANTHROPIC_BASE_URL` 以 `/v1` 结尾，请求被发到了 `/v1/v1/messages` | 改为 `https://api.ohmygpt.com` |
| `401`，提示 `Invalid API key` | Key 输错了或已被删除 | 从 [API Key](https://www.ohmygpt.com/keys) 页面复制一个 Key |
| 启动时出现登录界面 | Claude Code 没有找到凭据 | 在运行 `claude` 的 shell 中导出 `ANTHROPIC_AUTH_TOKEN`，或在 `~/.claude/settings.json` 中设置 |
| 设置了 `ANTHROPIC_API_KEY` 但没有生效 | 在 Claude Code 的确认提示中拒绝了这个 Key | 改用 `ANTHROPIC_AUTH_TOKEN`，或在 `/config` → **Use custom API key** 中启用这个 Key |
| `404`，提示模型不存在 | ID 拼写有误 | 从 `GET /v1/models` 复制 ID |
| `402` | 余额或 Key 的消费额度已用完 | 到[账单](https://www.ohmygpt.com/billing)页面充值 |

每个响应都带有 `X-Request-ID` 头，每个请求的费用可以在[用量](https://www.ohmygpt.com/usage)页面查看。
