Tea-Resistance/BasicallyMythos
GitHub: Tea-Resistance/BasicallyMythos
一个零依赖的本地代理工具,用于观测 Claude Code 的静默模型重路由行为并让用户自定义回退模型。
Stars: 2 | Forks: 0
# BasicallyMythos — Claude Code 重路由可观测性 + 回退选择
[](LICENSE)
[](kimi-reroute-proxy.cjs)
[](kimi-reroute-proxy.cjs)
[](https://x.com/TEA_Resistance)
[](README_zh.md)
**实时查看 Claude Code 每次将你的请求重路由到不同模型的情况 —— 并自由选择回退模型。**
当 Fable 5 触发安全防护机制时,Claude Code 会在 Opus 上重新运行该请求。
而这套配置会让它改为在 **Kimi K3** 上重新运行 —— 在会话进行中自动完成,
同时其他所有请求依然通过你的 Anthropic 订阅进行处理。无论你是否更改回退模型,该代理都会**记录每一次重路由**,让这种隐性的降级操作终于可见。
无需第三方路由器,无需额外依赖包。仅需一个约 100 行、无任何依赖的 Node 代理 + 两个设置项。

```
[2026-07-21T09:01:57Z] anthropic model=claude-fable-5 POST /v1/messages -> 429
[2026-07-21T09:02:10Z] KIMI model=kimi-k3 POST /v1/messages -> 200
```
*每一行 KIMI 都代表一次被捕获的静默降级 —— 并且由你选择的模型做出了回答。*
## 为什么需要
- **安全防护重路由是静默的。** 没有横幅提示,没有警告 —— 响应只是悄悄从另一个与你所选不同的模型返回。
- **回退模型理应由你来选择。** 重路由目标是一个客户端的配置值;这个代理让你可以将其指向一个开源模型。
- **零信任攻击面。** 零依赖,仅限本地回环(loopback),你的 Anthropic 认证信息会原封不动地透传,Kimi 密钥也绝对不会离开本地钥匙串。
## 快速开始
```
cp kimi-reroute-proxy.cjs ~/.claude/
security add-generic-password -s moonshot-kimi -a "$USER" -w "sk-kimi-YOUR_KEY"
cp com.kimi-reroute-proxy.plist ~/Library/LaunchAgents/ # edit YOUR_USERNAME + node path first
launchctl load ~/Library/LaunchAgents/com.kimi-reroute-proxy.plist
# 然后将 settings-snippet.json 合并到 ~/.claude/settings.json 并重启 Claude Code
```
使用 `/status`(Base URL 应显示为 `http://127.0.0.1:8787`)或[手动设置](#setup)中的 curl 测试来进行验证。
## 路线图
| 版本 | 内容 |
|---|---|
| v0.2 | `stats` 命令 —— 可分享的重路由摘要,专为截图优化的格式 |
| v0.3 | Linux systemd 服务单元 + Windows 指南 |
| v0.4 | 多提供商回退预设(GLM / DeepSeek / OpenRouter) |
| v1.0 | 测试、semver、文档定稿 |
## 常见问题解答
**这违反 Anthropic 的 ToS 吗?** 它在你自己的机器上针对你自己的会话本地运行。它是记录而不是隐藏行为,将带标记的请求转发给不同的提供商,且不伪装任何身份。不共享任何 API 密钥。
**它会影响我的 Anthropic 认证或配额吗?** 不会。Anthropic 流量使用你正常的认证信息逐字节原样透传。只有已被标记为重路由的请求才会被分流到 Kimi。
**支持 Windows/Linux 吗?** 目前支持 macOS(launchd + keychain)。Linux systemd 和 Windows 指南已列入路线图 —— 欢迎提交 issue 和 PR。
**为什么选 Kimi K3?** 开源权重,1M 上下文,在 Agent Arena 排名第 4(与 Opus 4.8 齐平)。任何兼容 Anthropic 格式的 endpoint 都可以工作 —— 请参阅下方的环境变量覆盖设置。
## 工作原理
Claude Code 的安全防护回退机制是**客户端侧**的:当请求被标记时,CLI 会使用 `ANTHROPIC_DEFAULT_OPUS_MODEL` 中的模型 ID 重新发送请求,并将其发送到与其他所有请求相同的 `ANTHROPIC_BASE_URL`(这是进程级别的设置 —— 原生情况下,你无法将某一个模型单独指向不同的提供商)。
因此:
1. `ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k3[1m]` —— 重路由现在会*请求*调用 Kimi。
2. `ANTHROPIC_BASE_URL=http://127.0.0.1:8787` —— 所有流量都通过一个轻量级的本地代理发出。
3. 代理根据模型 ID 进行分流:
- `kimi*` → 发送至 Kimi 的兼容 Anthropic 格式的网关(`api.kimi.com/coding`),并从 macOS keychain 中注入你的 Kimi 密钥
- 其他所有请求 → 透明转发至 `api.anthropic.com`(你正常的认证/订阅完全不受影响)
结果:在 Anthropic 上进行正常的 Fable 会话;一旦触发安全防护,该请求就会直接发送到 Kimi K3(1M 上下文)而不是 Opus。对话记录会像往常一样显示模型切换通知。
## 已处理的陷阱(经验教训)
- **Kimi 订阅密钥(`sk-kimi-...`)不是 Moonshot 平台密钥。**
它们在 `api.moonshot.ai` / `api.moonshot.cn` 上会返回 401 错误。Kimi Code 订阅密钥正确的 endpoint 是 `https://api.kimi.com/coding/v1/messages`
(完全兼容 Anthropic Messages 格式,包含流式传输)。
- **网关会拒绝 Claude Code 的 `[1m]` 后缀**(提示“请将模型 ID 设置为
`k3`”)。在设置中保留 `kimi-k3[1m]`,以便 Claude Code 为其分配 1M 上下文预算 ——
代理会在转发前自动去除括号后缀。
- **`switchModelsOnFlag` 必须设置为 `true`**(在 settings.json 中),否则安全防护重路由根本不会触发(被标记的请求只会报错)。
- **保持你的会话模型在 Fable,而不是 Opus。** 该环境变量会重新映射整个
Opus 别名 —— 如果你的主模型是 Opus,你的主会话也会被路由到 Kimi。
## 设置
前置条件:macOS、Node(任何近期版本)、Claude Code、Kimi Code
订阅 API 密钥(在 kimi.com 控制台 → API Keys 中获取)。
1. **代理** —— 复制到指定位置:
cp kimi-reroute-proxy.cjs ~/.claude/kimi-reroute-proxy.cjs
2. **密钥** —— 存储在 keychain 中(切勿存放在磁盘或设置中):
security add-generic-password -s moonshot-kimi -a "$USER" -w "sk-kimi-YOUR_KEY"
3. **保持运行** —— 编辑 `com.kimi-reroute-proxy.plist`:替换
`YOUR_USERNAME`,如果 `which node` 的路径不同,请调整 node 路径。然后执行:
cp com.kimi-reroute-proxy.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.kimi-reroute-proxy.plist
4. **Claude Code 设置** —— 将 `settings-snippet.json` 合并到
`~/.claude/settings.json` 中(包含那两个 `env` 键值以及 `switchModelsOnFlag: true`)。
5. **验证** —— 开启新的 `claude` 会话,运行 `/status`:Base URL 应该显示为
`http://127.0.0.1:8787`。代理直接测试:
curl -s -X POST http://127.0.0.1:8787/v1/messages \
-H "content-type: application/json" -H "anthropic-version: 2023-06-01" \
-H "x-api-key: x" \
-d '{"model":"kimi-k3[1m]","max_tokens":16,"messages":[{"role":"user","content":"say ok"}]}'
如果返回了 Kimi 的补全响应,说明重路由路径已实现端到端畅通。
## 回滚
从 `~/.claude/settings.json` 中删除那两个 `env` 键,然后执行:
```
launchctl unload ~/Library/LaunchAgents/com.kimi-reroute-proxy.plist
```
## 文件
| 文件 | 用途 |
|---|---|
| `kimi-reroute-proxy.cjs` | 代理程序。零依赖,仅绑定至 127.0.0.1。 |
| `com.kimi-reroute-proxy.plist` | launchd 服务(自启动 + 保活)。 |
| `settings-snippet.json` | 需要合并的 Claude Code 设置项。 |
通过环境变量覆盖(如有需要可在 plist 中设置):`KIMI_PROXY_PORT`(默认 8787),
`KIMI_MOONSHOT_HOST` / `KIMI_MOONSHOT_PREFIX`(默认为 `api.kimi.com` + `/coding`;
如果是 Moonshot 平台密钥,则需使用 `api.moonshot.ai` + `/anthropic`)。
安全说明:代理仅绑定至本地回环(loopback);你的 Anthropic 认证信息会原封不动地透传;Kimi 密钥会在发起请求时从 keychain 中读取,并且只会附加在 Kimi 分支的请求中。
由 **Mythos** 构建 —— 更多构建更新和 Claude Code 内部原理,请关注 X 上的
[@TEA_Resistance](https://x.com/TEA_Resistance)。
欢迎提交 issue 和 PR。如果它为你成功捕获了一次重路由,点个 star 能帮助更多人发现它。
标签:MITM代理, 数据可视化, 自定义脚本