1. 为什么要在 Git 工作流里接入 Claude Code
如果你每天都在写代码,那大概率也每天都在跟 Git 打交道。改完代码要写 commit message,写完还要推分支、开 PR、填描述、等 CI、拉 reviewer。单看每一步都不复杂,但一天来回十几次,时间就这么被切碎了。更麻烦的是,随手写的git commit -m "fix"过两周自己都看不懂,PR 描述空着,review 的人只能靠猜。
这一篇要解决的就是这件事:让 Claude Code 通过 TaoToken 的统一 Key/API 通道,接管 Git 工作流里最耗神的两块——自动生成规范的 Commit Message,以及自动创建带完整描述的 Pull Request。你只需要在配置文件里填好通道信息,剩下的交给 Claude Code 去分析git diff、组织提交、调用gh命令。
适合谁看:已经在用 Claude Code 做日常编码、想让提交和 PR 环节也自动化的开发者;或者刚接触 Claude Code、想找一个能稳定跑通 Git 集成的配置参考的人。整篇会给出settings.json和config.toml的可复制骨架,然后完整演示一次从代码改动到 PR 创建成功的验证动作。跟着做,你能跑通整条链路。
TaoToken 在这里的角色是统一入口:Claude Code 的模型请求都走同一个 API 通道,不用在多个 Key 之间来回切换,配置一次就能覆盖对话、编码、Agent 这些场景。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。
2. 前置准备:TaoToken Key 与 Claude Code 环境
动手之前先把两样东西备齐:一个可用的 TaoToken API Key,以及本地已经装好的 Claude Code 和ghCLI。Key 的获取在控制台的 API Keys 页面完成,拿到之后先别急着写进配置,建议放到环境变量里,避免明文散落在多个文件。
2.1 获取并导出 API Key
登录控制台后进入 API Keys 页面创建一个新 Key,复制出来。然后在 shell 里导出:
export TAOTOKEN_API_KEY="sk-你的key"想让它长期生效,就写进~/.zshrc或~/.bashrc。这一步的意义在于:后面settings.json和config.toml都通过环境变量引用,换 Key 时只改一处。
2.2 确认 Claude Code 与 gh CLI 可用
claude --version gh --version gh auth statusgh auth status要显示已登录,否则后面创建 PR 会失败。如果没登录,执行gh auth login按提示走一遍即可。Claude Code 这边确认能正常启动就行,模型通道的配置放到下一节。
注意:
gh的登录态和 TaoToken 的 Key 是两回事,前者管 GitHub 操作权限,后者管模型请求通道,两个都要配好。
3. 可复制配置:settings.json 与 config.toml
Claude Code 的配置分两层:一层是模型通道(走 TaoToken),一层是 Git 自动化行为(提交格式、PR 模板)。前者写在config.toml,后者写在settings.json。下面给的是可直接复制的骨架,把占位符替换成你自己的值就能用。
3.1 config.toml:把模型请求指向 TaoToken
# ~/.config/claude/config.toml [api] base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" timeout = 120 [model] default = "claude-sonnet-4-5" max_tokens = 8192 [git] # 提交信息遵循 Conventional Commits commit_format = "<type>(<scope>): <subject>" # 允许 Claude 自动执行 git add / commit auto_stage = true # 创建 PR 时默认目标分支 default_base = "develop"base_url指向 TaoToken 的 API 地址,api_key用环境变量注入。[git]段是这一篇的重点:commit_format约束提交信息结构,auto_stage决定 Claude 能不能自己执行暂存,default_base让 PR 默认往develop合。
3.2 settings.json:约束提交与 PR 行为
{ "git": { "commit": { "conventional": true, "language": "zh-CN", "maxSubjectLength": 72, "requireScope": true }, "pr": { "template": ".github/PULL_REQUEST_TEMPLATE.md", "autoFillChecklist": true, "reviewers": ["zhangsan", "lisi"], "draft": false }, "safety": { "confirmBeforeCommit": true, "confirmBeforePush": true, "blockForcePush": true } } }这里几个参数值得说清楚。conventional: true让提交信息强制走<type>(<scope>): <subject>格式;language设成中文,生成的描述就是中文;requireScope要求每次提交都带 scope,避免出现feat: xxx这种没范围的写法。safety段是保险丝:提交和推送前都要确认,强制推送直接拦掉,防止误操作把远端历史冲掉。
3.3 参数对照表
| 配置项 | 作用 | 建议值 |
|---|---|---|
base_url | 模型请求通道 | https://taotoken.net/api |
commit_format | 提交信息结构 | Conventional Commits |
auto_stage | 是否自动暂存 | true |
default_base | PR 目标分支 | develop |
confirmBeforePush | 推送前确认 | true |
blockForcePush | 拦截强制推送 | true |
配置写完后重启 Claude Code,让它重新加载。如果启动时报通道错误,先检查TAOTOKEN_API_KEY是否在当前 shell 里可见。
4. 验证请求:从代码改动到 PR 的完整链路
配置对不对,跑一遍就知道。下面用一个真实的小改动走完整条链路:改两个文件、生成提交、推分支、创建 PR。
4.1 制造一次改动
git checkout -b feature/user-search # 假设你改了 UserList.vue 和 user.ts git status git diff --statgit diff --stat会列出改动文件。这一步是给 Claude Code 提供分析素材,它读的就是这个 diff。
4.2 让 Claude Code 生成提交信息
在 Claude Code 里输入:
帮我生成提交信息它会分析 diff 后输出类似:
检测到以下改动: - UserList.vue: 新增搜索框 (+45行) - user.ts: 新增搜索 API (+12行) - user.ts: 修复分页 bug (-3行) 建议提交信息: feat(user): 用户列表页新增搜索功能并修复分页问题确认无误后,Claude 执行:
git add src/views/UserList.vue src/api/user.ts git commit -m "feat(user): 用户列表页新增搜索功能并修复分页问题"4.3 推送并创建 PR
git push -u origin feature/user-search然后让 Claude 创建 PR:
创建一个 PR 合并到 develop它调用gh执行:
gh pr create \ --base develop \ --head feature/user-search \ --title "feat(user): 用户列表页新增搜索功能" \ --body "自动生成的 PR 描述..."4.4 成功结果长什么样
PR 创建成功后,gh pr list能看到:
PR #42: feat(user): 用户列表页新增搜索功能 目标分支:develop 状态: Open CI 检查: TypeScript 编译通过 ESLint 检查通过 单元测试 42/42 通过 Review: ⏳ 张三:未审查 ⏳ 李四:未审查到这里,从改动到 PR 的链路就跑通了。整个过程你只输入了两句自然语言,剩下的 diff 分析、提交、推送、PR 描述都由 Claude Code 完成。
5. 本篇常见错排查
跑不通的时候,问题基本集中在通道、权限、格式三类。下面按现象给排查路径。
5.1 报通道错误或 401
现象:Claude Code 启动后请求模型直接失败,提示鉴权错误。
排查顺序:先确认echo $TAOTOKEN_API_KEY有值;再确认config.toml里base_url写的是https://taotoken.net/api,没有多余斜杠;最后确认 Key 没有过期或被禁用。如果是在 IDE 插件里跑,注意插件可能不继承 shell 环境变量,需要在插件设置里单独填。
5.2 提交信息格式不对
现象:生成的提交信息没有 scope,或者 type 用了不在约定里的词。
原因通常是settings.json没生效,或者requireScope被设成了false。检查配置文件路径是否正确,Claude Code 读的是用户级配置还是项目级配置。项目级配置放在仓库根目录的.claude/settings.json,优先级更高。
5.3 gh pr create 失败
现象:提交推送都成功,但创建 PR 报错。
常见原因有三个:gh auth status未登录;目标分支develop在远端不存在;当前分支没有推到远端。逐个确认:
gh auth status git ls-remote --heads origin develop git status -sb5.4 误触发强制推送
现象:Claude 执行了git push --force,把远端历史覆盖了。
这就是blockForcePush存在的意义。确认settings.json里它是true。如果已经发生,用git reflog找到覆盖前的 commit,重新推回去。养成习惯:涉及历史重写的操作,先让 Claude 把命令打出来给你看,确认后再执行。
提示:
confirmBeforePush和blockForcePush建议一直开着,自动化不等于放弃确认。
6. 把这条链路用起来
配置一次,后面每次提交和开 PR 都能省下几分钟。真正值得养成的习惯是:改动完成后先让 Claude 分析 diff,看清楚它建议拆成几次提交,再决定是合并提交还是分开提交。批量改动涉及多个模块时,拆成feat、fix、chore三条提交,git log会清爽很多。
如果你还没配好模型通道,先去 API Keys 页面拿一个 Key,再对照接入文档把config.toml填好。想先验证模型能不能正常对话,可以直接在模型对话里发一句测试;如果打算长期用 Claude Code 做编码和 Agent 任务,Coding Plan 会更合适,额度和管理都更省心。整条链路跑通之后,你会发现 Git 里最烦的那部分,其实可以交给它。