Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

从零配置 Claude Code:Sonnet→GLM、Haiku→Grok、Advisor→SOL

背景:我们要搭建什么

Claude Code 原本是一个直接连接 Anthropic 模型的编程助手。本指南要做的,是保留 Claude Code 的操作界面和工作方式,但把它背后使用的模型换成一套组合:普通任务可以选择 GLM 或 Grok;遇到需要第二意见、架构审查或风险判断的任务,再让 SOL 作为 Advisor 提供建议,最后仍由原来的基础模型回答用户。

为此需要三个组成部分:

组件 作用 为什么需要
Claude Code 用户实际操作的编程助手 用户在这里提问、读写代码和查看最终回答
CLIProxy 本机模型路由器 接收 Claude Code 的请求,并把 Sonnet、Haiku、Opus 等名称分别转发给 GLM、Grok 和 SOL
Advisor Bridge CLIProxy 插件 让非 Anthropic 模型也能正确处理 Claude Code 的原生 Advisor 协议

安装 Go 不是为了让用户学习 Go,也不是日常使用 Claude Code 的要求。Advisor Bridge 的源码使用 Go 编写,因此部署时需要 Go 把源码编译成当前操作系统可以加载的动态库:macOS 是 .dylib,Linux 是 .so,Windows 是 .dll。编译安装完成后,Go 不参与日常对话;用户以后只需要启动 claudex

整条调用链可以理解为:

用户 → Claude Code → CLIProxy → GLM 或 Grok(基础模型)
                             ↘ SOL(仅在 Advisor 被调用时参与)

CLIProxy 和插件都运行在用户自己的电脑上。它们不提供模型额度,而是使用用户已经拥有的 BigModel API key、Codex OAuth 和 xAI OAuth。用户唯一需要长期记住的操作是:默认运行 claudex 使用 GLM,需要更快的 Grok 时运行 claudex --model haiku

这是一份可直接交给 Codex 执行的部署指南。完成后的模型关系如下:

Claude Code 选择 CLIProxy 实际模型 角色
sonnet glm-5.2 默认基础模型
haiku grok-4.5 快速基础模型
opus(Advisor 声明) gpt-5.6-sol Advisor
fable(兼容别名) gpt-5.6-sol 可选直接调用

Claude Code 使用原生 Advisor 协议:客户端收到 server_tool_useadvisor_tool_result,不会尝试在本地执行普通 advisor 工具。Advisor 内部非流式;Advisor 完成后,最终主模型答案增量输出。

本文以 macOS + Homebrew 为已验证主路径。Claude Code 安装要求以 Anthropic 官方文档为准;CLIProxy 来源为 router-for-me/CLIProxyAPI

给 Codex 的执行约定

收到本文的 Codex 必须执行部署,不能只复述步骤。

  1. 先检查 OS、CPU、现有 CLIProxy、Claude Code、Go、配置文件和用户已有修改。
  2. 先备份再修改;合并 YAML,不覆盖无关 provider、账号或路由。
  3. 不回显 API key、OAuth token、Authorization header 或认证文件内容。
  4. 只有两处允许请求用户操作:提供 BigModel API key;在浏览器确认 Codex/xAI OAuth。完成后 Codex 继续执行其余步骤。
  5. 必须跑完文末验收。如果账号没有 gpt-5.6-solgrok-4.5,报告权限阻塞,不能偷偷换模型。
  6. 本文应与 cliproxy-advisor-bridge/ 源码目录一起提供。源码缺失时不能用普通 tool 映射冒充原生 Advisor。

1. 准备账号

需要:

  • 智谱 BigModel API key,用于 glm-5.2
  • CLIProxy Codex OAuth,账号能使用 gpt-5.6-sol
  • CLIProxy xAI OAuth,账号能使用 grok-4.5

生成一个只供本机 Claude Code 调用 CLIProxy 的随机 key:

LOCAL_CLIPROXY_KEY="sk-local-$(openssl rand -hex 24)"

Codex 应直接把它写入配置,不要打印其值。

2. 安装或升级

macOS:

brew update
brew install cliproxyapi go || brew upgrade cliproxyapi go
cliproxyapi --version 2>&1 | head -1
go version

CLIProxy 至少需要 7.2.75。安装或更新 Claude Code:

if command -v claude >/dev/null; then
  claude update || true
else
  curl -fsSL https://claude.ai/install.sh | bash
fi
zsh -lic 'command -v claude && claude --version'

平台动态库扩展名:macOS .dylib,Linux .so,Windows .dll。Windows 构建还需要 CGO 和兼容 C 编译器;WSL 按 Linux 处理。

3. 备份并定位配置

Apple Silicon Homebrew 默认路径:

CONFIG=/opt/homebrew/etc/cliproxyapi.conf
PLUGIN_DIR=/opt/homebrew/etc/cliproxyapi-plugins
BACKUP="${CONFIG}.before-claudex-$(date +%Y%m%d-%H%M%S)"
test -f "$CONFIG"
cp "$CONFIG" "$BACKUP"
mkdir -p "$PLUGIN_DIR"
chmod 700 "$PLUGIN_DIR"

Intel Mac 可能使用 /usr/local/etc。Codex 应以 brew --prefixcliproxyapi --help 为准。

4. 合并 CLIProxy YAML

把以下内容合并到现有配置。替换两个占位符,且不得制造重复顶层键:

host: "127.0.0.1"
port: 8317
auth-dir: "~/.cli-proxy-api"

api-keys:
  - "<LOCAL_CLIPROXY_KEY>"

plugins:
  enabled: true
  dir: "/opt/homebrew/etc/cliproxyapi-plugins"
  configs:
    advisor-bridge:
      enabled: true
      priority: 100
      main-model: "requested"
      advisor-model: "gpt-5.6-sol"
      max-advisor-calls: 2

claude-api-key:
  - api-key: "<BIGMODEL_API_KEY>"
    base-url: "https://open.bigmodel.cn/api/anthropic"
    models:
      - name: "glm-5.2"
        alias: "glm-5.2"
        force-mapping: true
      - name: "glm-5.2"
        alias: "claude-sonnet-5"
        force-mapping: true
    cloak:
      mode: "never"

oauth-model-alias:
  codex:
    - name: "gpt-5.6-sol"
      alias: "claude-fable-5"
      fork: true
      force-mapping: true
    - name: "gpt-5.6-sol"
      alias: "claude-opus-4-8"
      fork: true
      force-mapping: true
  xai:
    - name: "grok-4.5"
      alias: "claude-haiku-4-5"
      fork: true
      force-mapping: true

必须使用 main-model: requested:这会保留 Claude Code 当前选择的基础模型。固定填写 grok-4.5 会错误地把 Sonnet 会话也改成 Grok。保持 host: 127.0.0.1,并执行:

chmod 600 "$CONFIG"

5. 完成 OAuth

cliproxyapi -config "$CONFIG" -codex-login
cliproxyapi -config "$CONFIG" -xai-login

无图形界面时添加 -no-browser,让用户打开命令显示的 URL。不要复制其他机器的 OAuth JSON。

6. 构建 Advisor Bridge

找到与本文同包的 cliproxy-advisor-bridge/go.mod,然后在源码目录执行:

gofmt -w *.go
go mod tidy
go test ./...
go build -buildmode=c-shared -o advisor-bridge.dylib .
file advisor-bridge.dylib
cp advisor-bridge.dylib "$PLUGIN_DIR/advisor-bridge.dylib"
chmod 700 "$PLUGIN_DIR/advisor-bridge.dylib"

Linux 输出 advisor-bridge.so;Windows 输出 advisor-bridge.dll。动态库 basename 必须与 plugins.configs.advisor-bridge 一致。

7. 启动服务并检查插件

brew services restart cliproxyapi
sleep 2
brew services list | rg '^cliproxyapi\s+started'
lsof -nP -iTCP:8317 -sTCP:LISTEN
cliproxyapi --help 2>&1 | rg 'plugin_id=advisor-bridge|Claude Code Advisor Bridge|version=0.3.0'

预期看到插件 loaded、registered 和 version=0.3.0。启动失败时停止后台服务并前台运行 cliproxyapi -config "$CONFIG" 阅读真实错误,修复后再恢复服务。

8. 验证模型注册

curl -fsS http://127.0.0.1:8317/v1/models \
  -H "Authorization: Bearer $LOCAL_CLIPROXY_KEY" \
  | jq -r '.data[].id' \
  | rg '^(glm-5.2|claude-sonnet-5|grok-4.5|claude-haiku-4-5|gpt-5.6-sol|claude-opus-4-8|claude-fable-5)$' \
  | sort

七个 ID 必须全部出现。缺少 Sonnet/GLM 时检查 BigModel;缺少 Haiku/Grok 时检查 xAI OAuth;缺少 Opus/Fable/SOL 时检查 Codex OAuth。

9. 创建隔离启动命令

创建 ~/.claude/claudex-settings.json

{
  "model": "sonnet",
  "advisorModel": "opus",
  "effortLevel": "high"
}

把下面函数合并到 ~/.zprofile。替换本地 key;已有同名函数时更新,不能重复追加:

# Claude Code through local CLIProxy; normal `claude` remains unchanged.
claudex() {
  ANTHROPIC_BASE_URL="http://127.0.0.1:8317" \
  ANTHROPIC_AUTH_TOKEN="<LOCAL_CLIPROXY_KEY>" \
  ANTHROPIC_DEFAULT_FABLE_MODEL="claude-fable-5" \
  ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-4-8" \
  ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5" \
  ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5" \
  ANTHROPIC_SMALL_FAST_MODEL="claude-haiku-4-5" \
  CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL=1 \
  CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1 \
  command claude \
    --settings "$HOME/.claude/claudex-settings.json" \
    --model sonnet \
    --advisor opus \
    "$@"
}

验证:

zsh -lic 'type claudex'

用法:

claudex                 # GLM 主模型 + SOL Advisor
claudex --model haiku   # Grok 主模型 + SOL Advisor
claudex --model sonnet  # 显式 GLM + SOL Advisor

10. 原生 Advisor 验收

curl -fsS -N --max-time 180 http://127.0.0.1:8317/v1/messages \
  -H "Authorization: Bearer $LOCAL_CLIPROXY_KEY" \
  -H 'Content-Type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -H 'anthropic-beta: advisor-tool-2026-03-01' \
  --data-binary '{"model":"claude-sonnet-5","max_tokens":512,"stream":true,"messages":[{"role":"user","content":"You must use advisor to review mutex versus channels, then answer briefly."}],"tools":[{"type":"advisor_20260301","name":"advisor","model":"claude-opus-4-8"}]}' \
  | rg 'server_tool_use|advisor_tool_result|advisor_result|text_delta|message_stop'

必须看到 server_tool_useadvisor_tool_resultadvisor_result、多个 text_deltamessage_stop;不得出现 No such tool available: advisor

11. 真实 Claude Code 验收

Sonnet/GLM:

zsh -lic 'claudex -p "You must use advisor to review whether RWMutex is appropriate for a read-mostly cache, then answer in two sentences." --model sonnet --output-format stream-json --verbose'

Haiku/Grok:

zsh -lic 'claudex -p "You must use advisor to review whether sync.Map always beats RWMutex, then answer in two sentences." --model haiku --output-format stream-json --verbose'

两次验收都应满足:

  • init.model 对应当前选择的 Sonnet 或 Haiku 别名。
  • 依次出现原生 server_tool_useadvisor_tool_result
  • 最终出现增量 thinking/text 和成功 result
  • usage.iterations 中 Advisor model 是 gpt-5.6-sol
  • 没有本地 Advisor 工具错误。

12. 完成报告

Codex 最终应报告版本、插件 v0.3.0、三条映射、原生 Advisor、增量输出、服务状态和配置备份路径,不得包含任何密钥。

建议格式:

已完成:
- Sonnet → glm-5.2:通过
- Haiku → grok-4.5:通过
- Advisor → gpt-5.6-sol:通过
- 原生 Advisor 协议:通过
- 最终答案增量输出:通过
- CLIProxy 服务:运行中
- 配置备份:<path>

回滚

brew services stop cliproxyapi
cp "$BACKUP" "$CONFIG"
rm -f "$PLUGIN_DIR/advisor-bridge.dylib"
brew services start cliproxyapi

再还原 ~/.zprofile 中的 claudex()。除非用户明确要求注销,否则不要删除 OAuth 文件。

实现原理

Advisor Bridge 使用 CLIProxy 动态库 ABI 的 ModelRouter + Executor,通过 host.model.execute 完成内部 Advisor,通过 host.model.execute_streamhost.model.stream_readhost.model.stream_close 增量转发最终主模型答案,并传递 host_callback_id 避免递归。

main-model: requested 会把 Claude Code 选择的 claude-sonnet-5claude-haiku-4-5 交回 CLIProxy,因此分别路由到 GLM 和 Grok;Advisor 则固定使用 gpt-5.6-sol

About

Claude Code via CLIProxy: Sonnet to GLM, Haiku to Grok, and native Advisor to SOL

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages