手动配置 · Windows 与 macOS
OpenClaw + Space Router
OpenClaw 支持在自己的配置文件中添加自定义模型 provider。注册一次 Space Router,把默认 agent 指向它,之后新建的每个 agent 都会继承这条线路。
OpenClaw 没有一键安装脚本。请先按 OpenClaw 自己的文档完成安装,再回到本页把它指向网关。
开始之前
你需要一个 Space Router API key,而 key 所属的分组决定了它能调用哪些模型。在 Space Router 后台的 API Keys → Create API Key 中创建,分组要与你购买的一致。
| Key 分组 | api 取值 | 模型 slug |
|---|---|---|
| GPT(group 4) | openai-completions |
gpt-6-astra、gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna、gpt-5.5、gpt-5.4、gpt-5.4-mini |
| Claude(group 3) | anthropic-messages |
claude-opus-5、claude-sonnet-5、claude-opus-4-8、claude-opus-4-7、claude-opus-4-6、claude-sonnet-4-6 |
| Claude Fable 5(group 5) | anthropic-messages |
claude-fable-5 |
key 只在本分组内有效。用 Claude 分组的 key 去请求 gpt-5.5,或用它去请求 claude-fable-5,都会直接报错而不会自动降级——Fable 属于单独购买的分组。完整目录发布在 /models.json。
注册 provider
所有改动都在同一个文件里:~/.openclaw/openclaw.json。整个过程分五步:
-
先停掉 OpenClaw
运行中编辑文件并无大碍,但它要等到重启才会生效,而改到一半的状态最难排查。
-
打开文件
文件不存在就新建。它是一个 JSON 对象;如果里面已有内容,你要做的是并入这个对象,而不是再追加一个并列的对象。
open ~/.openclaw/openclaw.json -
加入与你 key 分组对应的
models块复制下面与你的 key 匹配的那一段。示例中的 provider 名
space-router就是之后引用模型时要用的前缀,取短一点比较方便。 -
加入
agents块见选择模型。两个块都是同一个对象的顶层键——
models与agents是并列关系。 -
保存并重启 OpenClaw
然后按验证连通做一次检查。
Claude 或 Fable key
{
"models": {
"mode": "merge",
"providers": {
"space-router": {
"baseUrl": "https://space.stationine.com",
"apiKey": "sk-your-space-router-key",
"api": "anthropic-messages",
"models": [
{
"id": "claude-sonnet-5",
"name": "Claude Sonnet 5",
"contextWindow": 200000,
"maxTokens": 64000
}
]
}
}
}
}
GPT key
走 OpenAI 线路时,baseUrl 要带 /v1 后缀,因为 OpenClaw 会自己拼上 /chat/completions。
{
"models": {
"mode": "merge",
"providers": {
"space-router": {
"baseUrl": "https://space.stationine.com/v1",
"apiKey": "sk-your-space-router-key",
"api": "openai-completions",
"models": [
{
"id": "gpt-5.6-sol",
"name": "GPT 5.6 Sol",
"contextWindow": 128000,
"maxTokens": 32000
}
]
}
}
}
}
"mode": "merge" 会保留 OpenClaw 自带的 provider,与你新增的并存;换成 "replace" 则会把它们全部去掉。想让哪个 slug 出现在选择器里,就往 models 数组里加一个对象。
contextWindow 与 maxTokens。
选择模型
把默认 agent 指向新的 provider。取值格式是 providerId/model-id,两个标识符都要与上面写的完全一致。
{
"agents": {
"defaults": {
"model": {
"primary": "space-router/claude-sonnet-5"
}
}
}
}
这两段属于同一个 openclaw.json 对象,请合并到一起,不要在文件里粘贴成两个并列的顶层对象。
baseUrl 同时也是信任决策
OpenClaw 的模型请求都要经过受控的 fetch 通道,而你配置的 baseUrl 正是放行该 scheme://host:port 源的依据,不会顺带信任其他源。所以主机名写错不会得到某种降级处理,而是请求直接被拦下。
配置保存在哪里
主文件是 ~/.openclaw/openclaw.json。单个 agent 的覆盖配置位于 ~/.openclaw/agents/<agentId>/agent/models.json,其中非空的 baseUrl 优先级高于主文件——所以如果改了主文件却没有任何变化,先看看该 agent 是不是有自己的一份。
验证连通
重启 OpenClaw 让它重新加载配置,然后发送一次短请求,例如 Reply with OK。能收到回复,才同时证明 Base URL、key、API 格式与模型 id 四者都对。配置文件能被解析,只能证明它能被解析。
常见报错
| 你看到的 | 含义 |
|---|---|
401 或 403 |
key 错误、已吊销或余额不足。回后台重新复制一次,并检查前后有没有空格。 |
404 |
通常是 baseUrl 与 api 不匹配:带了 /v1 却用 anthropic-messages,或用了网关根地址却配 openai-completions。 |
| 选择器里没有这个模型 | provider 的 models 数组里没有它,或者 "mode": "replace" 把你以为会在的那一批去掉了。 |
| 改了配置没有任何变化 | 没有重启 OpenClaw,或者某个 agent 的 models.json 覆盖了主文件。 |
| 任务中途出现截断或上下文报错 | contextWindow 缺失或填得过大,预算回退到了 200000 tokens。改成真实上限。 |
Space Router 是什么?
Space Router 是由 Station Nine 运营的 AI API 中转服务,Base URL 为 https://space.stationine.com。它在 POST /v1/messages 接收 Anthropic Messages 请求,在 POST /v1/chat/completions 接收 OpenAI Chat Completions 请求,在 POST /v1/responses 接收 OpenAI Responses 请求,提供 OpenAI GPT 与 Anthropic Claude 两大模型家族。服务与账户细节见 Space Router 总览。
还没有凭证?前往 Space Router 获取 API key。