00:00:00Claude Code 最近获得了
00:00:02惊人数量的更新,从 Claude Desktop 的 SSH 支持、
00:00:05应用预览、GitHub 集成,
00:00:07到终端中的简单模式,
00:00:09该模式去除了技能、插件和自定义工具,
00:00:11让处理基础任务变得非常轻松。
00:00:13但目前最大的更新莫过于原生的工作树(work tree)支持,
00:00:16这意味着你的 AI 代理可以独立开发多个功能
00:00:18或修复漏洞,彼此隔离,
00:00:20而无需你进行任何手动配置。
00:00:23但这次发布是否操之过急?
00:00:25因为许多开发者已经遇到了一些基础问题。
00:00:28点击订阅,让我们一探究竟。
00:00:30将 Git 的工作树与编程代理结合使用并不是什么新鲜事。
00:00:33事实上,Claude Desktop 已经支持有一阵子了,
00:00:35还有许多插件或工具也支持它,
00:00:37比如我们之前做过视频介绍的 Claude Squad。
00:00:41但我个人之前没有这么做的原因之一,
00:00:43是因为手动配置会增加心理负担,
00:00:46希望 Claude Code 的这个新功能
00:00:49能让我轻松许多。
00:00:50让我们来试试看。
00:00:51这里有一个 Claude 用 React 开发的基础待办事项应用。
00:00:54出于测试目的,除了测试之外,
00:00:56我通常不会去开发这种应用。
00:00:58无论如何,我想添加一个深色模式切换功能,
00:01:01因为现在的界面太刺眼了。
00:01:02我还想添加将数据保存到
00:01:04本地存储(local storage)的功能,因为刷新后数据就丢了。
00:01:07此外,我还想增加编辑待办事项的功能。
00:01:10通常情况下,我会把所有这些功能写在一个提示词里,
00:01:12即:深色模式、本地存储
00:01:14以及编辑待办事项的能力。
00:01:16但问题是,如果其中一个功能出现了漏洞,
00:01:20那我就得处理整个任务,
00:01:22从而拖慢其他功能的发布速度,
00:01:25因为所有代码都在同一个 PR 或同一个分支上。
00:01:28但有了工作树,
00:01:28我可以在本地机器上同时
00:01:31在不同的分支中开发这些功能,
00:01:33无需进行任何手动设置。
00:01:35如果某个功能出了问题,
00:01:37我可以先提交另外两个功能,
00:01:39然后在独立的分支上专门解决那个问题。
00:01:41让我来演示一下具体操作。
00:01:42如果我在运行 Claude Code 时加上 -w 参数,
00:01:45它就会为我创建一个
00:01:47由 Claude 随机命名的工作树。
00:01:49等等,叫 Lacan?
00:01:50好吧。
00:01:52但如果我想给工作树命名,
00:01:54我可以在 -w 参数后面指定名称,
00:01:56就像我在这里操作的一样。
00:01:58这会在这里创建一个新的工作树,
00:02:00同时也会创建一个新分支,
00:02:02但它不会删除我们之前创建的工作树。
00:02:05所以请记住这一点,
00:02:06如果你最后创建了很多临时工作树的话。
00:02:08在项目的 .claude 目录下的 worktrees 文件夹里,
00:02:11我们可以查看我们的工作树
00:02:13并看到所有与之关联的代码文件。
00:02:15注意,工作树功能仅在
00:02:16你的项目已初始化 Git
00:02:18并且至少提交过一次时才有效。
00:02:20现在,我可以在不同的工作树中
00:02:22为这个项目实现所有功能了。
00:02:24现在这三个功能都完成了,
00:02:26我们可以看到这里的深色模式切换是正常的。
00:02:29而在这个版本里,虽然没有深色模式,
00:02:31但我可以编辑待办事项。
00:02:32比如我添加一个新项,然后在这里修改它。
00:02:35至于本地存储那个分支,似乎出了点问题,
00:02:38但这正是工作树的优势所在,
00:02:40因为我能看到其他两个功能运行良好。
00:02:43我可以先把那两个提交或创建拉取请求,
00:02:44然后专注于解决这一个问题,
00:02:46我可以开启一个专门的 Claude Code 会话
00:02:48来修复这个错误。
00:02:49当处理完一个工作树后,
00:02:51我可以选择保留它以便稍后返回,
00:02:53或者将其从系统中移除。
00:02:54如果我决定保留它,
00:02:55只要指定名称,我就能回到
00:02:58完全相同的工作树,如你所见。
00:03:00我甚至可以从当前工作树恢复会话,
00:03:03或者按 Control + W 查看该项目中的所有会话。
00:03:06虽然我还没完全搞清楚
00:03:07它是如何计算当前会话的,
00:03:08因为我现在还在 main 分支上。
00:03:11说到当前会话,
00:03:12如果你想直接在工作树目录中工作,
00:03:15你可以直接切换过去,
00:03:16使用 cd .claude/worktrees 等路径,
00:03:19或者运行带 --tmux 参数的工作树命令,
00:03:21它会直接带你进入该目录。
00:03:23如果我打开一个新的分栏,
00:03:26你可以看到我确实在该工作树中,
00:03:27并且可以浏览该工作树特有的文件。
00:03:30但工作树最酷的一点是
00:03:31它们支持子代理(sub-agents),
00:03:33这意味着我可以让不同的子代理
00:03:35在同一个 Claude Code 会话中,
00:03:38在不同分支上开发多个功能。
00:03:40如果你想在自定义子代理中支持工作树,
00:03:42让自定义子代理自动启动工作树,
00:03:45你只需要在 front matter 中添加这个
00:03:48isolation: worktree,Claude 就会处理剩下的事情。
00:03:50总的来说,我对这个功能印象非常深刻,
00:03:52这也是我肯定会
00:03:54经常使用的一个功能,
00:03:55特别是新的工作树钩子(hooks),
00:03:57它允许你在没有 Git 的情况下使用工作树,
00:04:00比如支持 SVN、Jujutsu 等,
00:04:02并且还可以在创建新工作树时
00:04:04自动运行脚本。
00:04:05但不幸的是,似乎很多人
00:04:08在使用工作树时遇到了问题,
00:04:09自从最近一次 Claude Code 更新后,
00:04:11似乎是因为一个失效的功能开关(feature flag)。
00:04:13幸运的是,你可以让 Claude Code 修复自己的二进制文件
00:04:17作为临时措施,
00:04:18但希望团队稍后能发布一个正式的补丁,
00:04:21让更多人能体验到这个超棒的功能。
00:04:24说到超棒的功能,
00:04:25如果你是 React 开发者,想要一个
00:04:28能自动检测 React 反模式的 CLI 工具,
00:04:31那就去看看 Andris 的这个视频吧,
00:04:33它详细介绍了 React Doctor。