news 2026/10/1 15:21:35

workmux 并行开发实战:从 add 到 merge 的完整工作流清单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
workmux 并行开发实战:从 add 到 merge 的完整工作流清单

workmux 并行开发实战:从 add 到 merge 的完整工作流清单

【免费下载链接】workmuxgit worktrees + tmux windows for zero-friction parallel dev项目地址: https://gitcode.com/gh_mirrors/wo/workmux

workmux 是一款把git worktrees + tmux 窗口捆绑管理的开源并行开发工具:一条workmux add命令即可创建独立开发环境,一条workmux merge命令即可完成合并与全量清理。本文带你走通从创建 worktree 到合并收尾的完整实战流程,零冲突、零切换分支,特别适合多 AI Agent 并行写代码的场景 🚀

为什么需要 workmux 并行开发?

传统 Git 流程下,切换任务意味着git stash、切分支、重跑环境。而 git worktrees 允许同一仓库的多个分支同时检出于不同目录。workmux 在此之上做了三件关键的事:

  • 一个任务一个窗口:每个 worktree 自动配一个同名 tmux 窗口,含独立终端状态、编辑器、开发服务器和 AI Agent;
  • 环境自动就绪:新 worktree 自动拷贝.env、软链node_modules、跑post_create钩子,不再"新建即损坏";
  • 一条命令收尾:workmux merge完成合并、删 worktree、关窗口、删分支的全生命周期清理。

💡 workmux 默认使用 tmux,也支持 kitty、WezTerm、Zellij 作为终端复用后端。

快速安装与环境准备

brew install raine/workmux/workmux # Homebrew(macOS/Linux) # 或 cargo install workmux # Cargo

然后在项目里跑一次workmux init(可选),生成.workmux.yaml配置文件,自定义窗格布局、初始化钩子与文件操作。不配置也能开箱即用,workmux 内置了合理默认值。

第一步:用 workmux add 创建并行工作区

在 tmux 窗口内执行:

workmux add user-auth

一条命令背后自动完成 7 件事(完整逻辑见 add 命令实现):

  1. 基于分支名生成 handle(如feature/auth→feature-auth)
  2. 在<项目>__worktrees/user-auth目录创建 git worktree
  3. 执行文件拷贝/软链操作(如.env、node_modules)
  4. 运行post_create钩子(装依赖、建数据库等)
  5. 创建 tmux 窗口wm-user-auth
  6. 按配置铺好窗格布局(编辑器 + Agent + 开发服务器)
  7. 自动把光标切到新窗口

几个实战高频参数:

场景命令
交给 AI Agent 干workmux add feat -p "实现用户登录"
后台创建不打断当前工作workmux add feat -b
把当前未提交改动搬过去workmux add feat --with-changes
一次给多个 Agent 各建一个workmux add feat -a claude -a gemini
从 PR 检出一个工作区workmux add --pr 123
预览将做什么(不创建)workmux add feat --dry-run

创建多个独立工作区时,只需重复add,各窗口互不干扰——这就是"并行"的全部秘密。

第二步:并行开发期间如何掌控全局?

多个窗口同时跑着 Agent,靠什么盯进度?workmux 提供三层监控手段:

①workmux list一览状态

workmux list

输出包含每个 worktree 的分支、Agent 状态(🤖 工作中 / 💬 等待输入 / ✅ 完成)、窗口是否存在、是否有未合并提交。加--pr还能显示 PR 检查状态。

② Dashboard 看板:审查改动、直接给 Agent 发消息

workmux dashboard

Dashboard 支持按d查看 WIP 差异、按i进入输入模式直接回复 Agent 提问、按R一键批量清理已合并/已删除的工作区,是并行开发中的"指挥中心"。

③ Sidebar 侧边栏:常驻的轻量状态条

workmux sidebar在 tmux 中常驻显示所有 worktree 的 Agent 状态、git 差异统计和 PR 信息,不打断当前工作流,适合常驻开启。

进阶:让主 Agent 替你分发任务

安装官方技能(workmux setup --skills)后,可以在对话中用/worktree技能把任务委托给新 worktree 中的 Agent,它会自动写好 prompt 文件并执行workmux add,参见 worktree 技能定义:

> /worktree 实现我们讨论过的缓存层

多任务需要按顺序合并、全程自动监控时,用/coordinator技能让主 Agent 负责派发、等待、审查和合并的全生命周期,你完全不用手动盯。

第三步:workmux merge 一键合并并全量清理

开发完成后,在对应 worktree 窗口内直接执行:

workmux merge

不带参数时自动识别当前分支,随后自动完成 8 步收尾:检查未提交改动 → 提交已暂存内容 → 合并到 main → 关 tmux 窗口 → 删 worktree 目录 → 删本地分支。常用变体:

workmux merge user-auth # 合并指定分支 workmux merge user-auth --rebase # 先 rebase 保持线性历史 workmux merge user-auth --squash # 压缩为单个提交 workmux merge user-auth --keep # 先合并、暂不清理,验证后再 workmux remove workmux merge subtask --into parent # 合并进父分支(stacked 工作流)

不想手动操作?给 Agent 装上 /merge 技能,输入/merge即可:自动提交(带上下文感知的 commit message)→ rebase 到基分支 → 智能解决冲突 → 执行workmux merge。相关命令实现可参考 merge 模块 与 workflow 合并逻辑。

替代路线:PR 工作流收尾

如果团队走 Pull Request 评审,合并发生在远端。流程是:push 分支、创建 PR(可用/open-pr技能 让 Agent 基于对话上下文写好描述),PR 合并后本地清理:

workmux remove feature-123 # 清理指定 worktree workmux rm --gone # 一键清理所有远端分支已删除的 worktree

--gone特别实用:PR 合并后远端分支自动删除,这条命令会批量找出并移除这些"孤儿"工作区。

完整工作流清单(可收藏版)

阶段命令说明
初始化workmux init生成项目配置.workmux.yaml
创建workmux add <branch>worktree + tmux 窗口一步到位
分发任务/worktree <任务>委托给并行 Agent(技能)
监控workmux list/workmux dashboard状态一览 / 交互看板
同步基线workmux rebase把分支 rebase 到保存的基分支
恢复workmux open <name>/workmux resurrect重开窗口 / 崩溃后恢复
合并workmux merge合并 + 清窗口 + 删 worktree + 删分支
弃掉workmux remove --keep-branch只删环境保留分支
批量清理workmux rm --all/--gone全清 / 清理已合并

更多模式(会话模式、命名布局、沙箱运行 Agent 等)可查阅 官方文档指南 与 工作流参考。

写在最后

workmux 的设计哲学是"构建在你已有的工具上":tmux 负责窗口、git 负责 worktree、你的 Agent 负责写代码,它只负责把三者无缝粘合成一条从add到merge的零摩擦流水线。当并行任务从 1 个变成 5 个,你会真切体会到:上下文切换的成本,应该只等于切一个标签页 🎯

【免费下载链接】workmuxgit worktrees + tmux windows for zero-friction parallel dev项目地址: https://gitcode.com/gh_mirrors/wo/workmux

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 15:21:18

Java Integer 缓存池原理,为什么 100==100 true,200==200 false,AI 开发踩坑

大家好&#xff0c;这里是后端基础拾光集。今天我们来看ava 核心语法里面一个很容易踩坑的地方包装类与 Integer 缓存池陷阱 先看一段非常诡异的代码&#xff0c;很多人第一次运行都会怀疑是不是哪里出问题&#xff1a; Integer a 100; Integer b 100; System.out.println(a …

作者头像 李华
网站建设 2026/10/1 15:20:10

Gemini去AIGC工作流怎么搭?2026年实测3组调优指令+3款工具,99%打回10%

想把AI生成的内容调整得更贴近真人写作的质感&#xff1f;我试过大量方法后发现&#xff0c;最开始没必要急着挨个替换同义词。AI生成内容的核心特点是视角过于中立&#xff0c;表达过于顺滑周全&#xff0c;缺少真人写作自带的生活感与思辨时的拉扯感。 我摸索出的核心思路是&…

作者头像 李华
网站建设 2026/10/1 15:19:49

Java+SpringBoot农产品供销系统:从需求到答辩全流程实战

做毕设最怕的&#xff0c;不是没方向&#xff0c;而是方向太泛&#xff0c;功能做得像作业&#xff0c;答辩一问就露馅。今天聊一个很接地气的选题&#xff1a; JavaSpringBoot农产品供销服务系统 。这名字听起来长&#xff0c;其实拆开就是 农产品电商交易管理平台 的Web版…

作者头像 李华
网站建设 2026/10/1 15:19:20

用上Cursor,老板的表情比你还精彩!TaoToken统一Key接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 15:17:10

手把手教你做 StarRocks Agent:用 MCP 打通 DeepChat 与 Python 查询链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华