2025-12-16 22:09:02 +08:00
|
|
|
|
---
|
|
|
|
|
|
icon: material/new-box
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
!!! question "自 sing-box 1.13.0 起"
|
|
|
|
|
|
|
|
|
|
|
|
# OCM
|
|
|
|
|
|
|
|
|
|
|
|
OCM(OpenAI Codex 多路复用器)服务是一个多路复用服务,允许您通过自定义令牌远程访问本地的 OpenAI Codex 订阅。
|
|
|
|
|
|
|
|
|
|
|
|
它在本地机器上处理与 OpenAI API 的 OAuth 身份验证,同时允许远程客户端使用自定义令牌进行身份验证。
|
|
|
|
|
|
|
|
|
|
|
|
### 结构
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "ocm",
|
|
|
|
|
|
|
|
|
|
|
|
... // 监听字段
|
|
|
|
|
|
|
|
|
|
|
|
"credential_path": "",
|
|
|
|
|
|
"usages_path": "",
|
|
|
|
|
|
"users": [],
|
|
|
|
|
|
"headers": {},
|
|
|
|
|
|
"detour": "",
|
|
|
|
|
|
"tls": {}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 监听字段
|
|
|
|
|
|
|
|
|
|
|
|
参阅 [监听字段](/zh/configuration/shared/listen/) 了解详情。
|
|
|
|
|
|
|
|
|
|
|
|
### 字段
|
|
|
|
|
|
|
|
|
|
|
|
#### credential_path
|
|
|
|
|
|
|
|
|
|
|
|
OpenAI OAuth 凭据文件的路径。
|
|
|
|
|
|
|
2026-03-10 21:49:18 +08:00
|
|
|
|
如果未指定,默认值为:
|
|
|
|
|
|
- 如果设置了 `CODEX_HOME` 环境变量,则使用 `$CODEX_HOME/auth.json`
|
|
|
|
|
|
- 否则使用 `~/.codex/auth.json`
|
2025-12-16 22:09:02 +08:00
|
|
|
|
|
|
|
|
|
|
刷新的令牌会自动写回相同位置。
|
|
|
|
|
|
|
|
|
|
|
|
#### usages_path
|
|
|
|
|
|
|
|
|
|
|
|
用于存储聚合 API 使用统计信息的文件路径。
|
|
|
|
|
|
|
|
|
|
|
|
如果未指定,使用跟踪将被禁用。
|
|
|
|
|
|
|
|
|
|
|
|
启用后,服务会跟踪并保存全面的统计信息,包括:
|
|
|
|
|
|
- 请求计数
|
|
|
|
|
|
- 令牌使用量(输入、输出、缓存)
|
|
|
|
|
|
- 基于 OpenAI API 定价计算的美元成本
|
|
|
|
|
|
|
|
|
|
|
|
统计信息按模型以及可选的用户(启用身份验证时)进行组织。
|
|
|
|
|
|
|
|
|
|
|
|
统计文件每分钟自动保存一次,并在服务关闭时保存。
|
|
|
|
|
|
|
|
|
|
|
|
#### users
|
|
|
|
|
|
|
|
|
|
|
|
用于令牌身份验证的授权用户列表。
|
|
|
|
|
|
|
|
|
|
|
|
如果为空,则不需要身份验证。
|
|
|
|
|
|
|
|
|
|
|
|
对象格式:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "",
|
|
|
|
|
|
"token": ""
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
对象字段:
|
|
|
|
|
|
|
|
|
|
|
|
- `name`:用于跟踪的用户名标识符。
|
|
|
|
|
|
- `token`:用于身份验证的 Bearer 令牌。客户端通过设置 `Authorization: Bearer <token>` 头进行身份验证。
|
|
|
|
|
|
|
|
|
|
|
|
#### headers
|
|
|
|
|
|
|
|
|
|
|
|
发送到 OpenAI API 的自定义 HTTP 头。
|
|
|
|
|
|
|
|
|
|
|
|
这些头会覆盖同名的现有头。
|
|
|
|
|
|
|
|
|
|
|
|
#### detour
|
|
|
|
|
|
|
|
|
|
|
|
用于连接 OpenAI API 的出站标签。
|
|
|
|
|
|
|
|
|
|
|
|
#### tls
|
|
|
|
|
|
|
2026-03-16 12:24:10 +08:00
|
|
|
|
TLS 配置,参阅 [TLS](/zh/configuration/shared/tls/#入站)。
|
2025-12-16 22:09:02 +08:00
|
|
|
|
|
|
|
|
|
|
### 示例
|
|
|
|
|
|
|
|
|
|
|
|
#### 服务端
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"services": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "ocm",
|
|
|
|
|
|
"listen": "127.0.0.1",
|
|
|
|
|
|
"listen_port": 8080
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 客户端
|
|
|
|
|
|
|
|
|
|
|
|
在 `~/.codex/config.toml` 中添加:
|
|
|
|
|
|
|
|
|
|
|
|
```toml
|
2026-03-10 21:49:18 +08:00
|
|
|
|
# profile = "ocm" # 设为默认配置
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-16 22:09:02 +08:00
|
|
|
|
[model_providers.ocm]
|
|
|
|
|
|
name = "OCM Proxy"
|
|
|
|
|
|
base_url = "http://127.0.0.1:8080/v1"
|
2026-03-10 20:56:07 +08:00
|
|
|
|
supports_websockets = true
|
|
|
|
|
|
|
|
|
|
|
|
[profiles.ocm]
|
|
|
|
|
|
model_provider = "ocm"
|
|
|
|
|
|
# model = "gpt-5.4" # 如果最新模型尚未公开发布
|
|
|
|
|
|
# model_reasoning_effort = "xhigh"
|
2025-12-16 22:09:02 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
然后运行:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-03-10 20:56:07 +08:00
|
|
|
|
codex --profile ocm
|
2025-12-16 22:09:02 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 带身份验证的示例
|
|
|
|
|
|
|
|
|
|
|
|
#### 服务端
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"services": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "ocm",
|
|
|
|
|
|
"listen": "0.0.0.0",
|
|
|
|
|
|
"listen_port": 8080,
|
|
|
|
|
|
"usages_path": "./codex-usages.json",
|
|
|
|
|
|
"users": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "alice",
|
2026-03-10 21:49:18 +08:00
|
|
|
|
"token": "sk-ocm-hello-world"
|
2025-12-16 22:09:02 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "bob",
|
2026-03-10 21:49:18 +08:00
|
|
|
|
"token": "sk-ocm-hello-bob"
|
2025-12-16 22:09:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 客户端
|
|
|
|
|
|
|
|
|
|
|
|
在 `~/.codex/config.toml` 中添加:
|
|
|
|
|
|
|
|
|
|
|
|
```toml
|
2026-03-10 21:49:18 +08:00
|
|
|
|
# profile = "ocm" # 设为默认配置
|
|
|
|
|
|
|
2025-12-16 22:09:02 +08:00
|
|
|
|
[model_providers.ocm]
|
|
|
|
|
|
name = "OCM Proxy"
|
|
|
|
|
|
base_url = "http://127.0.0.1:8080/v1"
|
2026-03-10 20:56:07 +08:00
|
|
|
|
supports_websockets = true
|
2026-03-10 21:49:18 +08:00
|
|
|
|
experimental_bearer_token = "sk-ocm-hello-world"
|
2026-03-10 20:56:07 +08:00
|
|
|
|
|
|
|
|
|
|
[profiles.ocm]
|
|
|
|
|
|
model_provider = "ocm"
|
|
|
|
|
|
# model = "gpt-5.4" # 如果最新模型尚未公开发布
|
|
|
|
|
|
# model_reasoning_effort = "xhigh"
|
2025-12-16 22:09:02 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
然后运行:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-03-10 20:56:07 +08:00
|
|
|
|
codex --profile ocm
|
2025-12-16 22:09:02 +08:00
|
|
|
|
```
|