dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
Web UI 插件:以阶段性文字回复为界分段,把每段的 think 与工具调用收进限高可滚动、高度可配置的 slide 窗口,中间过程始终可见。
DeepSeek Harness (DSH) Web 插件:把一轮里的 think(推理)和工具调用放进有限高度的可滚动窗口(默认 10 行),以阶段性文字回复为界分段,每个分段一个 slide;文字回复保持原生完整显示、不做限高。中间过程始终可见(只是不撑爆页面)——Grok Build 风格。
与「全部折叠成 summary」类插件(如
dsh-tool-summary)不同:本插件不隐藏任何内容。think 与工具调用一条条列在 slide 里,每段都能展开翻到底;文字回复完全原生展示。 只包 bash + think:阶段性/最终文字 response 不加限高、不加「展开全部/收起」按钮。
一个 prompt 之后有 100 次 tool call + 长回复时:
10 个工具调用 · 5 Think(无 emoji、无冗余序号)+ 进行中 / 失败徽标,可点击收起/展开max-height: N 行(默认 10)的内部滚动区
效果预览见 GitHub 仓库页面或自行安装体验(仓库不再内置运行截图,避免暴露会话内容)。
dsh plugin --profile web add github:heiheiha798/dsh-plugin-response-window
或本地 link 方式(开发调试):
git clone https://github.com/heiheiha798/dsh-plugin-response-window.git
cd dsh-plugin-response-window
dsh plugin --profile web add "link:$(pwd)"
装完重启 dsh web(或等 profile HMR)生效。
卸载:dsh plugin --profile web remove dsh-plugin-response-window
cordis.patch.yml 里插入了默认配置,可改:
| 键 | 默认 | 说明 |
|---|---|---|
lines | 10 | 窗口高度(行)。0 = 不限高(等价于关闭窗口) |
collapsed | false | 每轮 slide 是否默认收起成一行 bar。默认 false:始终展开、内容可见 |
showReadOnly | true | 是否在 slide 里列出 read/grep/web_search 等只读调用(默认全列出,不藏) |
minCollapseRows | 3 | 仅 collapsed: true 时生效:少于该数量的轮次不收起 |
插件在 Web UI 的 Settings → General 里注册了一项 「响应窗口大小(行数)」:
− / 数值输入 / +:调整 lines(0–200,0 = 不限高,默认 10)dsh-plugin-response-window 持久化)conversation.chat.node 的 keyed 替换(key: 'tool-call')实现 —— 这是 dsh 0.1.5-rc keyed Chat Node 契约的文档化语义(同 key 注册即替换该 kind 的渲染器),不再使用旧的 priority shadow。node.location.turn.turn)与 useChat 选择器(ChatSnapshot.locations.getTurn(turn) + nodes),与右侧用户消息索引(turn rail)消费同一份 turn/location 数据 —— rail 导航落点与本插件的分段分组天然一致,不依赖任何 DOM 测量。[data-chat-anchor-key] 行节点。实测:把行移进自定义容器后,一旦 DSH 后续移除该行(会话切换/编辑/压缩),React 会调用 parent.removeChild(row) 抛 NotFoundError,整个会话树被卸载——因此本插件只用「keyed 替换 + 类/CSS」两种方式,对 React 行结构零改动。data-variant="think" 行加 display:none(DOM 类/CSS,无重挂、无删除),其余(无工具调用的纯 Think 段)保持原生显示。useChat),不写快照、不调宿主 API。createSnapshotStore 依赖已移除(dsh-client-runtime 包已于 2026-08-22 从 dsh 移除),改用内置的最小可观察值存储。纯 JS,无构建步骤:
npm run check # node --check lib/index.js && node --check lib/client.js
E2E(需要已启动的 dsh web 与 python playwright):
dsh --profile web --no-open --port 3639 &
python3 test/e2e.py --url http://127.0.0.1:3639 --session "架构重构不顺原因分析"
lib/index.js(注册 settings namespace,依赖 @deepseek-ai/schemastery)lib/client.js(window.__ModuleLoader__.load,依赖 web 运行时注入的 react、slots 与 settings scope)MIT