@dsh-electron/dsh-plugin-multi-root-workspace 0.1.9 → 0.1.10

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.
Files changed (50) hide show
  1. package/CHANGELOG.en.md +14 -1
  2. package/CHANGELOG.md +14 -1
  3. package/README.en.md +23 -8
  4. package/README.md +23 -8
  5. package/cordis.patch.yml +4 -0
  6. package/lib/auto-review.js +1 -1
  7. package/lib/client.js +573 -131
  8. package/lib/client.js.map +1 -1
  9. package/lib/{command-Bwd6EGNV.js → command-BGdz7VBH.js} +65 -5
  10. package/lib/command.js +1 -1
  11. package/lib/{compat-CagUNzRB.js → compat-D-MljsPV.js} +12 -1
  12. package/lib/compat.js +1 -1
  13. package/lib/{contract-DZ4zczDT.js → contract-CStSEOcK.js} +44 -1
  14. package/lib/index.js +6 -5
  15. package/lib/{instructions-CGNS3H0H.js → instructions-MePoRigy.js} +2 -206
  16. package/lib/instructions.js +1 -1
  17. package/lib/llm-message-fYORacvh.js +206 -0
  18. package/lib/metadata-DgqSdVX_.js +35 -0
  19. package/lib/{registry-BClm6wfh.js → registry-KSsmU393.js} +60 -7
  20. package/lib/registry.js +1 -1
  21. package/lib/{review-context-D-ohSVmA.js → review-context-AH-SXHmj.js} +1 -1
  22. package/lib/review-context.js +1 -1
  23. package/lib/scope.js +1 -1
  24. package/lib/skills.js +790 -0
  25. package/lib/types/client/WorkspaceFoldersAction.d.ts +1 -1
  26. package/lib/types/client/locales.d.ts +26 -16
  27. package/lib/types/client/skills-client.d.ts +23 -0
  28. package/lib/types/client/skills-settings.d.ts +10 -0
  29. package/lib/types/client/skills.d.ts +36 -0
  30. package/lib/types/client/styles.d.ts +1 -1
  31. package/lib/types/command.d.ts +1 -1
  32. package/lib/types/compat/client-session.d.ts +2 -0
  33. package/lib/types/compat/dsh-version.d.ts +5 -5
  34. package/lib/types/compat/skill-content.d.ts +3 -0
  35. package/lib/types/compat/skills-client.d.ts +33 -0
  36. package/lib/types/compat/skills-settings.d.ts +8 -0
  37. package/lib/types/compat/skills.d.ts +13 -0
  38. package/lib/types/compat/storage-zod.d.ts +1 -0
  39. package/lib/types/contract.d.ts +12 -1
  40. package/lib/types/registry.d.ts +7 -0
  41. package/lib/types/roots.d.ts +4 -1
  42. package/lib/types/skills/catalog.d.ts +34 -0
  43. package/lib/types/skills/invocation.d.ts +7 -0
  44. package/lib/types/skills/metadata.d.ts +13 -0
  45. package/lib/types/skills/pool.d.ts +19 -0
  46. package/lib/types/skills/reader.d.ts +3 -0
  47. package/lib/types/skills/routing.d.ts +2 -0
  48. package/lib/types/skills-contract.d.ts +39 -0
  49. package/lib/types/skills.d.ts +43 -0
  50. package/package.json +96 -83
package/CHANGELOG.en.md CHANGED
@@ -8,6 +8,18 @@ This file records the user-visible changes of every **released** version.
8
8
  - For installation sources, the supported upstream runtimes, and known limitations, see the [README](./README.en.md).
9
9
  - The evidence, numbering, and release state of each version live in the [roadmap progress ledger](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账). The body of each GitHub Release is generated from the commit history by `scripts/release-notes.mjs` and is the complete raw list behind this file.
10
10
 
11
+ ## [0.1.10] - 2026-10-25
12
+
13
+ ### Added
14
+
15
+ - **Additional-root Skills**: skills are discovered in each additional folder's `.dsh/skills` and `.agents/skills`; names and descriptions are visible before the first model step and bodies load on invocation. The primary root uses `/skill-name`; additional roots always use the namespaced `/alias-id:skill-name` reference (completable from the Slash menu, invoked by the model through the native `skill` tool under an internal name). New `inherit` / `read-write` registrations enable Skills by default, `read-only` ones disable them; the Workspace Folders dialog provides an independent Skills toggle and `aliasId` editing, and the global **Enable additional-root Skills** switch under Settings → Plugins → Multi-root Workspace defaults to on — disabling it only stops new discovery and invocation while preserving each root's choice. On upgrade, legacy `inherit` / `read-write` registrations start with Skills enabled; migration preserves existing grants, but an older plugin writing the registry may strip `aliasId` and manual toggles — **lossless downgrade of Skills preferences is not guaranteed** (back up `$DSH_HOME/storages/multi_root_workspace.json` before downgrading). Enabling Skills on a read-only root grants no write access; disabling does not reclaim delivered bodies or stop started processes ([ADR-0023](./docs/decisions/ADR-0023-multi-root-skill-discovery-and-invocation.md)).
16
+ - **Exact support for DSH `0.2.1-rc.3`**. The upstream `rc.2`→`rc.3` delta is purely additive (new sidebar slots, navigation pins, and a DeepSeek `/models` listing), so no new adapter branch is needed; the dev pin moves to `0.2.1-rc.3` (cordis `4.0.5` unchanged).
17
+
18
+ ### Fixed
19
+
20
+ - **Workspace Folders panel aligned with upstream UI**: the settings switch row layout, the Skills toggle folded into the icon actions, button backgrounds confined to hover, action appearance preserved during saves, and the folder policy and effective access combined into one label; the move up/down reorder buttons (the ordering interface is retained for a future drag interaction) and the permission introduction text at the top of the dialog are removed.
21
+ - **Namespaced skill reference rendering**: a sent `/alias-id:skill-name` reference renders as ordinary user text, without a dedicated button style, highlighting, or click-to-preview (same-day ADR-0023 revision); ordinary session activity/title updates no longer close an open skill body preview.
22
+
11
23
  ## [0.1.9] - 2026-10-20
12
24
 
13
25
  ### Added
@@ -169,7 +181,8 @@ The first release: the three MVP milestones (M1–M3).
169
181
 
170
182
  - All eight findings of the pre-release external review (three of them release-blocking) are fixed, each with a regression test: a registered directory replaced by a symlink transplanting its authority (which introduced `recordedPath` — **re-resolving a path is not re-authorizing it**), concurrent registry mutations losing a write or reviving a revoked grant (per-primary-root mutations are serialized), a refresh not re-checking directories, a typed path being overwritten by the directory picker, the `reveal` response contract and failure code, duplicate ids not validated, the primary root missing from nesting validation, and CI testing before building.
171
183
 
172
- [Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.9...HEAD
184
+ [Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.10...HEAD
185
+ [0.1.10]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.9...v0.1.10
173
186
  [0.1.9]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.8...v0.1.9
174
187
  [0.1.8]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.7...v0.1.8
175
188
  [0.1.7]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.6...v0.1.7
package/CHANGELOG.md CHANGED
@@ -8,6 +8,18 @@ English: [CHANGELOG.en.md](./CHANGELOG.en.md)
8
8
  - 安装方式、受支持的上游运行时与已知限制见 [README](./README.md)。
9
9
  - 每个版本的实施证据、编号口径与发布状态见[路线图 §进度总账](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账);GitHub Release 的正文由 `scripts/release-notes.mjs` 从 commit 历史生成,是本文件之外的完整原始清单。
10
10
 
11
+ ## [0.1.10] - 2026-10-25
12
+
13
+ ### Added
14
+
15
+ - **附属根 Skills**:发现附属目录的 `.dsh/skills` 和 `.agents/skills`,首个模型步骤可见名称与描述,正文按需加载。主根使用 `/skill-name`;附属根始终使用 `/alias-id:skill-name` 命名空间引用(Slash 菜单可补全,模型经原生 `skill` 工具用内部名称调用)。新登记的 `inherit` / `read-write` 根默认开启,`read-only` 根默认关闭;Workspace Folders 对话框提供独立的 Skills 开关与 `aliasId` 编辑,Settings → Plugins → Multi-root Workspace 的「启用附属根 Skills」全局开关默认开启,关闭只阻止新发现与调用、保留每根选择。升级时旧 `inherit` / `read-write` 登记默认开启 Skills;持久化迁移保留原有 grant,但旧版写回可能剥离 `aliasId` 与手动开关,**不保证 Skills 配置无损降级**(降级前可备份 `$DSH_HOME/storages/multi_root_workspace.json`)。只读根开启 Skills 不授予写权限;禁用不回收已投递正文或已启动进程([ADR-0023](./docs/decisions/ADR-0023-multi-root-skill-discovery-and-invocation.md))。
16
+ - **精确支持 DSH `0.2.1-rc.3`**。上游 `rc.2`→`rc.3` 的差异全部为新增(新 sidebar 槽位、导航 pins、DeepSeek `/models` 列表),不需要新增适配分支;开发 pin 提升到 `0.2.1-rc.3`(cordis `4.0.5` 不变)。
17
+
18
+ ### Fixed
19
+
20
+ - **Workspace Folders 面板与上游 UI 对齐**:设置开关行布局、Skills 开关收入图标动作区、按钮背景只出现在 hover、保存期间动作外观保持、根策略与生效访问合并为一个标签;移除上移/下移排序按钮(排序接口保留,供后续拖动排序)与对话框顶部的权限说明文字。
21
+ - **命名空间 Skill 引用的展示**:已发送的 `/alias-id:skill-name` 引用按普通用户文字渲染,不再携带独立按钮样式、高亮或点击预览(ADR-0023 同日修订);普通会话的 activity/title 更新不再误关闭已打开的 Skill 正文预览。
22
+
11
23
  ## [0.1.9] - 2026-10-20
12
24
 
13
25
  ### Added
@@ -169,7 +181,8 @@ English: [CHANGELOG.en.md](./CHANGELOG.en.md)
169
181
 
170
182
  - 发布前外部评审提出的 8 项发现(其中 3 项发布阻断)全部修复,每项各带一个回归测试:登记目录被替换为符号链接后授权转移(引入 `recordedPath`,**重新解析路径不等于重新授权**)、并发修改注册表丢写或复活已撤销的授权(每个主根的变更串行)、刷新不重新检查目录、手输路径被目录选择器覆盖、`reveal` 的应答契约与失败码、重复 id 未校验、主根未纳入嵌套校验、CI 先测后构建。
171
183
 
172
- [Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.9...HEAD
184
+ [Unreleased]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.10...HEAD
185
+ [0.1.10]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.9...v0.1.10
173
186
  [0.1.9]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.8...v0.1.9
174
187
  [0.1.8]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.7...v0.1.8
175
188
  [0.1.7]: https://github.com/cherrchen/dsh-plugin-multi-root-workspace/compare/v0.1.6...v0.1.7
package/README.en.md CHANGED
@@ -17,9 +17,10 @@ Not every project is a monorepo. A real development project is usually several i
17
17
  - **No new tools**: the agent keeps using the native `read` / `write` / `edit` / `bash`; only the granted directories grow.
18
18
  - **Sandbox confinement**: an additional root may inherit the session's (primary root's) permission setting, or be pinned to read-only or read-write; under read-only and read-write, confinement does not rest on system prompts — it is enforced by an in-process filesystem fence plus kernel-level sandboxes (macOS Seatbelt / Linux bwrap / Landlock / Windows ACL), with files and bash sharing one and the same scope.
19
19
  - **Optional Auto review (off by default)**: a fork of upstream's experimental auto-review that gives the reviewer the additional directories' context — the current workspace topology, each root's access level, and live instruction files; it ships disabled and only takes effect once the `@dsh-electron/dsh-plugin-multi-root-workspace/auto-review` row is explicitly enabled in the Plugin Manager row list, taking over the official bundle while on.
20
+ - **Additional-root Skills**: discovers `.dsh/skills` and `.agents/skills` inside additional folders, invoked through the namespaced `/alias-id:skill-name` reference and the native `skill` tool; each root has an independent toggle and editable `aliasId`, with a global setting that defaults to on.
20
21
  - **Absent when absent**: with no additional root configured, its behavior is item-for-item identical to an uninstalled harness; every misconfiguration fails loudly instead of silently degrading.
21
22
 
22
- Current released version: `v0.1.9`. The user-visible changes of each version live in the [CHANGELOG](./CHANGELOG.en.md); progress and release state live in the [roadmap progress ledger](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账).
23
+ Current released version: `v0.1.10`. The user-visible changes of each version live in the [CHANGELOG](./CHANGELOG.en.md); progress and release state live in the [roadmap progress ledger](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账).
23
24
 
24
25
  ## Quick Start
25
26
 
@@ -48,11 +49,11 @@ The agent can now read, write, and run bash in that directory — the default is
48
49
  | `0.1.6` | `0.1.6-alpha.1`, `0.1.6-alpha.2` |
49
50
  | `0.1.7` | `0.1.7-alpha.1`, `0.1.7-alpha.2`, `0.1.7-rc.1`, `0.1.7-rc.2` |
50
51
  | `0.2.0` | `0.2.0-rc.1`, `0.2.0-rc.2` |
51
- | `0.2.1` | `0.2.1-alpha.1`, `0.2.1-alpha.2`, `0.2.1-alpha.3`, `0.2.1-alpha.4`, `0.2.1-alpha.5`, `0.2.1-rc.1`, `0.2.1-rc.2` |
52
+ | `0.2.1` | `0.2.1-alpha.1`, `0.2.1-alpha.2`, `0.2.1-alpha.3`, `0.2.1-alpha.4`, `0.2.1-alpha.5`, `0.2.1-rc.1`, `0.2.1-rc.2`, `0.2.1-rc.3` |
52
53
 
53
54
  The plugin does not start — as if it were not installed — when the DSH release is not in the table or the `@deepseek-ai/dsh-*` packages disagree on a version.
54
55
 
55
- **Building from source / contributing**: Node.js `^22.19.0 || >=24`, pnpm `11.25.0` (enable via corepack); the dev-pinned DSH is `0.2.1-rc.2`.
56
+ **Building from source / contributing**: Node.js `^22.19.0 || >=24`, pnpm `11.25.0` (enable via corepack); the dev-pinned DSH is `0.2.1-rc.3`.
56
57
 
57
58
  **Platforms**: macOS (Seatbelt), Linux (bwrap / Landlock), Windows (root-set ACL runner).
58
59
 
@@ -91,8 +92,8 @@ This installs pre-built artifacts; the first install needs the `allowBuilds` add
91
92
  ```sh
92
93
  pnpm pack @dsh-electron/dsh-plugin-multi-root-workspace
93
94
  # or download the tgz from the GitHub Release assets, e.g.:
94
- # https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.9/dsh-electron-dsh-plugin-multi-root-workspace-0.1.9.tgz
95
- dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.9.tgz
95
+ # https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.10/dsh-electron-dsh-plugin-multi-root-workspace-0.1.10.tgz
96
+ dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.10.tgz
96
97
  ```
97
98
 
98
99
  Also pre-built, handy for air-gapped or offline delivery; the first install needs the same `allowBuilds` addition.
@@ -111,10 +112,10 @@ allowBuilds:
111
112
  koffi: true
112
113
  ```
113
114
 
114
- Pinning a version (e.g. `#v0.1.9`) is recommended so a later push cannot silently change what actually runs:
115
+ Pinning a version (e.g. `#v0.1.10`) is recommended so a later push cannot silently change what actually runs:
115
116
 
116
117
  ```sh
117
- dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.9
118
+ dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.10
118
119
  ```
119
120
 
120
121
  ### Install from a local clone
@@ -205,6 +206,8 @@ The upstream `fs-sandbox` and `sandbox` rows are disabled and taken over by the
205
206
  /workspace-folders [list] # list the primary root and the additional roots (access and state included)
206
207
  /workspace-folders add <absolute path> [--inherit|--read-only|--read-write] # no path opens the OS directory picker; new registrations default to inherit
207
208
  /workspace-folders access <n|path> inherit|read-only|read-write # switch access (widening requires the root to be available right now)
209
+ /workspace-folders skills <n|path> on|off # toggle additional-root Skills independently of write access
210
+ /workspace-folders alias-id <n|path> <kebab-case> # edit the stable Skill namespace
208
211
  /workspace-folders alias <n|path> [name] # omitting the name clears the alias
209
212
  /workspace-folders remove <n|path> # n is the number list prints
210
213
  /workspace-folders reveal <n|path> # show it in the file manager
@@ -226,9 +229,21 @@ Workspace root (primary; access follows the current sandbox mode): /home/me/mono
226
229
  Writable additional roots under the current mode: 1 of 2.
227
230
  ```
228
231
 
232
+ ### Additional-root Skills
233
+
234
+ Skills are discovered in each additional folder’s `.dsh/skills` and `.agents/skills`. Names and descriptions are available before the first model step; bodies are loaded on invocation. The primary root uses `/skill-name`; additional roots always use `/alias-id:skill-name`, with Slash completion and manual entry. The model uses the native `skill` tool with an internal name. Internal IDs can appear in tool logs; human menus list namespaced references.
235
+
236
+ New `inherit` and `read-write` registrations enable Skills by default; `read-only` registrations disable them. The Workspace Folders dialog provides an independent Skills toggle and editable `aliasId`. Renaming the display Alias keeps `aliasId` stable. An actual change to registered access resets the toggle; session sandbox mode changes, same-value access updates, and re-registration without an access change preserve the manual choice. Enabling Skills on a read-only root grants no write access.
237
+
238
+ **Enable additional-root Skills** under Settings → Plugins → Multi-root Workspace controls all additional roots and defaults to on. Disabling it stops new discovery and invocation while preserving each root’s choice. Re-enabling restores discovery according to those choices. Primary-root Skills, instructions, LSP, browsing, and sandbox permissions retain their behavior. Older hosts use the compatible plugin settings page. Namespaced references appear as ordinary user text, without a separate background, highlighting, or click-to-preview action. Native draft highlighting does not yet support colon references.
239
+
240
+ On upgrade, legacy `inherit` and `read-write` registrations start with Skills enabled. Migration preserves existing grants. An older plugin can strip `aliasId` and manual toggles when it writes the registry; upgrading again applies the defaults. **Lossless downgrade of Skills preferences is not guaranteed.** Back up `$DSH_HOME/storages/multi_root_workspace.json` before downgrading if preferences must survive. Disabling Skills does not remove previously delivered bodies from history or stop processes already started.
241
+
242
+ See [ADR-0023](./docs/decisions/ADR-0023-multi-root-skill-discovery-and-invocation.md) for the architecture and acceptance boundaries, and the [progress ledger](./docs/plans/active/2026-09-12-multi-root-workspace.md#multi-root-skills-架构验证2026-10-23) for implementation and platform evidence.
243
+
229
244
  ### Panel
230
245
 
231
- The **Folders** dialog at the sidebar foot lists the primary root and the additional roots, and offers add, remove, alias, read-only/read-write switching, copy path, reveal in the file manager, and move up/down.
246
+ The **Folders** dialog at the sidebar foot lists the primary root and the additional roots, and offers add, remove, alias, read-only/read-write switching, copy path, and reveal in the file manager.
232
247
 
233
248
  ### Model side
234
249
 
package/README.md CHANGED
@@ -17,9 +17,10 @@
17
17
  - **不新增工具**:Agent 照旧使用原生 `read` / `write` / `edit` / `bash`,只是授权的目录变多了。
18
18
  - **沙箱约束**:附加根可继承会话(主目录)的权限设置,也可单独固定为只读或读写;在只读与读写下,约束不靠系统提示词,而由进程内文件围栏 + 内核级沙箱(macOS Seatbelt / Linux bwrap / Landlock / Windows ACL)执行,文件与 bash 共享同一份授权范围。
19
19
  - **可选 Auto review(默认关闭)**:fork 上游实验性「自动授权审查」,向 Reviewer 补充附加目录的审查上下文——当前工作区拓扑、各根访问级别与实时指令文件;出厂关闭,需在插件管理器的行列表中显式打开 `@dsh-electron/dsh-plugin-multi-root-workspace/auto-review` 行后生效,启用时接管官方同名 bundle。
20
+ - **附属根 Skills**:发现附属目录的 `.dsh/skills` 与 `.agents/skills`,附属根经 `/alias-id:skill-name` 命名空间调用原生 `skill` 工具;每根独立开关、可编辑 `aliasId`,全局设置默认开启。
20
21
  - **不配等于没装**:未登记附加根时行为与未装插件逐项一致;配置错误一律明确报错,从不静默降级。
21
22
 
22
- 当前发布版本 `v0.1.9`。各版本的用户可见变更见 [CHANGELOG](./CHANGELOG.md);进度与发布状态见[路线图 §进度总账](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账)。
23
+ 当前发布版本 `v0.1.10`。各版本的用户可见变更见 [CHANGELOG](./CHANGELOG.md);进度与发布状态见[路线图 §进度总账](./docs/plans/active/2026-09-12-multi-root-workspace.md#进度总账)。
23
24
 
24
25
  ## 快速开始
25
26
 
@@ -50,11 +51,11 @@ tarball、GitHub、本地源码等其他安装方式见[安装](#安装)。
50
51
  | `0.1.6` | `0.1.6-alpha.1`、`0.1.6-alpha.2` |
51
52
  | `0.1.7` | `0.1.7-alpha.1`、`0.1.7-alpha.2`、`0.1.7-rc.1`、`0.1.7-rc.2` |
52
53
  | `0.2.0` | `0.2.0-rc.1`、`0.2.0-rc.2` |
53
- | `0.2.1` | `0.2.1-alpha.1`、`0.2.1-alpha.2`、`0.2.1-alpha.3`、`0.2.1-alpha.4`、`0.2.1-alpha.5`、`0.2.1-rc.1`、`0.2.1-rc.2` |
54
+ | `0.2.1` | `0.2.1-alpha.1`、`0.2.1-alpha.2`、`0.2.1-alpha.3`、`0.2.1-alpha.4`、`0.2.1-alpha.5`、`0.2.1-rc.1`、`0.2.1-rc.2`、`0.2.1-rc.3` |
54
55
 
55
56
  DSH 版本不在表内、或 `@deepseek-ai/dsh-*` 各包版本不一致时,插件不会启动,行为等同没装。
56
57
 
57
- **从源码构建 / 贡献**:Node.js `^22.19.0 || >=24`,pnpm `11.25.0`(建议经 corepack 启用);开发 pin 的 DSH 为 `0.2.1-rc.2`。
58
+ **从源码构建 / 贡献**:Node.js `^22.19.0 || >=24`,pnpm `11.25.0`(建议经 corepack 启用);开发 pin 的 DSH 为 `0.2.1-rc.3`。
58
59
 
59
60
  **运行平台**:macOS(Seatbelt)、Linux(bwrap / Landlock)、Windows(root-set ACL runner)。
60
61
 
@@ -93,8 +94,8 @@ dsh plugin --profile web add @dsh-electron/dsh-plugin-multi-root-workspace
93
94
  ```sh
94
95
  pnpm pack @dsh-electron/dsh-plugin-multi-root-workspace
95
96
  # 或从 GitHub Release 资产下载,例如:
96
- # https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.9/dsh-electron-dsh-plugin-multi-root-workspace-0.1.9.tgz
97
- dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.9.tgz
97
+ # https://github.com/cherrchen/dsh-plugin-multi-root-workspace/releases/download/v0.1.10/dsh-electron-dsh-plugin-multi-root-workspace-0.1.10.tgz
98
+ dsh plugin --profile web add ./dsh-electron-dsh-plugin-multi-root-workspace-0.1.10.tgz
98
99
  ```
99
100
 
100
101
  同样是预构建产物,适合内网或离线环境交付;首次安装同样需要添加 `allowBuilds`。
@@ -113,10 +114,10 @@ allowBuilds:
113
114
  koffi: true
114
115
  ```
115
116
 
116
- 建议锁定版本(如 `#v0.1.9`),让后续推送无法悄悄改变实际运行的内容:
117
+ 建议锁定版本(如 `#v0.1.10`),让后续推送无法悄悄改变实际运行的内容:
117
118
 
118
119
  ```sh
119
- dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.9
120
+ dsh plugin --profile web add github:cherrchen/dsh-plugin-multi-root-workspace#v0.1.10
120
121
  ```
121
122
 
122
123
  ### 从本地源码安装
@@ -207,6 +208,8 @@ dsh --profile web --dump-config | grep -A3 'multi-root'
207
208
  /workspace-folders [list] # 列出主根与附加根(含每根访问级别与状态)
208
209
  /workspace-folders add <absolute path> [--inherit|--read-only|--read-write] # 不带路径时打开系统目录选择器;新登记默认 inherit
209
210
  /workspace-folders access <order|path> inherit|read-only|read-write # 切换访问级别(扩权要求该根此刻可用)
211
+ /workspace-folders skills <order|path> on|off # 独立切换附属根 Skills,不改变写权限
212
+ /workspace-folders alias-id <order|path> <kebab-case> # 编辑稳定 Skill 命名空间
210
213
  /workspace-folders alias <order|path> [alias] # 不带别名则清除已有别名
211
214
  /workspace-folders remove <order|path> # 序号即 list 输出的编号
212
215
  /workspace-folders reveal <order|path> # 在文件管理器中显示
@@ -228,9 +231,21 @@ Workspace root (primary; access follows the current sandbox mode): /home/me/mono
228
231
  Writable additional roots under the current mode: 1 of 2.
229
232
  ```
230
233
 
234
+ ### 附属根 Skills
235
+
236
+ 发现附属目录的 `.dsh/skills` 和 `.agents/skills`,首个模型步骤可见名称与描述,正文按需加载。主根使用 `/skill-name`;附属根始终使用 `/alias-id:skill-name`,可在 Slash 菜单补全或手动输入。模型通过原生 `skill` 工具调用内部名称;工具日志中可能显示内部 ID,人类菜单只列命名空间引用。
237
+
238
+ 新登记的 `inherit` / `read-write` 根默认开启,`read-only` 根默认关闭;Workspace Folders Dialog 可独立切换 Skills 并编辑 `aliasId`。显示 Alias 的修改不改变 `aliasId`。只有登记权限的实际变化才重置开关;切换会话沙箱模式、同值权限设置和未改变权限的重新登记都保留手动选择。只读根开启 Skills 后仍没有写权限。
239
+
240
+ Settings → Plugins → Multi-root Workspace 中的 **启用附属根 Skills** 控制全部附属根,默认开启。关闭后阻止新的发现与调用,保留每根选择;恢复后按原值发现。主根 Skills、指令、LSP、文件浏览及沙箱权限不受此开关影响。旧版宿主使用兼容的插件设置页。命名空间引用按普通用户输入显示,不添加背景、高亮或点击预览;草稿内的原生 Skill 高亮暂不支持冒号引用。
241
+
242
+ 升级时旧 `inherit` / `read-write` 登记会默认开启 Skills。持久化迁移保留原有 grant;旧版写回可能剥离 `aliasId` 和手动开关,再升级时重新按默认值迁移,**不保证 Skills 配置无损降级**。如需保留选择,降级前备份 `$DSH_HOME/storages/multi_root_workspace.json`。已投递正文仍留在历史中,禁用不会结束已经启动的进程。
243
+
244
+ 架构与验收边界见 [ADR-0023](./docs/decisions/ADR-0023-multi-root-skill-discovery-and-invocation.md),实施和平台状态见[路线账本](./docs/plans/active/2026-09-12-multi-root-workspace.md#multi-root-skills-架构验证2026-10-23)。
245
+
231
246
  ### 面板
232
247
 
233
- 侧栏底部的 **Folders** 对话框列出主根与附加根,支持添加、移除、别名、切换只读/可写、复制路径、在文件管理器中显示与上下移排序。
248
+ 侧栏底部的 **Folders** 对话框列出主根与附加根,支持添加、移除、别名、切换只读/可写、复制路径与在文件管理器中显示。
234
249
 
235
250
  ### 模型侧
236
251
 
package/cordis.patch.yml CHANGED
@@ -92,6 +92,10 @@
92
92
  # the model. This row closes that gap for the additional roots only; the
93
93
  # primary root and the user-global file stay upstream's. The budget is the
94
94
  # total for ALL additional roots, not per root.
95
+ - id: multi-root-skills
96
+ name: '@dsh-electron/dsh-plugin-multi-root-workspace/skills'
97
+ config:
98
+ enabled: true
95
99
  - id: multi-root-instructions
96
100
  name: '@dsh-electron/dsh-plugin-multi-root-workspace/instructions'
97
101
  config:
@@ -1,4 +1,4 @@
1
- import { n as assertAutoReviewRelease, t as MultiRootReviewContext } from "./review-context-D-ohSVmA.js";
1
+ import { n as assertAutoReviewRelease, t as MultiRootReviewContext } from "./review-context-AH-SXHmj.js";
2
2
  import { t as assertForkPackages } from "./auto-review-packages-nRjnb4pU.js";
3
3
  import { t as wrapMethod } from "./method-wrapper-CFY3p3j2.js";
4
4
  //#region src/compat/auto-review-loader.ts