Files
team/memory/claude-code-model-config.md
2026-04-19 21:47:08 +08:00

2.8 KiB

name, description, type, originSessionId
name description type originSessionId
Claude Code 模型配置传播 runcc.sh/cc4/cc5 模型切换机制,tmux 三层传播方案,settings.json 优先级问题 feedback 3abc1791-7202-45cf-85af-98b1f235a3c9

模型配置传播机制

规则: Claude Code 的 settings.json env 段优先级高于 shell export,会将同名环境变量覆盖。因此模型配置变量(ANTHROPIC_DEFAULT_*_MODEL)不能放在 settings.json 中,必须通过 runcc.sh 启动时删除 + shell export 设置。

Why: 用户发现运行 cc4 时状态栏仍显示 glm-5.1,因为 settings.json 中的 ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.1" 覆盖了 shell 的 export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-4.7"

How to apply: runcc.sh 每次启动时先 jq 'del(.env.ANTHROPIC_DEFAULT_*)' 清理 settings.json,再 export 设置,再写入 tmux 三层传播。

tmux 三层传播

层级 机制 覆盖范围 隔离能力
1 shell export 当前进程 进程级
2 tmux setenv -t <session> 该 session 内新 pane session 级
3 tmux set-option -p @anthropic_* + .bashrc 读取 同 session 不同 pane pane 级

关键文件

  • runcc.sh / templates/runcc.sh: 删除 settings.json 模型变量 → shell export → tmux 三层传播
  • templates/bashrc.tail.sh: 新 shell 启动时读取 pane option(容器重建时自动生效)
  • .claude/hooks/agent-pane-track.sh: 将 PM pane 的模型 option 复制到新增 Agent pane

经验教训

  1. settings.json env 优先级陷阱: Claude Code 读取 settings.json env 并覆盖进程环境变量,即使 shell 已 export。模型切换变量必须从 settings.json 中删除。
  2. tmux 环境继承限制: tmux 新 pane 从 tmux server 继承环境,不从父 shell 继承。需用 tmux setenv / set-option 显式传播。
  3. 同 session 并发隔离: tmux setenv -t 是 session 级的,同 session 不同 pane 无法隔离。用 pane option (per-pane) 实现隔离,.bashrc 读取后覆盖 session 级值。
  4. Agent Team 子 pane: 新 pane 不继承父 pane 的 pane option,需在 hook 中显式复制。
  5. 模板文件同步: 修改 runcc.sh.bashrc 时,必须同时更新 templates/ 下的模板文件,确保容器重建后一致。
  6. GLM 模型代码必须完整前缀: 4.5-air 无效,正确代码是 glm-4.5-air。Explore agent 默认使用 haiku 层级,haiku 模型代码错误导致 Agent tool 报 1211。可用 curl https://open.bigmodel.cn/api/paas/v4/models 查询有效模型列表。
  7. settings.json env 的双面性: 虽然它会覆盖 shell export(需要删除),但在已运行的会话中可临时写入正确值来修复子 agent 模型问题(利用其覆盖优先级),修复后再删除。