
Claude Code SDK #21:Worktrees 全解——--worktree 标志 × .worktreeinclude × 子 Agent 隔离,让多任务并行不再踩脚
git worktree 让多个 Claude session 各住独立目录、各操独立分支,彻底告别多任务改文件冲突。本篇完整拆解 --worktree 标志用法、baseRef 分支策略(origin/HEAD vs 本地 HEAD vs PR 直通)、.worktreeinclude 的 .env 自动同步机制、子 Agent 的 isolation: worktree 永久配置,以及 worktree 的自动清理规则(含 -p 非交互模式的手动清理陷阱),附五条可落地的实践建议。
Research Brief
--worktree 就是为了解决这件事而生的。什么是 Worktree,为什么需要它
git worktree 是 Git 原生功能:在同一个仓库下创建多个独立的工作目录,每个目录有自己的文件状态和分支,但共享同一份 commit 历史和远程。2--worktree 在此基础上多做了一层封装:- 自动创建分支:每次
--worktree <name>都在.claude/worktrees/<name>/新建一个 worktree,同时在仓库里创建名为worktree-<name>的分支 - 隔离文件编辑:两个 Claude session 各住一个 worktree,互相改文件不会踩到对方
- session 级别隔离而非进程级别:每个 worktree 是一个真实的目录,不是内存沙箱
基础用法:三条命令
# 最常见用法:指定 worktree 名称
claude --worktree feature-auth
# 同时在另一个终端开第二个
claude --worktree bugfix-123
# 懒得起名?Claude 自动生成随机名(如 bright-running-fox)
claude --worktree--worktree 之前,需要先单独运行一次 claude(接受 workspace trust 对话框)。非交互的 -p 模式跳过了信任检查,claude -p --worktree 可以直接用。.claude/worktrees/ 加进 .gitignore,否则 git status 会列出一堆无关文件。
--worktree 创建的目录结构示意(AI 生成图) 基础分支策略:从哪个 commit 出发?
origin/HEAD(远程默认分支)创建,拿到干净的远程最新状态。这对"基于稳定主干开任务"场景很合适。worktree.baseRef 设为 "head":1{
"worktree": {
"baseRef": "head"
}
}"fresh"(默认,从 origin/HEAD)和 "head"(从当前本地 HEAD)两个值,不支持任意 git ref。# 基于 PR #1234 创建 worktree
claude --worktree "#1234"pull/1234/head 并在 .claude/worktrees/pr-1234/ 建立 worktree。对于 code review 过程中需要本地验证改动的场景非常便利。.worktreeinclude:把 .env 带进新 worktree
.env、.env.local、config/secrets.json 这些在 .gitignore 里的文件不会自动过来——这意味着 Claude 到新 worktree 里可能跑不起来项目。.worktreeinclude,语法和 .gitignore 一致:.env
.env.local
config/secrets.json.gitignore 里」的文件才会被复制。已追踪(tracked)的文件不受影响,不会被意外复制。--worktree 交互会话、子 Agent 的 worktree(下面会讲)、桌面端的并行 session。
.worktreeinclude 的文件复制流程:只有同时「匹配模式」且「在 .gitignore 里」的文件才会被复制(AI 生成图) 子 Agent × Worktree:让并行任务不互相踩脚
- 临时指定:在会话中告诉 Claude「用 worktree 隔离你的 agents」
- 永久配置:在自定义子 Agent 的 frontmatter 里加
isolation: worktree
isolation: worktree 的子 Agent 每次被启动都会自动获得一个临时 worktree。任务完成后,如果这个 worktree 里没有任何改动(无未提交文件、无新文件、无新 commit),它会被自动删除,保持仓库干净。worktree.baseRef 设置——设了 "head" 时,子 Agent 也会从当前本地 HEAD 出发,继承你主分支上还没推的改动。清理:谁来管 worktree 的生命周期
| 情况 | 自动处理 |
|---|---|
| 无未提交改动、无新文件、无新 commit | 自动删除 worktree 及对应分支 |
| 上面条件加上 session 有名称 | Claude 会先询问是否保留 |
| 有未提交改动或新 commit | 提示你选择保留还是删除 |
-p 非交互模式 | 不自动清理,需手动 git worktree remove |

cleanupPeriodDays 设置的天数,且没有未提交改动、新文件、未推 commit 时,自动清除。通过 --worktree 手动创建的 worktree 不受这个自动清扫影响。git worktree lock 锁住自己的 worktree,防止并发清理意外删掉正在用的目录;Agent 结束后自动解锁。git worktree remove ../project-feature-a
# 有未提交改动时加 --force
git worktree remove --force ../project-feature-a手动管理:更精细的控制
# 新分支 + 指定位置
git worktree add ../project-feature-a -b feature-a
# 已有分支
git worktree add ../project-bugfix bugfix-123
# 进入后启动 Claude
cd ../project-feature-a && claude
# 查看所有 worktree
git worktree list非 git 项目:通过 Hook 扩展
--worktree 默认使用 git 实现。SVN、Perforce、Mercurial 等项目可以通过配置 WorktreeCreate 和 WorktreeRemove Hook 完全替换默认逻辑:1{
"hooks": {
"WorktreeCreate": [
{
"hooks": [
{
"type": "command",
"command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
}
]
}
]
}
}.worktreeinclude 的文件复制逻辑不再执行——需要在 Hook 脚本里自己处理环境变量文件的拷贝。五条实践建议
- 默认用
origin/HEAD,需要继承本地改动再切head——baseRef 设置直接决定 Claude 看到的代码快照,弄错了很难察觉 - 把
.claude/worktrees/加进.gitignore是必做项,不然git status噪音会干扰你和 Claude 对仓库状态的判断 .worktreeinclude比手动拷贝 .env 更可靠——每次新建 worktree 自动同步,不会因为忘了复制而让 Claude 跑不起项目-p模式的 worktree 必须手动清理——CI/CD 脚本里跑完记得加git worktree remove,否则会积累大量孤立目录- 子 Agent frontmatter 加
isolation: worktree,而不是每次口头提醒——永久配置比临时口头约束更可靠,Agent 复用时也不会忘
References
Related content
Picked from other channels by content similarity—find new creators to follow.
Article·2026-06-24 关注圈日报(公开账号抽样版):Claude Tag、Codex Remote、Google Workspace CLI
本期完整关注列表暂时不可读,实际覆盖 13 个公开账号的 2026 年 6 月 24 日动态。重点梳理 Claude Tag 进入 Slack、Codex Remote 的移动控制面、Google Workspace CLI 争议、Apodex 深度研究测试,以及豆包 2.1 Pro / Zcode 的使用反馈。
X Feed 每日中文简报
Image post·Claude Tag:AI 同事进群了
量子位单篇文章图片笔记:Claude Tag 进入 Slack,把共享上下文、持续记忆、主动介入和异步执行放进团队协作流,像一位可被 @ 的 AI 同事。
量子位·机器之心·新智元 图片笔记
Image post·Claude Code 长出网页:终端输出终于能被围观
机器之心单篇文章图片笔记:Claude Code 支持 Artifacts,把终端里的工作进度发布成可分享、会随会话更新的页面;官方文档同时说明它是单个自包含页面,无后端、不能实时调 API,当前面向 Team/Enterprise beta。
量子位·机器之心·新智元 图片笔记
Article·Claude Code 出实时评审页,Gemini 补临时聊天管控——6 月 21 日 AI 动态
本期补看 6 月 16-21 日可核验的 AI 产品更新:Claude Code Artifacts 把编码会话变成组织内可共享的实时页面,Gemini app 给企业管理员补临时聊天和删除对话控制,Copilot Chat Auto mode 面向所有 Copilot 计划开放,Gemini in Sheets 扩展到更多语言。
AI 产品日报
Audio·Claude Tag:Anthropic 把 Claude 放进团队频道
Anthropic 发布 Claude Tag,把 Claude 从个人聊天窗口推进 Slack 频道。本期解读它为什么更像团队里的持久代理,而不是一个新版机器人。
Claude 博客解读播客
Article·Karpathy 把 Claude 叫成「第三种 UI」,Levie 说应用层要管模型路由:6月24日精选
本期精选 6月24日 AI/科技核心人物推文:Karpathy 把 Claude 的新形态称为 LLM UI 的第三次改版,Claude Tag、Box、CLI 和模型路由讨论则显示,agent 正在从聊天入口进入真实团队工作流。
AI 前沿人物每日推文精选
Add more perspectives or context around this Post.