[分享创造] casbin-gateway:支持 29 个 Agent 的桌面端管理助手,支持一键切换 LLM API、审计、权限、版本管理、多开,顺便帮你验一验中转商有没有偷换模型
一、起因
我机器上现在同时装着 Claude Code 、Codex CLI 、Cursor 、Gemini CLI 、opencode……每装一个新的,就多一份要伺候的配置:
- 换个中转商,要挨个去改
~/.claude/settings.json、~/.codex/config.toml、~/.gemini/settings.json,格式还都不一样; - 同一个 MCP Server 要在每个 Agent 里各装一遍,装完还想不起来到底哪几个装了;
- 这个月到底烧了多少钱?每家后台各看各的,本地跑的那些根本没人统计;
- 买的是「 Claude Opus 无限量」,实打实给你的是什么模型,你其实并不知道。
装 Agent 的时候是爽的,管 Agent 的时候是崩溃的。所以有了Casbin Gateway:一个本地的 Agent 管理助手,把机器上所有编程 Agent 收进同一个面板。
Apache 2.0 ,Go + React ,单个二进制,装完就是一个本地 App ,支持 Windows 、Linux 、macOS 全平台。
GitHub: https://github.com/apache/casbin-gateway
二、它到底是什么
一句话:它不是又一个 Agent ,它是管 Agent 的那个东西。
开机之后它做三件事:
- 扫描本机——读用户目录、安装路径、PATH ,把机器上所有编程 Agent 找出来,包括你自己手动解压到某个犄角旮旯的那个(找不到还能手动 Locate 指过去)。
- 接管配置——供应商、MCP 、技能、提示词、权限,统一在一个页面上改,Gateway 负责翻译成每个 Agent 自己的配置格式写回去。写之前先 Preview ,写错了能 Restore 。
- 当中间人(可选)——让 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 然后悄悄丢掉; - 一批只有唯一正确答案的题目,从数单词字母到《滕王阁序》是谁写的;
- 两层嵌套的 tool schema 在强制调用下还在不在,SSE 事件流全不全,缓存到底有没有如实计费。
最后给一个 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 )其他零碎但省事的
- Skills / MCP / 提示词一张表看完所有 Agent 装了什么,从一个 Agent 复制到另一个,或者一次装进好几个;
- 同一个 Agent 开多实例,各自独立的状态目录和账号,比如同时挂三个 Claude Desktop 登不同账号;
ccswitch://链接导入:网页上点厂商的「添加到我的 Agent 」按钮,Gateway 带着链接里的东西打开,按钮不按就什么都不写。链接是走 API 请求体传的,不走地址栏,因为里面可能有 API Key ,而地址是会进浏览器历史的;- ⌘K / Ctrl+K全局搜索,页面、Agent 、供应商都能直接跳;
- 界面有中英文、明暗两套、三个配色。
五、装它
一条命令。不用 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 的转发入口。 - 容器里跑看不到你的 Agent。Agent 是靠读「 Gateway 所在这台机器」的家目录和安装路径发现的,在容器里那就是容器自己的文件系统。想管 Agent 就装在那台机器上;容器版适合只把它当一个模型入口给别的机器用。
- Roo Code 、Copilot CLI 目前只能识别出来,还没接上更多能力。表里就是一排「—」。
- macOS 不抢
ccswitch://协议。那边 URL scheme 属于 App Bundle ,链接是以 Apple event 送达的,这个启动器没有对应的事件循环,注册了反而会把链接从别的能打开它的程序手里抢走。macOS 上请把链接粘到 Import 页的输入框里,这条路所有平台都通。
七、最后
在线 Demo 、完整文档和那 29 行支持表都在仓库里:
https://github.com/apache/casbin-gateway
如果你机器上也装了三个以上的编程 Agent ,应该能用上。有 issue 尽管提。