Skip to content

Sskift/tmux-worktree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tmux-worktree

tmux-worktree 提供两套工具,用于管理 AI 编程 session:

  • tw:Node.js CLI,创建独立 git worktree、启动 tmux session,并运行指定 AI 命令。
  • tw-dashboard:macOS Tauri 桌面端,管理 tmux session、worktree、终端、文件、Git 状态和远程访问。

仓库代码结构、开发/发布边界见 ARCHITECTURE.md

安装

Dashboard

内部 bnpm 安装:

npx -y --registry=https://bnpm.byted.org -p @byted-codebase/tmux-worktree tw-dashboard-install
open -a tw-dashboard

如果已经有 DMG,也可以手动拖入 /Applications 安装。

CLI

npm i -g @byted-codebase/tmux-worktree --registry=https://bnpm.byted.org
tw setup

配置

CLI 和 Dashboard 共用 ~/.tmux-worktree.json

{
  "projects": {
    "myapp": "/path/to/myapp",
    "backend": "/path/to/backend"
  },
  "worktreeBase": "/private/tmp/tmux-worktree/projects"
}
  • projects:项目名到 git 仓库路径的映射,供 CLI 和 Dashboard 新建 worktree 使用。
  • worktreeBase:自动创建 worktree 的父目录。

Dashboard 额外状态文件:

  • ~/.tw-dashboard-layout.json:窗口、栏目、当前选择、文件树、编辑器/diff、侧边栏布局。
  • ~/.tw-dashboard-terminals.json:独立终端列表。
  • ~/.tw-dashboard-pending-worktree-cleanup.json:延迟清理的 worktree 记录。

CLI 使用

创建 AI 开发环境:

tw claude myapp
tw claude myapp fix-auth
tw "claude --model opus" backend
tw claude ~/some/repo
tw

子命令:

  • tw setup:检查系统依赖。
  • tw status:tmux 内的 session 状态面板。
  • tw serve:启动本地 WebSocket 终端服务。
  • tw serve --remote:本地终端服务加 Cloudflare Quick Tunnel。

Dashboard 使用

常用流程:

  1. 点击 + worktree 创建或恢复 worktree session。
  2. 在左侧选择 session,主区域会 attach 到对应 tmux。
  3. 左下角 Git 面板查看分支、文件变更和 commit 历史。
  4. 打开文件树后,可以浏览项目并打开编辑器或 diff 栏。
  5. 点击 remote access,通过 Cloudflare Quick Tunnel 在手机或其他设备访问 Web 终端。

布局行为:

  • 首次打开是默认三栏:侧边栏、主终端、scratch。
  • 如果关闭前打开了文件树、编辑器或 diff 栏,重启后会恢复这些栏目和宽度。
  • Git 面板会跟随当前 tmux session 的 active pane cwd,因此 agent 在 tmux 中切换目录或分支后,面板分支也会刷新。

开发

依赖:

  • Node.js 20+
  • Rust stable
  • Xcode Command Line Tools
  • tmux
  • git
  • cloudflared,可选,仅远程访问需要

CLI:

npm install
npm run build
node dist/cli.js status --once

Dashboard:

cd app
npm install
npm run tauri dev

如果本机已经安装正式版 tw-dashboard.app,建议用隔离 dev app:

cd app
npm run tauri:dev:isolated
npm run tauri:dev:install

本地 dev 版本有两种常用方式:

  • npm run tauri:dev:isolated:启动热更新 dev app,使用临时 TW_DASHBOARD_HOME,适合日常开发调试。
  • npm run tauri:dev:install:构建一个唯一命名的 debug .app 并安装到 /Applications,适合 GUI smoke test 或需要从 Finder/open 启动的场景。

tauri:dev:install 会在输出中打印卸载和临时状态目录清理命令。验证结束后按输出清理,避免 /Applications/tmp 堆积旧 dev app。

发布

CLI 和 Dashboard installer 共用根目录 npm 包发布:

./app/scripts/release.sh --dry-run
./app/scripts/release.sh

发布脚本会:

  1. 构建 Tauri Dashboard DMG。
  2. 构建根目录 CLI 到 dist/cli.js
  3. 复制 DMG 到 app/installer/dmg/tw-dashboard-arm64.dmg
  4. 发布根目录 npm 包到 bnpm。

npm 包只包含:

  • dist
  • app/installer/installer.mjs
  • app/installer/dmg/

Feat/Bugfix 完成后的标准工作流

每次完成一个 feature 或 bugfix 后,按下面顺序推进。不要跳过构建测试,也不要在测试失败时 bump 或发布。

  1. 确认工作区和分支。
git status --short --branch
git diff --check
  1. 构建和测试。
npm install
npm run build

cd app
npm install
npm run build

cd src-tauri
cargo fmt --check
cargo check
cargo test
  1. 及时更新文档。

代码行为、发布步骤、配置、运行时状态或开发/发布边界发生变化时,必须同步更新:

  • README.md:用户使用、开发、发布和操作流程。
  • ARCHITECTURE.md:代码结构、开发/发布边界、状态文件和关键 command 分组。

不要新增重复文档;优先维护这两份。

  1. Bump 版本号。

需要同步更新:

  • package.json:npm 包版本,决定 bnpm 发布版本。
  • app/src-tauri/tauri.conf.json:Dashboard 构建版本,决定 DMG 文件名。
  • app/src-tauri/Cargo.toml:Rust crate 版本,保持本地构建元数据一致。

app/package.json 是私有前端工程版本,默认不作为发布版本来源,除非明确需要一起维护。

  1. 提交并同步 feature/bugfix 分支到两个远端。
git add <changed-files>
git commit -m "fix: ..."
git push origin HEAD:<branch>
git push github HEAD:<branch>
  1. 合入 origin/master

在 Codebase 创建 MR:<branch> -> master。确认 diff、checks 和 mergeability 后再合入。

codebase mr create -R jiangyunong/tmux-worktree --source <branch> --target master --title "<title>" --body "<summary>"
codebase mr status -R jiangyunong/tmux-worktree -N <mr>
codebase mr checks list -R jiangyunong/tmux-worktree -N <mr>

如果是自己负责的小改动且明确不需要人工 review,可以按仓库当前流程 skip review:

codebase mr bypass -R jiangyunong/tmux-worktree -N <mr> --review --reason no_need_for_review --yes
codebase mr merge -R jiangyunong/tmux-worktree -N <mr> --merge --no-delete-branch --yes
  1. 同步 github/master
git fetch origin master
git push github origin/master:master
git fetch github master

确认两边主分支一致:

git rev-parse --short origin/master github/master
git log --oneline --left-right --cherry-pick origin/master...github/master
  1. 构建本地 dev/debug app 做 smoke test。

如需热更新调试:

cd app
npm run tauri:dev:isolated

如需安装一个独立 debug app 到 /Applications 验证真实启动行为:

cd app
npm run tauri:dev:install

确认关键功能后,按命令输出中的 uninstallcleanup state 清理本地 dev app。

  1. 构建安装包并发布 release。

先预览包内容:

./app/scripts/release.sh --dry-run

确认无误后发布:

./app/scripts/release.sh
  1. 更新本地验证仓库。
cd ~/Desktop/test/tmux-worktree
git fetch origin master
git fetch github master
git merge --ff-only origin/master
git status --short --branch
  1. 更新本机已安装的 Dashboard App。

发布到 bnpm 后,用正式安装器更新 /Applications/tw-dashboard.app

npx -y --registry=https://bnpm.byted.org -p @byted-codebase/tmux-worktree tw-dashboard-install
open -a tw-dashboard

License

MIT

About

macOS native desktop app for managing AI coding sessions — integrates tmux, git worktree, and remote terminal access via Cloudflare Tunnel

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors