SuperAPI AI 工具集

claude-switch-models-setup

智能体与模型

查看项目

更新于 10-15 16:26

技能介绍

用途

该技能为 Claude Code CLI 创建一套“隔离但共享”的配置文件(profile)系统。每个配置文件拥有自己的 .claude.json 状态文件(保存提供商凭据和会话历史),同时共享技能、项目、钩子脚本、智能体和已安装插件状态。最终效果是:你可以在一个终端窗口用 Kimi,另一个用 DeepSeek,再一个用 Anthropic,每个都作为完全独立的 Claude Code 进程运行,配置互不串扰。

主要能力

  • 配置文件隔离:通过 CLAUDE_CONFIG_DIR 指定配置根目录,每个配置文件位于 ~/.claude-profiles/<name>/,拥有独立的 .claude.json。
  • 内容目录共享:skills/、projects/、hooks/、agents/、settings/ 等目录通过符号链接回主 ~/.claude/ 目录,只需维护一份。注意共享的是钩子脚本而非钩子注册,注册位于各配置文件自己的 settings.json 中。
  • 配置层收敛:sync-profile-settings.py 作为 SessionStart 钩子运行,把默认配置文件 settings.json 的每个键复制到所有配置文件,但排除身份键(顶层 model 和 advisorModel,以及携带提供商路由或 Anthropic 原生隔离的 env 变量如 ANTHROPIC_*、CLAUDE_CODE_SUBAGENT_MODEL、ENABLE_TOOL_SEARCH、DISABLE_GROWTHBOOK/TELEMETRY/AUTOUPDATER)。
  • 状态层同步:除 settings.json 外,Claude Code 还维护每个配置文件的状态文件(主配置文件为 ~/.claude.json,第三方配置文件为 <profile>/.claude.json),部分行为设置(如 workflowSizeGuideline、通知/UI 偏好)只存在于此。收敛器通过脚本内的三向分类器同步允许列表中的行为键,状态/缓存/计数器/迁移/凭据类键永不触碰,未知且不同的键会被报告。
  • 插件处理:marketplace 内容和安装状态共享,但每个配置文件保留自己的 known_marketplaces.json,因为 Claude 用 path.resolve() 验证 installLocation(不解析符号链接)。claude-plugins-sync.py 构建并维护该结构,并把默认 settings.json 的 enabledPlugins 镜像到各配置文件。
  • 本地源同步:保持已批准的源支持路由在各主机上对齐,使用共享的跨进程锁,因为用户常从 tmux 或多个终端同时打开多个提供商窗口。
  • 提供商路由:通过 ~/.claude/settings/<name>.json 设置 ANTHROPIC_MODEL、ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN。该文件是完整 settings 文件而非 env 文件,是收敛器永不触碰的一层。
  • 每配置文件思考强度:第三方配置文件如需不同强度,在其 ~/.claude/settings/<name>.json 的 env 中固定 CLAUDE_CODE_EFFORT_LEVEL(如 "max")。

使用方式

一键设置流程(当用户说“设置 Claude Code 配置文件”或“我想在不同窗口用 Kimi 和 DeepSeek”时):

  1. 检查前置条件:claude CLI 已安装(which claude)、shell 为 zsh 或 bash、python3 可用。
  2. 安装配置文件管理脚本——用符号链接而非复制。在已检出本仓库的机器上运行捆绑安装器: <absolute-path-to-this-repo>/daymade-claude-code/claude-switch-models-setup/scripts/setup.sh scripts/setup.sh 是确切部署集的唯一来源,把每个助手链接到 ~/.config/claude-switch-models-setup/,并仅在激活清单不存在时播种它。无需 chmod 步骤。
  3. 添加 shell 集成:在 ~/.zshrc 或 ~/.bashrc 中 source 配置文件管理器,添加别名 csk、csd、csg,其他按账户/套餐的变体别名需手动添加。然后运行 source ~/.zshrc 或打开新终端。
  4. 生成提供商设置文件。

启动时使用 claude-profile 配合 claude --settings ~/.claude/settings/<name>.json。注意:单独使用 CLAUDE_CONFIG_DIR=<profile> claude -p ... 会提示“Not logged in · Please run /login”,因为令牌在提供商文件中,必须传 --settings。

适用场景

  • 需要在不同终端窗口同时使用多个模型提供商(Kimi、MiniMax、DeepSeek、GLM、StepFun、Anthropic)进行 Claude Code 开发。
  • 希望各提供商配置互不干扰,同时共享技能、项目、钩子和插件。
  • 需要为不同提供商设置不同的思考强度或权限(如按配置文件拒绝 WebSearch 和 WebFetch)。

限制与注意事项

  • 收敛器没有单配置文件模式:每次调用都覆盖 ~/.claude-profiles/* 加 $CLAUDE_CONFIG_DIR,没有标志可缩小范围。要按需收敛单个配置文件,可把 CLAUDE_PROFILES_ROOT 指向只含它的目录,或运行 --check 读取每配置文件行。
  • 默认配置文件自身的文件是源,永不被写入。
  • 切勿对合成主配置运行收敛器:若把 CLAUDE_MAIN_CONFIG_DIR 指向一次性目录而 CLAUDE_PROFILES_ROOT 或 $CLAUDE_CONFIG_DIR 仍指向真实配置文件,会把真实配置文件收敛向合成主配置,其整个 hooks 对象被替换,env 获得假主配置的键,该配置文件中注册的所有守卫将停止触发。合成主配置只有在配置文件根和 $CLAUDE_CONFIG_DIR 也是合成且可丢弃时才安全。
  • 手动运行前检查作用域两半:echo "MAIN=$CLAUDE_MAIN_CONFIG_DIR ROOT=$CLAUDE_PROFILES_ROOT ACTIVE=$CLAUDE_CONFIG_DIR"。未设置 CLAUDE_PROFILES_ROOT 不是绿灯——它默认指向真实的 ~/.claude-profiles。
  • 测试夹具必须从清理过的基环境构建子进程环境:env -u CLAUDE_CONFIG_DIR -u CLAUDE_MAIN_CONFIG_DIR -u CLAUDE_PROFILES_ROOT …
  • 退出码:无参数运行无条件退出 0(会话启动钩子,永不阻塞会话);--check 在漂移时退出 1,主文件损坏或配置文件无法读取时退出 2;--all 写入并在同样两种失败时退出 2。
  • 符号链接可能被原子保存编辑器、rsync 或误用 cp 变回真实文件而不提示,需定期复查。本技能未捆绑周期性检查。
  • 在无仓库的机器上,从技能包复制安装器列出的脚本,但仓库修复不会到达该机器,直到再次复制。
  • 在 LaunchAgent 运行固定插件副本的机器上,链接指向该副本的版本目录,仅在推进 pin 时移动;安装器拒绝把此类机器重新链接到检出(CSMS_SETUP_RELINK_TO_CHECKOUT=1 可覆盖)。
  • 关于本地源完整架构,修改这些脚本前请阅读 references/local-source-sync-architecture.md。
  • 在已批准的独立 Fleet 克隆中编写技能,请使用 leased-authoring 所有者流程。