全部技能 / 基础工具与工作流 / claude-switch-models-setup
基础工具与工作流 · daymade/claude-code-skills

claude-switch-models-setup

Set up and maintain multiple isolated Claude Code CLI profiles so students and power users can run different LLM providers (Kimi K3, Kimi K2.7 highspeed, MiniMax M3, MiniMax M2.7, GLM, DeepSeek, StepFun, Anthropic) in separate terminal windows at the same time. Use this skill whenever the user asks about multi-provider Claude setup, multiple Claude Code windows, switching models or the csk/csd/csg aliases, CLAUDE_CONFIG_DIR, the ~/.claude-profiles directory, or running Kimi/MiniMax/GLM/DeepSeek/StepFun alongside Anthropic. It also owns profile-drift troubleshooting — a third-party profile missing skills/hooks/plugins the default profile has, claude-profiles-doctor reporting a real directory where a symlink belongs, or settings not converging — and per-provider context-window configuration (the [1m] marker or explicit CLAUDE_CODE_MAX_CONTEXT_TOKENS).

风险提醒:橙色 · 评估后使用AI 侦查报告
作者 daymadeGitHub daymade/claude-code-skills ↗Stars 1385许可 MIT(仓库根 LICENSE:Copyright (c) 2025 daymade;GitHub API spdx MIT)commit d5c4678cb5
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

用 CLAUDE_CONFIG_DIR 做进程级隔离:每个 provider 一个 ~/.claude-profiles/<name>/ 目录、一份独立 .claude.json(凭证与会话历史),共享目录(skills/projects/hooks/agents/plugins 内容)symlink 回 ~/.claude,实现‘多窗口同时跑不同 provider 且配置不串’。

daymade-claude-code/claude-switch-models-setup/SKILL.md
The result: you can open one terminal with Kimi, another with DeepSeek, another with Anthropic — each running as a fully independent Claude Code process, without configuration bleed.
注:启动由 claude-profiles.sh 的 claude-profile 完成:CLAUDE_CONFIG_DIR=profile 目录 + claude --settings <provider>.json,provider 路由 env 由 ~/.claude/settings/<name>.json 提供。

settings.json 层做‘从默认 profile 收敛’:sync-profile-settings.py 注册为 SessionStart hook,把默认 profile 的 settings.json 各键复制进每个第三方 profile(保留 model/advisorModel 等身份键与 provider 路由 env 不覆盖),解决第三方窗口 hook/marketplace/env 漂移。

daymade-claude-code/claude-switch-models-setup/scripts/sync-profile-settings.py
Two denylists define the identity boundary — these are NEVER synced:
注:docstring 记录实测:9/9 profiles 零 hook、7/9 零 marketplace;ENV_KEY_DENYLIST 含 ANTHROPIC_* 前缀 + CLAUDE_CODE_SUBAGENT_MODEL 等隔离旗标。

.claude.json 行为键层做 allowlist 收敛 + 状态键三分类防护:workflowSizeGuideline 等少量行为键同步,state/credential/identity 键(oauthAccount/userID/token/secret…)永不同步,其余灰键只报告不自动写——防把一份 profile 的会话状态/账号身份抹到别的 profile。

daymade-claude-code/claude-switch-models-setup/scripts/sync-profile-settings.py
State keys (is_state_key(): prefixes/substrings/exact names) — per- profile runtime state, caches, counters, migration flags, identity and credentials. NEVER synced
注:实测动机(SKILL 正文):2026-08-17 workflowSizeGuideline:small 只在主 profile,Kimi 会话把 Dynamic Workflow 扇出 30+ agents。

插件状态特殊处理:known_marketplaces.json 必须 per-profile(Claude 用 path.resolve() 校验 installLocation、不解析 symlink,共享一份会让其它 profile 报 corrupted installLocation),claude-plugins-sync.py 重建每个 profile 的 per-profile 结构并镜像 enabledPlugins。

daymade-claude-code/claude-switch-models-setup/scripts/claude-plugins-sync.py
Each profile runs with its own CLAUDE_CONFIG_DIR, so `c` is a DIFFERENT literal string per profile
注:脚本 docstring 说明了把整个 plugins/ symlink 共享为何失败(最后写者赢)及 per-profile 修复结构。

maintainer 专用本地源码同步:sync-local-skill-sources.py 把本地 skill 源仓库以 symlink 接进 Claude plugin cache 与 Codex ~/.agents/skills、~/.codex/skills,默认 dry-run、--apply 才改;用 O_NOFOLLOW dirfd、renameat2/renameatx_np 独占改名、时间戳备份防并发与目录竞态。

daymade-claude-code/claude-switch-models-setup/scripts/sync-local-skill-sources.py
Real files/directories and third-party links are never deleted or automatically moved.
注:该脚本 2153 行是仓库内最重的安全工程:先冻结 source/root 身份再改动、受影响根目录以 no-follow 句柄打开、失败回滚(exclusive_rename 双向往返)。

上下文窗口配置做成决策规则:真实 ~1M 才用字面量 [1m] 后缀(Claude Code 匹配该字面量),已知小窗口用显式 CLAUDE_CODE_MAX_CONTEXT_TOKENS/AUTO_COMPACT,未验证不猜;deepseek/glm 模板双写是刻意保留。

daymade-claude-code/claude-switch-models-setup/SKILL.md
Claude Code matches this literal string, not a made-up marker like `[1million]` or `[max]`.
注:references/context-window-config.md 存 [1m] 全机制与‘env 是否真改线上字节’的本地 http.server 捕获配方。

部署纪律:脚本用 symlink 部署而非 cp(防双向往漂移——修复躺在仓库 26 天、清理代码只进部署副本的真实事故),并提供 setup.sh 安装器与 claude-profiles-init/doctor/rm 运维命令族。

daymade-claude-code/claude-switch-models-setup/scripts/setup.sh
# Symlink rather than copy.
注:SKILL.md 有专门的 live-link 检查一行命令;claude-profile-rm 先扫描意外真实文件、要求 y/N 才 rm -rf 隔离目录。

2核心能力

01一键多 profile 建/启/查/删:claude-profiles-init / claude-profile <name> / doctor / rm
02settings.json 全量收敛器(SessionStart hook 自愈 + --all/--check)
03.claude.json 行为键 allowlist 同步(workflowSizeGuideline 等)+ 状态/凭证键三分类防护
04插件结构与 enabledPlugins 镜像修复(claude-plugins-sync.py,随 profile 启动/写入自动触发)
05本地 skill 源码 ↔ Claude/Codex 激活位点同步(dry-run 预览 + --apply + macOS LaunchAgent 守护)
0611 个 provider 配置模板(Kimi/MiniMax×2/GLM/DeepSeek/StepFun/Anthropic 等,含 [1m] 或显式窗口)+ 上下文窗口决策规则
07profile-drift 排障(orphan/real-dir drift/corrupted installLocation/settings 不收敛)

3外部依赖

类型依赖
cliclaude(官方 CLI,按 profile 启动)
clipython3
cliuv(仅 daemon --install 时 uv python install 3.12 取托管运行时)
clilaunchctl(macOS LaunchAgent 安装/启动)
networkprovider API 端点(经 claude CLI 转发;模板列出 base URL 需用户核实)

4风险提醒 风险提醒:橙色 · 评估后使用

风险提醒:橙色 · 评估后使用
  • 把 API 密钥明文复制进多个 settings 文件 — 每加一个 provider 就在 ~/.claude/settings/<name>.json 落一份明文 token;SKILL 明示与 Claude Code 同模型,但副本增多扩大泄露面(备份/同步/共享目录时易被带出)
  • 本地源仓库被当作可信激活源 — 源码同步把本地仓库 symlink 成已激活技能/插件;若源仓库含被篡改的 hook/skill,所有 profile 一起中招(同等于供应链信任本地目录)
  • 窗口期一致性问题 — enabledPlugins/行为键传播有秒级-会话级延迟与竞争窗口(SKILL 自述传播需 relaunch 或秒级 watcher);并发写 settings 理论上可互相覆盖(有锁但窗口存在)
  • 安装面广、常驻组件多 — SessionStart hook + 可选 LaunchAgent watcher + shell 别名注入 .zshrc/.bashrc;卸载不彻底会残留自愈 hook 继续改写 settings
  • 强依赖 Claude Code 内部行为(path.resolve 语义、[1m] 字面量、config-dir-local 判定) — 官方版本升级可能改变这些机制使脚本假设失效(SKILL 自身以‘实测日期’标明脆弱点)
风险提醒:橙色,评估后使用。本技能的工作对象就是含明文凭证的配置:SKILL 让用户把 API key 明文写进 ~/.claude/settings/<provider>.json(与 Claude Code 原生一致),脚本族会读取/分类主 profile 与各 profile 的 settings.json 与 .claude.json(oauthAccount/token/secret 等状态键按名识别后明确跳过、永不写回,收敛方向单向默认→第三方,有 denylist/allowlist 三分类防线);无自研网络外发,网络面是 claude CLI 按配置连 provider 端点(对象由用户配置决定)+ daemon 安装时 uv 取托管 Python(astral 官方源)。触发条件:仅当用户要求搭/维护多 provider profile 或排 profile 漂移时运行;评估重点是‘把明文密钥放进更多配置副本’与‘本地源仓库被当作可信激活源’两点。

5第二遍独立确认

  • [ok] 脚本零网络外发 — 全部脚本无 urllib/requests/socket;grep 到的 https 仅 setup.sh echo 链接与模板/文档里的 provider base URL
  • [ok] 凭证键不被同步(防串 profile) — STATE_EXACT 含 projects/oauthAccount/userID 等;STATE_SUBSTR 匹配 token/secret/credential/apikey;ENV_KEY_DENYLIST 拦 ANTHROPIC_* 与隔离旗标;灰键仅报告
  • [ok] converger 方向单向(默认→第三方) — docstring:'every key present in main's settings.json overwrites the profile's, except denylisted ones';顶层 profile-only 键保留
  • [ok] 删除/修复路径受控 — claude-profile-rm:意外真实文件即 ABORT + y/N 确认;init --repair 把 real dir 归档为 .pre-symlink-bak-<ts> 再 symlink,不直接删
  • [ok] 源码同步竞态防护真实存在 — O_NOFOLLOW 打开每个路径组件、libc renameat2/renameatx_np 独占改名、失败 exclusive_rename 回滚、KEEP_JSON_BACKUPS=20
  • [ok] ‘claude-profiles-doctor 报 real dir’等能力声明有脚本支撑 — doctor 遍历 profile 目录对比 symlink 与 real dir('WARN: <name> is a real directory (expected symlink...)')

6结论

  • 把多 provider 并行的配置漂移问题系统化:symlink 共享 + config 收敛 + state 隔离三层模型清晰可判
  • 凭证/状态防护设计严谨:三分类(allowlist/state/gray)+ 单向收敛 + 灰键 tripwire 报告,防把账号身份抹到别的 profile
  • 并发与目录竞态防护到位(no-follow fd、renameat2、回滚),工程上少见
  • 文档即实测账本(日期+数字),后续维护者能核对每条设计动机
  • 破坏性路径都有闸门:archive-first 修复、y/N 删除、dry-run 默认
  • 适合:适合需要同时跑多家 LLM provider 的 Claude Code 重度用户/学员批量装机(workshop),或维护本地技能源仓库、要让它实时进入 Claude/Codex 激活面的 maintainer。系统化多窗口隔离 + profile 漂移自动收敛正是它解决的问题。
    不适合:不适合只用单一 Anthropic 官方模型、无多 provider 需求的人(整套机制是负担);不适合不能接受把 API key 明文放多个配置文件的安全策略;不适合完全不懂 Claude Code 配置结构的用户自助排障(应先走 student-setup-guide 或人工);也不适合把本地未审计仓库直接当技能源使用。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-09
    方式 A · 人下载镜像包下载 claude-switch-models-setup.tar.gz
    sha256: 1c1947b7efbf6091…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit d5c4678cb5;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库daymade / daymade/claude-code-skills
    Stars1385
    最近推送2026-09-09
    本 skill commitd5c4678cb5
    许可MIT(仓库根 LICENSE:Copyright (c) 2025 daymade;GitHub API spdx MIT)
    本站信息
    收录日期2026-09-06
    分类基础工具与工作流
    侦查报告2026-09-06 · 2 遍
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。