Claude Code + OpenCode Go 订阅:让 Claude 跑任意开源模型 一份给"既买了 OpenCode Go,又想用 Claude Code"的同学的实战指南。文章设计目标:小白能照着做完;AI 工具能照着帮你做完。 先说一个不少朋友在问的场景:你花了5美元/月订阅了OpenC
一份给"既买了 OpenCode Go,又想用 Claude Code"的同学的实战指南。文章设计目标:小白能照着做完;AI 工具能照着帮你做完。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
先说一个不少朋友在问的场景:你花了5美元/月订阅了OpenCode Go,手头有GLM-5.1、Kimi K2.6、MiniMax M3、Qwen3.7-Max、DeepSeek V4 Pro这些顶级开源模型可用,但偏偏Claude Code客户端只认Anthropic协议(/v1/messages),而大部分模型只支持OpenAI协议(/v1/chat/completions)。直接配置肯定会报1210或1214错误,这在圈子里几乎是个常识性问题。

话不多说,解决方案并不复杂——只需要在中间塞一个协议转换袋里,本文用ogc。整篇文章配下来大概5分钟,而且完全不需要写代码。
┌────────────────────────────┐
│ Claude Code 客户端 │ ← 你敲命令的地方
└────────────┬───────────────┘
│ 读 ~/.claude/settings.json
│ ANTHROPIC_BASE_URL=http://127.0.0.1:3456
↓
┌────────────────────────────┐
│ ogc 袋里(Go 写的本地服务)│ ← 翻译:anthropic 话 openai 话
└────────────┬───────────────┘
│ 读 ~/.config/ogc/config.json
↓
┌────────────────────────────┐
│ OpenCode Go(云端) │ ← $5/月的订阅入口
└────────────┬───────────────┘
↓
┌────────────────────────────┐
│ 上游模型(GLM-5.1/M3/...) │
└────────────────────────────┘
核心就一句话:Claude Code说"anthropic话",GLM-5.1只懂"openai话",ogc就是那个翻译。
正式开始之前,先确认手头的东西齐了:
claude命令能正常跑go version检查一下,没有就brew install go)go install github.com/xynogen/ogc/cmd/ogc@latest # 加 PATH echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.zshrc source ~/.zshrc # 验证 ogc --version
ogc init
这条命令会生成 ~/.config/ogc/config.json。直接将文件内容替换为下面这段(注意把API key换成你自己的):
文件:~/.config/ogc/config.json
{
"api_key": "sk-你的OpenCodeGoKey",
"host": "127.0.0.1",
"port": 3456,
"models": {
"glm-5.1": {
"provider": "openai",
"model_id": "glm-5.1",
"temperature": 0.7,
"max_tokens": 8192
}
},
"model_mapping": {
"claude-opus": "glm-5.1",
"claude-sonnet": "glm-5.1",
"claude-haiku": "glm-5.1"
},
"upstream": {
"base_url": "https://opencode.ai/zen/go/v1",
"anthropic_base_url": "https://opencode.ai/zen/go/v1",
"timeout_ms": 300000
},
"logging": { "level": "info", "requests": true }
}
几个关键字段说明:
models里每个模型都有provider字段,用来决定ogc用什么协议发到上游model_mapping决定Claude客户端的opus/sonnet/haiku三个槽位路由到哪个模型——以后换模型就改这一段模型与协议的对应关系很重要,搞错了就会报错。数据来源于OpenCode Go官方文档:
| 模型 | ogc provider |
|---|---|
| minimax-m3 / m2.7 / m2.5 | anthropic |
| qwen3.7-max / qwen3.7-plus / qwen3.6-plus / qwen3.5-plus | anthropic |
| glm-5.1 / glm-5 | openai |
| kimi-k2.5 / kimi-k2.6 | openai |
| mimo-v2-pro / mimo-v2-omni / mimo-v2.5-pro / mimo-v2.5 | openai |
| deepseek-v4-pro / deepseek-v4-flash | openai |
ogc serve
看到Listening on 127.0.0.1:3456就说明起来了。另开一个终端运行测试命令:
curl -X POST http://127.0.0.1:3456/v1/messages \
-H "x-api-key: dummy" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-5","max_tokens":15,"messages":[{"role":"user","content":"reply OK"}]}'
返回200 + 一段JSON就说明通了。测试成功后按Ctrl+C停掉前台进程。
# 生成 plist ogc autostart enable # 加上 API key(plist 默认不带) /usr/libexec/PlistBuddy \ -c "Add :EnvironmentVariables:OGC_API_KEY string sk-你的OpenCodeGoKey" \ ~/Library/LaunchAgents/com.xynogen.ogc.plist # 加载 plist launchctl load -w ~/Library/LaunchAgents/com.xynogen.ogc.plist # 验证 lsof -nP -iTCP:3456 -sTCP:LISTEN
文件位置:~/.claude/settings.json
在"env"段加入下面的字段(如果没有"env"就自己加上):
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:3456",
"ANTHROPIC_API_KEY": "unused",
"ANTHROPIC_MODEL": "glm-5.1",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-5.1",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5.1",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5.1"
}
这里有三个非常容易踩的坑:
ANTHROPIC_API_KEY,不是ANTHROPIC_AUTH_TOKENANTHROPIC_BASE_URL不要带/v1(SDK会自动添加)ANTHROPIC_API_KEY写"unused"就行,ogc并不检查这个值claude --dangerously-skip-permissions
发条消息试试,比如打个"你好",看到回复就说明全部搞定了。
以后想换模型,按这4步走。以"glm-5.1 → minimax-m3"为例:
# 1) 备份配置
cp ~/.config/ogc/config.json ~/.config/ogc/config.json.bak.$(date +%H%M%S)
# 2) 改 JSON(推荐用 Python,不容易写错)
python3 << 'PYEOF'
import json
p = '/Users/bryle/.config/ogc/config.json'
d = json.load(open(p))
# 加新模型(注意 provider 字段:查上面对照表)
d['models']['minimax-m3'] = {
"provider": "anthropic", # minimax-m3 走 anthropic
"model_id": "minimax-m3",
"temperature": 0.7,
"max_tokens": 65536,
}
# 改路由(claude-*/sonnet/haiku 都指向新模型)
d['model_mapping'] = {
"claude-opus": "minimax-m3",
"claude-sonnet": "minimax-m3",
"claude-haiku": "minimax-m3",
}
json.dump(d, open(p, 'w'), indent=2, ensure_ascii=False)
print("已改")
PYEOF
# 3) 验证 + 重启 ogc
ogc validate
launchctl unload ~/Library/LaunchAgents/com.xynogen.ogc.plist
launchctl load -w ~/Library/LaunchAgents/com.xynogen.ogc.plist
sleep 2
lsof -nP -iTCP:3456 -sTCP:LISTEN
# 4) 开新的 claude 会话(旧会话的 context 还绑着旧模型)
claude --dangerously-skip-permissions
核心就一句话:加菜 + 改路由 + 重启ogc + 开新会话。
| 错误 | 原因 | 解决 |
|---|---|---|
| Both a token and an API key are set | settings.json同时存在AUTH_TOKEN和API_KEY |
sed -i '' 's/"ANTHROPIC_AUTH_TOKEN"/"ANTHROPIC_API_KEY"/g' ~/.claude/settings.json |
| 401 AuthError / Missing API key | 用了ANTHROPIC_AUTH_TOKEN(OAuth头Bearer) |
改用ANTHROPIC_API_KEY(API key头x-api-key) |
| 1210 / 1214 "Error from provider (Z.ai)" | 模型协议配错了(GLM配成了anthropic) | 改ogc config的provider字段 |
| 404 Page Not Found | base_url带了/v1 |
改成https://opencode.ai/zen/go |
| ogc 进程不在了 | 没人保活 | launchctl kickstart -k gui/$(id -u)/com.xynogen.ogc |
如果只用支持anthropic协议的模型(比如minimax-m3、qwen3.x),可以直连OpenCode Go,连ogc都不需要装:
"env": {
"ANTHROPIC_BASE_URL": "https://opencode.ai/zen/go",
"ANTHROPIC_API_KEY": "sk-你的Key",
"ANTHROPIC_MODEL": "qwen3.7-max"
}
但想用GLM-5.1、Kimi、DeepSeek这些,必须用ogc或同类工具做协议转换。
整个方案说白了就一句话:Claude Code说一种话,部分模型说另一种话,中间需要个翻译。剩下的就是改几个JSON文件、跑几条命令。5分钟搞定,以后换模型30秒搞定。Happy hacking!
Linux用户备注:把~/Library/LaunchAgents/换成~/.config/systemd/user/,plist换成systemd unit(ogc serve --background就行)。其他操作完全一样。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述