Skip to content

Repository files navigation

worktree-flow

GitHub: https://github.com/TY-ang/pi-worktree-flow

面向 Pi 的多仓库 Git Worktree 编排扩展,支持受限后台 Worker、项目/全局配置合并和独立任务面板。

工作区路径规则:worktreeRoot/项目名/功能名/组件。默认根目录是当前用户主目录下的 worktrees,可以通过配置修改。

安装与加载

npm 包发布后可全局安装:

pi install npm:pi-worktree-flow

本地开发安装:

pi install D:/path/to/pi-worktree-flow

安装或修改扩展后,在 Pi 中执行:

/reload

也可以从命令行临时加载:

pi -e ./.pi/extensions/worktree-flow/index.ts

截图

命令列表:

Commands

任务面板:

Task dashboard

命令

在主工作树中:

/worktree create 创建前后端的 selection-v2 工作树,分支统一使用 feature/selection-v2
/worktree status selection-v2
/task selection-v2 实现完整的前后端需求
/worktree finish selection-v2

主工作树中执行 /task 时,如果没有提供已登记的功能名,会先通过下拉框选择目标工作区,再询问任务内容。直接输入 /task 写个 HTML 页面 时,整段文字会保留为任务内容,不会再把“写个”误判为工作区名称。

在功能工作区根目录中:

/task 实现完整需求
/worktree status

也可以直接输入自然语言任务,例如 写个 HTML 页面;扩展会自动按当前功能清单派发 Worker,不再强制要求 /task 前缀。带 / 的命令、附带图片的输入和 Worker 自身输入不会被自动派发。

创建前可以使用:

/worktree create 创建后端的 calculator 工作树,分支统一使用 feature/calculator --dry-run

--dry-run 只展示计划,不执行 Git 操作。

创建描述缺少信息时会进入交互向导:

  1. 输入功能工作区名称;
  2. 从常用组件组合中选择参与组件,也可以自定义组件名称;
  3. 选择统一分支名,首个选项会直接使用 defaultBranchPrefix + 功能名,无需重新输入;也可以选择自定义分支;
  4. 未配置的组件会继续询问来源仓库路径;
  5. 最后展示创建计划并要求确认。

配置命令

/worktree config
/worktree config project
/worktree config global
/worktree config guard on|off [--global]
/worktree tasks [功能工作区]

不带参数查看当前生效配置;project 编辑当前项目配置;global 编辑全局默认配置。

有效配置按字段合并:先读取全局默认配置,再用项目配置覆盖同名字段。repositories 也按组件名和组件内字段合并,项目值优先;相对路径分别相对于其来源配置文件解析。

配置

配置文件:

.pi/worktree-flow.json

repositories 中的组件名可以使用 backendfrontend 等常用名称,也可以在创建向导中输入任意自定义组件名。未配置的组件会在创建向导中询问来源仓库路径。

示例:

{
  "version": 1,
  "worktreeRoot": "D:/workspace/worktree",
  "projectName": "my-project",
  "defaultBaseBranch": "main",
  "defaultBranchPrefix": "feature/",
  "orchestratorGuard": true,
  "repositories": {
    "backend": { "path": "D:/workspace/backend/my-project" },
    "frontend": { "path": "D:/workspace/frontend/my-project" }
  }
}

任务页面

/worktree tasks 打开独立任务页面,按“功能工作树 → 任务 → 任务详情”三级浏览任务历史和实时状态,不会改变 Pi 的工作目录。任务记录保存在项目工作树根目录的 .pi-tasks.json

任务进度

Worker 进度写入任务注册表并显示在 /worktree tasks 页面,不会把每个工具事件持续写入主会话。主会话只保留任务启动、重要错误和完成通知。/worktree status <功能名> 可查看清单中的最近任务状态。项目验证命令由用户根据项目自身的构建工具执行。

安全行为

  • 主工作树会话禁止直接使用 edit/write 修改代码。
  • Worker 只启用 readgrepfindlseditwrite
  • Worker 的写入路径必须位于登记的目标 Worktree 内。
  • 创建、删除和清理 Worktree 都需要明确确认。
  • Worker 不自动提交、推送或删除分支。

全局安装与卸载

在 PowerShell 中执行:

./scripts/install-global.ps1

脚本使用 Pi 官方包管理器把当前目录登记为全局本地包。卸载:

./scripts/uninstall-global.ps1

也可以直接使用:

pi install D:/path/to/pi-worktree-flow
pi remove D:/path/to/pi-worktree-flow

卸载只移除包登记,不删除项目 .pi/worktree-flow.json、全局 ~/.pi/agent/worktree-flow.json 或已有 Worktree。

发布 Pi Package

发布到 npm 前先确认包名和内容:

npm pack --dry-run
npm login
npm publish --access public

发布后安装和卸载:

pi install npm:pi-worktree-flow
pi remove npm:pi-worktree-flow

package.json 已声明 pi.extensions 并包含 pi-package 关键字,可用于 Pi package gallery 发现。npm 包名在发布前仍需再次确认未被占用。

About

Multi-repository Git Worktree orchestration and background task dashboard for Pi

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages