一个 Key 喂饱所有 Agent:OpenCode Zen 免费模型中枢实战
如果你同时开着 Claude Code、Codex、opencode、Cline、Roo Code,甚至家里好几台机器都跑着不同的 Agent——每个工具都要单独配一个 API Key、单独挑模型、单独担心额度用完。
这篇文章讲一个实打实的玩法:一张 OpenCode Zen 的免费卡,管你所有 Agent 工具,管你 N 台主机。
先讲清楚 Zen 的两套端点
这是新手最容易踩的坑。Zen 有两套完全独立的模型池,模型 ID 都不一样:
| 端点 | 模型池 | 直连条件 |
|---|---|---|
opencode.ai/zen/v1 |
86 个,13 个带 -free |
12 个 free 模型被 FreeTierError 挡住 |
opencode.ai/zen/go/v1 |
36 个,ID 完全不同 | ✅ 加一个请求头就能直连 |
第二套端点(Go)才是好用的那套。 它里面有 minimax 全家桶、deepseek-v4.1、glm、kimi、qwen、mimo——而且不需要装 OpenCode 客户端。
Go 端点的关键:x-opencode-session
裸调会报:
400 Request is missing x-opencode-session and ca...
加上一个请求头就好(任意 UUID,每次请求换一个新的):
curl https://opencode.ai/zen/go/v1/chat/completions
-H "Authorization: Bearer ***"
-H "Content-Type: application/json"
-H "x-opencode-session: $(uuidgen)"
-d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"你好"}]}'
这就是 pi agent 这类登录客户端做的事——它带的是自己的 session 标识,Zen 认这个就能放行。所谓”只能通过官方客户端用”,本质就是这一个头。
Go 端点 36 个模型实测
我拿同一个 key 逐个 smoke test 了全池:
| 结果 | 数量 | 模型 |
|---|---|---|
| ✅ 可用 | 29 | deepseek 系列、glm 系列、qwen 系列、kimi 系列、mimo 系列、minimax-m3、longcat、space-bunny-free |
| ⚠️ 需换协议 | 1 | minimax-m2.7——只走 Anthropic Messages 协议 |
| ❌ 不可用 | 6 | grok-4.6/4.7、gpt-5.6-luna、gpt-6-luna、muse-spark-1.2/1.3-contributor |
后 6 个报同一句 Model does not support this protocol,换 /v1/messages 端点也不行,是真的调不动。
minimax-m2.7 换协议就通了:
curl https://opencode.ai/zen/go/v1/messages
-H "x-api-key: ***"
-H "anthropic-version: 2023-06-01"
-H "x-opencode-session: $(uuidgen)"
-d '{"model":"minimax-m2.7","max_tokens":64,"messages":[{"role":"user","content":"你好"}]}'
架构:一个中枢,多个 Agent
核心思路是让 OpenCode 当模型路由器,其他工具通过 OpenAI 兼容接口指过来。
主机 A(开发机) 主机 B(ARM 小主机) 主机 C(NAS)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Claude Code │ │ opencode │ │ opencode │
│ Codex │ │ Hermes │ │ ... │
│ opencode │ │ │ │ │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└─────────────────────┼────────────────────────┘
│ 全部用同一个 OPENCODE_GO_API_KEY
▼
┌─────────────────────────────────────────┐
│ OpenCode Zen (opencode.ai) │
│ 86 个模型 · 13 个 free · 1M 上下文 │
│ OpenAI 兼容端点 /v1/chat/completions │
└─────────────────────────────────────────┘
所有工具用同一个 key,不需要在 N 台机器上分别充值或配置。
第一步:拿到 key 并填进环境变量
去 opencode.ai 注册,登录后在控制台拿 API key。
echo 'export OPENCODE_GO_API_KEY=sk-你的key' >> ~/.bashrc
source ~/.bashrc
别把 key 写进代码或提交到 git。 建议顺手收紧权限:
echo 'export OPENCODE_GO_API_KEY=sk-你的key' > ~/.zen_key
chmod 600 ~/.zen_key
echo 'export OPENCODE_GO_API_KEY=$(cat ~/.zen_key)' >> ~/.bashrc
第二步:把 Zen 配成 OpenCode 的自定义 provider
这是整套方案的核心。OpenCode 支持挂任意 OpenAI 兼容端点:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"zen": {
"npm": "@ai-sdk/openai-compatible",
"name": "OpenCode Zen",
"options": {
"baseURL": "https://opencode.ai/zen/v1",
"apiKey": "{env:OPENCODE_GO_API_KEY}"
},
"models": {
"space-bunny-free": { "name": "Space Bunny Free" },
"deepseek-v4-flash-free": { "name": "DeepSeek V4 Flash Free" },
"mimo-v2.6-flash-free": { "name": "MiMo v2.6 Flash Free" },
"muse-spark-1.3-contributor-free": { "name": "Muse Spark 1.3 Free" },
"longcat-2.5-preview-free": { "name": "LongCat 2.5 Preview Free" },
"nemotron-3-ultra-free": { "name": "Nemotron 3 Ultra Free" },
"ling-3.1-flash-free": { "name": "Ling 3.1 Flash Free" },
"fledge-alpha-free": { "name": "Fledge Alpha Free" }
}
}
}
}
存到 ~/.config/opencode/opencode.json。这个文件路径就是 opencode run --model zen/<模型id> 能工作的原因。
⚠️ 版本要求:free 层需要 OpenCode 1.18.0 或更高。低了会报 Error: OpenCode 1.18.0 or newer is required to use the free tier。
npm install -g opencode-ai@latest
opencode --version
第三步:13 个免费模型参数速查
数据来自官方页面和 OpenRouter 官方目录。只有 5 个公布了参数,其余 8 个官方未披露。
| 模型 ID | 厂商 | 参数 | 上下文 | 一句话点评 |
|---|---|---|---|---|
deepseek-v4.1-flash |
DeepSeek | 552B / 8B·16B 激活 | 1M | KV cache 仅 890 字节/token,最省内存 |
deepseek-v4-flash-free |
DeepSeek | 284B / 13B 激活 | 1M | 激活最小,速度最快 |
longcat-2.5-preview-free |
美团 | 1.6T / ~48B 激活 | 1M | 参数最大,但激活也最大,最慢 |
nemotron-3-ultra-free |
NVIDIA | 550B / 55B 激活 | 1M | 唯一有官方技术报告背书 1M |
mimo-v2.6-flash-free |
小米 | 309B / 15B 激活 | 1M | MIT 许可,唯一支持视频音频输入 |
ling-3.1-flash-free |
蚂蚁 | 560B | 262K | 上下文最短,别选 |
ling-3.0-flash-fin-free |
蚂蚁 | 未公开 | 262K | 金融垂类 |
mimo-v2.5-free |
小米 | 309B 级 | 1M | 上一代 |
muse-spark-1.3-contributor-free |
Meta | 未公开 | 1M | Meta 出品,参数未披露 |
muse-spark-1.2-contributor-free |
Meta | 未公开 | 1M | 上一代 |
nemotron-3.5-lightning-free |
NVIDIA | 未公开 | 1M | 超轻量版 |
space-bunny-free |
匿名 | 未公开 | 1M | 社区指向 MiniMax,唯一能免鉴权裸调 |
fledge-alpha-free |
疑似 router | 未公开 | 未公开 | 限时收集反馈 |
jev-1.13-free |
TypeSafe | 未公开 | 1M | ⚠️ 结构化决策模型,不是通用 LLM |
第四步:13 个 free 模型真实可用性(78 次实测)
我把 Zen 目录里全部 13 个 -free 模型逐个跑了 6 道题(冒烟、找 bug、逻辑推理、贝叶斯推理、JSON 格式、中文写作),共 78 次调用。
结果和目录标注差很多:
| 模型 | 可用率 | 贝叶斯题 | 平均耗时 | 状态说明 |
|---|---|---|---|---|
space-bunny-free |
6/6 | ✅ 1/2 | 32.9s | 全场最快 |
nemotron-3-ultra-free |
6/6 | ✅ 1/2 | 37.7s | 550B/1M 上下文 |
fledge-alpha-free |
6/6 | ✅ 1/2 | 38.7s | 限时收集反馈 |
mimo-v2.5-free |
6/6 | ✅ 1/2 | 49.9s | 小米上一代 |
mimo-v2.6-flash-free |
6/6 | ✅ 1/2 | 53.8s | 全模态 |
ling-3.1-flash-free |
6/6 | ✅ 1/2 | 60.6s | 但上下文仅 262K |
nemotron-3.5-lightning-free |
5/6 | ✅ 1/2 | 71.5s | 中文写作超时 |
longcat-2.5-preview-free |
5/6 | 超时 | 41.7s | 1.6T 参数 |
deepseek-v4-flash-free |
0/6 | — | — | ⚠️ 目录挂着但后端无路由 |
muse-spark-1.3-contributor-free |
0/6 | — | — | ⚠️ 协议不支持 |
muse-spark-1.2-contributor-free |
0/6 | — | — | ⚠️ 同上 |
ling-3.0-flash-fin-free |
0/6 | — | — | ⚠️ 路由 404 |
jev-1.13-free |
0/6 | — | — | ⚠️ 服务端错误 |
13 个标着 free 的,实际能用的只有 8 个。 四个 0/6 的报错各不相同——Not Found: Cannot find any route matching、Model does not support this protocol、Unexpected server error,说明这些 ID 是目录残留,后端早就撤了或从来没上线。
⚠️ 这就是为什么不能照着目录抄模型名。用之前先跑一次冒烟测试。
第五步:其他 Agent 工具怎么接过来
Zen 暴露的是标准 OpenAI 兼容端点,所以任何支持自定义 OpenAI 端点的工具都能接。
Claude Code——通过 Anthropic 兼容层或环境变量:
export ANTHROPIC_BASE_URL="https://opencode.ai/zen/v1"
export ANTHROPIC_API_KEY="$OPENCODE_GO_API_KEY"
Codex——~/.codex/config.toml:
model = "space-bunny-free"
model_provider = "zen"
[model_providers.zen]
name = "OpenCode Zen"
base_url = "https://opencode.ai/zen/v1"
wire_api = "chat"
env_key = "OPENCODE_GO_API_KEY"
Cline / Roo Code——在设置里把 Provider 选成 OpenAI Compatible,填 base URL 和 key 即可。
多主机同步:把 key 放各自的 ~/.zen_key,配置文件走 Git 同步:
# 在每台机器上
mkdir -p ~/agent-config && cd ~/agent-config
git init && git remote add origin [email protected]:你的账号/agent-config.git
# 同步 opencode 配置
cp ~/.config/opencode/opencode.json ~/agent-config/opencode.json
cp ~/.codex/config.toml ~/agent-config/codex-config.toml
cd ~/agent-config && git add -A && git commit -m "sync" && git push
⚠️ 千万别把 key 提交进 Git。只同步配置文件,key 各自机器单独放。
第六步:怎么选:按任务类型分
我把 42 次同题实测(3 个模型 × 7 题 × 2 轮)的结论摆出来:
| 任务 | 选谁 | 理由 |
|---|---|---|
| 需要算对(数学、逻辑推理) | deepseek-v4.1-flash(Go 端点) |
两轮推理题全对,包括经典贝叶斯题 |
| 纯文本改写、翻译、格式转换 | space-bunny-free |
免鉴权,脚本友好,中文表达生动,全场最快 |
| 图像 / 视频理解 | mimo-v2.6-flash(Go 端点) |
唯一支持视频音频输入 |
| 长文档(几十万 token) | deepseek-v4.1-flash |
890 字节/token 的 KV cache 是唯一能真跑 1M 的 |
| 定时任务、无人值守 | space-bunny-free |
双端点都能裸调,不依赖客户端进程 |
| 想要大参数但不慢 | nemotron-3-ultra-free |
550B 但 6/6 全过,37.7s |
| ⚠️ 别用 | ling-3.0-flash-fin-free、jev-1.13-free、muse-spark-*-free |
实测 0/6,完全不可用 |
⚠️ 一个实测踩到的坑:在 5 次小样本下,space-bunny-free 曾经在一道经典贝叶斯题上把 ½×1 + ½×0 算成了 1/3——推理过程全对,最后一行算错。但扩到 13 次样本后它每次都答对。所以单次失误不能当结论,得多次重跑。
稳定性实测
所有测试的失败都是同一句:
Error: unknown certificate verification error
这是本机到 Zen 的网络抖动,跟模型无关。 三个模型各挂 1 次,概率一样。少数模型在 200 秒左右会超时(nemotron-3.5-lightning-free 中文写作 200.3s 超时),这类是模型本身慢,不是链路问题。
这些坑你要知道
1. 目录里有幽灵模型:13 个标 -free 的只有 8 个真能用,5 个完全不通。用之前先冒烟测试。
2. 两套端点 ID 不通用:mimo-v2.6-flash-free 在 zen/v1 能用,但 Go 端点里叫 mimo-v2.6-flash(没有 -free)。同一个模型两个名字,别搞混。
3. LongCat 的”免费”是标题党:媒体报道说 OpenCode 免费两周,实际是给老用户发 500 万 token 额度 + 限时优惠价($0.30/$1.20 每百万),不是白用。
4. 上下文长度分版本:Nemotron 3 Ultra 在 OpenRouter 付费版只有 262K,free 版是 1M。
5. Go 端点里只有两个真免费:space-bunny-free 和 longcat-2.5-preview-free。其他 27 个(minimax、qwen、glm、kimi、deepseek)都走你的 Go 付费额度。
6. 响应 id 格式能看出路由层级:
| id 前缀 | 含义 |
|---|---|
071087xx(32 位 hex) |
OpenRouter 转发层(space-bunny、minimax-m3 都在这层) |
chatcmpl- |
原生 OpenAI 格式直连(glm、qwen、kimi-code) |
gen-<时间戳> |
另一条转发路径(kimi-k2.6、mimo-v2.5、minimax-m2.5) |
顺带一条实锤:space-bunny-free 和 minimax-m3 的响应 id 同为 071087xx 格式,且 minimax-m3 就在 Go 目录里——这给”space-bunny 是 MiniMax 的 stealth 版”这个推测又添了一条旁证。
一句话总结
Zen 这套 free 层适合的场景很清楚:多 Agent 环境下的日常杂活——改代码、写脚本、翻译、格式转换、跑定时任务。用一个 key 统一管理,N 台机器共用,额度用完也不心疼。
但别把它当主力干重活。真要写复杂代码、做严肃推理,还是得上付费模型。
上手顺序建议:先从 Go 端点(加 x-opencode-session 头)挑模型,而不是从 zen/v1 的 free 目录抄名字——前者 29/36 可用,后者 8/13 可用且速度更慢。
本文测试环境:ARM64 单机,OpenCode 1.18.34,Node 22。测试时间 2026 年 10 月初。free 层规则和模型目录会变,以实际使用为准。
by 数码罗记·godsun.pro