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

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` 等空间级操作)
115
+ - 根会话保留作控制面(worktree 生灭、`cbb update` 等空间级操作);**会话形态按工具定**:桌面端单窗口 = 当前窗口把工作区根切进 worktree(上下文保留,空间根路径在案供回切);CLI/TUI = 新开会话进 worktree
116
116
 
117
117
  **基准与防线(两模式共同,ADR 0002):**
118
118
 
@@ -384,6 +384,8 @@ git -C "<ws_root>" worktree list
384
384
 
385
385
  目标 worktree 应已不在列表中。
386
386
 
387
+ **工作区回根交接(必须执行)**:若用户的开发会话工作在 worktree 内(桌面端切根工作流,当前窗口的工作区根 = 已删除的 `<wt_path>`),此刻目录树已悬空——必须提示用户把工作区切回 `<ws_root>`(打开文件夹 / Open Folder / 切换工作目录),并在最终报告中给出该绝对路径。
388
+
387
389
  ---
388
390
 
389
391
  ## 最终报告
@@ -402,6 +404,7 @@ git -C "<ws_root>" worktree list
402
404
  (无未归档 change 时不显示本节)
403
405
  分支处理:feature-xxx 已保留(默认行为;如需删除分支,手动调用 scripts/delete-branches.js)
404
406
  剩余工作空间 worktree:<列出仍存在的,或 "无" >
407
+ 👉 若你的窗口目录树仍停在已删除的 worktree,请切回工作空间根:<ws_root 绝对路径>
405
408
  Workspace cleaned up.
406
409
  ```
407
410
 
@@ -441,7 +444,7 @@ git -C "<ws_root>" worktree list
441
444
  - **合并判定依赖刷新后的远程引用,故 Step 2.0 先主动 `git fetch`**:feature 多由他人经 MR 合入远端,本地引用否则会陈旧误判
442
445
  - **并行块用临时文件收结果、不用共享变量**:原 bash 版本中 `&` 后台任务跑在独立子 shell;Node.js 同步执行无此问题
443
446
  - **`.gitignore` 无需清理**:创建时的 `.worktrees/` 条目提交在 feature 分支上,删分支时随分支消失(未合并)或无害保留(已合并)
444
- - **AI 配置只装在空间根(单层安装)**:worktree 内没有 AI 配置目录,关闭时无需处理
447
+ - **AI 配置在 worktree 内是 junction(链接)**:物理副本只在空间根(单层安装),worktree 删除时链接随目录树消失,无需清理动作
445
448
  - **部分 `worktree remove` 失败**:已移除的无需回退,未移除的报告详情让用户处理后重跑
446
449
  - **Windows IDE 目录锁的三层降级**:`git worktree remove` 内部做两件事——①清元数据 ②删目录。Windows 文件锁只阻塞 ②,不阻塞 ①
447
450
 
@@ -18,7 +18,7 @@ description: "为一个需求在 workspace 与各关联应用仓库同步创建
18
18
  - **AI 配置 junction(ADR 0002 防线 B)**:创建 worktree 后把根的 AI 配置**内容子目录**(rules / skills / commands)junction 进工作树——开发会话开在 `<wt_path>`(上游 `/opsx:*` 相对路径原样生效,零翻译);工具状态落在工作树自建空壳目录,不互相污染;`cbb update` 在根跑一次全 worktree 生效
19
19
  - **本技能必须在业务工作空间根目录执行**(即由 `cbb setup` 初始化、包含 `CBB-WORKSPACE.json` 的目录)
20
20
  - 输入约定:**自由文本**(需求名等)直接在对话中提问并等待回复,禁止使用 `AskUserQuestion`;`AskUserQuestion` 仅用于固定选项决策场景(如 push 失败处理、远程分支已存在时的二选一)
21
- - 关联应用默认为 `CBB-WORKSPACE.json` 的**全量 apps**;支持按需求语境传入**应用子集**(见 Step 1),需要增减应用时编辑该文件并重跑本技能(幂等)
21
+ - 关联应用恒为 `CBB-WORKSPACE.json` 的**全量 apps**,AI 不询问范围、不从需求语境收窄(worktree 单仓库创建成本低,全量镜像空间根布局);仅当**用户显式点名**应用时才经 `--apps` 传子集(见 Step 1),需要增减应用时编辑该文件并重跑本技能(幂等)
22
22
  - **模式选择(ADR 0002)**:接到需求先判断用户要哪种模式——要**并行 / 隔离** → 本技能;**单线程快改、当前会话就地干** → 引导 `cbb-local-mode`。用户明确指定即遵从,agent 只给推荐不代决
23
23
 
24
24
  ---
@@ -143,7 +143,7 @@ worktree 需要知道要关联哪些应用仓库。
143
143
 
144
144
  ## Step 1:关联应用与代码同步
145
145
 
146
- > ⓘ **关联应用 = 需求涉及的应用子集**:从需求语境提取("改订单导出" → 订单相关应用);纯 workspace 内容的需求 → 仅 workspace。子集判断错了零代价——重跑本技能幂等补齐(已存在的分支/worktree 自动复用,详见「幂等重跑」章节)。涉及全部应用 / 不确定时用全量。
146
+ > ⓘ **关联应用 = 全量 apps**:直接使用 `CBB-WORKSPACE.json` 的全部应用,**不询问范围、不从需求语境收窄**。仅当用户显式点名应用(如"只建 jspg-cvat",典型用于排除状态异常的无关仓库)时才传子集。范围判断错了零代价——重跑本技能幂等补齐(已存在的分支/worktree 自动复用,详见「幂等重跑」章节)。
147
147
  > 需要增减应用时,编辑 `CBB-WORKSPACE.json` 后**重跑本技能**即可。
148
148
 
149
149
  ### 1.1 同步 `.codespace/` 目录代码
@@ -164,10 +164,10 @@ node "<skill_dir>/scripts/sync-repos.js" "<ws_root>"
164
164
 
165
165
  ### 1.2 最终输出
166
166
 
167
- 列出本次关联的应用(按 Step 1 确定的子集)及本地路径(保留序号便于复核),向用户展示并确认:
167
+ 列出本次关联的应用(全量,或用户显式指定的子集)及本地路径(保留序号便于复核),**仅作信息展示,不作为提问确认点**:
168
168
 
169
169
  ```
170
- 确认关联应用(需求 <需求名> 涉及子集):
170
+ 关联应用(需求 <需求名>,全量):
171
171
  后端:
172
172
  [1] ep-user-auth-app → .codespace/ep-user-auth-app
173
173
  [2] ep-user-info-server → .codespace/ep-user-info-server
@@ -175,7 +175,7 @@ node "<skill_dir>/scripts/sync-repos.js" "<ws_root>"
175
175
  [3] ep-user-web → .codespace/ep-user-web
176
176
  ```
177
177
 
178
- > 后续所有步骤中的 `APP_REPOS` 均指向 `$WS_ROOT/.codespace/<应用名>/`,不再依赖开发者手动配置本地路径。**子集应用名单由 AI 在对话上下文维护,经 `--apps` 参数传给 Step 3.3 / 3.5 脚本(逗号分隔);不传 = 全量。**
178
+ > 后续所有步骤中的 `APP_REPOS` 均指向 `$WS_ROOT/.codespace/<应用名>/`,不再依赖开发者手动配置本地路径。**缺省不传 `--apps`(= 全量);仅当用户显式点名应用时,才把子集名单经 `--apps` 参数传给 Step 3.3 / 3.5 脚本(逗号分隔)。**
179
179
 
180
180
  ---
181
181
 
@@ -241,7 +241,7 @@ node "<skill_dir>/scripts/update-gitignore.js" "<ws_root>" "<branch>"
241
241
  node "<skill_dir>/scripts/create-branches.js" "<ws_root>" "<branch>" [--apps "app1,app2"]
242
242
  ```
243
243
 
244
- - `--apps`:Step 1 确定的应用子集(逗号分隔);缺省 = 全量
244
+ - `--apps`:仅用户显式点名应用时传入(逗号分隔);缺省 = 全量
245
245
 
246
246
  **解读输出**:
247
247
  - 退出码 0 + 末行 `BRANCH_RESULT [...]` → 全部创建或复用成功
@@ -275,7 +275,7 @@ node "<skill_dir>/scripts/create-branches.js" "<ws_root>" "<branch>" [--apps "ap
275
275
  node "<skill_dir>/scripts/create-worktrees.js" "<ws_root>" "<branch>" [--apps "app1,app2"]
276
276
  ```
277
277
 
278
- - `--apps`:与 Step 3.3 相同的应用子集;缺省 = 全量
278
+ - `--apps`:与 Step 3.3 相同(仅用户显式点名时传入);缺省 = 全量
279
279
 
280
280
  脚本内部自动完成:
281
281
  1. **元数据自愈**:仅 `git worktree prune`(清理"目录已缺失/失效"的注册项);**绝不删除任何物理目录**(0.0.3-beta.11 起——旧版"清理无元数据残留目录"因 Windows 路径分隔符不匹配会误删活跃 worktree,已整体移除)
@@ -320,7 +320,10 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
320
320
 
321
321
  不执行脚本。AI agent 向用户输出最终报告(格式见「最终报告」),并完成以下交接声明:
322
322
 
323
- 1. **开发会话开进 worktree**:新开 IDE 窗口 / agent 会话于 `<wt_path>`(AI 配置已 junction 就位,`/opsx:*` 等命令与技能在该会话可用);本(根)会话保留作控制面——后续创建/关闭 worktree、`cbb update` 等空间级操作在此执行
323
+ 1. **开发会话开进 worktree**(按工具形态,二选一):
324
+ - **桌面端(单窗口工作流)**:将当前窗口的工作区根切到 `<wt_path>`(打开文件夹 / Open Folder / 切换工作目录)——**无需新窗口**,聊天上下文保留;AI 配置已 junction 就位(`/opsx:*` 等命令照常可用),`.codespace/<app>/...` 相对路径原样生效
325
+ - **CLI / TUI agent**:新开会话于 `<wt_path>`;根会话保留作控制面——后续创建/关闭 worktree、`cbb update` 等空间级操作在此执行
326
+ - 无论哪种形态,**必须向用户报出空间根绝对路径 `<ws_root>`**(控制面地址:close 关闭 worktree 后回切用)
324
327
  2. **目录纪律(worktree 会话内自然成立)**:会话 cwd == 开发目录,上游相对路径原样生效;**分支感知 hook 已覆盖全部仓库**——任何落 main 的载荷提交会被拦截(大声失败是防线,不是故障)
325
328
  3. 不自动安装依赖:各仓库技术栈不一(Maven 依赖本机 `~/.m2` 全局共享、无需初始化;Node/Python 等由你进入 worktree 后执行正确的命令,如 `npm ci` / `pnpm`)
326
329
  4. **输出下一步建议**:最终报告必须包含「下一步建议」段(格式见「最终报告」),告知用户后续可走的流程;仅提示,不自动串联执行任何后续技能
@@ -333,9 +336,10 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
333
336
 
334
337
  ```
335
338
  ✅ worktree 已创建:<wt_path>
336
- 关联应用:<应用名 → .codespace/<应用名> 路径> 列表(应用子集或全量)
339
+ 关联应用:<应用名 → .codespace/<应用名> 路径> 列表(全量,或用户显式指定的子集)
337
340
  🔗 AI 配置已 junction 就位:rules / skills / commands(cbb update 一处生效)
338
- 📌 开发会话请开在 <wt_path>(新开 IDE 窗口 / agent 会话);本根会话保留作控制面
341
+ 📌 开发会话开进 <wt_path>(桌面端:当前窗口切换工作区根即可,无需新窗口;CLI 端:新开会话)
342
+ 空间根路径(控制面,close 后回切):<ws_root>
339
343
  👉 下一步建议:
340
344
  1. 开始需求开发(开发会话内,二选一):
341
345
  - 走 OpenSpec 工作流:/opsx:propose → /opsx:apply → /opsx:verify → /opsx:archive
@@ -375,7 +379,7 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
375
379
  | workspace 主分支 tracked 内容(openspec/、cbb/ 等) | 自动 checkout 到工作树,无需额外动作(cp/clone 都是多余的) |
376
380
  | AI 配置目录(.claude/、.qoder/、.opencode/ 等) | Step 3.6 junction 内容子目录进工作树;唯一物理副本在空间根,`cbb update` 一处生效 |
377
381
  | 需求名(同时作分支名和工作树目录名) | 用户在对话中纯文本输入,参考 Step 3.1 命名规则(kebab-case,禁 `..`、路径分隔符、空格) |
378
- | 关联应用范围 | 需求语境提取子集(`--apps` 传入,缺省全量);增减应用后重跑本技能(幂等) |
382
+ | 关联应用范围 | 恒为全量(不询问、不从需求语境收窄);用户显式点名应用时 `--apps` 传子集;增减应用后重跑本技能(幂等) |
379
383
  | 单线程快改 / 不需要隔离 | 引导 cbb-local-mode(本地模式,就地切分支) |
380
384
  | 运行环境 node 不可用 | 脚本 fail-fast 并提示用户到系统终端重试 |
381
385
  | 推送(认证/网络/保护分支/远程已存在) | 不在本技能——`cbb-worktree-push` 处理(lazy push,ADR 0002) |
@@ -428,7 +432,7 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
428
432
  ### 完成后开发会话未开进 worktree
429
433
 
430
434
  - **问题:** 流程结束后开发会话仍停留在工作空间根目录(junction 好的 AI 配置没人加载),agent 在根会话里靠路径翻译干活,回到第一代失败模式
431
- - **修复:** Step 4 交接必须明确"开发会话开在 `<wt_path>`"(新 IDE 窗口 / agent 会话);根会话保留作控制面(worktree 生灭、`cbb update`)
435
+ - **修复:** Step 4 交接必须明确"开发会话开在 `<wt_path>`"(桌面端 = 当前窗口切工作区根;CLI = 新开会话);根会话保留作控制面(worktree 生灭、`cbb update`)
432
436
 
433
437
  ### 用 `git checkout -b` 在创建 worktree 前切分支
434
438
 
@@ -469,7 +473,7 @@ node "<skill_dir>/scripts/junction-ai-config.js" "<ws_root>" "<wt_path>"
469
473
  - 严格 Step 3.3 → Step 3.5 顺序(先统一创建分支,再统一创建 worktree;workspace 工作树先建,各应用按序补建)
470
474
  - Step 3.6 junction AI 配置(失败不阻塞,但要报告)
471
475
  - 所有脚本调用以 `node "<skill_dir>/scripts/<name>.js" "<绝对路径>" "<branch>"` 形式发起(apps 缺省由脚本内部从 CBB-WORKSPACE.json 读取,子集用 `--apps` 传入);**执行时 cwd 保持在工作空间根**(`check-env.js` / `parse-config.js` 按 cwd 定位)
472
- - Step 4 交接必须声明"开发会话开在 `<wt_path>`、根会话保留作控制面"
476
+ - Step 4 交接必须声明"开发会话开在 `<wt_path>`(桌面端 = 当前窗口切工作区根,CLI = 新开会话)、空间根路径在案作控制面"
473
477
 
474
478
  ---
475
479
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jspg-ai/coding-bb",
3
- "version": "0.0.3-beta.25",
3
+ "version": "0.0.3-beta.27",
4
4
  "description": "整合业界热门且高价值的工具、框架与技能,为 AI CODING AGENT 提供统一的行为准则与工作流,辅助开发者将需求高效落地为符合规范的代码",
5
5
  "main": "cbb/lib/install/init.js",
6
6
  "bin": {