前言¶
DeepSeek Harness(DSH)通过插件体系支持自定义模型提供方。CC Switch 是一个用于管理 Claude Code / Codex API 配置的工具。dsh-ccswitch-sync 插件用于读取 CC Switch 的本地数据库配置,将其转换为 DSH 的自定义提供方,并处理 API 密钥的写入,实现配置迁移与统一管理。
核心功能¶
- 配置同步:读取 CC Switch 的 SQLite 数据库(
~/.cc-switch/cc-switch.db),将其中的服务商和模型同步到 DSH 的llm-pi-ai路由。 - 自动映射:默认使用
cc-前缀命名路由(如cc-sub2api)。 - 协议适配:根据服务商类型自动选择协议(Codex 类型映射为
openai-responses或openai-completions,Claude 类型映射为anthropic-messages)。 - 模型发现:支持通过网关的
/models接口拉取模型列表,或读取本地模型目录(~/.codex/cc-switch-model-catalog.json)。 - 凭据管理:将 API 密钥写入 DSH 的凭据库(
~/.dsh/.credentials.yaml),不污染主配置文件。 - 工具支持:提供聊天指令和独立的 CLI 工具。
安装与启用¶
插件通过文件方式安装到 DSH Desktop 的对应 profile:
- 修改
~/.dsh/profiles/<profile>/package.json,添加依赖:
// ~/.dsh/profiles/<profile>/package.json
"dependencies": { "dsh-ccswitch-sync": "file:../../plugins/dsh-ccswitch-sync" }
- 在
dsh.profile.bundles中加入"dsh-ccswitch-sync"。 - 重启 DSH Desktop。
使用方法¶
插件安装后提供两种触发方式:
聊天命令¶
| 命令 | 说明 |
|---|---|
/ccswitch-sync |
手动执行一次同步 |
/ccswitch-status |
查看当前映射计划(路由、协议、模型) |
独立 CLI¶
# 预览映射计划(默认)
node cli.mjs --dry-run
# 实际写入配置(自动备份原文件)
node cli.mjs --apply
# 实际写入并删除来源已不存在的路由
node cli.mjs --apply --remove-stale
# 自定义路由前缀
node cli.mjs --apply --prefix mycc
# 排除特定路由
node cli.mjs --apply --exclude cc-deepseek,cc-deepseek-codex
配置项¶
通过 ~/.dsh/profiles/<profile>/cordis.patch.yml 进行配置:
| 字段 | 默认值 | 说明 |
|---|---|---|
ccswitchDbPath |
~/.cc-switch/cc-switch.db |
CC Switch 数据库路径 |
routePrefix |
cc |
导入路由的前缀 |
syncOnStart |
false |
启动时是否自动同步(默认关闭) |
watchDb |
false |
是否监听数据库变化自动重同步 |
removeStale |
false |
删除来源已消失的 cc-* 路由 |
excludeRoutes |
[] |
永不导入的路由列表 |
discoverModels |
true |
是否通过 /models 接口发现模型 |
maxDiscoveredModels |
50 |
每个提供方最多导入的模型数 |
discoverModelsTimeoutMs |
6000 |
模型发现单次请求超时时间(毫秒) |
注意事项¶
- 手动触发:默认不自动拉取,避免重启或配置变化时意外覆盖手动修改的内容。
- 覆盖风险:同步会覆盖
cc-*前缀下已有的提供方和模型。如需保护手动调整的内容,可使用excludeRoutes配置。 - 密钥存储:API 密钥以环境变量引用形式写入
~/.dsh/.credentials.yaml,文件权限为 600。 - 卸载:需从
package.json移除依赖与 bundle 条目,执行安装命令并重启 DSH。
结语¶
该插件适用于需要将 CC Switch 的多服务商配置迁移到 DSH 管理场景。通过 CLI 工具,可以方便地进行预览、调整和批量更新。