mcpField
T
tmux-worktree-session

tmux-worktree-session

github.com/steveclarkeAgent 工作流3661 次安装今天更新
代码仓库

关于 tmux-worktree-session

tmux-worktree-session 是用于搭建隔离 git worktree、tmux 会话和运行中开发环境,并让 Agent 根据任务简报开始工作的技能。它组合 tmux-orchestration 与 handoff,采用 Agent、命令行和开发环境三个窗口的布局。

主要功能

  1. 01创建隔离的 git worktree
  2. 02建立分离式 tmux 会话
  3. 03设置 Agent、命令行和开发窗口
  4. 04编写并提交 Agent 简报
  5. 05验证 Agent 与开发环境启动

适用场景

  1. 01在隔离 worktree 中启动 Agent 任务
  2. 02在 Agent 工作期间运行开发服务
  3. 03准备供人员接入的会话

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/steveclarke/dotfiles --skill tmux-worktree-session

安装后在 Claude Code 中输入/tmux-worktree-session确认已加载。

详细介绍

tmux Worktree 会话

搭建一个独立的工作区:隔离的 git worktree、用于操作它的 tmux 会话、正在运行的开发栈,以及已开始处理任务简报的新 Agent。 人类连接会话时,工作已经开始推进。

组合两项技能:用于安全操作窗格的 tmux-orchestration,以及用于撰写简报的 handoff。

标准布局

Session: <Project>-<work>     (hyphenated, no spaces)
├── Window 1 "agent" → coding agent (Claude/Codex), cwd = worktree, given a
│                      kickoff prompt pointing at the briefing
├── Window 2 "cli"   → bare shell for tests and ad-hoc commands
└── Window 3 "dev"   → dev stack

三个窗口,各司其职,不拆分窗格。这是常见布局;按需调整(没有开发栈、两个 Agent、增加日志窗口)。若情况不明,请确认。除非用户要求,否则不要添加 git/lazygit 窗口。

输入

根据上下文填写,不要反复询问:

  • 工作名称 → 分支名 + 会话名。如果有 PR/issue 编号,优先使用。
  • Agent + 模式 → Claude 或 Codex、fast/plan。不确定时询问一次。
  • 基础分支 → 通常是默认分支;worktree 工具通常以 origin/<default> 为基础,这会影响步骤 1。

流程

1. 撰写简报,并先将其提交到基础分支

使用 handoff 撰写 Agent 要读取的内容:任务目标、范围明确的任务、文件/模式、惯例和限制。简报应说明任务,而非记录历史。

如果 worktree 工具以 origin/<default> 为基础创建新工作树,应先将简报提交并推送到基础分支,再创建 worktree,否则 Agent 看不到简报。

2. 找到并运行 worktree 工具

先查找(见速查表),不要想当然。常见命令:bin/worktree create <name>、bin/worktree create --pr 42。备用方案:git worktree add ../<repo>-<branch> -b <branch> origin/<default>。

创建过程通常会触发完整引导(依赖项、数据库、密钥),耗时可能长达几分钟,不要以为它卡住了。过程中可能会提示输入密钥(1Password、主密钥、环境令牌):这需要由用户批准,请提示用户并等待,切勿自行输入凭据。在可见窗格中运行,并等待明确的完成信号(追加 ; echo DONE_$? 并轮询),之后再启动开发栈。

3. 找到开发栈和测试命令

先查找(见速查表)。优先选择适合你控制的无头/分离模式(例如 process-compose -D + status/logs);也可以使用前台 TUI 供人查看。记下测试运行器,cli 窗口和 Agent 都需要它。

4. 构建会话

通过 tmux-orchestration 处理具体操作。以下细节容易出错:

  • 分离模式创建会话,避免影响用户当前会话。
  • 使用连字符命名,不要有空格。
  • 窗口 1 agent:切换到 worktree 目录,启动 Agent;其界面就绪后,使用缓冲粘贴发送启动消息,然后单独执行 Enter。消息应简短,指向简报。也可以将同级窗格的 ID(cli、dev)交给它,让它通过 tmux CLI 自行轮询。
  • 窗口 2 cli:切换到 worktree 目录,保留一个普通 shell,用于运行测试和临时命令。
  • 窗口 3 dev:切换到 worktree 目录,运行开发栈。

每个窗口都要切换到 worktree 目录,并确保使用正确的工具链(见版本管理器注意事项)。

5. 验证并报告
  • 确认开发栈实际健康(轮询 status/健康状态),而不只是“已启动”;若有任何故障,请查看进程日志。
  • 确认 Agent 实际已启动(捕获其窗格内容,不要假设粘贴成功)。
  • 报告:tmux attach -t <session>。

注意事项

版本管理器不会在派生的 shell 中激活(最重要的一点)。 以编程方式启动的 shell(tmux new-session,非登录 shell)通常不会加载用户的版本管理器(mise/asdf/rbenv/nvm),因此 ruby/node/python 会悄悄回退到系统版本,导致引导失败(例如 "Could not find bundler")。

  • 检查:比较你所在窗格与用户环境中的 ruby -v 等输出。结果不一致就是问题的迹象。
  • 修复交互式窗格:将 shims 加入 PATH,例如 mise 的 export PATH="$HOME/.local/share/mise/shims:$PATH"。
  • 同时修复开发栈的子进程:每条需要使用 mise 管理的工具的命令都运行 eval "$(mise activate bash)" && …(或 mise exec --)。

窗格机制与安全性 → tmux-orchestration。 窗格 ID 定向、绝不向自己的窗格写入、先读后写、粘贴多行提示词缓冲区、将 Enter 作为单独一步——这些内容都在其中。不要在此重复;请遵循其说明。这里值得重申两点:会话名称中不能有空格(session:window 目标会被错误解析),并且要用程序自身的按键退出开发 TUI(process-compose 使用 F10),不要猜测使用 Ctrl-C。

快速查找指南

需求查找内容
Worktree 工具bin/worktree、script/worktree、DEVSTACK.md、just/make,否则使用 git worktree add
开发栈bin/dev、npm/pnpm dev、foreman/overmind、process-compose、docker compose、mise run dev、项目命令
测试运行器bin/rspec、pnpm test、pytest、go test、Makefile
工具链.mise.toml/.tool-versions/.ruby-version/.nvmrc — 确认派生的 shell 使用了它

评论

支持 Markdown