Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sync-config-to-ccswitch

把 Claude Code 的自定义配置同步到 cc-switch 模板,防止切换 provider 时配置被覆盖丢失。

License: MIT

问题背景

cc-switch 切换 provider(含热切换)时,会用其数据库里的模板整体覆盖 ~/.claude/settings.json。凡是模板里没有的键都会被清掉,导致:

  • 后装的插件(enabledPlugins)从 /plugin 列表消失、需重新安装
  • worktree.bgIsolation、hooks、permissions、statusLine 等自定义配置被清
  • 自定义 pluginConfigs 等配置丢失

cc-switch 官方确认这是设计决策,不计划修复(GitHub issue 1198、1570、3631 均关闭),官方唯一方案是手动维护模板。

方案

本工具用 diff 同步解决:以磁盘 ~/.claude/settings.json 为真相源,与 cc-switch 模板对比,把缺失的自定义配置合并进模板。

  • env 跳过:cc-switch 管理 provider 专属配置(API key、base_url、模型映射),本工具不动
  • 添加自动:磁盘有、模板无的键 → 自动加入模板,无风险
  • 删除需确认:磁盘无、模板有的键 → 展示待删清单,--yes 确认后才删,避免误删被覆盖的配置
  • 幂等:无差异时直接退出,不改库

安装

通过插件 marketplace 安装(在 Claude Code 会话中执行):

/plugin marketplace add Spirit597/sync-config-to-ccswitch
/plugin install sync-config-to-ccswitch@sync-config-to-ccswitch

或使用 CLI:

claude plugin marketplace add Spirit597/sync-config-to-ccswitch
claude plugin install sync-config-to-ccswitch@sync-config-to-ccswitch

安装后 /reload-plugins 生效。

需要 Python 3 和 cc-switch。

使用

在 Claude Code 中触发(说"同步配置到 cc-switch"、"插件又丢了"等,或直接调用 /sync-config-to-ccswitch):

脚本自动完成:

  1. 读取磁盘 ~/.claude/settings.json(跳过 env)与 cc-switch 模板
  2. 添加缺失键(自动)
  3. 展示待删清单(需 --yes 确认后删除)
  4. 每次写库前备份 cc-switch 数据库(保留 10 份)

输出示例

[sync] 已添加 2 个键:
  + worktree
  + hooks
[sync] 检测到 1 个待删除项(磁盘已无,模板仍有):
  - enabledPlugins:old-plugin@repo
[sync] 未执行删除。确认无误后加 --yes 重新运行。

工作原理

cc-switch 的 provider 专属配置全在 settings_config.env.*(源码 pointer("/env/ANTHROPIC_BASE_URL") 证实)。env 之外的自定义键(enabledPlugins、worktree、hooks、permissions、statusLine、pluginConfigs、model、language、theme 等)不在 cc-switch 管理范围,是本工具同步的对象。

enabledPlugins 条目以 installed_plugins.json(cc-switch 不碰的权威清单)判断是否真卸载:插件仍在安装清单(user scope)即使磁盘暂时没有也保留;只有真卸载才删除。local scope 插件(绑定特定项目)不进全局模板。

安全

  • 每次写库前自动备份 cc-switch 数据库(保留最近 10 份),可回滚
  • 不碰 env、不动 API key
  • 删除需用户确认,避免误删
  • 脚本幂等,无差异时不改库

对比同类工具

sync-config-to-ccswitch ccswitch-sync
同步范围 env 之外全部键(diff 即定义) 白名单字段(enabledPlugins/statusLine 等)
删除 需确认(防误删被覆盖配置) 无
判断真卸载 installed_plugins.json 权威判断 仅对比 enabledPlugins

License

MIT

About

Sync Claude Code custom config to cc-switch template, prevent config loss on provider switch.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages