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
命令列表:
任务面板:
在主工作树中:
/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 操作。
创建描述缺少信息时会进入交互向导:
- 输入功能工作区名称;
- 从常用组件组合中选择参与组件,也可以自定义组件名称;
- 选择统一分支名,首个选项会直接使用
defaultBranchPrefix + 功能名,无需重新输入;也可以选择自定义分支; - 未配置的组件会继续询问来源仓库路径;
- 最后展示创建计划并要求确认。
/worktree config
/worktree config project
/worktree config global
/worktree config guard on|off [--global]
/worktree tasks [功能工作区]
不带参数查看当前生效配置;project 编辑当前项目配置;global 编辑全局默认配置。
有效配置按字段合并:先读取全局默认配置,再用项目配置覆盖同名字段。repositories 也按组件名和组件内字段合并,项目值优先;相对路径分别相对于其来源配置文件解析。
配置文件:
.pi/worktree-flow.json
repositories 中的组件名可以使用 backend、frontend 等常用名称,也可以在创建向导中输入任意自定义组件名。未配置的组件会在创建向导中询问来源仓库路径。
示例:
{
"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 只启用
read、grep、find、ls、edit、write。 - 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。
发布到 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 包名在发布前仍需再次确认未被占用。

