# Claude Code + GPT-5.6 Sol + Grok-4.5 = 多快好省
**作者**: 码良
**日期**: 2026-07-12T01:40:04.000Z
**来源**: [https://x.com/cxjwin/status/2076518426458333316](https://x.com/cxjwin/status/2076518426458333316)
---

官方推荐:
> **Tibo@thsottiaux**: [原文链接](https://x.com/thsottiaux/status/2076119366647894371)
>
> If you aren't yet bold enough to install the Codex app, you can stay in the presence of your orange crab and point it at GPT 5.6 Sol. Takes 5 minutes. Kudos to Theo for explaining one of the ways to get this done.
> Step 1: Install CLIProxyAPI
> Step 2: Connect
> Step 3: Define
>
> 
> 
省流:直接把文章丢给 Codex 帮你一键配置
我平时最顺手的编程 Agent 还是 Claude Code。
不是因为我只想用 Claude,而是它的交互、工具调用、Hooks、Subagent 和整套工作流,我已经用习惯了。真要换模型,我更希望只换“发动机”,而不是连驾驶舱一起换掉。
最近我试了一段时间 GPT-5.6 Sol。它很适合做规划、架构和复杂排障,但速度不算快,token 也吃得比较猛。如果日常搜索、改文件、跑批处理,甚至所有 Subagent 都交给它,多少有点浪费。
另一边,Grok 4.5 给我的感受就一个字:快。
所以我最后搭了一套混合方案:
- Plan、架构和重推理交给 GPT-5.6 Sol
- 执行、轻任务和 Subagent 交给 Grok 4.5
- Claude Code 继续负责 Agent 编排和工具调用
中间用 CLIProxyAPI 做一层本地协议转换和模型路由。
先说结论:这套方案已经在 macOS arm64、Claude Code 2.1.207、CLIProxyAPI 7.2.70 和 CC Switch 3.16.x 上跑通。
但也先把话说在前面:这是第三方兼容方案,不是 Anthropic 官方支持的用法。文本和工具调用能跑,不代表 thinking block、签名、prompt caching 等 Claude 专属语义百分百等价。
## 这套混合路由到底怎么工作
Claude Code 认识的是 Opus、Sonnet、Haiku、Fable 这些角色。我们做的事情,是把这些角色背后的模型换掉:
链路很简单:
```
Claude Code
↓ Anthropic Messages API
CLIProxyAPI 127.0.0.1:8317
├─ Opus / Fable → GPT-5.6 Sol
└─ Sonnet / Haiku / Subagent → Grok 4.5
```
这里最容易误解的是 opusplan。
它不是“自动判断任务难度”。它只是在 Plan Mode 用 Opus,退出 Plan Mode 后切到 Sonnet。
放到这套配置里,就是:Plan 阶段用 Sol,执行阶段用 Grok。
## 第一步:备份,真的别省
动配置之前,先备份:
```
stamp="$(date +%Y%m%d-%H%M%S)"
cp ~/.claude/settings.json ~/.claude/settings.json.bak."$stamp" 2>/dev/null || true
cp ~/.zshrc ~/.zshrc.bak."$stamp" 2>/dev/null || true
cp ~/.config/cliproxyapi/config.yaml \
~/.config/cliproxyapi/config.yaml.bak."$stamp" 2>/dev/null || true
cp ~/.cc-switch/cc-switch.db \
~/.cc-switch/cc-switch.db.bak."$stamp" 2>/dev/null || true
```
我这次实操里,CC Switch 的“写入通用配置”真的把完整 settings 缩成了几个字段。要不是提前备份,Hooks、permissions、插件和模型映射都得手工重建。
然后生成一个本地随机 key:
```
openssl rand -hex 32
```
后面所有 replace-with-your-random-key 都换成同一个值。别直接用教程里的示例 key。
## 第二步:安装 CLIProxyAPI
正常情况直接下载 CLIProxyAPI 7.2.70 对应的 macOS arm64 release,并校验 checksums。
如果 release 二进制临时下载不到,但 Git 标签还在,可以从固定标签构建:
```
brew install go
git clone --depth 1 --branch v7.2.70 \
<CLIProxyAPI-Git-仓库地址> \
CLIProxyAPI-7.2.70
cd CLIProxyAPI-7.2.70
go build -trimpath -o cli-proxy-api ./cmd/server
mkdir -p ~/.local/bin ~/.local/share/cliproxyapi/7.2.70
install -m 0755 ./cli-proxy-api \
~/.local/share/cliproxyapi/7.2.70/cli-proxy-api
ln -sfn ~/.local/share/cliproxyapi/7.2.70/cli-proxy-api \
~/.local/bin/cli-proxy-api
```
源码构建后,帮助信息里可能显示 Version: dev。这通常只是没注入 release 的版本 ldflags,不代表你检出的标签错了。
## 第三步:登录 Codex 和 xAI
先建一份最小配置:
```
host: "127.0.0.1"
port: 8317
auth-dir: "~/.cli-proxy-api"
api-keys:
- "replace-with-your-random-key"
```
然后分别登录:
```
cli-proxy-api -config ~/.config/cliproxyapi/config.yaml -codex-login
cli-proxy-api -config ~/.config/cliproxyapi/config.yaml -xai-login
```
OAuth 文件会落在 ~/.cli-proxy-api。登录完成后顺手收紧权限:
```
chmod 700 ~/.cli-proxy-api
chmod 600 ~/.cli-proxy-api/*.json
chmod 600 ~/.config/cliproxyapi/config.yaml
chmod 600 ~/.claude/settings.json
```
## 第四步:配置 CLIProxyAPI 路由
核心配置如下:
```
host: "127.0.0.1"
port: 8317
tls:
enable: false
remote-management:
allow-remote: false
secret-key: ""
disable-control-panel: true
auth-dir: "~/.cli-proxy-api"
api-keys:
- "replace-with-your-random-key"
debug: false
logging-to-file: true
logs-max-total-size-mb: 100
usage-statistics-enabled: false
request-retry: 3
max-retry-interval: 30
routing:
strategy: "round-robin"
session-affinity: true
session-affinity-ttl: "1h"
oauth-model-alias:
codex:
- name: "gpt-5.6-sol"
alias: "sol"
fork: true
- name: "gpt-5.6-sol"
alias: "opus"
fork: true
xai:
- name: "grok-4.5"
alias: "grok"
fork: true
- name: "grok-4.5"
alias: "sonnet"
fork: true
- name: "grok-4.5"
alias: "haiku"
fork: true
payload:
override:
- models:
- name: "gpt-5.6-sol"
protocol: "codex"
params:
"reasoning.effort": "max"
```
这里有三个关键点。
第一,服务只监听 127.0.0.1,别把 OAuth 代理暴露到局域网或公网。
第二,只要用了 alias,就保留 fork: true。不然 alias 可能把原始模型 ID 替换掉,随后 Claude Code 发 canonical ID 时就会报 unknown provider for model。
第三,混合模式统一让 Claude Code 发送 high,再由代理把 Sol 强制提升到 max。这样 Grok 不会收到它不支持的 xhigh 或 max。
## 第五步:配置 Claude Code 模型角色
把下面字段合并进 ~/.claude/settings.json,不要覆盖原来的 Hooks、permissions、plugins 和 statusLine:
```
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
"ANTHROPIC_API_KEY": "replace-with-your-random-key",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.6-sol",
"ANTHROPIC_DEFAULT_OPUS_MODEL_NAME": "GPT-5.6 Sol (Opus)",
"ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES": "effort,xhigh_effort,max_effort",
"ANTHROPIC_DEFAULT_FABLE_MODEL": "gpt-5.6-sol",
"ANTHROPIC_DEFAULT_FABLE_MODEL_NAME": "GPT-5.6 Sol (Fable)",
"ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES": "effort,xhigh_effort,max_effort",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "grok-4.5",
"ANTHROPIC_DEFAULT_SONNET_MODEL_NAME": "Grok 4.5 (Sonnet)",
"ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES": "effort",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "grok-4.5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME": "Grok 4.5 (Haiku)",
"ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES": "effort",
"CLAUDE_CODE_SUBAGENT_MODEL": "grok-4.5",
"CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY": "3",
"ENABLE_TOOL_SEARCH": "false",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "true"
},
"effortLevel": "high"
}
```
这里故意用 high,不是 xhigh。Sol 的 max 已经由代理处理了。
如果想让 Claude Code 尝试 1M 客户端上下文预算,可以把 Opus 模型写成 gpt-5.6-sol[1m]。但别问模型“你是不是 1M”,最终要看 JSON 输出里的 modelUsage.contextWindow。
## 第六步:加三个启动命令
把这几个函数放进 ~/.zshrc:
```
claude-mix() {
CLAUDE_CODE_SUBAGENT_MODEL=grok-4.5 \
CLAUDE_CODE_EFFORT_LEVEL=high \
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY=3 \
ENABLE_TOOL_SEARCH=false \
command claude --model opusplan --effort high "$@"
}
claude-sol() {
CLAUDE_CODE_SUBAGENT_MODEL=gpt-5.6-sol \
CLAUDE_CODE_EFFORT_LEVEL=max \
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY=2 \
ENABLE_TOOL_SEARCH=false \
command claude --model opus --effort max "$@"
}
claude-grok() {
CLAUDE_CODE_SUBAGENT_MODEL=grok-4.5 \
CLAUDE_CODE_EFFORT_LEVEL=high \
ENABLE_TOOL_SEARCH=false \
command claude --model sonnet --effort high "$@"
}
```
之后就可以这样用:
```
claude-mix # Plan 用 Sol,执行用 Grok
claude-sol # 全部交给 Sol
claude-grok # 全部交给 Grok
```
## 第七步:别信模型自报,做三层验证
第一层,看代理到底暴露了什么模型:
```
curl -sS \
-H "Authorization: Bearer $CLIPROXY_API_KEY" \
http://127.0.0.1:8317/v1/models \
| jq -r '.data[].id' | sort
```
至少应该看到 gpt-5.6-sol 和 grok-4.5。
第二层,直接请求代理的 Messages 端点,分别测试两个模型是否能返回 OK。
第三层,也是最重要的一层,用 Claude Code 的 JSON 输出确认最终运行时模型:
```
claude -p --bare \
--settings ~/.claude/settings.json \
--no-session-persistence \
--tools '' \
--model opus \
--effort high \
--output-format json \
'Reply with exactly OK' \
| jq '{result, modelUsage}'
```
再把 --model opus 改成 --model sonnet 测一次。
我这边最终看到的是:
```
opus → gpt-5.6-sol → OK
sonnet → grok-4.5 → OK
```
这比 /model 的显示名,更比模型自己说“我是谁”靠谱。
## CC Switch 怎么配才不会翻车
CC Switch 不是必需品,但用来切 Provider 挺方便。
Provider 可以这样填:
```
名称:CLIProxy-SolGrok
Base URL:http://127.0.0.1:8317
API Key:与 CLIProxyAPI config.yaml 相同
API 格式:Anthropic Messages
```
模型映射:
这里最大的坑,不是模型名,而是 Provider 的 settings。
CC Switch 保存或启用 Provider 时,可能把 Provider 内部的配置写回 ~/.claude/settings.json。如果 Provider 只保存了 Base URL 和 Key,你原来的 Hooks、permissions、plugins 和模型映射可能一起消失。
所以我的建议是:
- Provider 里保存完整 settings,而不是精简版
- 提前备份 settings.json 和 cc-switch.db
- 关闭“写入通用配置”,避免再次覆盖
- 保存后马上检查 jq 'keys, (.env | keys)' ~/.claude/settings.json
- Local Routing 默认关闭,直接走 8317
如果打开 CC Switch Local Routing,链路会多一层 15721:
```
Claude Code → CC Switch 15721 → CLIProxyAPI 8317 → 上游
```
不是不能用,只是出了问题会更难定位。能直连 8317,就先别叠代理。
另外,CC Switch 默认可能使用 ANTHROPIC_AUTH_TOKEN,而 Claude Code bare 验证更适合 ANTHROPIC_API_KEY。同一份最终 settings 里尽量只留一套鉴权变量,别两套一起堆。
## 我最后踩到的几个坑
1. alias 没加 fork: true,原始模型 ID 消失。
2. 把 xai: 错缩进到 codex: 下面,Grok alias 根本没生效。
3. 混合会话全局用了 xhigh,Grok 不认。
4. 把 opusplan 当成自动难度路由。
5. 只看 /model 或听模型自报,没有检查 modelUsage。
6. CC Switch Provider 只保存了 Base URL 和 Key,完整 settings 被覆盖。
7. “写入通用配置”在 Provider 尚未启用时就改写了 settings。
8. 四个角色都填了,却忘了默认兜底模型。
9. Key 出现在日志、截图或 UI 可访问性信息里后,没有立刻轮换。
10. 文本能返回,就以为 thinking、缓存和复杂 tool call 也完全兼容。
## 最后说说这套方案值不值得
对我来说是值得的。
它真正有用的地方,不是在 Claude Code 的 /model 菜单里多了两个名字,而是把任务分工做清楚了:
- Claude Code 负责 Agent 框架和工作流
- CLIProxyAPI 负责协议转换和模型路由
- Sol 负责少量但关键的深度推理
- Grok 负责高频、快速、可验证的执行
如果只想记住三件事:
1. alias 记得加 fork: true
2. 混合模式用 high,Sol 的 max 放到代理层
3. 不信模型自报,信 /v1/models、直接 API、modelUsage 和日志
最后再提醒一次:OAuth 代理会接触真实凭据,第三方兼容也不等于官方支持。只装可信版本、校验来源、保护凭据、不要暴露端口,并在使用前确认对应产品的当前条款和配额规则。
## 相关链接
- [@cxjwin](https://x.com/cxjwin)
- [3.3K](https://x.com/cxjwin/status/2076518426458333316/analytics)
- [Jul 12](https://x.com/thsottiaux/status/2076119366647894371)
- [1.9M](https://x.com/thsottiaux/status/2076119366647894371/analytics)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [12:05 PM · Jul 13, 2026](https://x.com/cxjwin/status/2076518426458333316)
- [3,378 Views](https://x.com/cxjwin/status/2076518426458333316/analytics)
- [View quotes](https://x.com/cxjwin/status/2076518426458333316/quotes)
---
*导出时间: 2026/7/14 10:56:34*