Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
4.7 KiB
如何使用工作区隔离工作
目标: 创建一个完全隔离的 MSD 环境——独立的 git worktree、独立的 .planning/ 根目录,以及可选的多仓库支持——适用于功能分支或多仓库工作场景。
前提条件: 已安装 git 且仓库支持 worktree。对于多仓库工作区,目标仓库需存在于本地或可通过路径访问。
什么是工作区
工作区是一个自包含的环境,将一个或多个 git worktree(或克隆)与独立的 .planning/ 根目录配对。每个工作区包含:
- 独立的
.planning/目录,完全独立于源仓库的.planning/——并非其子目录 - 独立的
WORKSPACE.md清单文件,用于跟踪成员仓库 - git worktree(默认)或指定仓库的完整克隆,在专用分支上检出(默认:
workspace/<name>)
工作区默认存放在 ~/msd-workspaces/<name>/ 下。
~/msd-workspaces/
└── feature-b/
├── WORKSPACE.md ← 清单文件
├── .planning/ ← 完全独立的 MSD 状态
│ ├── PROJECT.md
│ ├── ROADMAP.md
│ └── ...
├── hr-ui/ ← hr-ui 仓库的 worktree 或克隆
└── ZeymoAPI/ ← ZeymoAPI 仓库的 worktree 或克隆
由于工作区的 .planning/ 与源仓库相互独立,不会与源仓库中已有的规划状态发生重叠或冲突。
为多个仓库创建工作区
/msd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI
MSD 会在 ~/msd-workspaces/feature-b/ 中创建 hr-ui 和 ZeymoAPI 的 worktree,在每个仓库中检出 workspace/feature-b 分支,写入 WORKSPACE.md,并创建一个空的 .planning/ 目录,准备好供 /msd-new-project 使用。
自定义位置:
/msd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI --path /projects/feature-b
为当前仓库创建工作区
当你需要在单个仓库上进行功能分支隔离——独立分支、独立 .planning/、不受 main 分支状态影响时:
/msd-workspace --new --name payments-rework --repos .
. 表示为当前仓库创建 worktree,该 worktree 会在 workspace/payments-rework 分支上检出。
若要强制使用完整克隆而非 worktree:
/msd-workspace --new --name payments-rework --repos . --strategy clone
显式指定分支
/msd-workspace --new --name payments-rework --repos . --branch feature/payments-v2
--branch 标志为工作区中所有仓库设置分支名称,默认为 workspace/<name>。
跳过交互式询问
/msd-workspace --new --name payments-rework --repos . --auto
MSD 将接受所有默认值,无需提示确认。
在工作区内初始化 MSD
创建工作区后,进入工作区目录并初始化 MSD 项目:
cd ~/msd-workspaces/feature-b
/msd-new-project
工作区内的 .planning/ 目录是从该目录运行所有后续 MSD 命令的根目录。它与源仓库中存在的任何 .planning/ 完全独立。
列出工作区
/msd-workspace --list
打印所有活跃的 MSD 工作区及其状态。
删除工作区
/msd-workspace --remove feature-b
MSD 会移除 git worktree 并清理工作区目录。此操作不会从远程仓库删除分支——仅删除本地 worktree 和工作区目录。
何时使用工作区而非工作流
选择工作区的场景:
- 你需要跨多个仓库协同工作,且这些仓库需要在同一个 MSD 项目下进行协调(例如,一个 API 仓库和一个 UI 仓库需要一起发布)
- 你需要每个功能拥有独立的 git worktree,带有各自的分支、锁文件和构建产物——以确保一个环境中的构建和依赖安装不会影响另一个环境
- 你希望拥有完全独立的
.planning/根目录,而非主仓库.planning/的子目录 - 你正在采用 Issue 驱动的工作流,将每个跟踪器 Issue 映射到一个工作区(参见从跟踪器 Issue 驱动 MSD)
选择工作流的场景:
- 所有工作都在单一仓库中进行,共享相同的 git 历史
- 你希望在不同关注领域(API、UI、基础设施)上并发运行
/msd-plan-phase或/msd-discuss-phase,且各自的STATE.md文件之间互不干扰 - 你不需要每个关注领域拥有独立的 worktree;切换规划上下文即可满足需求