Worktrunk LLM提交信息生成:Claude Code与Codex等5种工具配置全解
【免费下载链接】worktrunkWorktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows项目地址: https://gitcode.com/GitHub_Trending/wo/worktrunk
Worktrunk 是一款专为 AI 智能体并行工作流设计的 Git worktree 管理 CLI,其LLM 提交信息生成功能可以把git diff交给 Claude Code、Codex、OpenCode、llm、aichat 等 5 种任意命令行工具,自动生成规范的提交信息。本文是一份面向新手的完整配置指南,帮你 3 分钟接通 AI 自动写 commit message。
工作原理:三步搞定 AI 提交信息
Worktrunk 的 LLM 提交信息生成逻辑很简单:构建模板提示词 → 通过 stdin 交给外部命令 → 把输出作为提交信息。整个过程由 src/llm.rs 实现:
- 收集上下文:读取暂存区 diff、diff 统计、当前分支、最近 5 条提交(用于风格参考)
- 渲染模板:用 minijinja 模板引擎(类似 Jinja2 语法)拼装出提示词
- 执行命令:提示词从 stdin 传给
[commit.generation]里配置的命令,stdout 就是生成的提交信息
贴心细节:
- 大 diff 自动瘦身:diff 超过 100KB 时,先剔除 lock 文件,再按文件截断(每文件最多 50 行、每行最多 500 字符),保证提示词不会撑爆模型上下文,逻辑见 src/llm.rs
- 兜底机制:没配置 LLM 命令时,会退化为确定性消息(如
Changes to auth.rs & config.rs),流程不会中断 - 首次运行自动检测:第一次提交时,Worktrunk 会检测你机器上装了 claude / codex / opencode 哪个,并主动提供一键配置,源码在 src/output/commit_generation.rs
5种工具配置全解:一键复制即用
所有配置都写在用户配置文件的[commit.generation]段(macOS/Linux 位于~/.config/worktrunk/config.toml)。官方推荐命令以 dev/config.example.toml 为唯一事实来源,五种工具的完整配置如下:
1️⃣ Claude Code 配置
[commit.generation] command = "MAX_THINKING_TOKENS=0 claude -p --no-session-persistence --model=haiku --tools='' --safe-mode --setting-sources='user' --system-prompt=''"各参数用途(官方文档 docs/public/llm-commits.md 有逐字解释):
--no-session-persistence:避免提交对话污染claude --continue的会话--safe-mode:屏蔽 hooks、插件、MCP、skills、CLAUDE.md,保持"纯净"运行(需 Claude Code ≥ 2.1.169)--setting-sources='user':把配置范围限定在用户级,防止项目.claude/settings.json覆盖认证- 其余参数关闭工具调用、系统提示和 thinking,追求快速纯文本输出
2️⃣ Codex 配置
[commit.generation] command = "codex exec -m gpt-5.6-luna -c model_reasoning_effort='low' -c system_prompt='' --sandbox=read-only --json - | jq -sr '[.[] | select(.item.type? == \"agent_message\")] | last.item.text'"要点:
- 使用 Codex 模型族中快速低成本的变体,并设低推理强度 + 空系统提示
--sandbox=read-only保证 AI 不会在生成提交信息时改动文件- 管道末端的
jq负责从 JSON 流里提取最终文本——需要本机安装jq
3️⃣ OpenCode 配置
[commit.generation] command = "opencode run -m anthropic/claude-haiku-4.5 --variant fast"直接指定快速模型变体,一条命令即完成配置。
4️⃣ llm 配置
[commit.generation] command = "llm -m claude-haiku-4.5"llm(Simon Willison 的通用 LLM CLI)配置最简洁,换模型只需改-m参数。
5️⃣ aichat 配置
[commit.generation] command = "aichat -m claude:claude-haiku-4.5"aichat 用户只需把-m换成本人偏好的模型标识即可。
💡 通用原则:任何"从 stdin 读入提示词、向 stdout 输出提交信息"的命令都能接入,以上 5 种只是官方推荐的开箱即用方案。
三大命令的实测效果
配置完成后,以下三个命令都会自动调用 LLM 生成提交信息:
wt step commit— 暂存并提交:
$ wt step commit ◎ Generating commit message and committing changes... (2 files, +26) feat(validation): add input validation utilities ✓ Committed changes @ a1b2c3dwt step squash— 把分支上多个提交压缩为一个:
$ wt step squash ◎ Squashing 3 commits into a single commit (5 files, +16)... ◎ Generating squash commit message... feat(auth): Implement JWT authentication system Add comprehensive JWT token handling including validation, refresh logic, and authentication tests. ✓ Squashed @ a1b2c3dwt merge— 终极合并工作流(压缩 + 生成信息 + 合并到主分支 + 清理 worktree):
$ wt merge ◎ Squashing 3 commits into a single commit (5 files, +16)... ✓ Squashed @ a1b2c3d ✓ Merged to main (1 commit, 5 files, +16) ◎ Removing feature worktree & branch in background自定义提示词模板:控制 AI 的"文风"
默认模板(源码见 src/llm.rs)要求:标题行 50 字符以内、祈使语气、匹配仓库既有提交风格(如 Conventional Commits)。你也可以在[commit.generation]里用自己的template完全替换它,可用变量一览:
| 变量 | 说明 |
|---|---|
{{ git_diff }} | 完整 diff(普通提交为暂存区,squash 为合并 diff) |
{{ git_diff_stat }} | diff 统计(改动文件数、增删行数) |
{{ branch }}/{{ repo }} | 当前分支 / 仓库名 |
{{ recent_commits }} | 最近 5 条提交标题(风格参考) |
{{ commit_details }} | 被 squash 的提交列表(仅 squash 模板) |
{{ target_branch }} | 合并目标分支(仅 squash 模板) |
更轻量的方式:template-append 追加指南
不想重写整个模板?用template-append往提示词尾部追加一段"风格约定",它同时支持用户级(个人偏好)和项目级(团队共享)两层配置。项目级写在.config/wt.toml并提交到仓库,这样每个同事的 LLM 都遵守同一套规范,示例见 dev/wt.example.toml:
# .config/wt.toml [commit.generation] template-append = """ - Use conventional commits (feat:, fix:, docs:, …) - Reference the related issue ID in the body """安全性设计很到位:项目级片段首次发送前会弹出一次性审批提示(和项目 hooks 同款闸门),之后不重复询问;拒绝也不致命,LLM 会照常运行。用户级片段则无需审批。
进阶玩法:LLM 分支摘要
配置好命令后,再开启一行配置:
[list] summary = truewt switch交互选择器的 summary 预览页、wt list --full的 Summary 列,就会出现每个分支的AI 一句话摘要——并行管理 5-10 个 AI 智能体时,扫一眼就能知道每个分支在干什么。摘要带缓存,只有 diff 变化时才重新生成。
常见问题排查
Q:如何调试提示词到底长什么样?用wt step commit --show-prompt(squash 用wt step squash --show-prompt)预览完整提示词而不执行 LLM。命令本身失败时,错误信息里会附带一条可直接复制的复现命令。
Q:命令配置了但报错?配置了[commit.generation]后 LLM 命令失败会显式报错而不是静默退化——这是有意设计,避免你误以为生成了 AI 消息。检查命令是否在 PATH 中、Codex 场景是否装了jq。
Q:旧模板里用了commits变量会怎样?commits已废弃(squash 模板改用commit_details),运行wt config update可自动迁移,无需手动改。
Q:Windows 上能用吗?可以。所有 LLM 命令统一经由平台 shell(Unix 用 sh,Windows 用 Git Bash)执行,因此KEY=value cmd这类行内环境变量写法都能正常工作,实现见 src/llm.rs。
写在最后
Worktrunk 的 LLM 提交信息生成把"写 commit message"这件最容易被 AI 工作流忽略的小事彻底自动化了:5 种工具任选其一、一行command配置接入,模板变量、diff 预算、团队共享风格指南、分支摘要一应俱全。配合 src/llm.rs 的兜底策略,即便 LLM 缺席,工作流也照常运转——这正是"为 AI 智能体并行工作流而生"的工具该有的样子。🚀
【免费下载链接】worktrunkWorktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows项目地址: https://gitcode.com/GitHub_Trending/wo/worktrunk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考