dsh-superinput 0.7.0 → 0.12.1

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,271 @@
2
2
 
3
3
  本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
4
4
 
5
+ ## [0.12.1] - 2026-11-07
6
+
7
+ ### 单仓收编:六个上游模块源并入本仓 `upstream/`
8
+
9
+ - `packages/` 下的六个独立源码仓(dsh-cost / dsh-power-picker /
10
+ dsh-prompt-enhancer / dsh-followup / dsh-siri-voice / dsh-compaction-control)
11
+ 全部搬入本仓 `upstream/<包名>/`(剥离各自 .git,历史保留在 GitHub 归档仓);
12
+ `build-suite.mjs` 改从仓内 `upstream/` 读源。**运行时零变化**:重建产物与
13
+ 0.12.0 字节级一致(git 零 diff),纯仓库结构收编。
14
+ - 收编前审计:五仓干净推平;dsh-compaction-control 补提交了漏掉的
15
+ 0.3.1「圆环常驻占位」改动(686335f)后再搬迁。
16
+
17
+ ## [0.12.0] - 2026-11-07
18
+
19
+ ### cost 模块 0.10.0:Coding Plan 配额 + 热力图 + 双语
20
+
21
+ - 随上游 dsh-cost 0.10.0 重生成(详见其 CHANGELOG):设置页费用分节新增
22
+ **Coding Plan 订阅配额面板**(8 家 Bearer 厂商,Key 只存本机)、
23
+ **用量热力图**(26 周 GitHub 贡献图样式,费用/调用/Token 切换)、
24
+ **界面双语**(中文/English 徽标即时切换,默认跟随系统);修复 /forecast
25
+ 自诞生即 500 的 `json()` 引用错误(「月底预计」卡首次真正可用)。
26
+ - Config 新增 `cost.codingPlans` 对象字段(面板内管理,宿主设置里留空即可)。
27
+
28
+ ## [0.11.5] - 2026-11-07
29
+
30
+ ### chip 对齐官方编辑器引用节点 + 评论卡毛玻璃
31
+
32
+ - **chip 照官方编辑器引用节点(`_quote_at713`)重做**:无底/无框/无圆角、
33
+ 文字 `state-business-primary` 蓝、14px/20px、max-width min(80%,300px)、
34
+ baseline 对齐、❝ 引用标记 hover 变 ×(官方 closeMark 同款交互)——与
35
+ 官方「引用文本」插进输入框的引用节点**在编辑器里视觉完全一致**(此前
36
+ Trae 式灰底胶囊和官方引用节点同框反差明显)。消息内 chip 同步。
37
+ - **评论卡背景加官方毛玻璃**:`--dsw-specific-menu` 本身是半透明底,必须
38
+ 配 `--dsw-menu-backdrop-filter`(官方弹卡成对规则)——修复「评论框背景
39
+ 太透明」。
40
+
41
+ ## [0.11.4] - 2026-11-07
42
+
43
+ ### 横条样式对齐官方(QuoteSelection 令牌)
44
+
45
+ - 横条容器与条目按官方 QuoteSelection 按钮的令牌重做:**999px 胶囊圆角**
46
+ (替代 12px)、`--dsw-alias-button-floating-fill` 底(替代 specific-menu
47
+ + blur——官方无模糊)、`--dsw-elevation-panel` 阴影(border-l3 描边)、
48
+ 条目 `--dsw-font-xs-13` 13px + 字距 -.02em、hover/focus 用
49
+ `button-floating-hover`。整条就是一个加宽的官方浮动 pill。
50
+
51
+ ## [0.11.3] - 2026-11-07
52
+
53
+ ### 恢复四选项横条(用户拍板),引用文本走官方 API
54
+
55
+ - 划选恢复 0.8.x 的**深色横排菜单条**:**复制 / 引用文本 / 添加评论 / 存为
56
+ 模板**。0.11.x 的独立 pill(官方样式吸附方案)退役——点击命中不稳。
57
+ - **「引用文本」走官方机制**:经草稿桥调用官方 `inputActions.insertQuote`
58
+ (0.2.2-rc.1 新 API,plain 模式插 Markdown blockquote);API 不可用时
59
+ 退回草稿桥手写 `> ` 前缀(发送后官方 quoteRule 一样渲染引用样式)。
60
+ - **官方浮动「引用文本」pill 隐藏**(`[class*="U4oBDW_action"]` display
61
+ none)——横条里的同名功能调同一个官方 API,避免双浮层重叠、点击互遮。
62
+ - 添加评论 = Trae 评论卡 → chip(0.10.1 规格);拖拽、去重、8 条上限不变。
63
+
64
+ ## [0.11.2] - 2026-11-07
65
+
66
+ ### 修复:pill 建了没挂进 DOM(游离节点不渲染)
67
+
68
+ - 0.11.1 的「添加评论」pill 创建后漏了 `document.body.appendChild`——元素
69
+ 游离在文档外,样式与逻辑全对也不会显示。补挂载。真机 CUA 复测路径:
70
+ 选区 → pill 出现(官方「引用文本」右侧)→ 点击 → 评论卡 → chip。
71
+
72
+ ## [0.11.1] - 2026-11-07
73
+
74
+ ### 修复:「添加评论」按钮不出现(interaction 分发首个即胜)
75
+
76
+ - **根因**:宿主 `uiConversation.interactions.dispatch` 按**注册顺序遍历、
77
+ 首个 open 即返回**——官方 `quote` 在 base bundle 先注册,自有
78
+ `dsh-comment` interaction 永远轮不到分发,按钮自然不渲染(0.11.0 的
79
+ 同面板方案在宿主语义下行不通)。
80
+ - **改法**:撤销自有 interaction/槽位注册;「添加评论」改为**独立 pill,
81
+ 样式复用官方 `.U4oBDW_action` 类**(与官方「引用文本」视觉完全一致)。
82
+ 选区存在期间每帧扫描:官方 pill 就位则吸附其右侧 8px 拼成一条工具带,
83
+ 2 秒内未出现则回落选区上方;桌面壳 fixed 包含块偏移照评论卡同款校正;
84
+ mousedown preventDefault 保住选区(官方同款),点击清选区后开 Trae
85
+ 评论卡。
86
+
87
+ ## [0.11.0] - 2026-11-07
88
+
89
+ ### 官方「引用文本」落地后的对齐:评论入口挂上官方选区动作面板
90
+
91
+ dsh 0.2.2-rc.1 官方新增 message-quotes 插件(选区 →「引用文本」→
92
+ `inputActions.insertQuote` → Markdown blockquote,消息渲染 QuotePreview)。
93
+ 本版把套件的评论入口**移植到官方机制之上**:
94
+
95
+ - **旧 DOM 浮动菜单整体退役**(复制/评论到对话/添加到对话/存为模板)——
96
+ 官方面板 + 套件按钮取而代之,划选不再出现双浮层。
97
+ - **「添加评论」按钮挂进官方选区动作面板**:注册自有 interaction
98
+ (`dsh-comment`,准入逻辑照抄官方 quote)+ `conversation.chat.text-interaction`
99
+ 槽(key `dsh-comment`);按钮复用官方 `.U4oBDW_action` 类(浮动 pill:
100
+ floating-fill 底/999px 圆角/`--dsw-font-xs-13`/panel 阴影),老宿主回落
101
+ 自带 `.dsh-si-quote-action` 同款声明。点击清选区 → 打开 Trae 评论卡
102
+ (0.10.1 规格)→ 保存后插 chip(评论到对话流)。
103
+ - prompts 客户端 inject 增至 `['slots', 'sessions', 'uiConversation']`
104
+ (interactions 注册需要;要求 dsh ≥ 0.2.2-rc.1)。
105
+ - 划选引用 chip(Trae 式评论流)与官方 blockquote 引用并存:两条路各自
106
+ 渲染(chip 走 user-text 规则,官方 blockquote 走 QuotePreview)。
107
+ - 拖拽引用、去重、8 条上限保留;「复制」「存为模板」菜单项随旧菜单移除
108
+ (复制走 Ctrl+C;存模板走 Prompt 面板)。
109
+
110
+ ## [0.10.1] - 2026-11-07
111
+
112
+ ### 评论卡与引用 chip 按 Trae 源码重着色(solo-lite 7920 包逆向)
113
+
114
+ - **评论卡照抄 CommentEditorCard 真实规格**:去掉标题「评论到对话」、选段
115
+ 预览、取消/保存按钮排——Trae 的卡只有**单行 = 透明无边框自增 textarea
116
+ (13px/20px,max-height 140)+ ✓ 主按钮(24px,空文本禁用)**;容器
117
+ 320px / padding 8 / 菜单底 / 1px 中性描边 / radius 8 / 双层阴影 /
118
+ 宽高 .25s 过渡;Enter 提交(IME 组合期保护)、Shift+Enter 换行、
119
+ Esc/点外取消(取消按钮不存在——Trae 同款)。
120
+ - **chip 照 query-mention-symbol 规格**:高 22→18px、去描边、radius 8→4、
121
+ business 蓝字 → 默认文字色、13px/500/字距 -.02em、padding 1px 6px 1px 4px;
122
+ 引号图标 → Trae 同款**气泡图标**(带三点,消息内 chip 同步)。
123
+ - 上一版 0.10.0 的 compaction 并入内容不变。
124
+
125
+ ## [0.10.0] - 2026-11-07
126
+
127
+ ### 压缩控制并入套件(compaction 模块,八模块定稿)
128
+
129
+ - **dsh-compaction-control 并入为 compaction 模块**:上下文占用圆环
130
+ (`conversation.input.right` 槽位直渲染,模型选择器紧左侧)、压缩参数
131
+ 调节(profile 补丁层)、立即压缩、压缩前自动落档——全部随套件走。
132
+ **独立插件应从 profile 卸载**(两 profile 已同步卸载),否则圆环双注册。
133
+ - pre-step 瀑布新增第三个监听(compaction 落档);模块应用顺序在 enhancer
134
+ 之后,落档消息在增强之后追加、不会被二次改写。
135
+ - smoke 升级:ctx.on 桩改为瀑布链(同名事件多监听按注册顺序链式执行,
136
+ 套件合并后 pre-step 有 4 个监听);断言 `/api/dsh-compaction-control`
137
+ 注册 + 全链注入一次性消费;补 payload.messages 字段(followup pre-step
138
+ 依赖真机宿主字段)。
139
+ - build 作业线:兼容上游尾部的 `export const __internals`(离线自测导出)。
140
+
141
+ ## [0.9.1] - 2026-11-07
142
+
143
+ ### 拖拽引用(Trae dragDropMention 等价)——最后一块对齐项
144
+
145
+ - 对话里划选的文字现在可以**直接拖进输入框**:dragstart 给选区打
146
+ `application/x-dsh-selection` 标记并暂存文本;dragover 放行 composer;
147
+ drop 拦截宿主的纯文本插入(window capture preventDefault +
148
+ stopPropagation),尽力把光标定位到落点(caretRangeFromPoint),走
149
+ `__dshSuperinputDropContext` 插 chip。
150
+ - 拖放只插 chip 不弹评论卡(Trae 拖拽即引用、无评论提示——要评论走划选
151
+ 菜单「评论到对话」);去重 / 8 条上限 / 提示 toast 与划选路径一致。
152
+ - 至此与 Trae 的行为差异只剩实现说明项(dsh chip 走官方 reference 通道
153
+ 序列化送模,Trae 是 Lexical 原生节点——用户体验已对齐)。
154
+
155
+ ## [0.9.0] - 2026-11-04
156
+
157
+ ### 划选引用改为 Trae 同款「输入框内联 chip」
158
+
159
+ - **不再使用输入框上方的独立 pill 行**:注册自定义 input source
160
+ (`superinput-selection`)+ 官方 `slash/input-insert-reference`,把选段直接
161
+ 插成编辑器里的 reference chip(与 @file 同一套机制)。chip 落在光标处,
162
+ 可与草稿文字混排、可整体删除;发送时按 source 的 codec 序列化为
163
+ `[选段#id]` token。
164
+ - **chip 视觉**:保留 Trae `comment-mention` 的内联结构(高 22px / 12px 500 /
165
+ max-width 240 / 评论内联在标签里),颜色与圆角改用 dsh 设计令牌
166
+ (`state-business-tertiary` 底 + `state-business-primary` 文字 +
167
+ `--dsw-radius-sm` 8px);隐藏宿主默认的 @ 前缀,换成引号图标;hover 时
168
+ 图标变 ×,点左侧图标区即移除(Trae `remove-mention-icon` 同义)。
169
+ - **评论流程按 Trae 的 `previewCommentCard` 重做**:划选菜单新增「评论到
170
+ 对话」;「添加到对话」先插 chip,再把选区旁的小卡片**原位切成评论编辑器**
171
+ (Trae `addThenComment` 同义);「评论到对话」则不插 chip,保存后才带评论
172
+ 插入。编辑器是锚在选区旁的 340px 小卡片,不遮罩、点外取消;取消后已添加
173
+ 的 chip 保留(只是没有评论)。
174
+ - **点 chip 打开只读详情 Dialog**(引用全文 + 评论 + 跳转原文),评论不再在
175
+ 这个弹窗里编辑(与 Trae `mention-info-modal` 同构)。评论保存后重插同 ref
176
+ 的 chip 刷新标签:有评论时按 Trae `has-comment-content` 语义给评论留出
177
+ 可见空间(选段压到 ~14 字);编号按当前草稿重排(每轮从 1 开始)。
178
+ - **已发送消息也显示 chip**:user-text 规则把 `[选段#id]` token 渲染成同款
179
+ 标签(点开可读全文/评论);条目文本与评论落 sessionStorage,刷新后仍可
180
+ 渲染。
181
+ - 删除旧的独立 pill 行与 👁 排除切换(Trae 没有该交互);去重、8 条上限、
182
+ 源文锚点跳转保留。发送按钮/Enter 触发 `/context` 立即 flush,服务端
183
+ `agent/pre-step` 仍按会话一次性注入。
184
+ - **修桌面壳里详情弹窗错位**:Electron 壳会把 `body` 变成一个 0×0 的
185
+ fixed 包含块,`inset: 0` 的遮罩缩在窗口左下角,弹窗被裁掉且没有遮罩。
186
+ 打开时测量遮罩实际矩形,未铺满视口就按测量偏移校正回视口原点并居中
187
+ (border-box + resize 跟随);Web 端铺满视口时不触发,保持原样。
188
+ - **UI 适配 Harness 设计令牌**:chip 从 Trae 的硬编码灰/蓝改为 dsh 的
189
+ `state-business-tertiary` 底 + `state-business-primary` 文字 +
190
+ `--dsw-radius-sm`,图标用 CSS mask 跟随文字色;详情弹窗改用
191
+ `bg-layer-1` 表面、`--dsw-radius-lg`、`bg-mask-1` 遮罩、dsh 字体与
192
+ 标准按钮(主按钮黑/白、移除为幽灵红、跳转为幽灵文本),标题 16px,
193
+ 引用区弹性收缩;明暗主题随宿主 body 令牌自动切换。
194
+ - 真机验证(dsh web 0.2.1-rc.5):添加 → 内联 chip → 评论 → 标签刷新 →
195
+ hover × 删除 → 重复添加去重 → 发送(服务端日志 `items=1`)→ 已发送消息
196
+ 内的 chip;@ 菜单未被自定义 source 污染。
197
+
198
+ ## [0.8.3] - 2026-11-02
199
+
200
+ ### 划选弹层门槛降为非空即弹
201
+
202
+ - 此前要求划选 ≥4 字,双字词/单字不弹;按用户要求改为非空即弹(一个字也弹)。
203
+
204
+ ## [0.8.2] - 2026-11-02
205
+
206
+ ### 补齐与 Trae 的三处行为差距
207
+
208
+ - **去重**(Trae addContext 按 id 去重的同语义):同一段选文不重复入列,
209
+ 重复添加时改为展开已有条目并提示「该选段已在列表中」。
210
+ - **👁 排除切换**(Trae eye/eyeClosed 同语义):标签上新增 👁——临时排除
211
+ 不随发送但保留在列表,🚫 表示已排除可恢复;排除项同步 /context 时被
212
+ 过滤(永不注入);排除态视觉 = 半透明 + 标签文本划线。
213
+ - **评论再编辑**:点标签内评论区域直接展开评论编辑(此前只有 💬 钮一条路)。
214
+
215
+ ## [0.8.1] - 2026-11-02
216
+
217
+ ### 引用标签按 Trae 真实规格重写(ai-modules-chat 逆向)+ 评论流程修复
218
+
219
+ - **深挖 @byted-icube/ai-modules-chat 后按真实规格重写**:Trae 的评论不是
220
+ 挂在卡片上的输入框,而是 `comment-mention-tag`——引用文本 · 💬 评论内联
221
+ 在一个 18px 标签里(padding 1px 6px 1px 4px、中性底 rgba(116,126,148,.18)、
222
+ 字重 500、字距 -.02em、评论气泡 12px 三级色)。dsh 标签照此重做(尺寸按
223
+ dsh 行高微调),有评论时标签内直接显示评论内容(Trae has-comment-content
224
+ 同构)。
225
+ - **修「评论打不了字」**:评论框此前只拦 click,宿主输入框在 mousedown 阶段
226
+ 就抢走焦点——现在 mousedown/mouseup/click 全拦,添加后立即展开评论框并
227
+ 自动聚焦(Trae 也是采集时即收集评论)。
228
+ - **修发送后回写竞态**:150ms 防抖计时器在发送 flush 后仍会把旧数据写回
229
+ /context,下一轮被重复注入——clearForSend 现在先撤销未触发的计时器。
230
+
231
+ ## [0.8.0] - 2026-11-02
232
+
233
+ ### 划选「添加到对话」:Trae 式引用 pill + 可评论上下文
234
+
235
+ - **交互对齐 Trae(逆向自 workbench.desktop.main.js 的
236
+ `workbench.action.icubeAi.addToChat` 链路)**:卡片改为 Trae 同款引用
237
+ pill(高 20px/圆角 4px/1px 描边/11px 字/单行省略,容器 flex wrap gap 4px,
238
+ 替代此前的 260px 大卡横滚);添加时记录选区源锚点(WeakRef),**点 pill
239
+ 平滑滚回源文并闪烁高亮**(Trae 点击卡片 revealRangeInCenter 的同义实现,
240
+ 锚点断线静默降级)。
241
+ - 评论交互:pill 常态只显示「选段 N · 预览」,💬 钮展开全文预览 + 评论输入
242
+ (Trae 在 SoloBrowser 采集 comment,这里延后到卡片上、密度更高);有评论
243
+ 的 pill 文字提亮区分;Enter 收起、Esc 收起。移除仍走 pill 上的 ×。
244
+ - 划选菜单的「添加到对话」不再把文字直接塞进草稿,改为在输入框上方生成
245
+ 上下文卡片;最多 8 条。
246
+ - 评论或内容变化经 150ms 防抖同步到 prompts `/context`;点击发送按钮或
247
+ 输入框 Enter 时立即 flush、清空卡片,不依赖瞬时 phase 状态。
248
+ - 服务端在 `agent/pre-step` 按会话读取暂存,把「选段 + 评论」作为一条
249
+ sourced UserMessage 追加到本轮送模消息末尾;注入后删除(one-shot,
250
+ 10 分钟 TTL),不影响后续回合。
251
+ - 修复会话 key 错配:`agent.session` 是 Session 对象而非字符串,改用
252
+ `agent.session.id`;web 真机全链路验证通过(添加 → 评论 → 发送 →
253
+ pre-step 注入日志)。
254
+ - 冒烟新增 `/context` 存储、pre-step 注入/一次性消费、客户端卡片注册断言。
255
+
256
+ ## [0.7.1] - 2026-11-02
257
+
258
+ ### 修复:划选菜单与模板插入的草稿桥丢失
259
+
260
+ - 0.4.0 移除 snippets 模块时,`__dshSuperinputSetDraft` / `__dshSuperinputDraft`
261
+ 的桥接赋值被一并删除;0.7.0 的划选「添加到对话」、模板插入、`/` 命令插入
262
+ 因此全部失效(前者只弹「草稿桥未就绪」)。
263
+ - prompts 新增 `conversation.input.dock` 草稿桥组件,恢复两个全局;真机验证
264
+ 划选后点「添加到对话」可正确写入输入框。
265
+ - 划选菜单限定在对话正文(`[data-chat-flow]`),侧栏/设置页划选不再弹出。
266
+ - 菜单 `mousedown` 阻止默认行为,避免清掉选区导致 click 前菜单消失。
267
+ - 无 Clipboard API 时不再假报「已复制」。
268
+ - 冒烟新增草稿桥静态断言(setter + input.dock 注册),防止再次整块丢失。
269
+
5
270
  ## [0.7.0] - 2026-11-02
6
271
 
7
272
  ### 发布工程(补 0.6.0 之后未归档的提交)
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-superinput
2
2
 
3
- dsh(DeepSeek Harness)**超级输入框套件**:一个插件,七个输入区模块,模块级失败隔离。
3
+ dsh(DeepSeek Harness)**超级输入框套件**:一个插件,八个输入区模块,模块级失败隔离。
4
4
 
5
5
  | 模块 | 功能 | 来源 |
6
6
  |---|---|---|
@@ -9,18 +9,25 @@ dsh(DeepSeek Harness)**超级输入框套件**:一个插件,七个输入
9
9
  | **enhancer** | 提示词增强按钮:点一下把草稿增强成结构化提示词,悬浮调强度,支持发送时自动增强 | 原 dsh-prompt-enhancer |
10
10
  | **followup** | 回合尾跟进建议 chips | 原 dsh-followup |
11
11
  | **voice** | 语音输入 | 原 dsh-siri-voice |
12
- | **prompts** | Prompt 模板库:手动保存常用模板,{{变量}} 占位符插入,内置 {{日期}}/{{时间}}/{{星期}}/{{剪贴板}} 动态变量;最近使用排序、JSON 导入导出、可 opt-in 注册为 / 斜杠命令;划选正文浮出「复制 / 添加到对话 / 存为模板」三动作菜单 | 新模块 |
12
+ | **prompts** | Prompt 模板库:手动保存常用模板,{{变量}} 占位符插入,内置 {{日期}}/{{时间}}/{{星期}}/{{剪贴板}} 动态变量;最近使用排序、JSON 导入导出、可 opt-in 注册为 / 斜杠命令;划选正文浮出「复制 / 评论到对话 / 添加到对话 / 存为模板」菜单:**「添加到对话」先插 chip、再在选区旁原位弹出评论卡片(Trae addThenComment 同义)**;「评论到对话」先弹卡片、保存后才带评论插入;**划选文字可直接拖进输入框落 chip(dragDropMention 等价)**。chip 视觉走 dsh 设计令牌(business 色、`--dsw-radius-sm`、明暗主题自适应),hover 变 ×,点 chip 打开只读详情(全文 + 评论 + 跳转原文);随下一条消息注入模型,并在已发送消息里以同款 chip 展示 | 新模块 |
13
+ | **compaction** | 上下文占用圆环(模型选择器紧左侧,官方 `conversation.input.right` 槽位直渲染)+ 压缩参数调节(阈值/保留比例,写 profile 补丁层)+ 立即压缩按钮 + 压缩前自动落档(占用上穿阈值-5% 时让 agent 先把任务状态写进工作区 checkpoint.md 再压缩) | 原 dsh-compaction-control |
13
14
  | **hub** | 设置总览:各模块生效配置聚合展示 + 运行时调节 | 新模块 |
14
15
 
15
- `dsh-compaction-control` 不在套件内(宿主配置补丁层 + /compact 命令桥,保持独立插件)。
16
16
  片段管理器(snippets)0.4.0、草稿(drafts)/消息目录(outline)/会话导出(exporter)0.5.0 起
17
- 按用户决定移除;既有 snippets.json 数据保留在原处不再使用。
17
+ 按用户决定移除;既有 snippets.json 数据保留在原处不再使用。压缩控制(dsh-compaction-control)
18
+ 0.10.0 起并入套件为 compaction 模块,独立插件应从 profile 卸载(避免圆环双注册)。
18
19
 
19
20
  ## 架构
20
21
 
21
- - 服务端 `index.js` 聚合七个模块的 Config(嵌套命名空间 `config.cost.*` 等)并逐模块 try/catch 调用;peer 注入取并集(`llm`、`tools`)。
22
- - 客户端 `client.js` 是单 `__ModuleLoader__` 入口:七个工厂内联(由 `scripts/build-suite.mjs` 从上游各包机械生成),factory 与 apply 双层 try/catch。
22
+ - 服务端 `index.js` 聚合八个模块的 Config(嵌套命名空间 `config.cost.*` 等)并逐模块 try/catch 调用;peer 注入取并集(`llm`、`tools`)。
23
+ - 客户端 `client.js` 是单 `__ModuleLoader__` 入口:八个工厂内联(由 `scripts/build-suite.mjs` 从上游各包机械生成),factory 与 apply 双层 try/catch。
24
+ - pre-step 瀑布含多个监听(enhancer 增强、prompts 上下文注入、compaction 落档、followup 缓存),按注册顺序链式执行;compaction 在 enhancer 之后应用,落档消息不会被二次增强。
23
25
  - 跨模块协作保持原机制:调用来源分账走 `globalThis.__dshPluginCall` 5s 窗口;各模块调试日志维持原路径(`~/.dsh/cost-debug.log` 等)。
26
+ - 划选引用:客户端注册自定义 input source(`superinput-selection`),用官方
27
+ `slash/input-insert-reference` 把引段插成输入框内的 reference chip;条目
28
+ 「选段 + 评论」同步到 prompts `/context`,服务端在 `agent/pre-step` 以
29
+ sourced UserMessage 注入下一轮,注入后立即消费。已发送消息里的 token 由
30
+ user-text 规则渲染成同款 chip(sessionStorage 保留条目文本/评论)。
24
31
 
25
32
  ## 安装
26
33
 
@@ -32,7 +39,11 @@ dsh plugin --profile desktop add <本目录绝对路径>
32
39
 
33
40
  ## 上游更新
34
41
 
35
- 改了 `packages/dsh-*` 的源码后,在套件目录重跑 `node scripts/build-suite.mjs` 再生成 `modules/` 与 `client.js`(幂等)。
42
+ 六个模块源(cost/picker/enhancer/followup/voice/compaction)就住在本仓
43
+ `upstream/<包名>/` 里(2026-11-07 从六个独立仓收编为单仓,GitHub 上的上游仓
44
+ saul-dsh/dsh-cost 等已归档存档)。改了 `upstream/<包名>/` 的源码后,在套件
45
+ 目录重跑 `node scripts/build-suite.mjs` 再生成 `modules/` 与 `client.js`
46
+ (幂等),随后完整重启 dsh 生效。
36
47
 
37
48
  ## License
38
49