dsh-recall-plugin 2.4.5 → 2.4.6
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 +8 -0
- package/README.en.md +2 -2
- package/README.md +10 -10
- package/package.json +10 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
本文件格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循语义化版本。
|
|
4
4
|
|
|
5
|
+
## [2.4.6] - 2026-09-29
|
|
6
|
+
|
|
7
|
+
### 变更
|
|
8
|
+
|
|
9
|
+
- **兼容声明同步 dsh 0.2.0-rc.1(零破坏核验,无代码改动)**:全局实装 `@deepseek-ai/dsh@0.2.0-rc.1`(npm dist-tag `next`,0.2.0 系列首个候选版本、汇总自 `v0.1.7-rc.2`;`latest` 仍是 0.1.7-rc.2,**装最新版必须显式写版本号**)后,以**全树逐文件哈希 diff** 核验——npm 清理失败留下的 `.dsh-EBhnoWNL` 残留正好是 0.1.7-rc.2 整包副本(298MB),直接用作基线(比对后已删除);528 包中 310 包仅版本号 lockstep 变更,类型面 65 改 / 23 增 / 0 删,运行时 JS 71 改 / 11 增 / 2 删。插件消费面**零破坏**:`dsh-shell`/`dsh-settings`/`dsh-session-query`/`dsh-agent`/`dsh-client-connection`/`dsh-host-webserver`/`dsh-sandbox-policy`/`dsh-client-ui-slots`/`dsh-client-ui-renderer`/`dsh-client-ui-settings-plugins`/`dsh-pwsh-local`/`dsh-cordis-host-runner`(插件加载面)等内容字节级一致,消费面符号计数 11 项 0 差异(`readAttachment`/`updateQueue`/`archiveSession`/`openSession`/`createDrafts`/`releaseDraftAttachments`/`setDraft`/`addAttachments`/`stopActivity`/`increaseTitle`/`atSeq`),`plugins.bundle.config` 槽位定义与渲染调用逐行一致(`settings.plugin.item` 两版均 0 命中)。**唯一接口增量**是 `sessions.fork` 的可选 `onCreated`(向后兼容、插件不传);真增量集中在插件管理页 UI(刷新反馈/安装输入清洗)、`config-editor` 配置继承值计算、会话标题「未命名」语义、消息提交埋点,以及 `dsh-session` 的工具结果修复链重构(`ToolCallRecovery`,插件 `cutSeq` 恒取平衡前缀、不触发补闭合分支)。门禁:`check:dsh` 四层全绿、`test:probe` 52/52、`verify:host` 装配断言全过、`typecheck` 通过、`npm test` 436/436。**活体冒烟(真宿主 + 浏览器实弹,link 模式 / `D:\tmp\recall-h0`)逐项通过**:插件经启动期兼容门禁激活(同 profile 的第三方 `dshmarket@1.65.1` 因 peer 只到 `^0.1.2-alpha.2` 被跳过,反证门禁真实生效);撤回全链(面板清单、文件回退、安全快照 `snap-pre-rollback-*`、lineage、子会话打开、标题继承无递增、文本回填、无残留排队项、原会话归档)与设置页(配置卡完整渲染、`保存`/`恢复默认` 双向回读一致、快照树两级展开与版本家族聚族、`立即 gc`「gc 完成」)均正常,dsh stderr 零插件报错。同步项:**peer 范围必须新增 tuple** `|| >=0.2.0-rc.1 <0.2.1`(npm 的 prerelease 门槛要求同 tuple 且带 prerelease 的比较器,既有 `<0.1.8` 段放行不了 `0.2.0-rc.1`;不扩范围则启动期兼容门禁会整行跳过本 bundle)、`dshReleases` 补 `0.2.0-rc.1: compatible`、`docs/reference/` 镜像按 `dsh-v0.2.0-rc.1` tag 重拉(13 源中仅 `09-architecture.md` 有实质差异:新增一行「失败步骤会记录缺失的工具结果」,净 +121 字节)、`docs/dsh-contract.md` 对应版本与 compat-audit 头部核验段同步、README 双语徽章与兼容范围同步,评估实证见 `docs/upgrade-assessments/dsh-0.2.0-rc.1.md`。观察项(不阻塞):`fork.onCreated` 可更早拿到 childId(插件当前不需要);**自动化任务改由可选 bundle `dsh-experimental-schedule-bundle` 提供、默认关闭**,用户如需须在插件管理页开启。
|
|
10
|
+
|
|
11
|
+
- **兼容声明同步 dsh 0.1.7-rc.2(零破坏核验,无代码改动)**:全局实装 `@deepseek-ai/dsh@0.1.7-rc.2`(npm dist-tag `next`,rc.1 后 346 提交)后,以**聚焦消费面的内容级 diff** 核验——`npm pack` 下载 28 个包(全部 peer + 全部消费点所在包 + 官方 bundle)的 rc.1 版本,与 rc.2 树做全文件 SHA256 比对并逐行核对契约/实现差异;叠加**符号级复核**(13 包 × 23 符号在新旧树计数逐项相等,0 差异)。插件消费面**零破坏**:`api-session-controller` 的客户端契约目录(`lib/types/client/**`:fork/updateQueue/readAttachment/binding/archiveSession)**不在变更清单**,`dsh-shell`/`dsh-settings`/`dsh-sandbox-policy`/`dsh-host-webserver`/`dsh-pwsh-local`/`dsh-client-connection`/`dsh-client-modules`/`dsh-client-ui-renderer`/`dsh-client-ui-session`/`dsh-client-store`/`dsh-host-plugin-inventory`/`dsh-api-gateway` 12 个核心接缝包仅动版本号与 i18n 元数据;真增量集中在本版新能力与官方 UI 层——模型选择/账号(`initializeDefaultModel`/`hasProviderApiKey`/`requireModel`)、工具热更(`dsh-session` 纯新增 `ToolHistoryProjection`、`ui-chat` 新 node kind `developer-message`)、工作区快捷键与归档筛选三态、额度提示链、`app-boot` 的跳过报告时机(判定逻辑未变)、`ui-primitives` 样式重构,均为插件不消费处。门禁:`check:dsh` 四层全绿、`test:probe` 52/52、`verify:host` 装配断言全过、`typecheck` 通过、`npm test` 436/436。同步项:`dshReleases` 补 `0.1.7-rc.2: compatible`(peer 范围 `>=0.1.7-alpha.1 <0.1.8` 天然覆盖,无需新 tuple)、`docs/reference/` 镜像按 `dsh-v0.1.7-rc.2` tag 重拉(13 源中仅 `09-architecture.md` 有实质差异:3 处替换、净 +55 字符,含工具热更新增说明)、`docs/dsh-contract.md` 对应版本与事件集来源标注、compat-audit 头部核验段与 I33 增补、README 双语徽章与兼容范围同步,评估实证见 `docs/upgrade-assessments/dsh-0.1.7-rc.2.md`。观察项(不阻塞):`session-query.read()` 新增显式抛 `SESSION_QUERY_CORRUPT_SESSION`(降级链保持 try/catch);新 node kind `developer-message` 不被插件 key `['user','steering']` 命中;归档筛选三态不改 `archivedSessionIds` 语义(I37 判据继续有效);`initializeDefault(signal)` 签名破坏性变更(插件零消费);升级操作陷阱——Windows 上 npm 替换全局 bin shim 遇占用只留哈希名半成品,需手工改回标准名恢复 `dsh` 命令。
|
|
12
|
+
|
|
5
13
|
## [2.4.5] - 2026-09-24
|
|
6
14
|
|
|
7
15
|
### 新增
|
package/README.en.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|

|
|
8
8
|

|
|
9
9
|
|
|
10
|
-
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.2.0-rc.1)
|
|
11
11
|

|
|
12
12
|
---
|
|
13
13
|
Under any message you've sent, click "↶ Recall" — **your workspace files and the conversation history roll back to just before that message was sent**.
|
|
@@ -72,7 +72,7 @@ Prerequisites:
|
|
|
72
72
|
|
|
73
73
|
- git CLI: without it the recall button won't appear (a notice shows at the top of the page); DSH itself keeps running.
|
|
74
74
|
- Shell: PowerShell 5.1 / 7 on Windows; bash on Linux/macOS.
|
|
75
|
-
- DSH version: `0.1.2-alpha.1` through `0.
|
|
75
|
+
- DSH version: `0.1.2-alpha.1` through `0.2.0-rc.1`. peerDependencies open a window per minor line (`>=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1`, consistent with the `dsh.compatibility.dshReleases` declaration): each line is anchored at its first verified version with an upper bound at the next minor, so later prereleases/releases within a verified line are admitted without touching the peer declaration, while unverified new minor lines remain blocked (the 0.2.0 line needs its own tuple — npm's prerelease gate only admits a prerelease from a comparator with the same tuple, so the existing `<0.1.8` segment cannot admit `0.2.0-rc.1`).
|
|
76
76
|
- **0.1.7-alpha.1 is a breaking release** (`ShellExecutor.run`/`start` became `execute().result()`, and the settings surface became `SettingsForms`, addressed by profile entry id with `.volatile()` marked fields); the plugin ships **both seams side by side** — the same release works on every 0.1.2–0.1.6 line and on 0.1.7, with unchanged behaviour on older DSH versions.
|
|
77
77
|
- `0.1.1-rc.2` and earlier are not supported: their client runtime lacks the `sessions`/`workspaces`/`uiWorkspace` services, so the plugin UI silently fails to render.
|
|
78
78
|
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/dsh-recall-plugin)
|
|
6
6
|
[](https://www.npmjs.com/package/dsh-recall-plugin)
|
|
7
7
|

|
|
8
|
-
[](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.2.0-rc.1)
|
|
9
9
|
---
|
|
10
10
|
在任意一条你发过的消息下方点「↶ 撤回」——**工作区文件和对话历史一起回到那条消息发出之前的状态**。
|
|
11
11
|
---
|
|
@@ -69,27 +69,27 @@
|
|
|
69
69
|
|
|
70
70
|
- git CLI:未安装时撤回按钮不出现(页面顶部会提示安装 git),不影响 DSH 运行。
|
|
71
71
|
- shell:Windows 上 PowerShell 5.1 / 7 均可;Linux/macOS 需 bash。
|
|
72
|
-
- DSH 版本:`0.1.2-alpha.1` 至 `0.
|
|
72
|
+
- DSH 版本:`0.1.2-alpha.1` 至 `0.2.0-rc.1`。peerDependencies 按 minor 版本线开窗(`>=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1`,与 `dsh.compatibility.dshReleases` 声明一致):每条线以首个核验版本为下限、上界开到下一 minor,同线内后续 prerelease/正式版自动放行、无需改 peer 声明;未核验的新 minor 线仍被拦截(0.2.0 线必须显式开窗——npm 的 prerelease 门槛要求同 tuple 且带 prerelease 的比较器,既有 `<0.1.8` 段放行不了 `0.2.0-rc.1`)。
|
|
73
73
|
- **0.1.7-alpha.1 是破坏性版本**(`ShellExecutor` 的 `run`/`start` 换成 `execute().result()`;settings 面换成 `SettingsForms`、按 profile 条目 id 寻址并要求字段标 `.volatile()`),插件采用**双分支共存适配**——同一次发布同时兼容 0.1.2–0.1.6 各线与 0.1.7,老版本 DSH 上行为不变。
|
|
74
74
|
- `0.1.1-rc.2` 及更早不支持:那条线的客户端运行时没有 `sessions`/`workspaces`/`uiWorkspace` 服务,插件 UI 会静默不渲染。
|
|
75
75
|
|
|
76
76
|
安装与验证:
|
|
77
77
|
|
|
78
|
-
- DSH 官方插件命令:安装并自动挂载进
|
|
79
|
-
|
|
78
|
+
- DSH 官方插件命令:安装并自动挂载进profile
|
|
79
|
+
|
|
80
|
+
Web UI
|
|
81
|
+
```
|
|
80
82
|
dsh plugin --profile web add dsh-recall-plugin
|
|
81
83
|
```
|
|
84
|
+
Desktop
|
|
85
|
+
```
|
|
86
|
+
dsh plugin --profile desktop add dsh-recall-plugin
|
|
87
|
+
```
|
|
82
88
|
- 也可从 git 直接安装:
|
|
83
89
|
```powershell
|
|
84
90
|
dsh plugin --profile web add github:limbo947/dsh-recall-plugin
|
|
85
91
|
```
|
|
86
92
|
|
|
87
|
-
- 重启 DSH 进程(按你的启动方式择一)
|
|
88
|
-
```powershell
|
|
89
|
-
dsh web # 前台运行
|
|
90
|
-
pm2 restart <your-dsh-name> # 由 pm2 托管
|
|
91
|
-
```
|
|
92
|
-
|
|
93
93
|
- 验证:重启后硬刷新页面(Ctrl+Shift+R),悬停任意一条插件启用后发送的用户消息——复制按钮旁出现「↶」即生效。没有按钮?九成是没重启 DSH 进程,或 git CLI 不在 PATH 里。
|
|
94
94
|
|
|
95
95
|
- 卸载:同时移除依赖与挂载,快照数据保留在 home 下 `dsh-recall-snapshots/`,想彻底清除手动删掉该目录即可。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-recall-plugin",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.6",
|
|
4
4
|
"description": "在 DSH 中撤回自己发过的消息:工作区文件与对话历史一起回到那条消息发出之前,消息的文本与附件自动放回输入框,改完即可重发。文件走独立影子 git 快照(不碰项目自身的 git),对话走官方 sessions.fork,原会话归档可找回。",
|
|
5
5
|
"icon": "assets/icon.svg",
|
|
6
6
|
"type": "module",
|
|
@@ -63,18 +63,20 @@
|
|
|
63
63
|
"0.1.6-alpha.2": "compatible",
|
|
64
64
|
"0.1.7-alpha.1": "compatible",
|
|
65
65
|
"0.1.7-alpha.2": "compatible",
|
|
66
|
-
"0.1.7-rc.1": "compatible"
|
|
66
|
+
"0.1.7-rc.1": "compatible",
|
|
67
|
+
"0.1.7-rc.2": "compatible",
|
|
68
|
+
"0.2.0-rc.1": "compatible"
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
},
|
|
70
72
|
"peerDependencies": {
|
|
71
73
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
72
|
-
"@deepseek-ai/dsh-host-webserver": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8",
|
|
73
|
-
"@deepseek-ai/dsh-sandbox-policy": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8",
|
|
74
|
-
"@deepseek-ai/dsh-session": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8",
|
|
75
|
-
"@deepseek-ai/dsh-session-query": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8",
|
|
76
|
-
"@deepseek-ai/dsh-settings": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8",
|
|
77
|
-
"@deepseek-ai/dsh-shell": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8",
|
|
74
|
+
"@deepseek-ai/dsh-host-webserver": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
75
|
+
"@deepseek-ai/dsh-sandbox-policy": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
76
|
+
"@deepseek-ai/dsh-session": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
77
|
+
"@deepseek-ai/dsh-session-query": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
78
|
+
"@deepseek-ai/dsh-settings": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
79
|
+
"@deepseek-ai/dsh-shell": ">=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6 || >=0.1.6-alpha.1 <0.1.7 || >=0.1.7-alpha.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1",
|
|
78
80
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
79
81
|
"react": "^18.2.0"
|
|
80
82
|
},
|