dsh-web-archive
DSH Web 客户端插件:把会话里非正文的工具卡片(read/think/bash/...)合并折叠为输入框上方一个可展开的 "Deep Sleeping..." 小列表,前端不再显示一堆工具卡片。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:renat3u/dsh-web-archive说明文档
阅读完整 README ↗dsh-web-archive
Deep Sleeping... — DeepSeek Harness (dsh) Web 模式的客户端插件。
把会话里正文之外的所有 display(工具卡片 read / bash / web_search / grep / edit 等,以及消息内的 Think 推理块,含运行中的调用)折叠成内联的小卡片, 无 emoji、与 Read/Think/Bash 卡片同款样式、放在它们原来的位置:
- 每条消息的 think 组 + 其后紧跟的工具组合成一块(落单的 think 组 / 工具组各自成块),工具组区域随块折叠、不留空白;
- 正文消息保持
文本a - [折叠块] - 文本b - 文本c的原始结构。
Deep Sleeping... (3) ← 折叠态,点击展开
Deep Sleeping... (3) · 收起 ← 展开态,所有卡片原地显示
前端不再出现一长串 Read / Think / Bash 卡片;正文消息完全不受影响。
特性
- 零核心改动:纯浏览器端插件,不修改 dsh 任何源码、不注册 slot key,
不会与内置工具卡片的
conversation.chat.toolview注册冲突。 - 零运行时依赖:bundle 完全自包含,不 require 任何模块表条目。
- Think 也折叠:消息内的推理块(
data-variant="think")与工具卡片 一并合并。 - 实时跟随:MutationObserver + rAF 合并,流式新卡片、卡片结算、切换 会话都自动重放折叠状态。
- 选择联动:折叠态下若有行被选中(详情联动),自动展开该簇,避免 看不到正在查看的卡片。
- 主题适配:颜色走 dsh 的
--dsw-*CSS 变量(带兜底值),明暗主题 都可用。
工作原理
ChatView 渲染时对每个工具调用行写入稳定 data 属性:
| 元素 | 属性 |
|---|---|
| 会话流容器 | [data-chat-flow] |
| 工具调用行(含运行中) | [data-chat-call-id] / data-chat-anchor-key="call:…" |
| Think 推理块行 | [data-variant="think"] 且无 data-tool |
| run_code 子派发行 | 位于 [data-subcalls] 内(不折叠,跟随父卡片) |
| 正文消息 | data-chat-anchor-key="node:…"(不折叠,且会断开簇) |
插件只做两件事:
- 把
[data-chat-flow]里的非正文行——顶层[data-chat-call-id]工具卡片行 +[data-variant="think"]且无data-tool的推理块行——display:none(React 的 vdom diff 不会覆盖 CSSOM 上的手动样式); - 把每个回合合成一块:某条消息的 think 组与紧跟其后的工具组(跳过
装饰元素)合并,在 think 消息的原位插入一张与工具卡片同款样式的
小卡片(
Deep Sleeping... (N),N = think 行数 + 工具卡片数),工具组 元素随块折叠;点击切换展开/收起。落单的 think 组 / 工具组各自成块。 正文消息保持文本a - [折叠块] - 文本b - 文本c的原始结构。
注入的 chip 在 React 管理的 flow 子树内,但只做前置插入与 display 切换, MutationObserver + rAF 合并重放,React 重渲染/切换会话/流式新卡片都会自动 跟上(自愈);卸载时全部还原。