Skip to content

16 · 并行任务与环境变量

📚 系列导航:上一篇 15 Memory 让 Claude 跨会话记住你。这一篇两件事:怎么让多会话并行跑不打架,以及怎么用环境变量把底层行为一次配死。


第一部分:并行任务

01 并行的铁律

并行成立的前提只有一个:任务别抢同一份文件。 两个会话 cd 进同一个目录改同一份文件,后写的盖住先写的——这就是最常见翻车场景。

Git worktree 就是来根治这个的:从同一个仓库历史里拉出几个独立的工作目录,各有各的文件和分支,共享同一套提交历史。


02 用 Worktree 隔离

bash
claude --worktree feature-auth

Claude 自动创建一个隔离的 worktree 在 .claude/worktrees/<名字>/,分支名 worktree-<名字>

想再开第二个:

bash
claude --worktree bugfix-123

两个会话各在自己的副本里,谁也碰不到谁的文件。

WARNING

三个坑:① .claude/worktrees/ 要进 .gitignore.env 不会自动复制进 worktree,靠 .worktreeinclude 文件列出要自动复制的文件 ③ 手改子代理文件后重启会话才生效

.worktreeinclude 文件(放项目根):

text
.env
.env.local
config/secrets.json

03 多会话后台

把任务甩到后台:

bash
claude --bg "调查一下这个不稳定的测试为啥老挂"

Claude 打印会话 ID 和管理命令。后台会话不绑在终端上,关掉 shell 也照跑。

把当前会话甩到后台:/bg/background 的简写),当前对话挪到后台。

代理视图——塔台屏

bash
claude agents

所有后台会话按状态分组列出来:

状态含义
动画工作中
黄色需要你输入
绿色已完成
红色失败

操作:Space 窥视→直接回复→按 Enter 钻进完整会话→ 退回。后台会话自动用 worktree 隔离。


04 Headless 非交互

bash
claude -p "找出 auth.py 里的 bug 并修掉" --allowedTools "Read,Edit,Bash"

非交互跑一次就退出。--allowedTools 预先批准工具,因为没人在旁边点「同意」。

管道数据:

bash
cat build-error.txt | claude -p "说清这个构建错误的根因" > output.txt

--bare 更快启动: 跳过 hooks/skills/plugins/MCP/CLAUDE.md 的全量加载,脚本推荐:

bash
claude --bare -p "总结这个文件" --allowedTools "Read"

官方说明:--bare 是脚本的推荐模式,将在未来版本中成为 -p 的默认值。

结构化输出:

bash
claude -p "总结这个项目" --output-format json | jq -r '.result'

返回带元数据的 JSON(含 total_cost_usd 花了多少钱)。


第二部分:环境变量

05 环境变量管什么

环境变量是 Claude Code 启动时读的一组「键值对总开关」,管连接、认证、超时、隐私这些底层行为。它的价值在于把「每次都想这么来」的设置一次固化

06 三种设置方式

方式生效范围关掉终端还在吗最适合
shell 临时 export仅当前终端「就想这一次试试」
写进 ~/.zshrc本机所有终端个人机器全局
写进 settings.jsonenv跟配置走跟项目/团队绑定

临时试试: export API_TIMEOUT_MS="1200000"claude

持久生效(推荐 settings.json):

json
{
  "env": {
    "API_TIMEOUT_MS": "1200000",
    "BASH_DEFAULT_TIMEOUT_MS": "300000"
  }
}

WARNING

改完环境变量必须退出重开 claude 才生效。


07 settings.json 四类文件

文件管谁进 git?
~/.claude/settings.json你自己,所有项目
.claude/settings.json(项目根)全队,该项目所有成员
.claude/settings.local.json(项目根)你自己,仅该项目
托管设置全组织

WARNING

带个人凭据的变量(私有地址、token)一律放 .local 文件,别放进 git。


08 核心变量清单

连接与认证

变量作用注意
ANTHROPIC_API_KEYAPI 密钥设了它就盖过订阅登录,想换回订阅要 unset
ANTHROPIC_BASE_URL把请求改道到代理/网关接国产模型的核心
ANTHROPIC_MODEL默认模型/model 命令会盖过它

超时

变量默认值说明
API_TIMEOUT_MS600000(10 分钟)网络慢或走代理时调大;上限 2147483647,超过让计时器溢出
BASH_DEFAULT_TIMEOUT_MS120000(2 分钟)长命令不够用时调大

隐私

变量作用
DISABLE_TELEMETRY=1关掉遥测上报
DO_NOT_TRACK=1同上,跨工具通用约定
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1一键全关(自动更新/反馈/报错/遥测)

多账号与配置

变量作用
CLAUDE_CONFIG_DIR覆盖配置目录,可并行跑多个账号
DISABLE_AUTO_COMPACT关掉自动压缩,自己掌控压缩时机
bash
alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'

09 优先级规则

总纲:环境变量 > 设置字段。 但模型这条链有例外:

text
/model 命令 / --model 标志   ← 最优先(当场选择)
        ↓ 盖过
ANTHROPIC_MODEL 环境变量      ← 其次
        ↓ 盖过
settings.json 的 model 字段   ← 兜底

TIP

规律:越当场越明确,优先级越高。拿不准某个变量时,查官方文档那行说明。


10 动手:非交互模式跑一个任务

bash
mkdir parallel-demo && cd parallel-demo
echo 'def add(a,b): return a+b' > math.py
bash
claude -p "给 @math.py 的 add 函数加上类型注解,并写一个测试用例"

预期:Claude 非交互执行,修改文件并输出结果,然后退出。


11 小结

知识点一句话
并行铁律任务别抢同一份文件,用 worktree 隔离
worktreeclaude --worktree <名字> 一行开隔离会话
代理视图claude agents 塔台屏管多会话
后台任务--bg 甩出去不绑终端
非交互claude -p "指令",干完就退
headless 优化--bare 更快,--output-format json 结构化输出
环境变量设置临时 export / ~/.zshrc / settings.json 的 env
settings.json 四类文件全局/项目共享/项目私有/托管
核心变量API key / BASE_URL / 超时 / 遥测 / 配置目录

NOTE

下一篇17 Git 工作流:自动提交、冲突解决、检查点回退——把 Git 操作交给 Claude。

Claude Code 实战手册