context-infra 检查与复盘infra.guiming.net · 全内容自包含呈现 · 生成于 2026-07-21 16:28 UTC

Claude Code 环境依赖清单(CC Environment Deps)

Z3 全文↑ Z2 条目

术-操作 · 术层 skill 全文

← 返回术层 skill 索引 · 返回方法论区

本页是 <code>rules/skills/bestpractice_cc_environment_deps.md</code> 的逐字投影(仅隐私清洗,零改写)。

时点提示:本页是仓内文件 rules/skills/bestpractice_cc_environment_deps.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。

Claude Code 环境依赖清单(CC Environment Deps)

元数据


When to Use

设计以下任何一类改动之前,先把本文件从头到尾过一遍:

触发判断准则:一个改动是否涉及 CC 运行环境,等价于问这三件事:它会不会改 cwd?会不会改 env var?会不会改 ~/.claude/ 的读写路径?只要任一答案为是,就属于本文范围。

Prerequisites


环境依赖项

CC 在启动和运行过程中读取一组环境量来定位配置、凭据、存储。任何改动如果意外改变了其中一项,轻则行为偏差,重则 --resume 整体失效或 auth 失败。下面按「作用 → 决定什么 → blast radius → 验证方式 → 已知陷阱」固化 8 个核心依赖项。

1. cwd(当前工作目录)

2. HOME

3. CLAUDE_CONFIG_DIR

4. ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN

5. ANTHROPIC_DEFAULT_SONNET_MODEL / OPUS_MODEL / HAIKU_MODEL / SMALL_FAST_MODEL

6. CLAUDE_BIN / PATH

7. Hook 注册位置(~/.claude/settings.json

8. Credentials(.credentials.json + macOS Keychain)


设计 Checklist(改动前过一遍)

改动提交前,对 8 项依赖逐项确认:

#依赖项本改动是否影响影响方式验证手段回滚路径
1cwd
2HOME
3CLAUDE_CONFIG_DIR
4ANTHROPIC_BASE_URL/AUTH_TOKEN
5ANTHROPIC_*_MODEL(四项)
6CLAUDE_BIN/PATH
7Hook 注册位置
8Credentials

判断准则:只要勾了任一项,这个改动就要进设计文档的「环境依赖影响」段,并附上对应的测试用例。e2e 测试至少覆盖一次「启动 + resume 一个既存 session」的闭环,因为 resume 同时打在依赖 1(cwd)和依赖 8(credentials)上,是最便宜的综合验证。

反面案例

案例 1:V2-01 blind spot(2026-04-17)。设计 session_wrap.sh 的「前台 session 强制 worktree」时,claude_launcher.sh 在 session worktree 里做 cd + exec claude。设计文档 §3「现状事实清单」列了 7 条硬事实,无一提到「JSONL 按 cwd 分目录」。上线后用户 claude --resume 全部 No conversation found,JSONL 物理上存在但散落在 5 个 worktree slug 下。根因:设计阶段的事实清单没显式列出 CC 对 cwd 的存储依赖(本文依赖项 1)。修复走 Level 1 架构反转(git 层隔离,cwd 恒定)。详见 config/build_logs/GIT_V2_REVIEW_AND_REDESIGN_20260417.md 第 3-4 轮。

案例 2:Level 0 Hotfix #3(2026-04-17)sandbox_env.shsandbox_env_setup 原实现切了 CLAUDE_CONFIG_DIR 但没复制 .credentials.json。sandbox 内 spawn 5 个 background agent,7 秒内全部 authentication_failed;主 session /login 把新 token 写到 sandbox 目录,worktree 销毁后 token 也消失。根因:CLAUDE_CONFIG_DIR 切换影响的不止是 settings.json(依赖项 3),credentials.json 也绑在这个目录里(依赖项 8)。修复是一行 cp .credentials.json 补丁。教训:CLAUDE_CONFIG_DIR 和 credentials 是同一个依赖簇,讨论任何一个都要把另一个也纳入。


与其他 Skill 的关系


← 返回术层 skill 索引 · 返回方法论区