ZhiYi-R/moon-bridge
GitHub: ZhiYi-R/moon-bridge
Moon Bridge 是一个用 Go 编写的 LLM 协议转换与模型路由代理,对外统一暴露 OpenAI Responses API,对内自动将请求路由并转换到 Anthropic、Gemini、OpenAI 等上游服务。
Stars: 660 | Forks: 115
# Moon Bridge
Moon Bridge 是一个用 Go 编写的协议转换与模型路由代理。对外暴露 **OpenAI Responses API**(`/v1/responses`),对内支持 **Anthropic Messages**、**Google Gemini(GenAI)**、**OpenAI Chat Completions** 等多种上游协议。客户端指定不同模型别名时,自动将请求路由到对应上游 Provider 并在协议间自动转换。
## 快速开始
# pacman 或二进制安装后直接启动
moonbridge
# 首次无配置启动会创建 $HOME/moonbridge/config.yml
# 打开 http://127.0.0.1:38440/console/
# 在 Web Console 中配置 Provider、Model 和 API Key
# 源码开发也可以直接运行
go run ./cmd/moonbridge
# 另见 CookBook.md 中的详细使用场景
源码开发要求 Go 1.25+。
## 核心能力
- **协议转换**:OpenAI Responses → Anthropic Messages / Google Gemini / OpenAI Chat,适配四种上游协议
- **模型路由**:通过 `routes` 配置将模型别名映射到不同 Provider 的上游模型名
- **插件扩展**:`CorePluginHooks` 接口,支持请求预处理、响应后处理、流拦截
- **请求跟踪**:完整链路记录,每步转换均可追溯
- **用量统计**:按会话聚合 token 与费用
- **管理 API**:运行时热重载配置(需启用持久化)
- **Web Search 注入**:自动/注入模式,支持 Tavily、Firecrawl
- **Prompt 缓存**:explicit / automatic / hybrid 三种模式
## 三种工作模式
| 模式 | 行为 |
|------|------|
| `Transform`(默认) | 接收 OpenAI Responses 请求 → 协议转换 → 转发 → 反向转换后返回 |
| `CaptureAnthropic` | 接收 Anthropic Messages 请求 → 透明转发到 Anthropic 上游 |
| `CaptureResponse` | 接收 OpenAI Responses 请求 → 透明转发到 OpenAI 上游 |
## 配置说明
采用 YAML 格式,核心结构为 `models`、`providers`、`routes` 三段式。完整配置说明见 [CONFIGURATION.md](docs/CONFIGURATION.md)。
## 与 Codex CLI 配合使用
将 Moon Bridge 地址设为 Codex 的 OpenAI API Base URL 即可:
[openai]
base_url = "http://127.0.0.1:38440/v1"
api_key = "any-non-empty-value"
然后在 Moon Bridge 配置中定义与 Codex 模型同名的路由。
## 与 Claude Code 配合使用
claude --model your-alias --api-url http://127.0.0.1:38440 --api-key any-value
## Docker 部署
docker build -t moonbridge .
docker run -p 38440:38440 -v $(pwd)/config.yml:/config/config.yml moonbridge
## 命令行选项
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `-config` | `$HOME/moonbridge/config.yml` | 配置文件路径 |
| `-addr` | 来自配置文件 | 覆盖监听地址 |
| `-mode` | 来自配置文件 | 覆盖运行模式(Transform/CaptureAnthropic/CaptureResponse) |
| `-print-addr` | — | 打印配置的监听地址后退出 |
| `-print-mode` | — | 打印配置的运行模式后退出 |
| `-print-default-model` | — | 打印默认模型别名后退出 |
| `-print-codex-model` | — | 打印 Codex 模型后退出 |
| `-print-codex-config ` | — | 为指定模型生成 Codex config.toml 后退出 |
| `-dump-config-schema` | — | 生成 config.schema.json 后退出 |
## HTTP API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `/v1/responses` | POST | OpenAI Responses API 主入口 |
| `/responses` | POST | 同上(无 `/v1` 前缀) |
| `/v1/models` | GET | 列出可用模型 |
| `/models` | GET | 同上 |
| `/console/` | GET | 嵌入式 Web Console |
| `/api/v1/` | — | 管理 API(需启用持久化) |
详细 API 文档见 [API.md](docs/api.md)。
## 请求跟踪
通过配置中的 `trace.enabled` 或特定工作模式启用请求跟踪,将完整请求/响应链路记录到文件。跟踪文件按 `session/模型名/类别/序号.json` 组织,支持 Chat、Response、Anthropic 三种分类。
## 许可证
[GPL v3](LICENSE)
标签:AI大模型, API网关, EVTX分析, Go, Ruby工具, 协议转换, 日志审计, 请求拦截, 调试插件, 路由代理