claude-desktop-deepseek-3p
Use when modifying Claude Desktop (macOS or Windows) to support GPT / Gemini / DeepSeek or any Anthropic-compatible 3P gateway, especially for model-not-shown bugs, picker filter bypass, effort-Max greyed-out, update blocking, ad-hoc signing, ASAR integrity errors, startup repair, or Chinese localization across both platforms.
소스 정보
- 저장소
- crazymsn/claude-chinese
- 최근 소스 활동
- 2026년 5월 20일 10:02
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- claude-desktop-deepseek-3p
- description
- Use when modifying Claude Desktop (macOS or Windows) to support GPT / Gemini / DeepSeek or any Anthropic-compatible 3P gateway, especially for model-not-shown bugs, picker filter bypass, effort-Max greyed-out, update blocking, ad-hoc signing, ASAR integrity errors, startup repair, or Chinese localization across both platforms.
# Claude Desktop 3P 改包(跨平台 / 多 provider)
## 0. 第一件事:自动识别平台
macOS 和 Windows 在这件事上几乎没有共享步骤 —— 命令、路径、签名机制、ASAR Integrity 写回位置、禁更新方式都不同。**任何动手步骤之前,先识别平台。**
### 0.1 单条命令搞定
```
node scripts/detect_platform.js
```
这是一个跨平台 Node 脚本,在 macOS 的 zsh / bash 里和 Windows 的 PowerShell / cmd 里跑同一条命令,输出完全一致的格式。它一次报出:
- 当前 OS(macOS / Windows / 其它)和架构
- 已安装的 Claude Desktop 原版路径和版本
- 已存在的 fork(如果有)
- userData / configLibrary / 当前最近修改的 provider 配置
- **你应该读哪份 reference doc**
- **你应该用哪几个 scripts**
- 三条可直接粘贴的下一步命令
加 `--json` 切换为脚本可解析的输出:
```
node scripts/detect_platform.js --json
```
退出码:`0` 正常,`2` 平台不支持,`3` 没找到 Claude Desktop。
### 0.2 没装 Node 时的手动识别
| 现象 | 平台 | 对应 reference doc |
|---|---|---|
| 命令 `uname -s` 返回 `Darwin`,或存在 `/Applications/Claude.app` | macOS | `references/full-process-mac.md` |
| PowerShell `$IsWindows` 是 `True`,或存在 `%LocalAppData%\AnthropicClaude\` | Windows | `references/full-process-windows.md` |
| 两者都不是 | 不支持。本 skill 不覆盖 Linux / iOS / Android | — |
### 0.3 调用本 skill 的 Claude(助手)必须遵守
如果你是被通过本 skill 触发的 Claude 实例,**第一个动作必须是平台识别**:
1. 先用最便宜的方式判断:
- Bash / zsh 里:`uname -s`(Mac 返回 `Darwin`)
- PowerShell 里:`$env:OS`(Windows 返回 `Windows_NT`)—— 这个在 PowerShell **5.1**(Win 10/11 默认)和 **7+** 上都可靠。不要用 `$IsWindows` / `$IsMacOS` / `$PSVersionTable.OS`,这些只在 PowerShell 6+ 上存在
2. 不确定时跑 `node scripts/detect_platform.js`
3. **只读对应平台的 `full-process-*.md`**,不要混着读
4. **只用对应平台的 scripts**,看到 Bash 流程里要求 PowerShell 命令、或反过来,视为错误信号 —— 通常意味着平台识别错了
平台守卫已经内置在 `apply_patches.sh|ps1` 和 `verify_claude_fork.sh|ps1` 的开头(用 `uname -s` 和 `$env:OS`),跑错平台会立即退出并给出正确命令。
### 0.4 前提依赖(两平台共用)
本 skill 的脚本依赖以下工具,**跑 `apply_patches` 之前先确认装好**:
| 工具 | 用途 | macOS 安装 | Windows 安装 |
|---|---|---|---|
| Node.js + npm | 跑 `@electron/asar`、`detect_platform.js`、`list_models.{sh,ps1}` 的 JSON 解析 | `brew install node` | https://nodejs.org/ |
| `@electron/asar` | 解包/重打 `app.asar` | `npx -y @electron/asar` 首次自动下载 | 同左 |
| Python 3 | `apply_patches.sh` 用 here-doc 跑正则 patch | `xcode-select --install`(macOS 12.3+ 默认不带) | (Windows 流程用 PowerShell,不需要 Python) |
| `curl` | 探测中转 endpoint | macOS 自带 | Win 10+ 自带 |
> **不依赖 `jq`**:早期版本的 `list_models.sh` 用过 `jq`,已重写为 `bash + node -e`,因为 Node 反正是强依赖,没必要再要求一个独立的 JSON 工具。
首次跑 `npx -y @electron/asar` 时会从 npm registry 下载 `@electron/asar`,需要网络。如果你在受限网络下,先在能联网的机器上 `npm install -g @electron/asar`,再把全局 `node_modules` 拷到目标机。
### 0.5 已知限制(必读)
**本 skill 的命令清单和正则没有在真机 fork 上端到端验证过。** 设计基于:
- Claude Desktop 1.6608.2 的实测样本(来自原始 DeepSeek 改包流程,部分字符串值如 ASAR Integrity hash 是真实值)
- 上游版本变化后,混淆函数名(`vzt`、`YLA`、`lai` 等)和 chunk 文件名几乎必然变化
所以:
- `apply_patches.sh|ps1` 用的是按**特征字符串**定位的正则,不依赖混淆名 —— 大概率跨版本兼容,但**会有某次版本升级后正则不匹配**。脚本会打印 `WARN ... 没匹配上`,需要人工对照实际 chunk 调整。
- `verify_claude_fork.sh|ps1` 用的是反向断言("原始限制字符串是否还在"),同样靠特征字符串。
- `https://api.meding.site` 上的 `/v1/models` 端点和 `/v1/messages` 端点已经实测可用(详见 conversation 历史或 `providers.md` §4 的实测样本)。但 fork 装上后的 UI 端到端流程**仍需在你的机器上验证一次**。
如果哪一步报 `WARN` 或失败,把对应的报错文案 / chunk 片段贴出来,调整正则比从零定位要快。
------
## 核心判断
这个 skill 的重点不是背具体 chunk 文件名,而是掌握一套稳定思路:
1. **永远 fork 原版,不直接改官方包**
2. **永远优先保住 app 身份稳定**(CFBundleIdentifier / Windows AppUserModelID 不动)
3. **按特征字符串定位,不迷信混淆函数名**
4. **每改一轮,都重新签名(或处理 SmartScreen)并验证启动**
如果只记住一句话,就是:
**Claude Desktop 这种 Electron 客户端,最怕"改得多",真正有效的是"边界清楚地改"。**
## 适用场景
在这些情况使用本 skill:
- Claude Desktop 已支持 3P gateway,但拒绝 GPT / Gemini / DeepSeek 这类非 Anthropic catalog 模型
- `inferenceModels` 配好了,模型选择器里却不显示
- Claude Code 对第三方模型隐藏了 effort 菜单或 Max 档位
- 用 Anthropic-compatible 中转(如 `https://api.meding.site`)做 GPT / Gemini / DeepSeek 一站式接入
- 需要在 macOS **或** Windows 上禁用更新检查
- 需要做中文汉化(两平台共用渲染层资源)
- 改过几轮之后,app 开始闪退、签名坏掉、功能丢失,需要修复
## 绝对不要碰的点
跨平台通用:
1. 不要直接改原版包(`/Applications/Claude.app` 或 `%LocalAppData%\AnthropicClaude\`)
2. 不要改 `CFBundleIdentifier` / Windows AppUserModelID
3. 不要把备份文件(`*.before-*`、`*.bak`)放进 `.app` 或 install 目录里面
4. 不要看到签名/integrity 校验通过就以为万事大吉,必须看实际启动
macOS 专属:
5. 不要改 `CFBundleName`,只改 `CFBundleDisplayName`
6. 不要反复改 `.app` 包路径
7. 不要把主 App entitlements 用 `--deep` 粗暴套给 Helper / Framework
Windows 专属:
8. 不要直接改 Squirrel 的 `app-<version>\` 版本号目录名(更新逻辑依赖它)
9. 不要为了关更新去改 hosts、改 DNS、改防火墙,先用配置项或删 `Update.exe`
10. 不要给已经被改的 `.exe` 重签社区 cert,伪官方签名会被 Defender 标记
最稳的身份配置(两平台对照):
| 字段 | macOS | Windows |
|---|---|---|
| 内部标识 | `CFBundleIdentifier = com.anthropic.claudefordesktop` | `AppUserModelID = com.anthropic.claudefordesktop`(注册表里) |
| 内部名 | `CFBundleName = Claude` | exe 名保持 `Claude.exe` |
| 显示名 | 改 `CFBundleDisplayName` | 改快捷方式 / Start Menu 显示名(不要改 exe 自身) |
## 标准思路
### 1. 先确认 3P 配置没问题
先看:
- `inferenceProvider`
- `inferenceGatewayBaseUrl`
- `inferenceModels`
如果配置本身不对,先别改包。
如果你的目标是接 GPT / Gemini / DeepSeek 三家,**用一个 Anthropic-compatible 中转网关把三家统一暴露**,比给每家分别配 provider 实际得多。本 skill 默认示例使用 `https://api.meding.site`,模型清单通过 `/v1/models` 自动发现,详见 `references/providers.md`。
### 2. 先 fork,再改 fork
推荐路径:
- **macOS**:原版 `/Applications/Claude.app` → fork `~/Applications/Claude-3p.app`
- **Windows**:原版 `%LocalAppData%\AnthropicClaude\app-<version>\` → fork `%LocalAppData%\Claude-3p\app-<version>\`(建议同时复制外层的 wrapper exe,否则更新逻辑会找不到入口)
后续所有 patch 都只打在 fork 上。
### 3. 主进程 patch 只改必要限制
核心通常是两类(**两平台共用同一份 `app.asar`,patch 相同**):
- 绕过 3P provider 对非 Anthropic 模型的健康检查
- 去掉模型 picker 对自定义模型的二次过滤
定位方式:
- 搜报错文案("inferenceModels: configured model")
- 搜配置字段名
- 搜模型校验相关特征字符串
不要依赖旧版本里某个混淆函数名(每次升级都会变)。
### 4. Claude Code 相关 patch 要分层看
不要把这些混成一件事:
- 模型能不能显示
- effort 控件会不会出现
- `Max` / `Extra high` 会不会被过滤
- 当前页面链路到底会不会把参数传下去
也就是说,**"看见一个 selector"** 和 **"后端真的吃这个参数"** 是两回事。
### 5. 禁用更新优先走轻方案
跨平台优先级:
1. 优先使用官方配置项(如 `disableAutoUpdates`,写入 provider 配置 JSON)
2. macOS:patch 主进程里 Squirrel.Mac 的检查入口
3. Windows:在 fork 内删除或破坏 `Update.exe`(Squirrel.Windows),或把外层 `app-update.yml` 的 URL 指到不可达地址
4. 最后才考虑改更新源、改 hosts、搞全局网络封锁(**不推荐**)
### 6. 汉化优先走官方 locale 机制
跨平台优先级(详见 `references/i18n-localization.md`):
1. `resources/*.json` 顶层语言资源(两平台路径相同,只是绝对路径不同)
2. `resources/zh-Hans.lproj/`(**仅 macOS**,Windows 不存在 lproj 概念)
3. `resources/ion-dist/i18n/*.json`(两平台共用,**这是大头**)
4. `resources/ion-dist/assets/v1/*.js` 的硬编码补丁(两平台共用)
也就是说:
**先词库,后 chunk。两平台改的是同一份 `resources/`,差异只是入口路径。**
如果某些页面切换到日语能变、切换到中文不变,通常不是"中文切换坏了",而是中文那层资源没补齐。
### 7. 闪退修复的正确思路
如果改到最后 app 闪退,不要本能地继续在坏包上堆 patch。
优先做:
1. 先确认是不是签名 / Authenticode / integrity 问题
2. 再确认是不是运行时问题(看 crash log:macOS `~/Library/Logs/DiagnosticReports/`、Windows 事件查看器 + `%LocalAppData%\Claude-3p\Logs\`)
3. 如果包已经被改脏,直接用原版 app 重建一个干净底包
4. 然后**有意识地迁移真正需要的 patch**
注意:
**从干净底包重建时,最容易丢的是 renderer chunk 里的点对点汉化补丁。**
## 最小可用流程
如果你只是要做一个"可用的 3P 多模型修改包",最小流程就是:
1. fork 原版 app(按平台选 macOS / Windows 分支)
2. 改显示名(不改内部标识)
3. 解包 `app.asar`
4. patch 3P provider 检查
5. patch 模型 picker 过滤
6. 如需汉化,补 locale 文件 + ion-dist 词库
7. 如有残余硬编码,再 patch renderer chunk
8. 重新打包 `app.asar`
9. 必要时刷新 ASAR Integrity(macOS:Info.plist;Windows:Electron 22+ 起也会校验,方式见 Win 流程)
10. 配置 provider(指向 `https://api.meding.site` 或你自己的 Anthropic-compatible 网关)
11. 用 `scripts/list_models.sh`(或 `.ps1`)拉一次 `/v1/models`,填入 `inferenceModels`
12. 重新签名(macOS 必做;Windows 可选)
13. 启动验证
平台具体命令分别看:
- `references/full-process-mac.md`
- `references/full-process-windows.md`
## 验证标准
至少做这几件事:
1. 签名 / Authenticode 校验通过(macOS:`codesign --verify --deep --strict`;Windows:`Get-AuthenticodeSignature`)
2. 实际启动 app
3. 确认进程不会秒退
4. 确认目标模型能显示(GPT / Gemini / DeepSeek 至少各点一个)
5. 确认关键 patch 真的生效(`scripts/verify_claude_fork.sh` 或 `.ps1`)
6. 确认 effort 菜单可用、Max 档可选、参数能传到后端
"合格的个人使用修改包"至少满足:
- 能启动
- 能签名 / Authenticode 通过
- 能走目标 3P gateway
- 关键功能正常
- 没有明显的更新 / 模型 / 启动回归
## 实战经验
### 经验 1:身份比名字重要
名字看起来像不像官方,不值得用 `CFBundleIdentifier` 或 AppUserModelID 去换。
### 经验 2:签名通过不代表运行时健康
`codesign --verify` / `Get-AuthenticodeSignature` 通过以后,仍然必须看启动是否稳定。macOS 还要单独看 ASAR Integrity;Windows 看 Electron 启动日志。
### 经验 3:备份不要进包
任何 `*.before-*`、`*.bak`、临时文件,放进 `.app` 或 install 目录里都可能把包搞脏。
### 经验 4:不要过度依赖旧版本文件名
chunk 文件名和函数名会变,特征字符串更可靠。
### 经验 5:汉化主战场不是顶层 300 多条小词库
真正的大头通常在:
- `ion-dist/i18n/*.json`
- `ion-dist/assets/v1/*.js`
### 经验 6:多 provider 用统一 gateway,不要给每家写一份 inferenceProvider
Claude Desktop 的 3P 配置允许多模型挂在同一个 `inferenceGatewayBaseUrl` 下。把 GPT / Gemini / DeepSeek 都挂到一个 Anthropic-compatible 中转上,是最简单的做法。
### 经验 7:Windows 没有 quarantine,但有 SmartScreen 和 Defender
Win 上改包后第一次启动会被 SmartScreen 拦一下,点"仍要运行"即可。如果 Defender 直接删文件,把 fork 目录加入排除列表。
## 推荐附带资源
入口(**必须先跑**):
- `node scripts/detect_platform.js` — 平台识别 + 安装探测 + 推荐下一步
按场景查阅:
- macOS 完整命令清单:`references/full-process-mac.md`
- Windows 完整命令清单:`references/full-process-windows.md`
- 汉化(两平台共用):`references/i18n-localization.md`
- Provider 配置 + meding.site + 模型自动识别:`references/providers.md`
- 踩坑总结(两平台):`references/troubleshooting.md`
体检脚本:
- macOS:`scripts/verify_claude_fork.sh <app>`
- Windows:`scripts/verify_claude_fork.ps1 <install-dir>`
自动 patch 脚本(半自动,仍需人工确认特征匹配):
- macOS:`scripts/apply_patches.sh <app>`
- Windows:`scripts/apply_patches.ps1 <install-dir>`
模型清单探测:
- macOS:`scripts/list_models.sh <base-url> <api-key>`
- Windows:`scripts/list_models.ps1 -BaseUrl <base-url> -ApiKey <api-key>`
GitHub에서 보기