🧩 把 Claude Max 接进 OpenCode:Meridian 是怎么做到的?

最近发现一个挺聪明的开源项目:Meridian。

它在本机启动一个兼容 Anthropic / OpenAI API 的代理,让 OpenCode、Cline、Aider、Pi 等客户端,可以通过 Claude Max / Team 订阅调用 Claude,不需要再按 API Token 计费。

核心链路很简单:

OpenCode → Meridian → Claude Agent SDK → Claude

Meridian 把客户端发来的标准 API 请求翻译成官方 Claude Agent SDK 的 query() 调用,再把 SDK 的流式事件翻译回 SSE 响应。它不提取 OAuth Token、不魔改 Claude Code,也不模拟私有 API,底层仍由 Anthropic 的 SDK 负责登录、限流、缓存和上下文管理。

最巧的是工具调用。

OpenCode 会把 read、write、bash 等工具定义发给 Meridian。Meridian 将它们动态注册为 MCP 工具,让 Claude 能生成合法的 tool_use,但代理端并不真的执行。

工具调用会被截获并还给 OpenCode,由 OpenCode 在自己的权限系统和沙箱里执行,再把结果带入下一轮。

于是你既能用 Claude Max 的额度,又保留 OpenCode 原来的 UI、权限确认和文件追踪。这层设计确实漂亮。

接入也很轻:

npm i -g @rynfar/meridian
claude login
meridian setup
meridian

然后让 OpenCode 指向本地代理:

ANTHROPIC_API_KEY=x \
ANTHROPIC_BASE_URL=http://127.0.0.1:3456 \
opencode

Linux 长期运行建议用 systemd user service,别拿 nohup 糊墙。

几个坑必须提前说:

• Meridian 默认只监听 127.0.0.1。如果暴露到局域网或 Tailscale,务必设置 MERIDIAN_API_KEY,否则谁连上 3456,谁就能烧你的 Claude 订阅。

• Sonnet 1M 上下文即使是 Max 也会走 Extra Usage;Meridian 默认将 Sonnet 控制在 200k。想彻底避免 1M 请求,可设置 MERIDIAN_1M_CONTEXT_SUPPORT=0。

• Anthropic 最近会把部分带第三方 Agent 特征、工具定义的请求判为 Extra Usage。项目 Issues 里已有相关报错和兼容性修复。这说明它虽然走官方 SDK,但“订阅是否允许第三方前端长期这样用”的边界仍由 Anthropic 决定,随时可能变化。

• 它是协议适配层,Claude Agent SDK 或 Claude Code 一改行为,Meridian 就得跟着修。好在项目更新很勤快,但稳定性不可能等同官方客户端。

Agili 的判断:

这是目前把 Claude Max 接入 OpenCode 最干净的一类方案。尤其“动态 MCP + 客户端执行工具”这层,不是粗暴套壳,而是真把两边的 Agent 模型接顺了。

本机个人使用,值得试。拿它做团队网关、公开服务或重度生产依赖,我不建议:安全、额度和政策风险都压在一个 Claude 账号上,翻车半径太大。

项目:https://github.com/rynfar/meridian

相关限制讨论:
https://github.com/rynfar/meridian/issues/495
https://github.com/rynfar/meridian/issues/516