dsh-claude-move 0.4.7 → 0.4.9
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/CHANGELOG.md +25 -0
- package/README-es.md +58 -46
- package/README-hi.md +53 -41
- package/README-pt.md +57 -49
- package/README-zh.md +53 -41
- package/README.md +19 -8
- package/client/client.js +15 -3
- package/index.mjs +97 -27
- package/lib/convert.mjs +108 -37
- package/lib/discovery.mjs +2 -2
- package/lib/export.mjs +28 -14
- package/lib/handoff.mjs +8 -4
- package/lib/sources/claude/parser.mjs +1 -1
- package/lib/sources/codex/parser.mjs +1 -1
- package/lib/sources/hermes/parser.mjs +1 -1
- package/lib/sources/opencode/parser.mjs +3 -2
- package/package.json +32 -24
- package/types.d.ts +38 -0
package/README-zh.md
CHANGED
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
*迁移时保留你的 Claude Code 历史:一次安装、可续聊会话、与运行中的 Claude Code 实时同步,以及一个四来源迁移向导。*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-claude-move)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
14
|
+
[](https://dsh.market/)
|
|
13
15
|
[](#)
|
|
14
16
|
[](https://github.com/PerryLink/dsh-claude-move/actions)
|
|
15
17
|
[](https://github.com/PerryLink/dsh-claude-move/releases)
|
|
@@ -24,10 +26,10 @@
|
|
|
24
26
|
|
|
25
27
|
## 兼容性
|
|
26
28
|
|
|
27
|
-
- 面向 `dsh 0.1.
|
|
29
|
+
- 面向 `dsh 0.1.7-alpha.1`(web profile,当前线会话格式 V4);peer 依赖要求 `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0`。已于 2026-09-22 核验(checkJs 类型门 + 291 项断言、38 个套件)。导入日志重新满足当前恢复边界:`tool/result` 写成 V4 一等 tool 角色消息,续聊交接摘要带生产者自有消息来源 kind(`dsh-claude-move`)——0.1.7-alpha.1 在类型层与落盘行准入层双双删除了笼统的 `{ kind: 'plugin', plugin }`。宿主没有 `sessions.open()` 时,面板「打开会话」按钮置灰渲染并带说明 title。
|
|
28
30
|
`0.1.2-rc.1`(2026-09-04 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。
|
|
29
|
-
- 0.4.0 内置 `sessionPersistence` 双基线运行时 shim,按 API 形状特性探测(绝不按版本号猜测):旧 API(`create`/`append`/`readFrom`,`list()` 返回会话头)与 handle seam(`create` 返回 `SessionHandle`,`list()`/`stat()` 返回快照)都能工作。handle seam 已随 alpha 线发布(`@deepseek-ai/dsh-session-persistence` / `-jsonl` `0.1.5-rc.2`),因此 compat workflow 可以覆盖它。handle 路径上每次 append 之后必须 `flush()`(耐久屏障)并成对 `close()`(单写所有权);header 盖上后端当前格式版本并显式补 `isSeeded`;缺失的 assistant model 来源回退 provider
|
|
30
|
-
- 最近针对全新 tarball 安装验证:真实扫描、真实批量导入(幂等重导入)、工作区挂载与持久化产物均已确认;macOS/Linux 由 CI
|
|
31
|
+
- 0.4.0 内置 `sessionPersistence` 双基线运行时 shim,按 API 形状特性探测(绝不按版本号猜测):旧 API(`create`/`append`/`readFrom`,`list()` 返回会话头)与 handle seam(`create` 返回 `SessionHandle`,`list()`/`stat()` 返回快照)都能工作。handle seam 已随 alpha 线发布(`@deepseek-ai/dsh-session-persistence` / `-jsonl` `0.1.5-rc.2`),因此 compat workflow 可以覆盖它。handle 路径上每次 append 之后必须 `flush()`(耐久屏障)并成对 `close()`(单写所有权);header 盖上后端当前格式版本并显式补 `isSeeded`;缺失的 assistant model 来源回退 provider。两条写盘路径都按后端自报的格式版本决定形状:合成的 `assistant/message` 自格式 2 起带 `stream: []`(恢复边界断言 `Array.isArray(data.stream)`,缺它则日志能写入、能读回却不可续聊);`tool/result` 自格式 4 起是 V4 一等 tool 角色消息,之下折回 v3 的 `tool-result` 包裹块——绝不写出目标后端自己会拒收的形状。导入扫描的清理在列表元素的 `header.id` 无法解析时拒绝执行,绝不静默清空 `imports.json`。
|
|
32
|
+
- 最近针对全新 tarball 安装验证:真实扫描、真实批量导入(幂等重导入)、工作区挂载与持久化产物均已确认;macOS/Linux 由 CI 矩阵覆盖。导入日志使用后端当前的会话格式(`0.1.7-alpha.1` 上为 V4、`0.1.6` 线为 V3、`<= 0.1.2-rc.1` 为 v0),`dsh <= 0.1.2-rc.1` 无法读取(升级是单向的;回退办法是从源 transcript 重新导入)。导出的读取侧把上述每种形状都读得回来。
|
|
31
33
|
|
|
32
34
|
### 兼容性矩阵(仅公开接缝)
|
|
33
35
|
|
|
@@ -272,48 +274,58 @@ CI 通过 GitHub Actions([test.yml](.github/workflows/test.yml))在 Linux/ma
|
|
|
272
274
|
- [@OLDnana1](https://github.com/OLDnana1) —— 对被中断工具调用损坏的根因分析,该损坏曾使导入会话在续聊时永久返回 HTTP 400。
|
|
273
275
|
- [@GooodWei](https://github.com/GooodWei) —— 发现 `README.md`(以及任何无描述的 `.md`)被误注册为技能,从而破坏 DSH 的技能加载。
|
|
274
276
|
|
|
275
|
-
## PerryLink DSH
|
|
277
|
+
## PerryLink DSH Plugin Family
|
|
276
278
|
|
|
277
|
-
|
|
279
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
278
280
|
|
|
279
281
|
| Plugin | One-liner |
|
|
280
282
|
|---|---|
|
|
281
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
282
|
-
| **[dsh-
|
|
283
|
-
| **[dsh-
|
|
284
|
-
| **[dsh-
|
|
285
|
-
| **[dsh-
|
|
286
|
-
| **[dsh-
|
|
287
|
-
| **[dsh-
|
|
288
|
-
| **[dsh-
|
|
289
|
-
| **[dsh-
|
|
290
|
-
| **[dsh-
|
|
291
|
-
| **[dsh-
|
|
292
|
-
| **[dsh-
|
|
293
|
-
| **[dsh-
|
|
294
|
-
| **[dsh-
|
|
295
|
-
| **[dsh-
|
|
296
|
-
| **[dsh-
|
|
297
|
-
| **[dsh-
|
|
298
|
-
| **[dsh-
|
|
299
|
-
| **[dsh-
|
|
300
|
-
| **[dsh-
|
|
301
|
-
| **[dsh-
|
|
302
|
-
| **[dsh-
|
|
303
|
-
| **[dsh-
|
|
304
|
-
| **[dsh-
|
|
305
|
-
| **[dsh-
|
|
306
|
-
| **[dsh-
|
|
307
|
-
| **[dsh-
|
|
308
|
-
| **[dsh-
|
|
309
|
-
| **[dsh-
|
|
310
|
-
| **[dsh-
|
|
311
|
-
| **[dsh-
|
|
312
|
-
| **[dsh-
|
|
313
|
-
| **[dsh-
|
|
314
|
-
| **[dsh-
|
|
315
|
-
| **[dsh-
|
|
316
|
-
| **[dsh-
|
|
283
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
284
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
285
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
286
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
287
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
288
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
289
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
290
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
291
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
292
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
293
|
+
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
294
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
295
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
296
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
297
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
298
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
299
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
300
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
301
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
302
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
303
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
304
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
305
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
|
|
306
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
|
|
307
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
308
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
309
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
310
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
311
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
312
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
313
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
314
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
315
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
316
|
+
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
317
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
318
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
319
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
320
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
321
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
322
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
323
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
324
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
325
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
326
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
327
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
328
|
+
|
|
317
329
|
|
|
318
330
|
### 从 DSH Desktop 市场安装
|
|
319
331
|
|
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
[](LICENSE)
|
|
12
12
|
[](https://github.com/topics/dsh-plugin)
|
|
13
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
14
|
+
[](https://dsh.market/)
|
|
14
15
|
[](#)
|
|
15
16
|
[](https://github.com/PerryLink/dsh-claude-move/actions)
|
|
16
17
|
[](https://github.com/PerryLink/dsh-claude-move/releases)
|
|
@@ -25,10 +26,10 @@
|
|
|
25
26
|
|
|
26
27
|
## Compatibility
|
|
27
28
|
|
|
28
|
-
- Targets `dsh 0.1.
|
|
29
|
+
- Targets `dsh 0.1.7-alpha.1` (web profile, session format V4 on the current line); peer dependencies require `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0`. Verified 2026-09-22 (checkJs type gate + 291 assertions, 38 suites). Imported logs satisfy the current restore boundary again: `tool/result` is written as the V4 first-class tool-role message, and the resume handoff carries a producer-owned message source kind (`dsh-claude-move`) because 0.1.7-alpha.1 retired the catch-all `{ kind: 'plugin', plugin }` source in both the type layer and durable-row admission. The panel's "open session" button renders disabled with an explanatory title when the host exposes no `sessions.open()`. Node `^22.19 || >=24`.
|
|
29
30
|
`0.1.2-rc.1` (adapted 2026-09-04): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged.
|
|
30
|
-
- 0.4.0 ships a dual-baseline `sessionPersistence` runtime shim, feature-detected by API shape (never by version): the legacy API (`create`/`append`/`readFrom`, `list()` returning headers) and the handle seam (`create` returning a `SessionHandle`, `list()`/`stat()` returning snapshots) both work. The handle seam is published on the alpha line (`@deepseek-ai/dsh-session-persistence` / `-jsonl` `0.1.5-rc.2`), so the compat workflow covers it. On the handle path every append is followed by `flush()` (durability barrier) and a paired `close()` (single-writer ownership); headers are stamped with the backend's current format version plus an explicit `isSeeded`; missing assistant model sources fall back to the provider
|
|
31
|
-
- Last verified against a fresh tarball install: real scan, real batch import (idempotent re-import), workspace attach and persistence artifacts confirmed; macOS/Linux covered by the CI matrix. Imported logs use session format V3 and cannot be read by `dsh <= 0.1.2-rc.1` (upgrading is one-way; re-import from the source transcript is the fallback).
|
|
31
|
+
- 0.4.0 ships a dual-baseline `sessionPersistence` runtime shim, feature-detected by API shape (never by version): the legacy API (`create`/`append`/`readFrom`, `list()` returning headers) and the handle seam (`create` returning a `SessionHandle`, `list()`/`stat()` returning snapshots) both work. The handle seam is published on the alpha line (`@deepseek-ai/dsh-session-persistence` / `-jsonl` `0.1.5-rc.2`), so the compat workflow covers it. On the handle path every append is followed by `flush()` (durability barrier) and a paired `close()` (single-writer ownership); headers are stamped with the backend's current format version plus an explicit `isSeeded`; missing assistant model sources fall back to the provider. Both write paths are shaped by the format version the backend itself reports: synthesized `assistant/message` events carry `stream: []` from format 2 up (the restore boundary asserts `Array.isArray(data.stream)`, so without it a log was written and readable but could not be resumed), and `tool/result` is a V4 first-class tool-role message from format 4 up but the v3 `tool-result` wrapper below it — a log is never written in a shape its own backend would refuse. Import-scan cleanup refuses to run when a listed element's `header.id` cannot be resolved, so `imports.json` is never silently cleared.
|
|
32
|
+
- Last verified against a fresh tarball install: real scan, real batch import (idempotent re-import), workspace attach and persistence artifacts confirmed; macOS/Linux covered by the CI matrix. Imported logs use the backend's current session format (V4 on `0.1.7-alpha.1`, V3 on the `0.1.6` line, v0 on `<= 0.1.2-rc.1`) and cannot be read by `dsh <= 0.1.2-rc.1` (upgrading is one-way; re-import from the source transcript is the fallback). Export reads every one of those shapes back.
|
|
32
33
|
|
|
33
34
|
### Compatibility matrix (public seams only)
|
|
34
35
|
|
|
@@ -275,14 +276,18 @@ CI runs the full suite on Node 22 across Linux/macOS/Windows via GitHub Actions
|
|
|
275
276
|
|
|
276
277
|
## PerryLink DSH Plugin Family
|
|
277
278
|
|
|
278
|
-
This project is one of the
|
|
279
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
279
280
|
|
|
280
281
|
| Plugin | One-liner |
|
|
281
282
|
|---|---|
|
|
282
283
|
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
284
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
283
285
|
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
284
286
|
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
287
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
288
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
285
289
|
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
290
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
286
291
|
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
287
292
|
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
288
293
|
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
@@ -293,6 +298,7 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
293
298
|
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
294
299
|
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
295
300
|
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
301
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
296
302
|
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
297
303
|
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
298
304
|
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
@@ -301,20 +307,25 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
301
307
|
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
302
308
|
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
303
309
|
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
304
|
-
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console |
|
|
305
310
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
306
|
-
| **[dsh-
|
|
311
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
312
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
307
313
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
314
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
315
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
316
|
+
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
317
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
308
318
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
309
319
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
310
320
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
311
321
|
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
312
322
|
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
313
323
|
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
324
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
314
325
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
315
|
-
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
|
|
326
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
316
327
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
317
|
-
|
|
328
|
+
|
|
318
329
|
|
|
319
330
|
### Install from the DSH Desktop Market
|
|
320
331
|
|
package/client/client.js
CHANGED
|
@@ -80,6 +80,7 @@ const PANEL_STRINGS = {
|
|
|
80
80
|
importContinue: '导入并继续',
|
|
81
81
|
openSession: '打开会话',
|
|
82
82
|
openSessionTitle: '在当前窗口打开已导入会话',
|
|
83
|
+
openUnsupportedTitle: '当前宿主不支持直接打开:点击后将整页刷新到会话列表',
|
|
83
84
|
refreshSessions: '刷新会话列表',
|
|
84
85
|
refreshSessionsTitle: '导入后刷新会话列表以点开续聊',
|
|
85
86
|
cacheReset: '缓存已重置,正在重新扫描…',
|
|
@@ -130,6 +131,7 @@ const PANEL_STRINGS = {
|
|
|
130
131
|
importContinue: 'Import & continue',
|
|
131
132
|
openSession: 'Open session',
|
|
132
133
|
openSessionTitle: 'Open the imported session in this window',
|
|
134
|
+
openUnsupportedTitle: 'This host cannot open a session directly: the page reloads to the session list instead',
|
|
133
135
|
refreshSessions: 'Refresh session list',
|
|
134
136
|
refreshSessionsTitle: 'Refresh the session list after importing',
|
|
135
137
|
cacheReset: 'Cache reset — rescanning…',
|
|
@@ -362,12 +364,12 @@ function installPanel(ctx) {
|
|
|
362
364
|
<div class="kv">${panelText('kvDir')}${esc(project.cwd ?? panelText('unknown'))}${project.dirExists ? '' : panelText('dirNotExists')}</div>
|
|
363
365
|
<p style="margin-top:8px">
|
|
364
366
|
<button data-act="import">${panelText('importContinue')}</button>
|
|
365
|
-
${dshId
|
|
367
|
+
${dshId ? `<button data-act="open"${canOpen ? '' : ' disabled'} title="${canOpen ? panelText('openSessionTitle') : panelText('openUnsupportedTitle')}">${panelText('openSession')}</button>` : ''}
|
|
366
368
|
<button data-act="reload" title="${panelText('refreshSessionsTitle')}">${panelText('refreshSessions')}</button>
|
|
367
369
|
</p>`
|
|
368
370
|
detail.querySelector('[data-act="import"]').addEventListener('click', () => importJob(session.file))
|
|
369
371
|
const openBtn = detail.querySelector('[data-act="open"]')
|
|
370
|
-
if (openBtn) openBtn.addEventListener('click', () => openSession(dshId))
|
|
372
|
+
if (openBtn && canOpen) openBtn.addEventListener('click', () => openSession(dshId))
|
|
371
373
|
detail.querySelector('[data-act="reload"]').addEventListener('click', () => { void refreshSessions() })
|
|
372
374
|
}
|
|
373
375
|
|
|
@@ -383,12 +385,22 @@ function installPanel(ctx) {
|
|
|
383
385
|
window.location.reload()
|
|
384
386
|
}
|
|
385
387
|
|
|
386
|
-
/**
|
|
388
|
+
/** 一次性告警标记:宿主没有 sessions.open() 时只提示一次。 */
|
|
389
|
+
let warnedOpenFallback = false
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* 官方服务可用时直接打开已导入会话;不可用时整页刷新兜底(一次性告警,
|
|
393
|
+
* 不再让「按钮点了没反应」成为静默降级)。
|
|
394
|
+
*/
|
|
387
395
|
function openSession(dshId) {
|
|
388
396
|
if (typeof sessions?.open === 'function') {
|
|
389
397
|
sessions.open(dshId)
|
|
390
398
|
return
|
|
391
399
|
}
|
|
400
|
+
if (!warnedOpenFallback) {
|
|
401
|
+
warnedOpenFallback = true
|
|
402
|
+
console.warn('[claude-move] the host exposes no sessions.open(); falling back to a full page reload for this and later opens')
|
|
403
|
+
}
|
|
392
404
|
window.location.reload()
|
|
393
405
|
}
|
|
394
406
|
|