dsh-reasoning-distill 0.1.8 → 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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  本插件的版本变更记录。
4
4
 
5
+ ## 0.1.10
6
+
7
+ - **计费口径修正**:只统计「产出压缩的那一轮」内、用户发下一条消息之前后续请求的重放;跨轮次的重放不再计入节省(DeepSeek 的 API 不参考之前轮次的 `reasoning_content`),报告里的当前减量也按这一轮计算,旧轮次的改写不再显示为节省。
8
+ - **兼容性标注**:`dsh.compatibility.dshReleases` 增补 `0.2.1-rc.2`。核对了 rc.1 与 rc.2 的 6 个 in-place 补丁目标文件与公开 API catalog,两者逐字节相同,因此 rc.1 的完整验证结论同样适用;README 的测试版本表同步更新。
9
+
10
+ ## 0.1.9
11
+
12
+ - README 开头补充「适用场景」说明:本插件只在单轮次、多步工具调用的超长单轮对话里划算;多轮问答中每轮步骤少、压缩收益有限,且 DeepSeek 的 API 默认不会参考之前轮次的 `reasoning_content`(仅请求携带 tools 时拼接进上下文),改写还会让缓存前缀失效、后续请求按未命中计费,整体往往难以抵消。插件面向「说完任务就不管」的许愿式编程,在根据用户反馈反复精修的阶段建议关闭。
13
+ - 本次没有代码改动。
14
+
5
15
  ## 0.1.8
6
16
 
7
17
  - **调整初始配置**:刚安装时默认规则里的「对可续接子代理启用」「附带工具调用结果」「压缩最终回答轮」现在默认关闭。新建的逐模型规则同样以一个全关的初始层开始(三种会话类型全关,上述三项也显式关闭),不会因为现有默认规则把它们开着而自动继承为开。
package/README.md CHANGED
@@ -2,11 +2,19 @@
2
2
 
3
3
  把过长的模型思考压缩成核心内容,之后每次请求都重放压缩版,省下重复发送的 token;同时给出每个会话的开销与节省报告。
4
4
 
5
+ > **⚠️ 适用场景**
6
+ >
7
+ > 本插件只在 **「单轮次、多步工具调用的超长单轮对话」** 里划算。模型连续调用很多步工具时,同一段历史在每一步都要重新发送,压缩后的思考会在同一轮里被反复重放,省下的输入 token 才能累积到超过蒸馏开销。
8
+ >
9
+ > **「多轮问答」** 中每轮通常只有少量步骤,压缩省下的 token 有限。更关键的是,**DeepSeek 的 API 在多轮对话中不会参考之前轮次的 `reasoning_content`**(只有请求携带 tools 时才会拼接进上下文),压缩后的思考通常不会被模型读到;改写却会改变历史内容,而上下文缓存按前缀精确匹配,改写点之后的内容会变成未命中输入,再加上每次蒸馏的费用,整体往往难以抵消。
10
+ >
11
+ > 可以说这个插件的设计目标就是 **「说完任务就什么都不管了」的「许愿式编程」** ,也就是一次说清任务、让 agent 自行跑完很长的工具调用链。在 **「根据用户反馈反复精修」** 的阶段,对话形态是多轮问答,**建议关闭插件**(关掉设置里的总开关即可)。
12
+
5
13
  > 插件**默认关闭**,装好后需要在「设置 → 思考压缩」里选中一个改写后端并手动打开总开关。
6
14
 
7
15
  > **版本与安装方式(先看这里)**
8
16
  >
9
- > - **可能适配的 DSH 版本**:`0.2.0-rc.1` ~ `0.2.1-rc.1`。这一范围内的补丁、类型与语义都逐版本验证过,明细见下文「经过测试的 DSH 版本」。
17
+ > - **可能适配的 DSH 版本**:`0.2.0-rc.1` ~ `0.2.1-rc.2`(`0.2.1-rc.2` 与 `0.2.1-rc.1` 的补丁目标文件、公开 API catalog 逐字节相同,结论直接适用)。这一范围内的补丁、类型与语义都逐版本验证过,明细见下文「经过测试的 DSH 版本」。
10
18
  > - **已知可以正常运行 in-place 后端**的版本:`0.2.1-alpha.1`、`0.2.1-alpha.5`。
11
19
  > - **想要全部功能与最佳体验,请使用从源码构建的 DSH**(clone 官方仓库后从源码运行或构建)。**从 npm 直接下载的版本**和**第三方打包版**(例如 dsh-desktop)无法给宿主源码打补丁,in-place 后端用不了,只能退而使用 message-edit。
12
20
 
@@ -49,6 +57,7 @@
49
57
  | 已知可运行 in-place | `0.2.1-alpha.1`、`0.2.1-alpha.5` | alpha.1 是本插件开发机(补丁已长期在真实会话中使用);alpha.5 是反馈该问题的用户所在版本,补丁与插件均确认可用 |
50
58
  | 完整启动 | `0.2.1-rc.1` | 独立 clone 全量构建后装入插件并启动 `web`,插件的安装页与报告页路由都能正常应答 |
51
59
  | 补丁 + 类型 + 语义 | `0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-alpha.1`~`0.2.1-alpha.5`、`0.2.1-rc.1` | 独立 clone 上逐版本 `--apply` → `--check` → `--revert`(回退后工作树逐字节干净)、打过补丁的包 `tsc -b` 通过、持久化探针 `scripts/probe-inplace-durability.mjs` 通过(none 与 zstd)、插件依赖的宿主 API 兼容探针通过 |
60
+ | 等价核对 | `0.2.1-rc.2` | 6 个补丁目标文件与公开 API catalog 和 `0.2.1-rc.1` 逐字节相同,故上一行对 rc.1 的全部结论直接适用 |
52
61
 
53
62
  - 也就是说:**在 0.2.x 范围内,in-place 补丁与插件的宿主 API 都有逐版本实测依据**;其中 `0.2.1-alpha.1` 与 `0.2.1-alpha.5` 已知可正常运行 in-place,完整启动验证过的是 `0.2.1-rc.1`。其余版本请先在可回退的环境里试。
54
63
  - 版本差异最大的一处:`packages/session/session-persistence-jsonl/src/storage.ts` 的 `install()` 从 `0.2.1-alpha.3` 起改成了 generator effect + 闭包变量(`writers` 取代 `this.writers`,在 generator 内部 `this` 已不是那个实例)。补丁脚本为此处带**两份锚点**,会按宿主实际形态自动选择匹配的那份。
@@ -200,8 +209,8 @@ node scripts/dsh-inplace-patch.mjs --check # 打全了输出 PATCHED
200
209
 
201
210
  ### 报告里的几个数字
202
211
 
203
- - **当前单次请求减量**:当前生效的改写让**这一次**请求少带的估算 token,是存量而不是累计;改写被整段压缩淘汰后相应减少,全部淘汰归零。
204
- - **历史累计节省**:永不重置。
212
+ - **当前单次请求减量**:当前这一轮(用户发下一条消息之前)里,下一次请求会少带的估算 token,是存量而不是累计;改写被整段压缩淘汰后相应减少,全部淘汰归零。用户发新消息后归零,因为新的一轮不会重放上一轮的思考。
213
+ - **历史累计节省**:永不重置,但只统计**产出压缩的那一轮**里、用户发下一条消息之前后续请求的重放;跨轮次的重放不计入(DeepSeek 的 API 不参考之前轮次的 reasoning_content)。
205
214
  - **净收益** = 历史累计节省 − 蒸馏开销 − 缓存断裂开销。
206
215
  - **最近一步未触发的原因**:面板会直接给出(总开关关、未选择后端、规则关、未到阈值、上下文占用超过上限、这一步没有思考、有多个思考块、有后台工作在跑等)。
207
216
  - **压缩会话**:每次蒸馏都会开一个旁路会话,用来查看这次压缩的提示词与回答。它**只存在于内存里、不写盘**:本次运行期间可以点开,重启后自动过期,报告里会显示"会话已随上次运行结束(内容见下方明细)"——完整内容本来就在明细里。
@@ -1359,49 +1359,49 @@ window.__ModuleLoader__.load({
1359
1359
  document.head.appendChild(tag);
1360
1360
  }
1361
1361
  var Settings_module_css_default = {
1362
- "pickerList": "jP3NOa_pickerList",
1363
- "primary": "jP3NOa_primary",
1364
- "modalBackdrop": "jP3NOa_modalBackdrop",
1365
- "modal": "jP3NOa_modal",
1366
- "modalBody": "jP3NOa_modalBody",
1362
+ "checks": "jP3NOa_checks",
1363
+ "section": "jP3NOa_section",
1367
1364
  "log": "jP3NOa_log",
1368
- "prompt": "jP3NOa_prompt",
1369
- "actions": "jP3NOa_actions",
1370
- "note": "jP3NOa_note",
1371
- "badge": "jP3NOa_badge",
1372
- "preview": "jP3NOa_preview",
1373
- "error": "jP3NOa_error",
1374
- "pickerPanel": "jP3NOa_pickerPanel",
1375
- "pickerItem": "jP3NOa_pickerItem",
1376
- "installEntry": "jP3NOa_installEntry",
1377
- "modeCards": "jP3NOa_modeCards",
1378
- "toggle": "jP3NOa_toggle",
1379
- "modeCard": "jP3NOa_modeCard",
1365
+ "header": "jP3NOa_header",
1380
1366
  "sectionHeading": "jP3NOa_sectionHeading",
1381
- "itemBody": "jP3NOa_itemBody",
1382
- "installProgress": "jP3NOa_installProgress",
1383
1367
  "muted": "jP3NOa_muted",
1384
- "header": "jP3NOa_header",
1385
- "section": "jP3NOa_section",
1386
- "page": "jP3NOa_page",
1387
- "checks": "jP3NOa_checks",
1388
- "iconButton": "jP3NOa_iconButton",
1389
- "priceGrid": "jP3NOa_priceGrid",
1390
- "logBox": "jP3NOa_logBox",
1391
- "route": "jP3NOa_route",
1392
- "search": "jP3NOa_search",
1368
+ "pickerList": "jP3NOa_pickerList",
1369
+ "steps": "jP3NOa_steps",
1393
1370
  "secondary": "jP3NOa_secondary",
1371
+ "rule": "jP3NOa_rule",
1372
+ "picker": "jP3NOa_picker",
1373
+ "search": "jP3NOa_search",
1374
+ "capBox": "jP3NOa_capBox",
1375
+ "modalHead": "jP3NOa_modalHead",
1376
+ "preview": "jP3NOa_preview",
1377
+ "pickerItem": "jP3NOa_pickerItem",
1378
+ "logBox": "jP3NOa_logBox",
1379
+ "prompt": "jP3NOa_prompt",
1380
+ "page": "jP3NOa_page",
1381
+ "pickerPanel": "jP3NOa_pickerPanel",
1394
1382
  "peakBox": "jP3NOa_peakBox",
1383
+ "modalBackdrop": "jP3NOa_modalBackdrop",
1384
+ "installEntry": "jP3NOa_installEntry",
1395
1385
  "holidayBox": "jP3NOa_holidayBox",
1396
- "backendOptions": "jP3NOa_backendOptions",
1397
- "rule": "jP3NOa_rule",
1386
+ "actions": "jP3NOa_actions",
1398
1387
  "item": "jP3NOa_item",
1388
+ "error": "jP3NOa_error",
1389
+ "backendOptions": "jP3NOa_backendOptions",
1399
1390
  "installBlock": "jP3NOa_installBlock",
1400
- "modalHead": "jP3NOa_modalHead",
1401
- "steps": "jP3NOa_steps",
1391
+ "route": "jP3NOa_route",
1392
+ "modeCards": "jP3NOa_modeCards",
1393
+ "toggle": "jP3NOa_toggle",
1394
+ "modalBody": "jP3NOa_modalBody",
1395
+ "note": "jP3NOa_note",
1396
+ "badge": "jP3NOa_badge",
1397
+ "primary": "jP3NOa_primary",
1398
+ "itemBody": "jP3NOa_itemBody",
1399
+ "priceGrid": "jP3NOa_priceGrid",
1400
+ "modal": "jP3NOa_modal",
1401
+ "iconButton": "jP3NOa_iconButton",
1402
+ "modeCard": "jP3NOa_modeCard",
1402
1403
  "field": "jP3NOa_field",
1403
- "picker": "jP3NOa_picker",
1404
- "capBox": "jP3NOa_capBox"
1404
+ "installProgress": "jP3NOa_installProgress"
1405
1405
  };
1406
1406
  //#endregion
1407
1407
  //#region src/client/InstallBackend.tsx
@@ -2834,41 +2834,41 @@ window.__ModuleLoader__.load({
2834
2834
  document.head.appendChild(tag);
2835
2835
  }
2836
2836
  var View_module_css_default = {
2837
- "summary": "_7CZWHG_summary",
2838
- "textBlock": "_7CZWHG_textBlock",
2839
- "secondary": "_7CZWHG_secondary",
2840
- "facts": "_7CZWHG_facts",
2841
- "positive": "_7CZWHG_positive",
2842
- "section": "_7CZWHG_section",
2843
- "activity": "_7CZWHG_activity",
2844
- "metric": "_7CZWHG_metric",
2845
- "entryBody": "_7CZWHG_entryBody",
2846
- "negative": "_7CZWHG_negative",
2847
- "activityDot": "_7CZWHG_activityDot",
2848
- "muted": "_7CZWHG_muted",
2837
+ "blockedBanner": "_7CZWHG_blockedBanner",
2849
2838
  "activityLabel": "_7CZWHG_activityLabel",
2850
- "popup": "_7CZWHG_popup",
2851
- "activeRow": "_7CZWHG_activeRow",
2852
- "note": "_7CZWHG_note",
2853
2839
  "popupRow": "_7CZWHG_popupRow",
2854
2840
  "activityDotBlocked": "_7CZWHG_activityDotBlocked",
2855
- "activityWhy": "_7CZWHG_activityWhy",
2856
- "popupList": "_7CZWHG_popupList",
2857
- "popupFacts": "_7CZWHG_popupFacts",
2858
- "popupHead": "_7CZWHG_popupHead",
2859
- "blockedBanner": "_7CZWHG_blockedBanner",
2860
- "rdPulse": "_7CZWHG_rdPulse",
2861
- "entry": "_7CZWHG_entry",
2841
+ "secondary": "_7CZWHG_secondary",
2842
+ "actions": "_7CZWHG_actions",
2843
+ "popupActions": "_7CZWHG_popupActions",
2862
2844
  "sessionInfo": "_7CZWHG_sessionInfo",
2863
- "iconButton": "_7CZWHG_iconButton",
2864
2845
  "header": "_7CZWHG_header",
2865
- "headerTrigger": "_7CZWHG_headerTrigger",
2846
+ "negative": "_7CZWHG_negative",
2847
+ "metric": "_7CZWHG_metric",
2848
+ "textBlock": "_7CZWHG_textBlock",
2849
+ "positive": "_7CZWHG_positive",
2850
+ "popupHead": "_7CZWHG_popupHead",
2851
+ "iconButton": "_7CZWHG_iconButton",
2852
+ "facts": "_7CZWHG_facts",
2866
2853
  "entryTitle": "_7CZWHG_entryTitle",
2854
+ "popupFacts": "_7CZWHG_popupFacts",
2855
+ "entry": "_7CZWHG_entry",
2856
+ "popup": "_7CZWHG_popup",
2857
+ "popupList": "_7CZWHG_popupList",
2858
+ "rdPulse": "_7CZWHG_rdPulse",
2859
+ "headerTrigger": "_7CZWHG_headerTrigger",
2860
+ "note": "_7CZWHG_note",
2861
+ "activity": "_7CZWHG_activity",
2862
+ "activityWhy": "_7CZWHG_activityWhy",
2863
+ "activeRow": "_7CZWHG_activeRow",
2864
+ "section": "_7CZWHG_section",
2865
+ "muted": "_7CZWHG_muted",
2866
+ "error": "_7CZWHG_error",
2867
2867
  "page": "_7CZWHG_page",
2868
+ "summary": "_7CZWHG_summary",
2868
2869
  "sessionRow": "_7CZWHG_sessionRow",
2869
- "error": "_7CZWHG_error",
2870
- "popupActions": "_7CZWHG_popupActions",
2871
- "actions": "_7CZWHG_actions"
2870
+ "entryBody": "_7CZWHG_entryBody",
2871
+ "activityDot": "_7CZWHG_activityDot"
2872
2872
  };
2873
2873
  //#endregion
2874
2874
  //#region src/client/ActivityChip.tsx