我机器上现在同时装着 Claude Code 、Codex CLI 、Cursor 、Gemini CLI 、opencode……每装一个新的,就多一份要伺候的配置:
~/.claude/settings.json、~/.codex/config.toml、~/.gemini/settings.json,格式还都不一样;装 Agent 的时候是爽的,管 Agent 的时候是崩溃的。所以有了Casbin Gateway:一个本地的 Agent 管理助手,把机器上所有编程 Agent 收进同一个面板。
Apache 2.0 ,Go + React ,单个二进制,装完就是一个本地 App ,支持 Windows 、Linux 、macOS 全平台。
GitHub: https://github.com/apache/casbin-gateway
一句话:它不是又一个 Agent ,它是管 Agent 的那个东西。
开机之后它做三件事:
http://localhost:17000,于是每一条请求、每一个 prompt 、每一次工具调用、花了多少钱,全都留在你自己机器上。目前认识29 个Agent 客户端。不是「都写了个名字」,是每一项能力单独标注的:
| Agent | 行为监控 | 换供应商 | MCP | 技能 | 提示词 | 会话 | 安装 |
|---|---|---|---|---|---|---|---|
| Claude Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | npm · brew · winget |
| Codex CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | npm · brew · winget |
| Gemini CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | npm |
| Cursor | ✅ | — | ✅ | ✅ | — | ✅ | brew · winget |
| opencode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | npm · winget |
| Qwen Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | npm |
| Kimi Code CLI | — | ✅ | ✅ | ✅ | ✅ | — | npm · winget |
| ……还有 Windsurf 、Cline 、iFlow 、CodeBuddy 、Zed 、Continue 、Aider 、goose 、Trae 、Droid 、Pi |
完整的 29 行在 README 里。支持不到的地方就写「—」,不写「即将支持」。
模型这边预置了44 家厂商,OpenAI 、Anthropic 、Gemini 、DeepSeek 、Kimi 、智谱、通义、火山、硅基流动、OpenRouter 、Ollama 、vLLM 都在里面,或者你直接填任意一个 OpenAI / Anthropic 兼容的 base URL 。
1 )一处改,全体换
Providers 页面加一个供应商,Agents 页面点一下绑定,Gateway 把配置写进那个 Agent 自己的文件里。下次想换,再点一下就换完了,不用再打开任何一个 json / toml 。
Gateway 还会翻译协议:Codex 只会说/responses、Gemini CLI 只会说 Google 那套、Claude Code 只会说/v1/messages——四种线格式两两互转,流式也转。所以Codex 跑 DeepSeek 、Claude Code 跑 Kimi ,都是可以的。请求进来的协议和上游一致时原样透传,一个字节都不动。
2 )花了多少钱,包括没走 Gateway 的那部分
这个是我最想要的功能。Agent 自己会在磁盘上写会话记录,所以哪怕你一条流量都没接进来,Usage 页面从第一次启动就有数:按天、按模型、按 Agent ,token 、缓存命中率、折算成钱。用的是可编辑的价格表,能定时从 models.dev 同步,你自己手改过的价格不会被覆盖。
3 )杀手锏:那个 Key 背后的 API ,真是卖给你的那个吗?
中转商可以拿便宜模型冒充贵的、把缓存前缀算成新输入、甚至只是「假装」在说那套 API 。这些在流量里全都看不出来,所以Authenticity直接去问上游:
logprobs、n、stop )是真支持、明确拒绝,还是返回 200 然后悄悄丢掉;最后给一个 100 分制的分数和 A–F 等级。新增供应商、改 Key 、报告过期都会自动测一次,不用点任何按钮。
分数只是个汇总,每一条测例的原始请求、判分方式、占多少权重全都摊在页面上,可以改权重、可以关掉、可以自己加题。一次探测花掉那个供应商几分钱,报告里也写着。
4 )用 Casbin 规定每个 Agent 能干什么
每个 Agent 四十来个开关,分六组:终端、读项目、改项目、联网、规划与派子 Agent 、以及它装的每一个 MCP Server 。关掉的工具在请求离开这台机器之前就被摘掉了,模型压根看不到这个工具,Agent 也就无从调用。
不同 Agent 的工具名字五花八门,Bash、shell、run_shell_command在这里是同一个开关。每组最后有个兜底项,管的是 Gateway 没见过的新工具——这样「这组全关」才是真的全关,而不是只关了设置那天列出来的几个。
底下编译成 Casbin 的model.conf + policy.csv,Advanced 里能直接看,也能自己加规则:
p, claude-code, tool:mcp/github, use, allow
p, claude-code, tool:mcp/*, use, deny
p, claude-code, tool:*, use, allow
第一条匹配的规则说了算,所以「除了 github 这个 MCP ,其他全禁掉」一行就写完了。
5 ) Agent 自己的安装、升级和回退
Agent versions 页面一张表:本机装的是哪个版本、包管理器发布到哪个版本、差多少。装、升、退回旧版、卸载,都在那一行上一键完成——不管当初是 npm 、brew 、winget 、微软商店、Agent 自带的更新器还是厂商的安装脚本装的。命令先摆出来给你看,进度在行上走,控制台输出点一下能翻。
升级把活干坏了想退回去,这个功能那天救了我。
6 )其他零碎但省事的
ccswitch://链接导入:网页上点厂商的「添加到我的 Agent 」按钮,Gateway 带着链接里的东西打开,按钮不按就什么都不写。链接是走 API 请求体传的,不走地址栏,因为里面可能有 API Key ,而地址是会进浏览器历史的;一条命令。不用 Docker ,不用装 Go ,不用装 Node ,不用配数据库。
Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/apache/casbin-gateway/master/scripts/install.sh | bash
Windows PowerShell:
irm https://raw.githubusercontent.com/apache/casbin-gateway/master/scripts/install.ps1 | iex
下载对应平台的构建、解压、把casbin-gateway命令挂到 PATH 、启动、登录时自启,然后自己弹出一个窗口——不用登录,它只服务本机,看到你就直接把本地管理员登进去了。关掉窗口它缩进托盘继续跑。没有桌面环境的机器,浏览器打开http://localhost:17000一样。
数据是同目录下一个 SQLite 文件。右上角显示版本号,有新版会标New,点进去Update now自己下载、自检、替换、重启,数据和设置原地不动。
不想要了:casbin-gateway uninstall。别直接删目录——它往外面写过东西(各 Agent 配置里的监控钩子、绑定的供应商、开机自启项、桌面快捷方式、ccswitch://协议注册),uninstall 会把这些一一还原,然后告诉你还剩哪两个目录可以自己删。
免得大家装完骂人,几个已知的坑先摆出来:
admin / 123。只监听127.0.0.1的时候它不起作用(本机直接免密登录),但只要你把httpaddr改成0.0.0.0,第一件事就是去改密码——那个端口后面既是免密的 UI ,又是揣着你所有 API Key 的转发入口。ccswitch://协议。那边 URL scheme 属于 App Bundle ,链接是以 Apple event 送达的,这个启动器没有对应的事件循环,注册了反而会把链接从别的能打开它的程序手里抢走。macOS 上请把链接粘到 Import 页的输入框里,这条路所有平台都通。在线 Demo 、完整文档和那 29 行支持表都在仓库里:
https://github.com/apache/casbin-gateway
如果你机器上也装了三个以上的编程 Agent ,应该能用上。有 issue 尽管提。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.