dsh-superinput 0.0.0-stage → 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 +405 -0
- package/README.md +49 -2
- package/client.js +7397 -0
- package/cordis.patch.yml +6 -0
- package/index.js +34 -0
- package/modules/compaction.js +413 -0
- package/modules/cost.js +1914 -0
- package/modules/enhancer.js +726 -0
- package/modules/followup.js +718 -0
- package/modules/hub.client.js +218 -0
- package/modules/hub.js +78 -0
- package/modules/picker.js +133 -0
- package/modules/prompts.client.js +1709 -0
- package/modules/prompts.js +370 -0
- package/modules/voice.js +17 -0
- package/package.json +60 -4
- package/scripts/build-suite.mjs +325 -0
- package/scripts/smoke.mjs +172 -0
- package/server.js +4482 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
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
|
+
|
|
270
|
+
## [0.7.0] - 2026-11-02
|
|
271
|
+
|
|
272
|
+
### 发布工程(补 0.6.0 之后未归档的提交)
|
|
273
|
+
|
|
274
|
+
- `files` 白名单补入 `server.js`——此前 `index.js` 动态 import 的核心文件
|
|
275
|
+
不在 npm 产物里,发布出去必然加载失败。
|
|
276
|
+
- `modules` 改为 `modules/*.js`,新增 `.npmignore` 排除 `.mimosa` 工具状态与
|
|
277
|
+
日志、tarball;清掉 `modules/.mimosa` 本地残留。
|
|
278
|
+
- 移除 `files` 中并不存在的 `README.en.md`;描述从「八个模块 / 片段管理器」
|
|
279
|
+
校正为当前七模块。
|
|
280
|
+
- 新增 `build` / `check` / `test` npm scripts,发布前可直接跑生成器、语法
|
|
281
|
+
检查与冒烟测试。
|
|
282
|
+
|
|
283
|
+
### prompts 划选菜单增强
|
|
284
|
+
|
|
285
|
+
- 选区浮层改为横排三动作:**复制**、**添加到对话**(追加进输入框草稿)、
|
|
286
|
+
**存为模板**;左缘对齐选区,右侧防溢出。
|
|
287
|
+
- 文档级单例 host + 安装守卫:宿主重挂载导致 apply 重跑时不再叠加多个浮层。
|
|
288
|
+
|
|
289
|
+
## [0.6.0] - 2026-11-01
|
|
290
|
+
|
|
291
|
+
### 吸收上游三件新功能(市场对标项)
|
|
292
|
+
|
|
293
|
+
- enhancer 0.3.0:✨ 面板新增「参考会话上下文」开关——增强时把最近一轮
|
|
294
|
+
对话拼进改写参考,消解指代、贴合当前讨论(对标市场 dsh-prompt-rewriter
|
|
295
|
+
205★ 的关键差异点)。
|
|
296
|
+
- cost 0.9.0:费用弹卡顶部新增「官方余额」行(选配 DeepSeek 开放平台
|
|
297
|
+
apiKey,10 分钟缓存;调用明细弹窗已有)。
|
|
298
|
+
- picker 0.12.5:模型行相对价格 ×N 标记(上一版已并入,本版无新变更)。
|
|
299
|
+
- 同批配套:dsh-compaction-control 0.3.0 压缩前自动落档(套件外独立插件)。
|
|
300
|
+
|
|
301
|
+
## [0.5.0] - 2026-11-01
|
|
302
|
+
|
|
303
|
+
### 移除消息目录与会话导出(用户裁定)
|
|
304
|
+
|
|
305
|
+
- **outline(消息目录)与 exporter(会话导出 Markdown)整体移除**——上线
|
|
306
|
+
不到半天被用户判定不需要。套件回到七模块:cost / picker / enhancer /
|
|
307
|
+
followup / voice / prompts / hub。
|
|
308
|
+
- 多帧 zstd 会话日志直读与 /diag 通道经验保留在案(followup 与 prompts)。
|
|
309
|
+
|
|
310
|
+
## [0.4.0] - 2026-11-01
|
|
311
|
+
|
|
312
|
+
### 新增三模块 + 两处既有模块增强;移除草稿与片段(用户裁定)
|
|
313
|
+
|
|
314
|
+
- **outline(消息目录)**:状态行「目录」按钮 → 按用户消息列大纲(/outline
|
|
315
|
+
端点直读会话日志),点击 TreeWalker 定位正文滚动跳转。
|
|
316
|
+
- **exporter(会话导出)**:标题栏 ⬇ 按钮 → /markdown 端点把整会话(用户+
|
|
317
|
+
助手,连续助手快照去重)导出为 Markdown 下载;真机用真实会话日志验证
|
|
318
|
+
(outline 4 条 / md 6527 字节 / 下载头正确)。
|
|
319
|
+
- **prompts 划选存模板**:对话正文划选后浮「存为模板」(selectionchange
|
|
320
|
+
驱动,dblclick 选词后才成形),原生 DOM 渲染(React h() 产物过
|
|
321
|
+
replaceChildren 会被强转成 "[object Object]",真机踩过)。
|
|
322
|
+
- **cost 预算超限系统通知**:预算跨线 100% 时每周期弹一次系统通知(80%
|
|
323
|
+
只走既有 UI 变色)。
|
|
324
|
+
- **picker 模型行价格标记**:按 dsh-cost /prices 档价算相对当前模型的 ×N
|
|
325
|
+
倍数(>1 暖色),10 分钟缓存,取不到不显示。
|
|
326
|
+
- **移除 drafts(草稿快照/↑召回)与 snippets(片段管理器)**:用户裁定
|
|
327
|
+
没什么用。诊断通道从 snippets /diag 迁到 prompts /diag(落
|
|
328
|
+
superinput-debug.log);hub 总览同步移除片段区;既有 snippets.json
|
|
329
|
+
数据保留不再使用。
|
|
330
|
+
- 冒烟扩展:exporter 端点(缺参 400 / 未知会话 404)+ 九模块 apply。
|
|
331
|
+
|
|
332
|
+
## [0.3.4] - 2026-11-01
|
|
333
|
+
|
|
334
|
+
### 修复:/ 模板命令插入后草稿残留触发行(真机验证发现)
|
|
335
|
+
|
|
336
|
+
- 真机全链路验证(0.3.1 的 / 命令功能首次实机走查):注册 → 官方 / 菜单
|
|
337
|
+
「指令」组出现(label 中文可搜)→ 回车执行 → 模板入草稿,全部通过;
|
|
338
|
+
唯一毛刺是 action 执行时草稿里还留着刚敲的 `/e2e`,官方壳清 token 与
|
|
339
|
+
我们的 setDraft 时序竞争。修法:首行是无空格的 `/xxx` 就剥掉再接正文,
|
|
340
|
+
两种时序下都只留模板内容。同轮确认使用计数(2次)与 / 按钮激活态正常。
|
|
341
|
+
|
|
342
|
+
## [0.3.3] - 2026-11-01
|
|
343
|
+
|
|
344
|
+
### 修复:followup chips 流式回合不实时渲染(自 dsh-followup 0.3.4 再生成)
|
|
345
|
+
|
|
346
|
+
- turn-tail 组件的 `isLatestTurn` effect 把 `boxRef.current` 捕获进闭包,
|
|
347
|
+
流式重渲染重建回合尾容器后旧节点脱离 DOM,`contains` 恒 false——POST 与
|
|
348
|
+
渲染都被挡,刷新才恢复。check() 改为每次现读 ref(真机四轮 CUA 实测:
|
|
349
|
+
修复前两轮失败、修复后实时渲染 + 点 chip 填草稿全通过)。
|
|
350
|
+
- 客户端关键决策点 diag 落盘(snippets-debug.log 的 `followup:` 行)。
|
|
351
|
+
- 同轮真机验证:voice 模块叠加层在官方语音录音态正常出现/退出。
|
|
352
|
+
|
|
353
|
+
## [0.3.2] - 2026-11-01
|
|
354
|
+
|
|
355
|
+
### 修复:enhance /rewrite 请求期 "cannot get property \"llm\" without inject"
|
|
356
|
+
|
|
357
|
+
- **真机实锤(套件顶层 inject 授权不可靠的第二例)**:0.3.0 修复的
|
|
358
|
+
tools.register 报错是 apply 期同款问题;本版发现 0.3.1 起的运行期版本——
|
|
359
|
+
/rewrite 处理器把**外层 ctx** 传给 rewriteWithLlm,ctx.llm 在套件宿主里
|
|
360
|
+
抛 cannot get property "llm" without inject,✨ 点增强永远 502(之前客户端
|
|
361
|
+
出错只写 console,看起来就是「点了没反应」)。
|
|
362
|
+
- 修法(沿用 followup 模块的成熟模式):webServer 嵌套作用域改成
|
|
363
|
+
`ctx.inject(['webServer', 'llm'], ...)`、处理器改传 `webCtx`;工具 execute
|
|
364
|
+
改传所在 `['llm','tools']` 作用域;pre-step 路径在嵌套作用域里捕获
|
|
365
|
+
`llmRef`,未就绪时 fail-open 放行原文。上游 dsh-prompt-enhancer 0.2.9
|
|
366
|
+
同步修复(独立安装形态同样受益),客户端增强失败从静默 console 改为
|
|
367
|
+
按钮短暂红 ✕ + title 带原因,4 秒消退。
|
|
368
|
+
|
|
369
|
+
## [0.3.1] - 2026-11-01
|
|
370
|
+
|
|
371
|
+
### prompts 模板库:使用排序 / 导入导出 / 斜杠命令
|
|
372
|
+
|
|
373
|
+
- **最近使用排序**:点插入即计数(`uses` / `usedAt`),面板收藏组与全部组内
|
|
374
|
+
按「最近使用 → 创建时间」排序,标题旁显示使用次数。
|
|
375
|
+
- **JSON 导入导出**:面板头部 ↓/↑ 两个按钮;导出走浏览器下载落系统下载目录
|
|
376
|
+
(`dsh-prompts-YYYY-MM-DD.json`),导入弹系统文件选择框。服务端 `/import`
|
|
377
|
+
按 id 合并:同 id 冲突保留 `at`(更新时间)较新的一方,id 不在库中按原 id
|
|
378
|
+
收编(跨机重复导入可去重),空 body / 非法载荷拒绝,条目上限 5000。
|
|
379
|
+
- **注册为 / 斜杠命令**:模板行新增 `/` 切换按钮(opt-in,避免淹没官方菜单)。
|
|
380
|
+
标记的模板经官方 `ctx.commandUi.register` 注册为 action 命令(`tpl-<slug>`
|
|
381
|
+
前缀防撞宿主命令,标题即 label,/ 菜单按 label 模糊匹配中文可搜);执行时
|
|
382
|
+
经草稿桥插入,内置动态变量(日期/时间/星期)自动取值,手填变量保留 `{{名}}`
|
|
383
|
+
由用户行内改。同名冲突按官方约定 fail loud,这里 try/catch 留痕跳过;
|
|
384
|
+
标题修改/删除在面板刷新时注销重注册。
|
|
385
|
+
- **修复**:prompts 设置持久化引用了未导入的 `dirname`,每次防抖写盘都抛
|
|
386
|
+
ReferenceError 被空 catch 吞掉——设置从来没落过盘。补导入后持久化恢复。
|
|
387
|
+
- **测试**:新增 `scripts/smoke.mjs`——桩服务逐模块 apply + prompts 端到端
|
|
388
|
+
18 项断言(含导入合并/冲突/非法载荷),自动备份并恢复真实存储,随时可跑。
|
|
389
|
+
|
|
390
|
+
## [0.1.0] - 2026-10-31
|
|
391
|
+
|
|
392
|
+
### 首个版本:六模块超级输入框套件
|
|
393
|
+
|
|
394
|
+
- 由 dsh-cost / dsh-power-picker / dsh-prompt-enhancer / dsh-followup /
|
|
395
|
+
dsh-siri-voice 机械搬迁 + 新模块 **snippets(片段管理器)** 组成:
|
|
396
|
+
自动捕获 dsh 窗口内复制(copy 事件,指纹去重、上限 200 条、收藏不限),
|
|
397
|
+
dock「片段」按钮弹官方样式面板(搜索 / 收藏 / 删除 / 点击追加到草稿)。
|
|
398
|
+
能力边界:宿主无系统剪贴板桥,只捕获 dsh 窗口内复制。
|
|
399
|
+
- 服务端:Config 嵌套命名空间(config.cost.* 等,默认值经 schemastery
|
|
400
|
+
嵌套解析验证);peer 注入并集 llm+tools;模块级 try/catch 隔离。
|
|
401
|
+
- 客户端:单 __ModuleLoader__ 入口 + 六工厂内联,factory/apply 双层隔离。
|
|
402
|
+
- 生成器 `scripts/build-suite.mjs`:上游包更新后重跑即再生成(幂等),
|
|
403
|
+
自动补 inject 再导出与缺失 Config 的空 schema 兜底。
|
|
404
|
+
- 验证:全文件语法通过;宿主环境 import 通过;嵌套 Config 解析断言通过
|
|
405
|
+
(cost/followup/snippets/voice 默认值逐项核对)。
|
package/README.md
CHANGED
|
@@ -1,3 +1,50 @@
|
|
|
1
|
-
#
|
|
1
|
+
# dsh-superinput
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
dsh(DeepSeek Harness)**超级输入框套件**:一个插件,八个输入区模块,模块级失败隔离。
|
|
4
|
+
|
|
5
|
+
| 模块 | 功能 | 来源 |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| **cost** | 费用引擎:状态行费用 pill、官方用量旁的费用按钮+弹卡、月底预测、设置页统计/预算/导出、历史回填、官方价格同步、汇率自动刷新、预算超限系统通知 | 原 dsh-cost |
|
|
8
|
+
| **picker** | 模型选择器接管 + 推理强度滑条 + 模型行相对价格标记(×N) | 原 dsh-power-picker |
|
|
9
|
+
| **enhancer** | 提示词增强按钮:点一下把草稿增强成结构化提示词,悬浮调强度,支持发送时自动增强 | 原 dsh-prompt-enhancer |
|
|
10
|
+
| **followup** | 回合尾跟进建议 chips | 原 dsh-followup |
|
|
11
|
+
| **voice** | 语音输入 | 原 dsh-siri-voice |
|
|
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 |
|
|
14
|
+
| **hub** | 设置总览:各模块生效配置聚合展示 + 运行时调节 | 新模块 |
|
|
15
|
+
|
|
16
|
+
片段管理器(snippets)0.4.0、草稿(drafts)/消息目录(outline)/会话导出(exporter)0.5.0 起
|
|
17
|
+
按用户决定移除;既有 snippets.json 数据保留在原处不再使用。压缩控制(dsh-compaction-control)
|
|
18
|
+
0.10.0 起并入套件为 compaction 模块,独立插件应从 profile 卸载(避免圆环双注册)。
|
|
19
|
+
|
|
20
|
+
## 架构
|
|
21
|
+
|
|
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 之后应用,落档消息不会被二次增强。
|
|
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 保留条目文本/评论)。
|
|
31
|
+
|
|
32
|
+
## 安装
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
dsh plugin --profile desktop add <本目录绝对路径>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
从五个独立插件迁移:先装套件、确认 bundles 里有 `dsh-superinput`、重启验证,再移除旧插件(避免同槽位双注册冲突)。装完完整重启 dsh。
|
|
39
|
+
|
|
40
|
+
## 上游更新
|
|
41
|
+
|
|
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 生效。
|
|
47
|
+
|
|
48
|
+
## License
|
|
49
|
+
|
|
50
|
+
MIT
|