Tea-Resistance/BasicallyMythos

GitHub: Tea-Resistance/BasicallyMythos

一个零依赖的本地代理工具,用于观测 Claude Code 的静默模型重路由行为并让用户自定义回退模型。

Stars: 2 | Forks: 0

# BasicallyMythos — Claude Code 重路由可观测性 + 回退选择 [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![proxy size](https://img.shields.io/badge/proxy-123%20lines-blue.svg)](kimi-reroute-proxy.cjs) [![deps](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)](kimi-reroute-proxy.cjs) [![Follow @TEA_Resistance](https://img.shields.io/badge/follow-%40TEA__Resistance-1DA1F2.svg)](https://x.com/TEA_Resistance) [![中文 README](https://img.shields.io/badge/README-%E4%B8%AD%E6%96%87-red.svg)](README_zh.md) **实时查看 Claude Code 每次将你的请求重路由到不同模型的情况 —— 并自由选择回退模型。** 当 Fable 5 触发安全防护机制时,Claude Code 会在 Opus 上重新运行该请求。 而这套配置会让它改为在 **Kimi K3** 上重新运行 —— 在会话进行中自动完成, 同时其他所有请求依然通过你的 Anthropic 订阅进行处理。无论你是否更改回退模型,该代理都会**记录每一次重路由**,让这种隐性的降级操作终于可见。 无需第三方路由器,无需额外依赖包。仅需一个约 100 行、无任何依赖的 Node 代理 + 两个设置项。 ![实时重路由捕获](https://static.pigsec.cn/wp-content/uploads/repos/cas/ab/ab221f0fc8cca26abfa8273298cd97a965206d0f095bd5fafed14470b269d428.gif) ``` [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代理, 数据可视化, 自定义脚本