{"id":48787300,"url":"https://github.com/dasungta/trae-proxy","last_synced_at":"2026-04-18T07:01:07.988Z","repository":{"id":350625989,"uuid":"1207639845","full_name":"DASungta/trae-proxy","owner":"DASungta","description":"爆锤Trae不支持自定义模型接入。通过Trae Proxy，可以支持在trae中接入并切换任意上游中转服务、不在服务列表中的coding plan等等。不影响codex、claude code正常使用。Trae proxy and switch","archived":false,"fork":false,"pushed_at":"2026-04-17T06:24:47.000Z","size":1614,"stargazers_count":24,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-17T06:35:33.279Z","etag":null,"topics":["claude-code","codex","trae"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DASungta.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-11T07:38:04.000Z","updated_at":"2026-04-17T06:24:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"b8466ccd-bd6a-4c8d-9349-177334b409de","html_url":"https://github.com/DASungta/trae-proxy","commit_stats":null,"previous_names":["dasungta/tare-proxy"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/DASungta/trae-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DASungta%2Ftrae-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DASungta%2Ftrae-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DASungta%2Ftrae-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DASungta%2Ftrae-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DASungta","download_url":"https://codeload.github.com/DASungta/trae-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DASungta%2Ftrae-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31959884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","codex","trae"],"created_at":"2026-04-13T18:00:27.667Z","updated_at":"2026-04-18T07:01:07.948Z","avatar_url":"https://github.com/DASungta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Trae Proxy\n\n让 Trae 接入任意 Anthropic 或 OpenAI 兼容的自定义模型端点。\n\n**特点：**\n\n- 单二进制，零依赖，跨平台，一键启动。\n- 通过 `openrouter.ai` 作为模型 API 地址（默认劫持域名，可在配置中修改），不影响本地openai、claude等其他服务的正常使用。\n\n**支持的上游类型：**\n\n- 各类中转站（sub2api、one-api、new-api等）\n- 支持 Anthropic Messages API / OpenAI Completions API 的云服务（讯飞星火、京东云、无问心穹、移动电信联通等等）\n- 自建的反代、中转（Antigravity等）\n\n## 快速开始\n\n\u003e mac/Linux用户？看这里：[快速开始指南 →](docs/quick-start.md)\n\n## 更新计划\n\n- [x] 支持OpenAI Chat Completions\n- [ ] 支持一键导入Trae配置\n- [x] init采用交互式命令行进行初始化配置\n- [ ] 支持同时对多个上游服务、多个模型进行代理\n\n## 命令总览\n\n| 命令          | 说明                                    | 常用标志                                                                       |\n|-------------|---------------------------------------|----------------------------------------------------------------------------|\n| `init`      | 交互式向导：配置上游地址、协议、模型映射，生成 CA 并安装系统信任    | `-y` / `--yes` 跳过向导使用默认配置                                                  |\n| `start`     | 启动代理（写入 hosts + 监听 443）               | `-d` 后台，`--upstream`，`--listen`，`--config`，`-l`/`--log-level`，`--log-body` |\n| `stop`      | 停止守护进程并移除 hosts 条目                    | —                                                                          |\n| `restart`   | 重启守护进程并重新加载配置（未运行时直接以 daemon 模式启动）    | 同 `start`（不含 `-d`）                                                         |\n| `status`    | 显示 hosts / 守护进程 / 上游 / 模型映射数          | —                                                                          |\n| `update`    | 从 GitHub Releases 自更新（macOS/Linux）    | `--version`，`--force`                                                      |\n| `uninstall` | 移除 CA 信任、hosts 条目、二进制本体；交互式询问是否删除配置目录 | `-y` / `--yes` 跳过交互                                                        |\n\n所有命令都支持 `--help` 查看完整参数说明。\n\n## 快速开始\n\n### 第一步：安装\n\n#### macOS / Linux（一键安装）\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/DASungta/trae-proxy/main/install.sh | sudo bash\n```\n\n安装脚本自动检测系统和架构，下载对应的预编译二进制到 `/usr/local/bin`。\n\n指定版本：`VERSION=v0.1.0 curl -fsSL ... | sudo bash`\n\n\u003cdetails\u003e\n\u003csummary\u003emacOS 注意事项\u003c/summary\u003e\n\n- 支持 Apple Silicon (M1/M2/M3/M4) 和 Intel，安装脚本自动检测\n- `init` 时 CA 证书通过 `security add-trusted-cert` 安装到系统钥匙串，首次执行可能弹出密码确认框\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eLinux 注意事项\u003c/summary\u003e\n\n- 目前支持 x86_64 (amd64) 架构\n- `init` 时 CA 证书复制到 `/usr/local/share/ca-certificates/` 并执行 `update-ca-certificates`\n- RHEL/CentOS 无 `update-ca-certificates`：手动将 `~/.config/trae-proxy/ca/root-ca.pem` 复制到\n  `/etc/pki/ca-trust/source/anchors/` 并执行 `update-ca-trust`\n- 某些发行版 DNS 缓存（systemd-resolved）需手动刷新：`sudo systemd-resolve --flush-caches`\n\n\u003c/details\u003e\n\n#### Windows（手动安装）\n\n1. 从 [Releases](https://github.com/DASungta/trae-proxy/releases/latest) 页面下载 `trae-proxy-windows-amd64.exe`\n2. 重命名为 `trae-proxy.exe`，放到任意目录（如 `C:\\tools\\`）\n3. 将该目录添加到系统 `PATH` 环境变量\n\n所有命令需在**管理员身份的 PowerShell** 中运行（右键 → 以管理员身份运行）。\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows 注意事项\u003c/summary\u003e\n\n- `init` 时 CA 证书通过 `certutil -addstore -f \"ROOT\"` 安装，系统会弹出安全警告，选\"是\"确认\n- hosts 文件路径：`C:\\Windows\\System32\\drivers\\etc\\hosts`\n- Windows Defender 首次运行时可能弹出防火墙提示，需允许 trae-proxy 监听网络\n- `stop` 命令通过 `TerminateProcess` 停止守护进程\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e其他安装方式\u003c/summary\u003e\n\n**手动下载预编译二进制**\n\n从 [Releases](https://github.com/DASungta/trae-proxy/releases/latest) 页面下载对应平台的文件：\n\n| 平台                  | 文件名                            |\n|---------------------|--------------------------------|\n| macOS Apple Silicon | `trae-proxy-darwin-arm64`      |\n| macOS Intel         | `trae-proxy-darwin-amd64`      |\n| Linux x86_64        | `trae-proxy-linux-amd64`       |\n| Windows x86_64      | `trae-proxy-windows-amd64.exe` |\n\n```bash\nchmod +x trae-proxy-darwin-arm64\nsudo mv trae-proxy-darwin-arm64 /usr/local/bin/trae-proxy\n```\n\n**从源码编译**（需要 Go 1.21+）：\n\n```bash\ngit clone https://github.com/DASungta/trae-proxy.git\ncd trae-proxy\nmake install    # 编译并安装到 /usr/local/bin\n```\n\n\u003c/details\u003e\n\n### 第二步：初始化\n\n```bash\nsudo trae-proxy init\n```\n\n这一步会启动交互式向导，引导你完成以下配置：\n\n1. **上游服务地址** — 输入你的中转服务 / API 端点地址（自动校验格式）\n2. **上游协议** — 选择 `anthropic`（需要协议转换）或 `openai`（直接透传）\n3. **模型映射** — 从 Trae 支持的 OpenRouter 模型列表中选一个，并指定上游实际接受的模型名称\n\n向导完成后，还会自动：\n\n- 生成本地 Root CA 和服务端证书（存放在 `~/.config/trae-proxy/ca/`）\n- 将 Root CA 安装到系统信任库（需要管理员权限）\n- 将配置写入 `~/.config/trae-proxy/config.toml`\n\n\u003e 如需跳过向导使用默认配置：`sudo trae-proxy init --yes`\n\u003e 配置文件生成后，你随时可以编辑 `~/.config/trae-proxy/config.toml` 调整更多选项（如添加多个模型映射）。\n\n### 第三步：配置 Trae\n\n- 安装好 Trae，国内海外任意\n- 设置 → 模型 → 添加模型\n- 工具默认配置是劫持 OpenRouter，所以服务商选择 OpenRouter\n- 模型选择第一个即可，Anthropic: Claude Sonnet 4.5 *(选择在配置文件中配置的对应模型)*\n- **关键**：填入你上游服务的 API 密钥\n- 添加模型，Trae 在这一步不会校验。稍等片刻就会在自定义模型列表中出现了。\n\n![添加模型-选择服务商](./docs/pics/add-model-select-provider.png)\n\n![添加模型-填写密钥](./docs/pics/add-model-enter-api-key.png)\n\n### 第四步：启动\n\n```bash\n# 前台运行（Ctrl+C 停止）\nsudo trae-proxy start\n\n# 后台守护进程\nsudo trae-proxy start -d\n\n# 指定上游地址（覆盖配置文件）\nsudo trae-proxy start --upstream http://your-server:8080\n\n# 重启后台守护进程并重新加载配置文件\nsudo trae-proxy restart\n\n# 开启调试日志（debug 显示请求结构，不含 body）\nsudo trae-proxy start --log-level debug\n\n# 最详细追踪：打印客户端原始请求、代理内部形态、上游请求/响应\n# 默认只打 body 前 512 字节摘要；加 --log-body 才打印完整字节\nsudo trae-proxy start --log-level trace --log-body\n\n# 临时通过环境变量设置（优先级低于 CLI 标志）\nTRAE_LOG_LEVEL=trace sudo -E trae-proxy start\n```\n\n### 第五步：在 Trae 中验证\n\n启动后，在 Trae 中选择刚添加的模型，发送一条消息验证是否正常响应。\n\n![Trae 中验证效果](./docs/pics/trae-validation-result.png)\n\n### 停止\n\n```bash\nsudo trae-proxy stop\n```\n\n会同时停止守护进程并移除 `/etc/hosts` 条目。\n\n### 重启\n\n```bash\n# 按当前配置文件重启后台守护进程\nsudo trae-proxy restart\n\n# 重启时临时覆盖配置\nsudo trae-proxy restart --config ~/.config/trae-proxy/config.toml --upstream http://your-server:8080\n```\n\n`restart` 只作用于后台守护进程；如果守护进程未运行，会直接按 daemon 模式启动。未传覆盖参数时，会重新读取最新的配置文件。\n\n### 更新\n\n```bash\n# 更新到最新版本\ntrae-proxy update\n\n# 更新到指定版本\ntrae-proxy update --version v0.2.0\n\n# 强制重新安装（版本相同时也执行）\ntrae-proxy update --force\n```\n\ntrae-proxy 会从 GitHub Releases 下载对应平台的二进制，校验 SHA256 后原子替换当前可执行文件。\n\n\u003e Windows 暂不支持自更新，请手动从 Releases 页面下载。\n\n### 查看状态\n\n```bash\ntrae-proxy status\n```\n\n输出示例：\n\n```\n=== trae-proxy status ===\n\n[hosts] ✓ openrouter.ai → 127.0.0.1\n[daemon] ✓ running (pid 12345)\n\nUpstream: http://192.168.48.12:8080\nProtocol: anthropic\nListen:   :443\nHijack:   openrouter.ai\nModels:   8 mappings\n```\n\n在交互式终端中，`status` 会对状态行着色：绿色表示正常，黄色表示 stale pid，红色表示未运行或未重定向。输出被重定向到文件或管道时会自动降级为纯文本。\n\n### 卸载\n\n```bash\n# 交互式卸载：移除 CA 信任、hosts 条目、二进制本体，\n# 并提示是否删除配置目录 ~/.config/trae-proxy/\nsudo trae-proxy uninstall\n\n# 脚本/CI 场景：跳过交互，直接连同配置目录一起删除\nsudo trae-proxy uninstall -y\n```\n\n## 配置\n\n配置文件路径：`~/.config/trae-proxy/config.toml`\n\n```toml\n# 上游 API 地址（路径不要包含 /v1/messages 或 /v1/chat/completions）\n# 支持任意兼容 Anthropic Messages API 或 OpenAI Chat Completions 的端点，例如：\n#   中转站：  http://your-relay-server:8080（sub2api、one-api、new-api 等直接填端点地址）\n#   移动云：  https://ai.bayesdl.com/api/maas/\n#   京东云：  https://modelservice.jdcloud.com/coding/openai（OpenAI）\n#             https://modelservice.jdcloud.com/coding/anthropic（Anthropic）\n#   LM Studio、Ollama、vLLM 等\nupstream = \"http://your-server:8080\"\n\n# 上游协议（可选，默认 \"anthropic\"）\n# \"anthropic\" — 将 Trae 发出的 OpenAI Chat Completions 请求转换为 Anthropic Messages 格式后转发，\n#               适用于各类 Claude 中转站、讯飞星火、京东云等兼容 Anthropic API 的服务\n# \"openai\"    — 直接透传，不做协议转换，仅映射模型名，\n#               适用于各种OpenAI-compatible 服务\nupstream_protocol = \"anthropic\"\n\n# HTTPS 监听地址（默认 :443，需要管理员权限）\nlisten = \":443\"\n\n# 劫持的域名（写入 /etc/hosts），默认 openrouter.ai\n# Trae 默认将 API 请求发往 openrouter.ai，通常无需修改\n# 如果你想劫持其他域名，在此修改，并同步更新 Trae 的 API 地址配置\nhijack = \"openrouter.ai\"\n\n# 设为 true 时，GET /v1/models 会转发到真实的 hijack 域名（绕过 /etc/hosts），\n# 而不是返回下方 [models] 配置的伪造列表\n# real_models = false\n\n# 模型名映射：Trae 发送的模型名 → 上游实际接受的模型名\n# 三级回退：① 精确匹配 → ② 去掉 \"anthropic/\"/\"openai/\" 等前缀 → ③ 原样透传\n# 以下是当前Trae中OpenRouter列出的模型，任选一个将请求模型映射到上游服务提供的真实模型\n[models]\n\"anthropic/claude-sonnet-4.5\" = \"claude-sonnet-4.6\"\n\"anthropic/claude-opus-4.1\" = \"claude-opus-4.6\"\n\"anthropic/claude-4-sonnet\" = \"\"\n\"anthropic/claude-4-opus\" = \"\"\n\"anthropic/claude-3.7-sonnet\" = \"\"\n\"openai/gpt-5\" = \"gpt-5.4\"\n\"openai/gpt-4.1\" = \"\"\n\"openai/gpt-4o\" = \"\"\n\"google/gemini-3-pro-perview\" = \"\"\n\"google/gemini-2.5-pro\" = \"\"\n\"minimax/minimax-m2\" = \"\"\n\"qwen/qwen3-coder\" = \"\"\n```\n\n### 日志\n\ntrae-proxy 使用 `log/slog` 分级输出，日志写到 stderr；后台模式下由守护进程重定向到 `~/.config/trae-proxy/trae-proxy.log`。\n\n| Level      | 说明                                                                  |\n|------------|---------------------------------------------------------------------|\n| `error`    | 只记录错误（上游 5xx、解析失败、TLS 握手错等）                                         |\n| `warn`     | + 降级行为（模型映射未命中、stale hosts 清理等）                                     |\n| `info`（默认） | + 启动 banner + 每个请求一行摘要（method / path / status / dur_ms / bytes_out） |\n| `debug`    | + 请求结构化字段（URL、脱敏后的 headers、model、stream），**不含 body**                |\n| `trace`    | + 四个 tap 点的原始工件：客户端请求 / 代理内部形态 / 上游请求 / 上游响应                        |\n\n`Authorization` 和 `x-api-key` 请求头**在任何级别下都会打码为 `[REDACTED]`**。\n\n`trace` 级别默认只打印 body 的前 512 字节摘要；加 `log_body = true`（或 `--log-body` 标志 / `TRAE_LOG_BODY=1`\n）才会打印完整字节。流式响应最多累计 1MiB，超出截断并标注 `[truncated at 1MiB]`。\n\n**配置方式**（写入 `~/.config/trae-proxy/config.toml`）：\n\n```toml\nlog_level = \"info\"\nlog_body = false\n```\n\n### 配置优先级\n\nCLI flags \u003e 环境变量（`TRAE_LOG_LEVEL`、`TRAE_LOG_BODY`）\u003e config.toml \u003e 内置默认值\n\n## 工作原理\n\n```\nTrae  (API → https://openrouter.ai/api)\n      │\n      ↓  /etc/hosts: openrouter.ai → 127.0.0.1\ntrae-proxy :443  (内置 TLS，自签证书)\n      │\n      ├─ GET  /v1/models           → 返回配置中的模型列表（无上游调用）\n      ├─ POST /v1/chat/completions\n      │     ├─ upstream_protocol = \"anthropic\" → 转换为 Anthropic Messages → 上游 → 转换回\n      │     └─ upstream_protocol = \"openai\"    → 模型名映射 → 直接透传\n      └─ POST /v1/messages + 其他  → 去掉 /api 前缀 + 模型名映射 → 透传\n      │\n      ↓\n上游（Anthropic Messages API 或 OpenAI Chat Completions API）\n```\n\n**核心流程：**\n\n1. `/etc/hosts` 将 `openrouter.ai` 指向 `127.0.0.1`（默认设置的hack地址是`openrouter.ai`）\n2. trae-proxy 在 443 端口用自签证书接收 HTTPS 请求\n3. 处理服务商调用地址的映射\n4. 根据路由选择透传或协议转换\n5. 将请求转发到上游，流式响应实时回传\n\n## 技术细节\n\n### 项目结构\n\n```\ntrae-proxy/\n├── cmd/trae-proxy/main.go           # CLI 入口（cobra）\n├── cmd/trae-proxy/wizard.go         # init 交互式向导\n├── internal/\n│   ├── config/config.go             # TOML 配置、模型映射\n│   ├── logging/logger.go            # 分级日志（slog）+ 敏感 header 脱敏\n│   ├── proxy/\n│   │   ├── server.go                # HTTPS server、路由分发\n│   │   ├── handler.go               # Chat Completions HTTP handler\n│   │   ├── chat.go                  # 请求/响应格式转换\n│   │   ├── chat_stream.go           # SSE 流式转换状态机\n│   │   ├── convert.go               # 消息/内容/工具 转换函数\n│   │   ├── forward.go               # 通用透传代理\n│   │   ├── models.go                # 伪造模型列表端点\n│   │   └── util.go                  # UUID 生成\n│   ├── tls/ca.go                    # CA 生成、证书签发、系统信任\n│   ├── hosts/hosts.go               # /etc/hosts 管理（跨平台）\n│   ├── updater/updater.go           # 自更新：GitHub Release 下载 + SHA256 校验\n│   └── daemon/                      # 守护进程模式（Unix/Windows）\n│       ├── daemon.go                # 共享逻辑\n│       ├── daemon_unix.go           # Unix: Setsid + SIGTERM\n│       └── daemon_windows.go        # Windows: TerminateProcess\n├── config.example.toml              # 示例配置\n├── Makefile                         # 构建脚本\n└── go.mod\n```\n\n### TLS 证书管理\n\n`trae-proxy init` 使用 Go `crypto/x509` 标准库生成证书链：\n\n1. **Root CA**：ECDSA P-256，10 年有效期，存储于 `~/.config/trae-proxy/ca/root-ca.pem`\n2. **Server Cert**：ECDSA P-256，1 年有效期，SAN = 配置的 hijack 域名\n\n系统信任安装按平台分派：\n\n| 平台      | 命令                                                                 |\n|---------|--------------------------------------------------------------------|\n| macOS   | `security add-trusted-cert` → System Keychain                      |\n| Linux   | 复制到 `/usr/local/share/ca-certificates/` + `update-ca-certificates` |\n| Windows | `certutil -addstore -f \"ROOT\"`                                     |\n\n当 hijack 域名变更时，`init` 会自动检测 SAN 不匹配并重新签发服务端证书。\n\n### DNS 劫持\n\n通过修改系统 hosts 文件实现，标记 `# trae-proxy` 用于识别和清理：\n\n```\n127.0.0.1 openrouter.ai # trae-proxy\n```\n\nmacOS 额外执行 DNS 缓存刷新（`dscacheutil -flushcache` + `killall -HUP mDNSResponder`）。\n\n### SSE 流式转换\n\n`StreamConverter` 是一个状态机，逐事件将 Anthropic SSE 流转换为 Chat Completions SSE 流：\n\n```\nAnthropic event              → Chat Completions chunk\n─────────────────────────────────────────────────────\nmessage_start                → {delta: {role: \"assistant\"}}\ncontent_block_start(tool_use)→ {delta: {tool_calls: [{id, name}]}}\ncontent_block_delta(text)    → {delta: {content: \"...\"}}\ncontent_block_delta(json)    → {delta: {tool_calls: [{arguments: \"...\"}]}}\nmessage_delta                → {finish_reason: \"stop\"|\"tool_calls\"}\nmessage_stop                 → data: [DONE]\n```\n\n支持 tool_use 的流式参数传输，通过 `index → call_id` 映射维护多工具并发状态。\n\n### 守护进程模式\n\n`trae-proxy start -d` 通过重新执行自身实现后台运行：\n\n1. 父进程打开日志文件（`~/.config/trae-proxy/trae-proxy.log`，追加模式）\n2. 以去掉 `-d` 参数的方式启动子进程，stdout/stderr 重定向到日志\n3. Unix 设置 `Setsid` 使子进程脱离终端会话\n4. 写入 PID 文件后父进程退出\n\n`trae-proxy stop` 读取 PID 文件，发送 SIGTERM（Unix）或 TerminateProcess（Windows）。\n\n### 错误处理\n\n| 场景           | 行为                                                                                       |\n|--------------|------------------------------------------------------------------------------------------|\n| 上游返回 HTTP 错误 | 原样透传 status code + body                                                                  |\n| 上游不可达        | 返回 502 + `{\"error\": {\"message\": \"upstream unreachable: \u003caddr\u003e\", \"type\": \"proxy_error\"}}` |\n| 请求 JSON 解析失败 | 原样透传不做转换                                                                                 |\n| 响应 JSON 解析失败 | 原样透传不做转换                                                                                 |\n\n### 转发的请求头\n\n```\nAuthorization, Content-Type, x-api-key,\nanthropic-version, anthropic-beta, Accept\n```\n\n如果请求中没有 `anthropic-version`，默认使用 `2023-06-01`。\n\n## 依赖\n\n| 依赖                                         | 用途                                              |\n|--------------------------------------------|-------------------------------------------------|\n| [cobra](https://github.com/spf13/cobra)    | CLI 框架                                          |\n| [toml](https://github.com/BurntSushi/toml) | 配置文件解析                                          |\n| Go 标准库                                     | net/http、crypto/tls、crypto/x509、encoding/json 等 |\n\n无运行时依赖。编译后为单个静态二进制文件。\n\n## 注意事项\n\n- 代理运行期间，`openrouter.ai`（或配置的 hijack 域名）在本机解析到 localhost，**真实的 OpenRouter 服务不可访问**\n- 监听 443 端口和修改 `/etc/hosts` 需要管理员权限\n- `upstream_protocol = \"anthropic\"` 模式要求上游兼容 Anthropic Messages API（`POST /v1/messages`）；\n  `upstream_protocol = \"openai\"` 模式要求上游兼容 OpenAI Chat Completions API（`POST /v1/chat/completions`）\n- 自签 CA 仅影响本机，不会影响其他设备\n\n## 许可证\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasungta%2Ftrae-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasungta%2Ftrae-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasungta%2Ftrae-proxy/lists"}