ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Claude Code官方教程十大技巧拆解:用Git Worktree并行任务处理配TaoToken的settings.json骨架

Claude Code官方教程十大技巧拆解:用Git Worktree并行任务处理配TaoToken的settings.json骨架 1. 多分支并行开发时Claude Code 为什么总在互相打断如果你同时维护一个修 Bug 的分支和一个加功能的分支大概率遇到过这种场面Claude Code 在修fix/分支的语法错误你切到feat/分支想让它写个脚本结果它读到的还是上一个分支的文件状态改着改着两边改动混在一起git status一片红。这不是模型笨是工作目录只有一个Claude Code 默认在当前目录里读写文件你切分支它就跟着切上下文全乱。Claude Code 官方教程里创始人 Boris Cherny 分享的十大技巧第一条就是 Git Worktree 并行任务处理。核心思路很朴素Git Worktree 允许同一个仓库挂出多个独立工作目录每个目录绑定不同分支各自有独立的工作区和暂存区。你在 A 目录让 Claude 修 Bug在 B 目录让它写新功能两边文件互不干扰提交历史也各走各的。等任务都完成回主工作树合并即可。这套用法适合谁适合手头同时压着两三个独立任务、又不想频繁 stash 和切分支的开发者。尤其适合让 Claude Code 长时间跑一个重构任务、同时你还要处理紧急修复的场景。下面我把官方教程里的 Worktree 流程拆成可复制的步骤再补上 TaoToken 统一 Key 接入的settings.json骨架让多个 Worktree 里的 Claude Code 共用一套模型配置不用每个目录重复填 Key。2. TaoToken 前置一个 Key 喂饱所有 WorktreeWorktree 一多最烦的是配置重复。每个工作目录启动 Claude Code 都要读环境变量或配置文件如果每个目录都手填一遍 API Key 和 Base URL改一次要改 N 处。TaoToken 的作用在这里就体现出来了它提供统一的 API 入口你只需要在全局或项目级配置里写一次所有 Worktree 里的 Claude Code 都走同一个 Key。TaoToken 官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数配置里填干净的这个就行。你需要先去控制台拿一个 Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。拿到 Key 后先别急着往每个 Worktree 里塞我们用一份settings.json骨架统一管理。这里要区分两个概念Claude Code 自身的配置文件和项目里的.claude/settings.json。前者管模型接入后者管项目级权限和钩子。Worktree 场景下我建议把模型接入配置放在用户级配置里这样所有 Worktree 自动继承项目级.claude/settings.json只放跟项目相关的权限白名单。下面第三节给出完整骨架。3. 可复制配置settings.json 骨架与 Worktree 初始化先建仓库和 Worktree。用官方教程里的 hello-world 仓库演示你也可以换成自己的项目。git clone https://github.com/leachim6/hello-world.git hello-world-parallel-demo cd hello-world-parallel-demo git branch -a确认在主分支后创建两个 Worktree分别对应修 Bug 和加功能。官方建议放在.claude/worktrees/下这只是组织习惯放哪都行。git worktree add .claude/worktrees/bugfix -b fix/hello-world-examples git worktree add .claude/worktrees/feature -b feat/enhanced-index git worktree listgit worktree list应该输出三条记录主工作树加两个子工作树各自绑定不同分支。到这里 Git 层面的隔离就完成了接下来配 Claude Code。用户级配置文件位置因系统而异Linux/macOS 通常在~/.claude/settings.jsonWindows 在%USERPROFILE%\.claude\settings.json。骨架如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥 }, permissions: { allow: [ Bash(git status), Bash(git diff:*), Bash(git add:*), Bash(git commit:*), Read, Edit, Write ], deny: [ Bash(git push:*), Bash(rm -rf:*) ] } }几个关键点。ANTHROPIC_BASE_URL填https://taotoken.net/api不要带任何查询参数。ANTHROPIC_API_KEY填你在控制台生成的 Key。permissions.allow里放常用只读和提交命令deny里挡掉推送和危险删除避免 Claude 在并行任务里误操作。这份配置放在用户级目录三个 Worktree 启动 Claude Code 时都会读到不用每个目录复制。如果你想让某个 Worktree 有额外权限比如 feature 目录允许跑python可以在该 Worktree 根目录建.claude/settings.json做项目级覆盖{ permissions: { allow: [ Bash(python:*), Bash(python3:*) ] } }项目级配置会和用户级合并allow 取并集。这样 bugfix 目录保持最小权限feature 目录多出跑脚本的权限互不影响。4. 验证请求三个终端并行跑起来配置写完要验证。开三个终端标签分别进三个目录。终端 1 进主工作树用于协调和最终合并cd hello-world-parallel-demo claude终端 2 进 bugfix 工作树cd hello-world-parallel-demo/.claude/worktrees/bugfix claude终端 3 进 feature 工作树cd hello-world-parallel-demo/.claude/worktrees/feature claude每个终端启动后先让 Claude 确认当前分支验证它读到的上下文是否正确。在终端 2 里输入请执行 git branch --show-current告诉我当前在哪个分支预期输出fix/hello-world-examples。终端 3 同样操作预期输出feat/enhanced-index。这一步能确认 Worktree 隔离生效Claude 没有串目录。接着在终端 2 让 Claude 修一个示例文件的语法问题请检查 p/ 目录下的 Python 示例找出过时语法并修复然后 git add 并 commit在终端 3 同时让它写索引脚本请创建一个 generate_index.py遍历所有语言目录读取 HelloWorld 文件生成 INDEX.md包含语言名、文件路径和代码前几行两个终端同时跑你会看到它们各自读写自己目录的文件git status只显示本分支改动。这就是并行任务处理的核心价值bugfix 在改 Python 示例时feature 在写新脚本两边文件系统、暂存区、提交历史完全隔离。验证 TaoToken 接入是否生效可以在任意终端里让 Claude 回一句话比如「用一句话说明当前模型接入的 Base URL 是什么」。如果它能正常响应说明 Key 和 Base URL 配置正确。更直接的验证是看请求是否成功返回没有 401 或连接错误。两个任务都提交后回终端 1 合并git merge fix/hello-world-examples git merge feat/enhanced-index git worktree remove .claude/worktrees/bugfix git worktree remove .claude/worktrees/feature git branch -d fix/hello-world-examples git branch -d feat/enhanced-index git worktree list最后git worktree list只剩主工作树git branch只剩 main清理完成。5. 本篇常见错排查报错一fatal: xxx is already checked out at ...原因是你想在一个 Worktree 里切到已经被另一个 Worktree 占用的分支。Git 不允许同一分支被两个工作树同时检出。解决方法是给新任务建新分支用git worktree add path -b new-branch不要试图复用已有分支。报错二Claude Code 启动后报 401 或invalid api key先检查settings.json里ANTHROPIC_API_KEY有没有多余空格或换行。再确认ANTHROPIC_BASE_URL填的是https://taotoken.net/api没有拼错或带多余路径。如果 Key 刚生成去控制台确认状态是启用。改完配置要重启 Claude Code 进程环境变量不会热加载。报错三Worktree 里 Claude 读到的文件是旧版本Worktree 创建时会基于当前 HEAD 检出文件如果你在主工作树有未提交改动子 Worktree 不会带上。先在主工作树 commit 或 stash再创建 Worktree。另外确认你cd进了正确的 Worktree 目录pwd看一下路径里有没有.claude/worktrees/xxx。报错四合并时冲突Claude 改的文件和主分支冲突并行任务难免碰到同一文件。合并前先在主工作树git pull拉最新再逐个 merge。冲突时可以让 Claude 在对应 Worktree 里先 rebase 主分支解决完再合。注意git worktree remove前必须确保分支已合并否则会丢改动Git 会拦你别强删。报错五settings.json改了但权限没生效项目级.claude/settings.json只对当前项目目录生效Worktree 是独立目录如果项目级配置放在主工作树根目录子 Worktree 读不到。要么把权限配置放用户级要么在每个 Worktree 根目录各放一份。用户级配置是所有目录共享的适合放模型接入这种全局配置。6. 把并行任务跑顺之后配置该放哪Worktree 这套用法跑通后你会发现真正的效率瓶颈不在 Git而在配置管理。我的做法是模型接入和通用权限放用户级settings.json一次配好所有 Worktree 继承项目特有的权限白名单放各 Worktree 的.claude/settings.json按任务需要开。TaoToken 的 Key 只在用户级配一次新增 Worktree 不用再动。如果你主要在做长期编码和 Agent 任务可以了解下 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 适合需要稳定跑多轮任务的场景。想先验证模型对话效果去 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 配置字段有疑问可以对照查。Key 管理和新建都在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。最后提醒一个实操细节Worktree 目录名别用中文或空格Claude Code 和 Git 命令处理路径时容易出问题。.claude/worktrees/这个路径本身没问题但子目录名用bugfix、feature这种纯英文短名最稳。清理 Worktree 时先git worktree remove再git branch -d顺序反了分支删不掉。
返回列表