[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81859":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":14,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":17,"hasPages":15,"topics":18,"createdAt":10,"pushedAt":10,"updatedAt":19,"readmeContent":20,"aiSummary":21,"trendingCount":13,"starSnapshotCount":13,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},81859,"LRP-MNM","dolphin1308\u002FLRP-MNM","dolphin1308","cowork模型名称代理映射","",null,"Rust",24,0,37,false,"master",true,[],"2026-06-12 04:01:35","# Claude Proxy — 本地反向代理 · 模型名映射工具\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTauri-2.x-FFC131?logo=tauri&logoColor=white\" alt=\"Tauri 2\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-1.77+-DEA584?logo=rust&logoColor=white\" alt=\"Rust\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61DAFB?logo=react&logoColor=white\" alt=\"React\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlatform-Windows%20%7C%20macOS%20%7C%20Linux-blue\" alt=\"Platform\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green\" alt=\"License\">\n\u003C\u002Fp>\n\n一个基于 Tauri 2 + React 的本地反向代理工具，用于拦截 Claude 桌面客户端的 API 请求，将模型名称动态替换后转发至第三方 API，并以 SSE 流式方式透传响应。\n\n---\n\n## 目录\n\n- [它能做什么](#它能做什么)\n- [工作原理](#工作原理)\n- [项目结构](#项目结构)\n- [环境要求](#环境要求)\n- [开发与运行](#开发与运行)\n- [在 Claude 桌面端中使用](#在-claude-桌面端中使用)\n- [构建与打包](#构建与打包)\n- [GitHub Actions 自动发布](#github-actions-自动发布)\n- [常见问题](#常见问题)\n- [License](#license)\n\n---\n\n## 它能做什么\n\nClaude 桌面客户端会对请求中的模型名称进行校验，只允许官方模型名（如 `claude-3-5-sonnet-20241022`）。直接使用第三方 API 会提示连接失败：\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"question.jpg\" alt=\"Claude 客户端 API 连接失败\" width=\"600\">\n\u003C\u002Fp>\n\n\n本工具在本地启动一个 HTTP 代理服务，解决上述问题：\n\n1. **拦截请求** — 监听本地端口，接收 Claude 客户端发出的 API 请求\n2. **替换模型名** — 将 JSON Body 中的 `model` 字段按映射规则替换为目标模型名\n3. **透传 API Key** — 客户端携带的 `Authorization` 头原样转发，无需手动配置密钥\n4. **流式转发** — 支持 SSE（Server-Sent Events）实时透传，保留打字机效果\n5. **跨平台** — 一套代码，Windows \u002F macOS \u002F Linux 三平台原生运行\n\n---\n\n## 工作原理\n\n```\n┌──────────────────┐         ┌───────────────────────┐         ┌──────────────────┐\n│                  │  HTTP    │                       │  HTTP    │                  │\n│  Claude Desktop  │ ──────→ │   本地代理 (本工具)     │ ──────→ │  第三方 API       │\n│  Client          │         │   127.0.0.1:8080      │         │  (DeepSeek, etc.) │\n│                  │ ←────── │                       │ ←────── │                  │\n└──────────────────┘  SSE    │  model: A → B          │  SSE    └──────────────────┘\n                             │  auth: 原样透传         │\n                             └───────────────────────┘\n```\n\n### 请求流程\n\n1. Claude 客户端将 BaseURL 指向 `http:\u002F\u002F127.0.0.1:8080`，发出 POST 请求（通常为 `\u002Fv1\u002Fmessages`）\n2. 代理服务（axum）接收请求，解析 HTTP 头部和 JSON Body\n3. 查找模型映射表，将 `model` 字段从客户端模型名替换为目标模型名\n4. 将客户端的 `Authorization` 头原样保留，连同修改后的请求一起转发至真实 API\n5. 收到第三方 API 的 SSE 流式响应后，通过 reqwest streaming 实时透传回客户端\n\n### 技术栈\n\n| 层 | 技术 | 职责 |\n|---|---|---|\n| 前端 | React 19 + Vite | UI 界面、用户交互、日志展示 |\n| 通信 | Tauri IPC (`invoke` \u002F `listen`) | 前端调用 Rust 命令、接收实时日志 |\n| 后端 | Rust + axum + reqwest | HTTP 代理、请求解析、模型名替换、SSE 流式转发 |\n\n---\n\n## 项目结构\n\n```\nLRP_MNM\u002F\n├── index.html                  # HTML 入口\n├── package.json                # Node.js 依赖与脚本\n├── vite.config.js              # Vite 构建配置\n├── src\u002F\n│   ├── main.jsx                # React 入口\n│   ├── App.jsx                 # 主界面组件\n│   └── App.css                 # 马卡龙浅色样式\n├── src-tauri\u002F\n│   ├── Cargo.toml              # Rust 依赖\n│   ├── tauri.conf.json         # Tauri 配置（窗口、打包）\n│   ├── build.rs                # Tauri 构建脚本\n│   ├── src\u002F\n│   │   ├── main.rs             # Rust 入口\n│   │   ├── lib.rs              # Tauri Builder 注册\n│   │   ├── proxy.rs            # 代理服务器核心逻辑\n│   │   └── commands.rs         # Tauri 命令层\n│   ├── capabilities\u002F\n│   │   └── default.json        # 权限配置\n│   └── icons\u002F                  # 应用图标\n└── .github\u002F\n    └── workflows\u002F\n        └── build.yml           # GitHub Actions CI\u002FCD\n```\n\n| 文件 | 职责 |\n|------|------|\n| `proxy.rs` | axum 监听、HTTP 解析、模型名替换、reqwest 转发、SSE 流式透传 |\n| `commands.rs` | Tauri 命令（start_proxy \u002F stop_proxy \u002F get_status \u002F get_log_buffer） |\n| `lib.rs` | 注册命令、管理全局代理状态 |\n| `App.jsx` | 界面布局、配置面板、映射管理、日志展示 |\n\n---\n\n## 环境要求\n\n- **Node.js** 18+（推荐 20 LTS）\n- **Rust** 1.77+（[安装](https:\u002F\u002Frustup.rs\u002F)）\n- **系统依赖**（仅 Linux）：\n\n```bash\nsudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf\n```\n\n---\n\n## 开发与运行\n\n### 安装依赖\n\n```bash\n# 安装前端依赖\nnpm install\n```\n\n### 开发模式\n\n```bash\nnpm run tauri dev\n```\n\n启动后会打开一个原生窗口，前端支持热更新，Rust 代码修改后会自动重新编译。\n\n### 生产构建\n\n```bash\nnpm run tauri build\n```\n\n构建产物在 `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002F` 下：\n- Windows: `.msi` + `.exe` 安装包\n- macOS: `.dmg`\n- Linux: `.deb` + `.AppImage`\n\n---\n\n## 在 Claude 桌面端中使用\n\n### 第 1 步：启动代理\n\n运行本工具，在顶部控制栏中：\n- 设置端口（默认 `8080`）\n- 点击 **Start** 启动代理\n- 状态栏显示 `Running · port 8080` 表示启动成功\n\n### 第 2 步：配置代理转发\n\n在右侧面板中：\n- **Target API** — 填入第三方 API 地址，如 `https:\u002F\u002Fapi.deepseek.com`\n- **Model Mapping** — 添加映射规则：\n  - 左侧填 Claude 客户端会发送的模型名（如 `claude-3-5-sonnet-20241022`）\n  - 右侧填你实际想调用的模型名（如 `deepseek-chat`）\n- 支持添加多条映射规则\n\n### 第 3 步：配置 Claude 客户端\n\n打开 Claude 桌面客户端设置，选择 **Use custom API base URL**，填入代理地址：\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"address.png\" alt=\"Claude 客户端 API URL 配置\" width=\"500\">\n\u003C\u002Fp>\n\n\n| 配置项 | 填写内容 |\n|--------|---------|\n| API Base URL | `http:\u002F\u002F127.0.0.1:8080` |\n| API Key | 保持你自己的 Key 不变（会自动透传给第三方 API） |\n| Model | 选择任意官方模型名（会被代理自动替换） |\n\n### 第 4 步：正常使用\n\n配置完成后正常使用 Claude 即可。代理会自动拦截请求、替换模型名、转发至第三方 API 并流式透传响应。\n\n底部日志区可查看每次请求的模型映射和响应状态，点击 **Hide** 可收起日志。\n\n---\n\n## 构建与打包\n\nTauri 内置跨平台打包能力，一条命令即可生成安装包：\n\n```bash\nnpm run tauri build\n```\n\n| 平台 | 产出格式 | 产出位置 |\n|------|---------|---------|\n| Windows | `.msi` + `.exe` | `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002Fmsi\u002F` |\n| macOS | `.dmg` | `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002Fdmg\u002F` |\n| Linux | `.deb` \u002F `.AppImage` | `src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002Fdeb\u002F` |\n\n无需手动收集依赖，Tauri 自动处理。\n\n---\n\n## GitHub Actions 自动发布\n\n项目已配置 GitHub Actions，**推送到 main 分支即自动构建并发布**：\n\n```bash\ngit add .\ngit commit -m \"release: v1.0.0\"\ngit push\n```\n\nActions 会自动完成：\n1. 从 `tauri.conf.json` 读取版本号\n2. 自动创建 git 标签（如 `v1.0.0`）\n3. 在 Windows \u002F macOS \u002F Linux 三平台并行构建\n4. 将安装包上传至 GitHub Releases 页面\n\n你可以在仓库的 [Releases](..\u002F..\u002Freleases) 页面直接下载对应平台的安装包。\n\n---\n\n## 常见问题\n\n### Q: 启动代理后 Claude 客户端无法连接？\n\n确认 Claude 客户端中的 BaseURL 已正确设置为 `http:\u002F\u002F127.0.0.1:8080`（注意是 `http` 不是 `https`）。\n\n### Q: 提示端口被占用？\n\n更换一个未被占用的端口号（如 8081、9090 等），然后重启代理。\n\n### Q: 请求转发成功但模型没有被替换？\n\n检查右侧面板的映射规则，确保\"客户端模型名\"与 Claude 实际发送的模型名完全一致（区分大小写）。\n\n### Q: SSE 流式响应卡顿？\n\n本工具使用 reqwest streaming 逐块转发，正常情况下不会有卡顿。如果出现卡顿，检查网络连接是否稳定。\n\n### Q: API Key 安全吗？\n\n本工具不会存储或修改 API Key，客户端携带的 `Authorization` 头会原样透传给第三方 API。\n\n### Q: macOS 提示\"无法打开，因为无法验证开发者\"？\n\n前往 `系统设置 → 隐私与安全性`，点击\"仍要打开\"即可。\n\n---\n\n## License\n\nMIT License\n\n---\n\n> 如果这个项目对你有帮助，欢迎 Star\n","Claude Proxy 是一个基于 Tauri 2 和 React 的本地反向代理工具，主要用于拦截 Claude 桌面客户端的 API 请求，并将请求中的模型名称动态替换后转发至第三方 API。其核心功能包括拦截和解析 HTTP 请求、按预设规则替换 JSON Body 中的 `model` 字段、透传客户端携带的 `Authorization` 头以及支持 SSE 流式响应传输。该工具采用 Rust 语言开发，利用 axum 和 reqwest 库实现高效的 HTTP 代理服务，前端则使用 React 构建用户界面。适用于需要绕过 Claude 客户端对官方模型名限制的场景，尤其适合开发者在本地测试或集成第三方 AI 服务时使用。",2,"2026-06-11 04:06:59","CREATED_QUERY"]