dsh-crate-web 0.1.0 → 0.1.2-preview.2
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.
- package/LICENSE +21 -0
- package/README.md +11 -290
- package/README.zh-CN.md +2 -303
- package/THIRD-PARTY-LICENSE.txt +21 -0
- package/cordis.patch.yml +1 -6
- package/core/dsh_pack/_version.py +1 -0
- package/core/dsh_pack/bundle.py +74 -0
- package/core/dsh_pack/cli.py +81 -18
- package/core/dsh_pack/desktop_verify.py +304 -0
- package/core/dsh_pack/diagnostics.py +1170 -0
- package/core/dsh_pack/errors.py +16 -1
- package/core/dsh_pack/export.py +86 -103
- package/core/dsh_pack/export_plan.py +96 -0
- package/core/dsh_pack/identity.py +25 -0
- package/core/dsh_pack/importer.py +1598 -1347
- package/core/dsh_pack/network.py +5 -4
- package/core/dsh_pack/pack.py +14 -2
- package/core/dsh_pack/portability.py +392 -0
- package/core/dsh_pack/preflight.py +63 -16
- package/core/dsh_pack/troubleshooting.py +94 -0
- package/core/dsh_pack/user_cli.py +16 -0
- package/core/dsh_pack/validation.py +64 -4
- package/core/dsh_pack/verify.py +1485 -1336
- package/core/dsh_pack/windows_verify.py +177 -0
- package/desktop-patch-helper.mjs +140 -0
- package/lib/client.js +292 -102
- package/lib/index.d.ts +7 -1
- package/lib/index.js +1121 -229
- package/package.json +13 -5
- package/restart-helper.mjs +121 -121
- package/runtime/python/LICENSE.txt +676 -676
- package/runtime/python/__install__.json +81 -81
- package/runtime/python/python314._pth +6 -6
- package/skills/dsh-crate-troubleshooting/SKILL.md +172 -0
- package/skills/dsh-crate-troubleshooting/compatibility.json +11 -0
- package/skills/dsh-crate-troubleshooting/reference/diagnostics.generated.md +96 -0
- package/skills/dsh-crate-troubleshooting/reference/repair-boundaries.md +60 -0
- package/skills/dsh-crate-troubleshooting/reference/stages.generated.md +22 -0
- package/verify-desktop.mjs +314 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 joezhou172 <rdhwhyhrg@163.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,302 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
# DSH Crate — Preview
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DSH Crate 为 DeepSeek Harness 的设置页提供环境包导出、检查、恢复、验证和历史记录。正式 npm 包名是 `dsh-crate-web`;本候选为 `0.1.2-preview.2`,使用 `preview` 标签,保留既有 `latest`。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
[](#current-preview)
|
|
8
|
-
[](#license)
|
|
9
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
|
-
|
|
11
|
-
[Quick Start](#quick-start) · [How It Works](#how-it-works) · [Community Crates](#community-crates) · [简体中文](README.zh-CN.md)
|
|
12
|
-
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
DSH Crate turns a configured DeepSeek Harness Profile into a portable `.dshcrate` you can **inspect before Import, reconstruct as another Profile, and verify afterward**.
|
|
16
|
-
|
|
17
|
-
Instead of sending someone a plugin list, version notes, Bundle instructions, and configuration steps, send one Crate.
|
|
18
|
-
|
|
19
|
-
```mermaid
|
|
20
|
-
flowchart LR
|
|
21
|
-
A["Working DSH Profile"] --> B["Export .dshcrate"]
|
|
22
|
-
B --> C["Inspect"]
|
|
23
|
-
C --> D["Import"]
|
|
24
|
-
D --> E["Verify"]
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Highlights
|
|
28
|
-
|
|
29
|
-
- **Share complete setups** — package a working DSH Profile into one `.dshcrate`.
|
|
30
|
-
- **Inspect before importing** — review plugins, environment differences, and risks before anything changes.
|
|
31
|
-
- **Portable plugin sources** — embed installable artifacts where appropriate, or keep plugins `reference-only`.
|
|
32
|
-
- **Safe by default** — Secret values stay out, Inspect is read-only, and existing Profiles are never silently overwritten.
|
|
33
|
-
- **Verify after Import** — check the reconstructed Profile and keep structured diagnostics when something fails.
|
|
34
|
-
|
|
35
|
-
## Quick Start
|
|
36
|
-
|
|
37
|
-
Install the Web plugin into your DSH Web Profile:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
dsh plugin --profile web add dsh-crate-web
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Restart DSH Web, then open:
|
|
44
|
-
|
|
45
|
-
```text
|
|
46
|
-
Settings → DSH Crate
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
DSH Crate is an extension for DeepSeek Harness. It does **not** install or replace the DSH runtime; the target machine must already have a working DSH installation.
|
|
50
|
-
|
|
51
|
-
## How It Works
|
|
52
|
-
|
|
53
|
-
### 1. Export
|
|
54
|
-
|
|
55
|
-
Pick a configured Profile and export it as a `.dshcrate`.
|
|
56
|
-
|
|
57
|
-
A Crate can carry:
|
|
58
|
-
|
|
59
|
-
- Profile metadata
|
|
60
|
-
- installed plugin identity and sources
|
|
61
|
-
- Bundles
|
|
62
|
-
- required Secret names
|
|
63
|
-
- environment information
|
|
64
|
-
- embedded plugin artifacts where appropriate
|
|
65
|
-
|
|
66
|
-
Secret **values** are excluded.
|
|
67
|
-
|
|
68
|
-
### 2. Inspect
|
|
69
|
-
|
|
70
|
-
Before Import, DSH Crate runs Preflight and reports:
|
|
71
|
-
|
|
72
|
-
- **BLOCKER** — Import should not continue
|
|
73
|
-
- **WARNING** — Import can continue, but a known risk or difference exists
|
|
74
|
-
- **INFO** — useful package or environment information
|
|
75
|
-
|
|
76
|
-
You can review the target Profile, plugin operations, environment differences, and detected risks before anything is written.
|
|
77
|
-
|
|
78
|
-
### 3. Import
|
|
79
|
-
|
|
80
|
-
Import creates a **new Profile by default**.
|
|
81
|
-
|
|
82
|
-
Overwriting an existing Profile requires explicit confirmation. The current running Profile is never silently replaced.
|
|
83
|
-
|
|
84
|
-
### 4. Verify
|
|
85
|
-
|
|
86
|
-
After Import, DSH Crate can Verify the imported or prepared Profile and produce structured diagnostics.
|
|
87
|
-
|
|
88
|
-
A Verify PASS means the checks DSH Crate actually ran passed. It is **not** a blanket claim that every model, Session, Core Tool, or third-party plugin business function works.
|
|
89
|
-
|
|
90
|
-
## Current Preview
|
|
91
|
-
|
|
92
|
-
The current Preview supports:
|
|
93
|
-
|
|
94
|
-
- inspecting the current Profile, installed plugins, and Bundles
|
|
95
|
-
- exporting Profiles as `.dshcrate`
|
|
96
|
-
- choosing `embedded` or `reference-only` plugin handling
|
|
97
|
-
- recording required Secret names without exporting Secret values
|
|
98
|
-
- Inspect / Preflight with `BLOCKER`, `WARNING`, `INFO`, and environment differences
|
|
99
|
-
- Import Preview before changes are applied
|
|
100
|
-
- Import as a new Profile
|
|
101
|
-
- explicit-confirmation overwrite of an existing Profile
|
|
102
|
-
- Verify for imported or prepared Profiles
|
|
103
|
-
- complete failure diagnostics and copyable diagnostic JSON
|
|
104
|
-
- operation history and Crate download
|
|
105
|
-
- deletion of non-running Profiles
|
|
106
|
-
- explicit-confirmation Profile switch and restart
|
|
107
|
-
|
|
108
|
-
The current Preview does **not** directly test:
|
|
109
|
-
|
|
110
|
-
- model conversations
|
|
111
|
-
- Session creation
|
|
112
|
-
- Core Tool execution
|
|
113
|
-
- plugin-specific business functions
|
|
114
|
-
|
|
115
|
-
Those capabilities remain outside the current verification claim.
|
|
116
|
-
|
|
117
|
-
## Share or Migrate
|
|
118
|
-
|
|
119
|
-
### Share a setup
|
|
120
|
-
|
|
121
|
-
Without a Crate:
|
|
122
|
-
|
|
123
|
-
```text
|
|
124
|
-
Install plugin A
|
|
125
|
-
Install plugin B
|
|
126
|
-
Use this version
|
|
127
|
-
Enable these Bundles
|
|
128
|
-
Apply this config
|
|
129
|
-
Add these Secrets
|
|
130
|
-
...
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
With DSH Crate:
|
|
134
|
-
|
|
135
|
-
```text
|
|
136
|
-
Export → send setup.dshcrate → Inspect → Import
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
The recipient can see what is inside before changing their environment.
|
|
140
|
-
|
|
141
|
-
### Move to another machine
|
|
142
|
-
|
|
143
|
-
```text
|
|
144
|
-
Machine A
|
|
145
|
-
↓
|
|
146
|
-
Export
|
|
147
|
-
↓
|
|
148
|
-
.dshcrate
|
|
149
|
-
↓
|
|
150
|
-
Machine B
|
|
151
|
-
↓
|
|
152
|
-
Preflight
|
|
153
|
-
↓
|
|
154
|
-
Import
|
|
155
|
-
↓
|
|
156
|
-
Verify
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
The goal is not to clone the original machine byte-for-byte. The goal is to reconstruct the DSH environment from portable information and explicit package sources.
|
|
160
|
-
|
|
161
|
-
## Embedded vs Reference-only
|
|
162
|
-
|
|
163
|
-
### Embedded
|
|
164
|
-
|
|
165
|
-
The Crate carries an installable plugin artifact when available and appropriate.
|
|
166
|
-
|
|
167
|
-
Use this when preserving the actual installable artifact matters more than file size.
|
|
168
|
-
|
|
169
|
-
```text
|
|
170
|
-
plugin artifact
|
|
171
|
-
+ package identity
|
|
172
|
-
+ integrity information
|
|
173
|
-
↓
|
|
174
|
-
.dshcrate
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Reference-only
|
|
178
|
-
|
|
179
|
-
The Crate stores plugin source and identity, then reacquires the plugin during Import.
|
|
180
|
-
|
|
181
|
-
Use this when:
|
|
182
|
-
|
|
183
|
-
- the source is expected to remain available
|
|
184
|
-
- redistribution is not appropriate
|
|
185
|
-
- you want a smaller Crate
|
|
186
|
-
|
|
187
|
-
A single Crate can mix both modes.
|
|
188
|
-
|
|
189
|
-
## Community Crates
|
|
190
|
-
|
|
191
|
-
A `.dshcrate` can be more than a backup artifact: it can be a reusable DSH setup.
|
|
192
|
-
|
|
193
|
-
**Useful, tested Community Crates are welcome as Pull Requests.**
|
|
194
|
-
|
|
195
|
-
Good examples include:
|
|
196
|
-
|
|
197
|
-
- Coding environments
|
|
198
|
-
- Research / Browser environments
|
|
199
|
-
- minimal practical Profiles
|
|
200
|
-
- specialized workflow setups
|
|
201
|
-
- plugin combinations that solve a real task
|
|
202
|
-
|
|
203
|
-
A Community Crate should state:
|
|
204
|
-
|
|
205
|
-
- purpose
|
|
206
|
-
- included plugins
|
|
207
|
-
- embedded / reference-only choices
|
|
208
|
-
- required Secret names
|
|
209
|
-
- tested DSH version
|
|
210
|
-
- tested Node version
|
|
211
|
-
- tested operating system
|
|
212
|
-
- what was actually verified
|
|
213
|
-
- known limitations
|
|
214
|
-
- last tested date
|
|
215
|
-
|
|
216
|
-
`Verified` means only that the listed checks were executed in the listed environment. It does **not** mean universal compatibility.
|
|
217
|
-
|
|
218
|
-
## Safety
|
|
219
|
-
|
|
220
|
-
DSH Crate is designed around explicit changes and inspectable artifacts:
|
|
221
|
-
|
|
222
|
-
- Secret values are excluded from ordinary Crates.
|
|
223
|
-
- Inspect and dry-run are read-only.
|
|
224
|
-
- Existing Profiles are not silently overwritten.
|
|
225
|
-
- Overwrite, switch, restart, and destructive Profile operations require explicit confirmation.
|
|
226
|
-
- Failed Import should not commit a partially successful target.
|
|
227
|
-
- Full diagnostics remain available after failure.
|
|
228
|
-
|
|
229
|
-
## FAQ
|
|
230
|
-
|
|
231
|
-
### Why not just zip `DSH_HOME`?
|
|
232
|
-
|
|
233
|
-
You can — and for a private backup of one machine, that may be the simplest option.
|
|
234
|
-
|
|
235
|
-
DSH Crate solves a different problem: **sharing, migration, inspection, and controlled reconstruction** without copying the entire DSH home.
|
|
236
|
-
|
|
237
|
-
A raw archive may contain or depend on credentials, private Conversations, caches, logs, temporary state, machine-specific paths, `node_modules`, and local runtime details.
|
|
238
|
-
|
|
239
|
-
DSH Crate instead separates portable environment data, reference-only dependencies, required Secret names, and excluded private/runtime data.
|
|
240
|
-
|
|
241
|
-
### What does Verify actually prove?
|
|
242
|
-
|
|
243
|
-
Only the checks DSH Crate actually ran.
|
|
244
|
-
|
|
245
|
-
A successful Profile Verify is not evidence that model conversation, Session creation, Core Tool execution, or every plugin-specific feature works unless those checks were explicitly performed.
|
|
246
|
-
|
|
247
|
-
### Is DSH Crate a Profile manager?
|
|
248
|
-
|
|
249
|
-
Profile management is not the main product.
|
|
250
|
-
|
|
251
|
-
DSH Crate focuses on **portable environment artifacts, controlled Import, migration, diagnostics, and evidence-based verification** rather than becoming a second general-purpose Profile manager.
|
|
252
|
-
|
|
253
|
-
## Roadmap
|
|
254
|
-
|
|
255
|
-
The near-term direction is intentionally narrow:
|
|
256
|
-
|
|
257
|
-
- **Troubleshooting Skill** — consume diagnostic JSON, identify the failing stage, suggest evidence-backed minimal repairs, then Verify again.
|
|
258
|
-
- **Broader environment portability** — add Conversation, plugin configuration, plugin-owned workflow, and other safely identifiable plugin-local data.
|
|
259
|
-
- **Full Configuration Freeze** — later, preserve as much reconstructible DSH configuration as possible and report whether offline restoration is actually proven.
|
|
260
|
-
|
|
261
|
-
Freeze is an advanced workflow, not the primary reason to use DSH Crate.
|
|
262
|
-
|
|
263
|
-
## Development CLI
|
|
264
|
-
|
|
265
|
-
The Core currently exposes a development CLI:
|
|
5
|
+
可通过官方插件入口安装明确版本:
|
|
266
6
|
|
|
267
7
|
```powershell
|
|
268
|
-
dsh-crate
|
|
269
|
-
dsh-crate import .\example.dshcrate --dsh-home $env:DSH_HOME --json
|
|
270
|
-
dsh-crate verify --dsh-home $env:DSH_HOME --profile my-profile --mode web --json
|
|
8
|
+
dsh plugin --profile web add dsh-crate-web@0.1.2-preview.2
|
|
271
9
|
```
|
|
272
10
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
## Contributing
|
|
11
|
+
重启后打开 Settings → DSH Crate。离线环境可从同版本 tgz 安装。Windows x64 随包保留 Python 3.14.6,无需另外安装系统 Python。其他系统未完成本轮桌面验收。
|
|
276
12
|
|
|
277
|
-
|
|
13
|
+
Import 默认恢复到新 Profile,先执行 Preflight 和计划检查。覆盖、删除和切换已有 Profile 均需另外显式确认。导出排除凭据值;分享前仍应检查准备公开的内容。
|
|
278
14
|
|
|
279
|
-
|
|
280
|
-
- unusual npm / Git / tarball plugin sources
|
|
281
|
-
- Windows / Linux / macOS test results
|
|
282
|
-
- third-party packaging edge cases
|
|
283
|
-
- documentation improvements
|
|
284
|
-
- useful, tested Community Crates
|
|
15
|
+
默认 Verify 使用独立验证桌面并隔离 Home、工作区与缓存,不调用模型。模型、原生工具和各插件的真实业务验收必须有单独的执行证据;报告中的 UNTESTED 不能视为 PASS。
|
|
285
16
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
```text
|
|
289
|
-
DSH version:
|
|
290
|
-
Node version:
|
|
291
|
-
OS / architecture:
|
|
292
|
-
Source Profile:
|
|
293
|
-
Expected behavior:
|
|
294
|
-
Observed behavior:
|
|
295
|
-
Diagnostic JSON:
|
|
296
|
-
```
|
|
17
|
+
此 npm 包仅含 Crate 插件、Core 和必要运行文件,不包含完整 DSH 桌面,也不向官方安装目录写入 Windows 终端或 NARB 补丁。历史业务证据来自配套的 Windows x64 / DSH 0.2.1-rc.5 独立修补桌面;本候选调整了正式包身份,尚未完成该身份下的完整桌面复测,不能宣称任意官方桌面均已兼容。
|
|
297
18
|
|
|
298
|
-
|
|
19
|
+
已知限制:Windows 上 Import 偶发在临时 Profile 改为正式目录名时返回 WinError 5。界面会提示文件可能仍被占用或权限不足,并保留完整原始错误与回滚结果。请关闭正在使用目标目录的文件预览、编辑器或终端,核实权限与残留状态后手动重新导入;程序不会自动重试。历史故障的实际占用者尚未定位,当前提示不代表根因已修复。
|
|
299
20
|
|
|
300
|
-
|
|
21
|
+
本版本按维护者确认作为 Preview 发布:上述偶发问题、公共包身份下尚未完成的完整桌面复测,以及 Inspector 首启耗时未完全归因,均保留为已知限制。后续修复会升新版本发布,不覆盖本版本,也不把现有 UNTESTED 或 FAIL 改写为通过。
|
|
301
22
|
|
|
302
|
-
|
|
23
|
+
工作流先扫描提交与实际 tgz,再让发布任务复用同一 tgz 并核对 SHA-256。新代码必须升 prerelease 版本;同版本不同内容会停止。现有 npm Trusted Publisher 对应本仓库和 `publish-dsh-crate-web.yml`,无需把长期 npm Token 写入仓库。
|
package/README.zh-CN.md
CHANGED
|
@@ -1,304 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
# DSH Crate 简体中文说明
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
**把一整套 DeepSeek Harness 环境分享成一个可检查的文件。**
|
|
6
|
-
|
|
7
|
-
[](#当前-preview)
|
|
8
|
-
[](#license)
|
|
9
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
|
-
|
|
11
|
-
[快速开始](#快速开始) · [工作方式](#工作方式) · [Community Crates](#community-crates) · [English](README.md)
|
|
12
|
-
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
DSH Crate 可以把已经配置好的 DeepSeek Harness Profile 导出为 `.dshcrate`:**导入前先检查,导入时受控重建,导入后再 Verify**。
|
|
16
|
-
|
|
17
|
-
不用再给别人发一长串插件列表、版本说明、Bundle 配置和操作步骤,直接发一个 Crate。
|
|
18
|
-
|
|
19
|
-
```mermaid
|
|
20
|
-
flowchart LR
|
|
21
|
-
A["已经工作的 DSH Profile"] --> B["导出 .dshcrate"]
|
|
22
|
-
B --> C["Inspect"]
|
|
23
|
-
C --> D["Import"]
|
|
24
|
-
D --> E["Verify"]
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## 核心特点
|
|
28
|
-
|
|
29
|
-
- **分享完整环境** — 把已经工作的 DSH Profile 导出成一个 `.dshcrate`。
|
|
30
|
-
- **导入前先检查** — 在真正修改环境前查看插件、环境差异和风险。
|
|
31
|
-
- **插件来源可移植** — 适合时嵌入可安装制品,也可以保持 `reference-only`。
|
|
32
|
-
- **默认安全** — Secret 值不进入 Crate,Inspect 只读,已有 Profile 不会被静默覆盖。
|
|
33
|
-
- **导入后验证** — 对重建后的 Profile 执行 Verify,失败时保留结构化诊断。
|
|
34
|
-
|
|
35
|
-
## 快速开始
|
|
36
|
-
|
|
37
|
-
把 Web 插件安装到 DSH Web Profile:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
dsh plugin --profile web add dsh-crate-web
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
重启 DSH Web,然后打开:
|
|
44
|
-
|
|
45
|
-
```text
|
|
46
|
-
Settings → DSH Crate
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
DSH Crate 是 DeepSeek Harness 的扩展,不负责安装或替代 DSH runtime。目标机器需要已经能够正常运行 DSH。
|
|
50
|
-
|
|
51
|
-
## 工作方式
|
|
52
|
-
|
|
53
|
-
### 1. Export
|
|
54
|
-
|
|
55
|
-
选择一个已经配置好的 Profile,导出为 `.dshcrate`。
|
|
56
|
-
|
|
57
|
-
Crate 可以记录:
|
|
58
|
-
|
|
59
|
-
- Profile 元数据
|
|
60
|
-
- 已安装插件的身份与来源
|
|
61
|
-
- Bundle
|
|
62
|
-
- required Secret 名称
|
|
63
|
-
- 环境信息
|
|
64
|
-
- 适合嵌入的插件制品
|
|
65
|
-
|
|
66
|
-
Secret **真实值**不会被导出。
|
|
67
|
-
|
|
68
|
-
### 2. Inspect
|
|
69
|
-
|
|
70
|
-
Import 前先执行 Preflight:
|
|
71
|
-
|
|
72
|
-
- **BLOCKER** — 不应该继续 Import
|
|
73
|
-
- **WARNING** — 可以继续,但存在已知风险或差异
|
|
74
|
-
- **INFO** — 普通包信息或环境信息
|
|
75
|
-
|
|
76
|
-
真正写入之前,可以先查看目标 Profile、插件操作、环境差异和检测到的风险。
|
|
77
|
-
|
|
78
|
-
### 3. Import
|
|
79
|
-
|
|
80
|
-
Import 默认创建**新的 Profile**。
|
|
81
|
-
|
|
82
|
-
覆盖已有 Profile 必须明确确认;当前正在运行的 Profile 不会被静默替换。
|
|
83
|
-
|
|
84
|
-
### 4. Verify
|
|
85
|
-
|
|
86
|
-
Import 后,DSH Crate 可以对导入或准备好的 Profile 执行 Verify,并生成结构化诊断。
|
|
87
|
-
|
|
88
|
-
Verify PASS 只代表 **DSH Crate 实际执行的检查通过了**,不代表模型、Session、Core Tool 或所有第三方插件业务功能全部可用。
|
|
89
|
-
|
|
90
|
-
## 当前 Preview
|
|
91
|
-
|
|
92
|
-
当前版本支持:
|
|
93
|
-
|
|
94
|
-
- 查看当前 Profile、已安装插件和 Bundle
|
|
95
|
-
- 导出 Profile 为 `.dshcrate`
|
|
96
|
-
- 为插件选择 `embedded` 或 `reference-only`
|
|
97
|
-
- 记录 required Secret 名称,但不导出 Secret 值
|
|
98
|
-
- Inspect / Preflight,展示 `BLOCKER`、`WARNING`、`INFO` 和环境差异
|
|
99
|
-
- Import 前预览目标 Profile、插件和风险
|
|
100
|
-
- 导入为新的 Profile
|
|
101
|
-
- 明确确认后覆盖已有 Profile
|
|
102
|
-
- 对导入或准备好的 Profile 执行 Verify
|
|
103
|
-
- 查看完整错误诊断并复制 diagnostic JSON
|
|
104
|
-
- 查看操作历史并下载导出的 Crate
|
|
105
|
-
- 删除当前未运行的 Profile
|
|
106
|
-
- 明确确认后切换并重启 Profile
|
|
107
|
-
|
|
108
|
-
当前 Preview **不直接测试**:
|
|
109
|
-
|
|
110
|
-
- 模型对话
|
|
111
|
-
- Session 创建
|
|
112
|
-
- Core Tool 执行
|
|
113
|
-
- 插件业务功能
|
|
114
|
-
|
|
115
|
-
因此这些能力不属于当前 Verify 的承诺范围。
|
|
116
|
-
|
|
117
|
-
## 分享或迁移
|
|
118
|
-
|
|
119
|
-
### 分享一套环境
|
|
120
|
-
|
|
121
|
-
没有 Crate 时:
|
|
122
|
-
|
|
123
|
-
```text
|
|
124
|
-
先装插件 A
|
|
125
|
-
再装插件 B
|
|
126
|
-
用这个版本
|
|
127
|
-
启用这些 Bundle
|
|
128
|
-
改这些配置
|
|
129
|
-
还需要这些 Secret
|
|
130
|
-
……
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
有了 DSH Crate:
|
|
134
|
-
|
|
135
|
-
```text
|
|
136
|
-
Export → 发送 setup.dshcrate → Inspect → Import
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
接收者可以先看到里面有什么,再决定是否导入。
|
|
140
|
-
|
|
141
|
-
### 迁移到另一台机器
|
|
142
|
-
|
|
143
|
-
```text
|
|
144
|
-
电脑 A
|
|
145
|
-
↓
|
|
146
|
-
Export
|
|
147
|
-
↓
|
|
148
|
-
.dshcrate
|
|
149
|
-
↓
|
|
150
|
-
电脑 B
|
|
151
|
-
↓
|
|
152
|
-
Preflight
|
|
153
|
-
↓
|
|
154
|
-
Import
|
|
155
|
-
↓
|
|
156
|
-
Verify
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
目标不是把原机器逐字节复制过去,而是根据可迁移信息和明确的插件来源,在目标机器重建 DSH 环境。
|
|
160
|
-
|
|
161
|
-
## Embedded 与 Reference-only
|
|
162
|
-
|
|
163
|
-
### Embedded
|
|
164
|
-
|
|
165
|
-
在适合的情况下,把可安装的插件制品直接放进 Crate。
|
|
166
|
-
|
|
167
|
-
适合更重视实际安装制品保存、而不是文件体积的场景。
|
|
168
|
-
|
|
169
|
-
```text
|
|
170
|
-
插件制品
|
|
171
|
-
+ Package Identity
|
|
172
|
-
+ 完整性信息
|
|
173
|
-
↓
|
|
174
|
-
.dshcrate
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Reference-only
|
|
178
|
-
|
|
179
|
-
只保存插件来源和身份,在 Import 时重新获取。
|
|
180
|
-
|
|
181
|
-
适合:
|
|
182
|
-
|
|
183
|
-
- 原始来源预计长期可用
|
|
184
|
-
- 不适合重新分发插件制品
|
|
185
|
-
- 希望 Crate 更小
|
|
186
|
-
|
|
187
|
-
同一个 Crate 可以同时包含两种模式。
|
|
188
|
-
|
|
189
|
-
## Community Crates
|
|
190
|
-
|
|
191
|
-
`.dshcrate` 不只是备份文件,也可以是一套可以直接复用的 DSH 环境。
|
|
192
|
-
|
|
193
|
-
**好用、经过实际验证的 Community Crate,欢迎通过 Pull Request 提交。**
|
|
194
|
-
|
|
195
|
-
适合投稿的内容包括:
|
|
196
|
-
|
|
197
|
-
- Coding 环境
|
|
198
|
-
- Research / Browser 环境
|
|
199
|
-
- 简洁但真正实用的 Profile
|
|
200
|
-
- 专用工作流环境
|
|
201
|
-
- 已经实际使用过的插件组合
|
|
202
|
-
|
|
203
|
-
Community Crate 至少应该说明:
|
|
204
|
-
|
|
205
|
-
- 用途
|
|
206
|
-
- 包含哪些插件
|
|
207
|
-
- embedded / reference-only 选择
|
|
208
|
-
- required Secret 名称
|
|
209
|
-
- 测试时使用的 DSH 版本
|
|
210
|
-
- Node 版本
|
|
211
|
-
- 操作系统
|
|
212
|
-
- 实际验证范围
|
|
213
|
-
- 已知限制
|
|
214
|
-
- 最后测试日期
|
|
215
|
-
|
|
216
|
-
`Verified` 只表示列出的测试确实在列出的环境中运行过,不表示全平台、全版本永久兼容。
|
|
217
|
-
|
|
218
|
-
## 安全边界
|
|
219
|
-
|
|
220
|
-
DSH Crate 的设计原则是:所有重要修改都应该显式、可检查。
|
|
221
|
-
|
|
222
|
-
- Secret 值不进入普通 Crate。
|
|
223
|
-
- Inspect 和 dry-run 保持只读。
|
|
224
|
-
- 已有 Profile 不会被静默覆盖。
|
|
225
|
-
- 覆盖、切换、重启和破坏性 Profile 操作需要明确确认。
|
|
226
|
-
- Import 失败时不应提交半成功目标。
|
|
227
|
-
- 失败后仍保留完整诊断。
|
|
228
|
-
|
|
229
|
-
## FAQ
|
|
230
|
-
|
|
231
|
-
### 为什么不直接压缩 `DSH_HOME`?
|
|
232
|
-
|
|
233
|
-
完全可以。
|
|
234
|
-
|
|
235
|
-
如果只是给自己备份当前机器,直接压缩整个 DSH 目录可能反而是最简单的方案。
|
|
236
|
-
|
|
237
|
-
DSH Crate 解决的是另一个问题:**分享、迁移、检查和受控重建**,而不是直接复制整个 DSH home。
|
|
238
|
-
|
|
239
|
-
普通压缩包可能同时包含或依赖 Credential、私人 Conversation、缓存、日志、临时状态、本机绝对路径、`node_modules` 和本地 runtime 状态。
|
|
240
|
-
|
|
241
|
-
DSH Crate 更关注把环境拆成可迁移数据、reference-only 依赖、required Secret 名称,以及明确排除的隐私 / runtime 数据。
|
|
242
|
-
|
|
243
|
-
### Verify 到底证明了什么?
|
|
244
|
-
|
|
245
|
-
只证明 DSH Crate 实际执行过的检查。
|
|
246
|
-
|
|
247
|
-
如果没有显式测试模型对话、Session 创建、Core Tool 或插件业务能力,那么 Profile Verify 成功也不能被解释成这些能力已经通过。
|
|
248
|
-
|
|
249
|
-
### DSH Crate 是 Profile Manager 吗?
|
|
250
|
-
|
|
251
|
-
Profile 管理不是主要产品。
|
|
252
|
-
|
|
253
|
-
DSH Crate 的重点是**可分享环境制品、受控 Import、跨机器迁移、诊断和基于证据的 Verify**,而不是再做一套通用 Profile Manager。
|
|
254
|
-
|
|
255
|
-
## Roadmap
|
|
256
|
-
|
|
257
|
-
近期开发方向会刻意保持收敛:
|
|
258
|
-
|
|
259
|
-
- **Troubleshooting Skill** — 读取 diagnostic JSON,定位失败阶段,基于证据提出最小修复,然后再次 Verify。
|
|
260
|
-
- **更完整的环境迁移** — 增加 Conversation、插件配置、插件内工作流,以及能够安全识别归属关系的其他插件本地数据。
|
|
261
|
-
- **Full Configuration Freeze** — 后续高级能力,尽可能保存可重建的 DSH 配置,并明确报告离线恢复是否真正经过验证。
|
|
262
|
-
|
|
263
|
-
Freeze 是高级工作流,不是 DSH Crate 当前最主要的使用理由。
|
|
264
|
-
|
|
265
|
-
## 开发环境 CLI
|
|
266
|
-
|
|
267
|
-
Core 当前提供开发环境 CLI:
|
|
268
|
-
|
|
269
|
-
```powershell
|
|
270
|
-
dsh-crate inspect .\example.dshcrate --json
|
|
271
|
-
dsh-crate import .\example.dshcrate --dsh-home $env:DSH_HOME --json
|
|
272
|
-
dsh-crate verify --dsh-home $env:DSH_HOME --profile my-profile --mode web --json
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
使用 `--offline` 可以禁止缺失 reference-only 插件时通过网络回退获取。
|
|
276
|
-
|
|
277
|
-
## 贡献
|
|
278
|
-
|
|
279
|
-
欢迎提交:
|
|
280
|
-
|
|
281
|
-
- 可复现的 Import / Export 问题
|
|
282
|
-
- 特殊 npm / Git / tarball 插件来源案例
|
|
283
|
-
- Windows / Linux / macOS 测试结果
|
|
284
|
-
- 第三方插件打包边界案例
|
|
285
|
-
- 文档修改
|
|
286
|
-
- 好用并经过实际验证的 Community Crate
|
|
287
|
-
|
|
288
|
-
Bug Report 建议包含:
|
|
289
|
-
|
|
290
|
-
```text
|
|
291
|
-
DSH version:
|
|
292
|
-
Node version:
|
|
293
|
-
OS / architecture:
|
|
294
|
-
Source Profile:
|
|
295
|
-
Expected behavior:
|
|
296
|
-
Observed behavior:
|
|
297
|
-
Diagnostic JSON:
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
请不要提交真实 Credential。
|
|
301
|
-
|
|
302
|
-
## License
|
|
303
|
-
|
|
304
|
-
MIT License.
|
|
3
|
+
当前中文说明已统一至 [README.md](./README.md)。安装入口、版本范围、实际验证与已知限制以该说明为准。此文件保留既有中文文档链接。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 joezhou172 <rdhwhyhrg@163.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/cordis.patch.yml
CHANGED
|
@@ -3,9 +3,4 @@
|
|
|
3
3
|
- insert:
|
|
4
4
|
- id: dsh-crate-web
|
|
5
5
|
name: 'dsh-crate-web'
|
|
6
|
-
inject: [webServer]
|
|
7
|
-
# Replace the official read-only plugin-list tab: DSH Crate registers the same
|
|
8
|
-
# `settings.plugins.tab` id (`all`) with a collapsible official/user inventory.
|
|
9
|
-
# The data host row `plugin-inventory` is left enabled.
|
|
10
|
-
- id: ui-settings-plugin-inventory
|
|
11
|
-
disabled: true
|
|
6
|
+
inject: [webServer, connection]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.2-preview.2"
|