@jspg-ai/coding-bb 0.0.3-beta.27 → 0.0.3-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -112,7 +112,7 @@ trigger: always_on
112
112
  **模式二 · worktree 模式(并行 / 隔离):**
113
113
 
114
114
  - `cbb-worktree-init` 建隔离 worktree(AI 配置内容子目录已 junction 就位),**开发会话开进 `.worktrees/worktree-<需求名>/`**,可多需求并行;app 检出收拢在 `<wt>/.codespace/<app>/`——**镜像空间根布局**(`.codespace/<app>/...` 相对路径两模式通用,ADR 0003)
115
- - 根会话保留作控制面(worktree 生灭、`cbb update` 等空间级操作);**会话形态按工具定**:桌面端单窗口 = 当前窗口把工作区根切进 worktree(上下文保留,空间根路径在案供回切);CLI/TUI = 新开会话进 worktree
115
+ - 根会话保留作控制面(worktree 生灭、`cbb update` 等空间级操作);**会话形态按工具定,能自动则 agent 亲自做**:OpenCode 桌面端 = agent 自动把会话切进/切出 worktree(`session_move`,上下文保留、不列入用户待办,空间根路径在案供回切);无会话搬移能力的桌面端 = 用户手动切根;CLI/TUI = 新开会话进 worktree
116
116
 
117
117
  **基准与防线(两模式共同,ADR 0002):**
118
118
 
@@ -323,21 +323,23 @@ node "<skill_dir>/scripts/remove-worktrees.js "<ws_root>" "<branch>" "<force>"
323
323
 
324
324
  所有 worktree 已成功移除后,如果当前 shell 的工作目录位于**已被关闭的 worktree 内**,需要主动让 IDE 窗口切回 `WS_ROOT`,避免 IDE 窗口指向已删除的目录。
325
325
 
326
- > ⓘ **本节是 close-worktree 专属逻辑**:与 init-worktree 的 Step 5 不共享、不交叉同步。init-worktree 负责"创建后**在新窗口打开** worktree",本节负责"关闭后切回根目录",两者职责独立。
326
+ > ⓘ **本节是 close-worktree 专属逻辑**:与 init-worktree 的 Step 5 不共享、不交叉同步。init-worktree 负责"创建后把开发会话开进 worktree",本节负责"关闭后切回根目录",两者职责独立。
327
327
 
328
328
  **AI agent 行为**:
329
- 1. 检查当前 cwd 是否在被关闭的 worktree 内
330
- 2. 仅当匹配时,调用对应 IDE 的 `--reuse-window` 命令切回 WS_ROOT:
329
+ 1. 检查当前会话 / IDE 窗口是否指向被关闭的 worktree
330
+ 2. **OpenCode 等支持会话搬移的工具**:agent 亲自经 code-mode 调用 `opencode.session_move` 把会话切回 `<ws_root>`——自动完成、上下文保留、**不列入用户待办**,切完核对工作目录
331
+ 3. **Qoder / Cursor / VS Code**:调用对应 IDE 的 `--reuse-window` 命令切回 WS_ROOT:
331
332
  - Qoder → `qoder --reuse-window "<ws_root>"`
332
333
  - Cursor → `cursor --reuse-window "<ws_root>"`
333
334
  - VS Code → `code --reuse-window "<ws_root>"`
334
- 3. **JetBrains 跳过主动切换**——`idea64 <path>` 会启动新进程或提示"打开/在新窗口打开",让用户手动操作
335
+ 4. **JetBrains 跳过主动切换**——`idea64 <path>` 会启动新进程或提示"打开/在新窗口打开",让用户手动操作
335
336
 
336
337
  **关键点**:
337
- - **只在 pwd 匹配被关闭的 worktree 时触发**——如果 IDE 窗口本身在 WS_ROOT 内,或会话位于其他目录,再切一次是多余的
338
+ - **只在会话 / 窗口匹配被关闭的 worktree 时触发**——如果已在 WS_ROOT 内,再切一次是多余的
339
+ - **OpenCode 会话切回是零成本自动动作**——`session_move` 复用当前会话(上下文保留、无新窗口),agent 亲自做,严禁推给用户
338
340
  - **仅切 Qoder / Cursor / VS Code**——这三者的 `--reuse-window` 是轻量级"切目录",不重启 IDE
339
341
  - **不会产生孤立窗口**——`--reuse-window` 是复用当前窗口切换目录,**不会打开新窗口**。即使 IDE 已开着指向 WS_ROOT 的其他窗口,本步骤也不会重复创建,仅是把当前指向已删除目录的窗口切走
340
- - **失败不致命**——`--reuse-window` 失败时仅警告,后续分支删除不受影响
342
+ - **失败不致命**——`session_move` / `--reuse-window` 失败时仅警告,后续分支删除不受影响
341
343
 
342
344
  ### 4.4 分支处理(默认跳过,按需手动调用)
343
345
 
@@ -384,7 +386,7 @@ git -C "<ws_root>" worktree list
384
386
 
385
387
  目标 worktree 应已不在列表中。
386
388
 
387
- **工作区回根交接(必须执行)**:若用户的开发会话工作在 worktree 内(桌面端切根工作流,当前窗口的工作区根 = 已删除的 `<wt_path>`),此刻目录树已悬空——必须提示用户把工作区切回 `<ws_root>`(打开文件夹 / Open Folder / 切换工作目录),并在最终报告中给出该绝对路径。
389
+ **工作区回根交接(必须执行)**:若用户的开发会话工作在 worktree 内(当前会话工作目录 = 已删除的 `<wt_path>`),此刻目录已悬空——**OpenCode 等支持会话搬移的工具由 agent 自动 `session_move` 切回 `<ws_root>`,不列入用户待办**;无该能力的工具才提示用户把工作区切回 `<ws_root>`(打开文件夹 / Open Folder / 切换工作目录),并在最终报告中给出该绝对路径。
388
390
 
389
391
  ---
390
392
 
@@ -404,7 +406,7 @@ git -C "<ws_root>" worktree list
404
406
  (无未归档 change 时不显示本节)
405
407
  分支处理:feature-xxx 已保留(默认行为;如需删除分支,手动调用 scripts/delete-branches.js)
406
408
  剩余工作空间 worktree:<列出仍存在的,或 "无" >
407
- 👉 若你的窗口目录树仍停在已删除的 worktree,请切回工作空间根:<ws_root 绝对路径>
409
+ 👉 仅当所用工具不支持自动切根、且你的窗口仍停在已删除的 worktree 时,请手动切回工作空间根:<ws_root 绝对路径>
408
410
  Workspace cleaned up.
409
411
  ```
410
412
 
@@ -320,8 +320,9 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
320
320
 
321
321
  不执行脚本。AI agent 向用户输出最终报告(格式见「最终报告」),并完成以下交接声明:
322
322
 
323
- 1. **开发会话开进 worktree**(按工具形态,二选一):
324
- - **桌面端(单窗口工作流)**:将当前窗口的工作区根切到 `<wt_path>`(打开文件夹 / Open Folder / 切换工作目录)——**无需新窗口**,聊天上下文保留;AI 配置已 junction 就位(`/opsx:*` 等命令照常可用),`.codespace/<app>/...` 相对路径原样生效
323
+ 1. **开发会话开进 worktree**(按工具形态,**能自动则 agent 亲自做,不推给用户**):
324
+ - **OpenCode 等支持会话搬移的工具(桌面端单窗口工作流)**:由 **agent 自己**把当前会话的工作目录切到 `<wt_path>`(经 code-mode 调用 `opencode.session_move`,`directory = <wt_path>`)——聊天上下文保留、无需新窗口、**不列入用户待办**;AI 配置已 junction 就位(`/opsx:*` 等命令照常可用),`.codespace/<app>/...` 相对路径原样生效
325
+ - **无会话搬移能力的桌面端工具(Claude Code / Qoder 等)**:提示用户把当前窗口的工作区根切到 `<wt_path>`(打开文件夹 / Open Folder / 切换工作目录)
325
326
  - **CLI / TUI agent**:新开会话于 `<wt_path>`;根会话保留作控制面——后续创建/关闭 worktree、`cbb update` 等空间级操作在此执行
326
327
  - 无论哪种形态,**必须向用户报出空间根绝对路径 `<ws_root>`**(控制面地址:close 关闭 worktree 后回切用)
327
328
  2. **目录纪律(worktree 会话内自然成立)**:会话 cwd == 开发目录,上游相对路径原样生效;**分支感知 hook 已覆盖全部仓库**——任何落 main 的载荷提交会被拦截(大声失败是防线,不是故障)
@@ -338,7 +339,7 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
338
339
  ✅ worktree 已创建:<wt_path>
339
340
  关联应用:<应用名 → .codespace/<应用名> 路径> 列表(全量,或用户显式指定的子集)
340
341
  🔗 AI 配置已 junction 就位:rules / skills / commands(cbb update 一处生效)
341
- 📌 开发会话开进 <wt_path>(桌面端:当前窗口切换工作区根即可,无需新窗口;CLI 端:新开会话)
342
+ 📌 开发会话已开进 <wt_path>(OpenCode:agent 已自动切换会话工作目录;CLI 端:新开会话;无搬移能力的桌面端:已提示用户切根)
342
343
  空间根路径(控制面,close 后回切):<ws_root>
343
344
  👉 下一步建议:
344
345
  1. 开始需求开发(开发会话内,二选一):
@@ -432,7 +433,7 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
432
433
  ### 完成后开发会话未开进 worktree
433
434
 
434
435
  - **问题:** 流程结束后开发会话仍停留在工作空间根目录(junction 好的 AI 配置没人加载),agent 在根会话里靠路径翻译干活,回到第一代失败模式
435
- - **修复:** Step 4 交接必须明确"开发会话开在 `<wt_path>`"(桌面端 = 当前窗口切工作区根;CLI = 新开会话);根会话保留作控制面(worktree 生灭、`cbb update`)
436
+ - **修复:** Step 4 交接必须确保"开发会话开在 `<wt_path>`"(OpenCode 等支持会话搬移的工具 = agent 亲自经 `session_move` 切换、不列入用户待办;无该能力的桌面端 = 提示用户切根;CLI = 新开会话);根会话保留作控制面(worktree 生灭、`cbb update`)
436
437
 
437
438
  ### 用 `git checkout -b` 在创建 worktree 前切分支
438
439
 
@@ -473,7 +474,7 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
473
474
  - 严格 Step 3.3 → Step 3.5 顺序(先统一创建分支,再统一创建 worktree;workspace 工作树先建,各应用按序补建)
474
475
  - Step 3.6 junction AI 配置(失败不阻塞,但要报告)
475
476
  - 所有脚本调用以 `node "<skill_dir>/scripts/<name>.js" "<绝对路径>" "<branch>"` 形式发起(apps 缺省由脚本内部从 CBB-WORKSPACE.json 读取,子集用 `--apps` 传入);**执行时 cwd 保持在工作空间根**(`check-env.js` / `parse-config.js` 按 cwd 定位)
476
- - Step 4 交接必须声明"开发会话开在 `<wt_path>`(桌面端 = 当前窗口切工作区根,CLI = 新开会话)、空间根路径在案作控制面"
477
+ - Step 4 交接必须确保"开发会话开在 `<wt_path>`"(支持会话搬移的工具 = agent 自动 `session_move` 切换,**禁止把切根列入用户待办**;其余 = 用户切根 / CLI 新开会话)、空间根路径在案作控制面
477
478
 
478
479
  ---
479
480
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jspg-ai/coding-bb",
3
- "version": "0.0.3-beta.27",
3
+ "version": "0.0.3-beta.28",
4
4
  "description": "整合业界热门且高价值的工具、框架与技能,为 AI CODING AGENT 提供统一的行为准则与工作流,辅助开发者将需求高效落地为符合规范的代码",
5
5
  "main": "cbb/lib/install/init.js",
6
6
  "bin": {