如何从diff自动生成提交信息?Worktrunk llm-commits机制详解 📅 发布时间:2026/9/16 15:07:34 👁 浏览次数: 如何从diff自动生成提交信息Worktrunk llm-commits机制详解【免费下载链接】worktrunkWorktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows项目地址: https://gitcode.com/GitHub_Trending/wo/worktrunkWorktrunk是一款面向并行 AI Agent 工作流的 Git worktree 管理 CLI它的llm-commits 机制能把 git diff 直接交给大模型自动生成提交信息——你不再需要每次手写 commit messageAI 会替你读改动、写摘要并在wt step commit、wt step squash、wt merge时自动生效。本文带你快速上手并拆解这套机制的底层原理。 为什么需要自动生成提交信息手写繁琐多个 worktree 并行开发尤其是 AI Agent 干活、人审核的场景意味着频繁提交每次都要停下来琢磨措辞风格不一团队里提交信息格式混乱难以追溯合并成本高squash 合并时还要再综合多条提交信息。Worktrunk 的思路很直接把 diff 当作原料用 LLM 当笔。只要一条能从 stdin 读入提示词、向 stdout 输出提交信息的命令就能接入。 三步开启 AI 自动生成提交信息第 1 步拿到 Worktrunk从仓库克隆后按 README.md 说明构建安装或在包管理器中搜索 Worktrunk 安装。git clone https://gitcode.com/GitHub_Trending/wo/worktrunk第 2 步配置一条 LLM 命令在用户配置文件~/.config/worktrunk/config.toml中加入[commit.generation]区块。官方为常见工具都准备好了推荐命令完整清单见 dev/config.example.toml工具推荐命令command 的值Claude CodeMAX_THINKING_TOKENS0 claude -p --no-session-persistence --modelhaiku ...Codexcodex exec -m gpt-5.6-luna -c model_reasoning_effortlow ...OpenCodeopencode run -m anthropic/claude-haiku-4.5 --variant fastllmllm -m claude-haiku-4.5aichataichat -m claude:claude-haiku-4.5配置示例[commit.generation] command llm -m claude-haiku-4.5 第一次提交时如果尚未配置Worktrunk 会自动探测本机已安装的claude/codex/opencode并弹窗引导一键写入推荐配置相关逻辑见 src/output/commit_generation.rs。第 3 步体验自动提交在有改动的 worktree 里执行wt step commit效果大致如下演示脚本快照见 docs/demos/snapshots/wt-commit.snap◎ Generating commit message and committing changes... (2 files, 25) feat(validation): add input validation utilities Add validation module with is_positive and is_non_empty helpers for validating user input. Includes comprehensive test coverage. ✓ Committed changes 08d6aa2合并时wt merge会把未提交改动 分支提交压缩成一个 commit同样自动生成信息压缩场景还能用wt step squash单独完成。没有配置 LLM 也不会卡住Worktrunk 会退化为确定性消息例如Changes to auth.rs config.rs保证流程永远可用。 机制详解从 diff 到提示词Worktrunk 做了什么整个流程在 src/llm.rs 中实现可以概括为四步1️⃣ 收集上下文针对提交场景执行git diff --staged与--stat同时取当前分支名、仓库名和最近 5 条提交标题供 LLM 模仿既有风格squash 场景则取合并基点到 HEAD 的合并 diff 与各条提交的 subject/body。2️⃣ 智能控制体积提示词有 100KB 的 diff 预算超限时分两级处理先剔除*.lock、-lock.json等锁文件机器生成的噪音仍超限则每个文件截断到最多 50 行、每行 500 字节并在省略处留下标记。这样即使一次提交改动上万个文件提示词也不会撑爆模型上下文。3️⃣ 模板渲染提示词使用 minijinja 模板引擎渲染可用变量如下变量含义{{ git_diff }}diff 内容提交的暂存改动 / squash 的合并 diff{{ git_diff_stat }}diff 统计文件数、增删行数{{ branch }}/{{ repo }}当前分支名 / 仓库名{{ recent_commits }}最近提交标题用于风格参考{{ commit_details }}被 squash 的提交列表squash 模板专用{{ target_branch }}合并目标分支squash 模板专用4️⃣ 调用外部命令渲染好的提示词通过stdin管道发送给配置的命令捕获 stdout 作为最终提交信息。若命令执行缓慢界面会显示等待中的看门狗状态执行失败时会给出一条可直接复制的复现命令如wt step commit --show-prompt | 你的命令方便排查。✨ 进阶自定义模板与团队共享规范整体替换template/squash-template可用任意 Jinja2 风格模板覆盖默认提示词比如要求标题不超过 50 字符、只输出正文追加引导template-append不必重写整个模板只需追加风格要求。它同时存在于用户配置个人偏好与项目配置.config/wt.toml团队共享中项目片段首次使用时会弹出一次性审批拒绝也不影响提交详见 docs/public/llm-commits.md分支摘要配置[list] summary true后wt list --full会为每个分支生成一行 AI 摘要且带缓存——只有 diff 变化时才重新生成。❓ 常见问题Q1如何查看 Worktrunk 到底发了什么提示词给wt step commit/wt step squash加上--show-prompt即可打印渲染后的完整提示词。Q2配置文件在哪里macOS/Linux 位于~/.config/worktrunk/config.toml支持$XDG_CONFIG_HOMEWindows 位于%APPDATA%\worktrunk\config.toml。Q3LLM 返回空内容会怎样会明确报错LLM returned empty message不会把空信息写进提交历史。Q4提示词太大会不会很慢有 100KB 预算兜底且默认模板建议使用 haiku 级别的高速小模型日常改动通常在几秒内完成。 小结Worktrunk 的 llm-commits 机制用diff 进、提交信息出的管道设计把 LLM 变成了一个即插即用的提交文案助手一条[commit.generation]配置即可接入 Claude Code、Codex、OpenCode、llm、aichat 等工具配合模板变量与template-append既能服务个人工作流也能把统一的提交规范沉淀到团队项目配置中。完整文档见 docs/public/llm-commits.md。【免费下载链接】worktrunkWorktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows项目地址: https://gitcode.com/GitHub_Trending/wo/worktrunk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考