别为每个 Agent CLI 再写一个本地代理了
社区里 Claude Code / Codex 代理项目泛滥;clovapi 用一套内置代理 + profile 切换覆盖多 CLI、多形态。
在 GitHub awesome 列表和 Reddit 相关帖里,「Claude Code 代理」 已成独立品类:DeepClaude、claude-code-router、codex-claude-proxy、CLIProxyAPI……各自默认端口、各自一份 config.json,功能高度重叠。
开发者吐槽也很一致:「装三个代理,开机五个 localhost 服务」「换 Codex 又要换一套 env」。
代理泛滥从哪来
每个 Agent CLI 只认一种「官方协议」:
| CLI | 期望协议 |
|---|---|
| Claude Code | Anthropic Messages |
| Codex | OpenAI Responses |
| OpenCode | 多种 provider 块 |
第三方网关往往只兼容其中一种。于是社区项目普遍做法是:做一个 Anthropic 兼容的 localhost 服务,让 Claude Code 以为在连官方 API。
问题是——你只解决了 Claude Code。切到 Codex 时,又要找「Responses 版」代理,再开一个新端口。
clovapi 的做法:一个代理内核,多种形态
clovapi 在 switch 时启动同一个 Go 代理进程(默认 127.0.0.1:27483),按目标 CLI 已写入的配置决定如何转码:
- 对 Claude Code:维护 Messages 语义。
- 对 Codex:维护 Responses 语义。
- 对 OpenCode:按 provider 类型映射。
上游只在 profile 里换 Base URL / Key,不必为每个 CLI 再起一个 Node/Python 代理。
clovapi add --name deepseek
clovapi switch --cli claude-code deepseek
# 同一 profiles.json
clovapi switch --cli codex openrouter-prod
和「路由器」项目的差异
一些路由器(如 claude-code-router)强项是按请求类型把 Opus/Sonnet/Haiku 分到不同模型,适合极致省钱。clovapi 的强项是:
- 多 CLI 统一配置(Claude / Codex / OpenCode / OpenClaw / Hermes / Kimi)。
- switch 写入各 CLI 官方配置文件,而不只改 env。
- 桌面端 + CLI 共用
profiles.json。
若你只需 Claude Code + 复杂模型路由,路由器仍值得试;若你每天在不同 Agent 间切换,维护一份 clovapi profile 通常更省心。
自检:你是否代理过剩
- 开机是否 >2 个「给 Agent 用的」localhost 代理?
- 换 CLI 是否要改不同端口?
- Codex 与 Claude Code 是否无法共用同一上游定义?
任一为是,可以考虑收敛到 clovapi 单路径,删掉重复代理。