dsh-web
zhu1090093659
DeepSeek Harness (DSH) Web 插件聚合生态 · 万物皆插件,通过创意工坊分发||DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
让 AI 的长篇生成如提词器般温润流淌。
为 DeepSeek Harness(dsh)打造的二阶弹簧物理流式渲染与零重排跟随引擎。
English · 项目主页 · 工作原理与基准 · npm
无论是阅读数百行的长篇推演,还是紧盯高速吐字的代码生成,dsh-smooth-stream 带来的是一种沉浸、连贯且零视觉负担的阅读质感:
大模型输出是通过网络分块到达的。一个数据包可能在几毫秒内送达数百字符,下一个分块却需要数十毫秒。
如果直接将 DOM 渲染和视口滚动绑定在离散的到达事件上,通常会引发两个阅读体验问题:
scrollTop = scrollHeight 进行瞬时硬跳;即使用 CSS scroll-behavior: smooth,高频写入也会不断重置缓动曲线,导致动画永远无法收敛,高速流下伴随剧烈的主线程重排。dsh-smooth-stream 将内容呈现与视口运动拆分为两个独立的物理状态机,在每一帧动画回调(rAF)中连续积分,彻底消除跳跃感。
[ 模型 SSE 分块流 ]
│
▼
┌─────────────────┐ 背压阻尼 (0.55x ~ 1.0x) ┌─────────────────┐
│ 揭示节奏引擎 │ ◄──────────────────────────────── │ 弹簧跟随引擎 │
│ (Reveal Engine) │ │ (Follow Engine) │
└────────┬────────┘ └────────┬────────┘
│ 字符积压与分数积分 │ 二阶阻尼弹簧积分 (k=130, c=24)
▼ ▼
[ 逐帧平滑展开 DOM ] ───────────────────────────────► [ 合成层 Transform 补偿 ]
(单帧视觉位移 ≤ 8px) (0 Reflow / 纯 GPU 合成)
transform: translate3d 吸收。跟随过程不读写任何触发 Layout 的属性,杜绝重排风暴。已处理 X 秒 摘要,保持工作区专注;支持随时点击无缝展开。左:默认 Web UI。右:dsh-smooth-stream。

平滑度与稳定性基于本地自动化审计台架验证:
| 验证闸门 | 测试项目 | 指标要求 |
|---|---|---|
| 流式渲染审计 | node scripts/run-render-audit.mjs |
5 种典型生成场景下 10/10 Clean,零位移回退 |
| 视口溢出闸门 | node scripts/verify-overflow.mjs |
极限输出场景下零过滚、零反弹 |
| 尾行晃动抑制 | pnpm test |
单帧跳变 ≤30px,7 帧振幅峰值 ≤32px |
在 DeepSeek Harness 源码根目录运行:
pnpm dsh plugin --profile web add dsh-smooth-stream
如果系统 PATH 中已有 dsh:
dsh plugin --profile web add dsh-smooth-stream
启动界面:
pnpm dsh web
Host 日志中显示 [dsh-smooth-stream] plugin loaded! 即表示已成功加载。
卸载命令:pnpm dsh plugin --profile web remove dsh-smooth-stream。
| DSH 内核 | 本插件支持情况 |
|---|---|
| 0.1.0-rc.5 ~ 0.1.0-rc.7 | ✅ 全部版本 |
| 0.1.1-rc.2 | ✅ 全部版本 |
| 0.1.2-alpha.1 ~ 0.1.2-alpha.3 | ✅ 0.4.3 起;0.4.2 及更早版本因静态导入已移除的助手而在 0.1.2 上加载失败 |
0.1.2-alpha.3 为当前宿主内核,已实测(产物导入 + 测试套件);其余内核按双内核兼容设计支持(同一份构建、同一 API 面)。settingsNamespace() 运行时助手(≤ 0.1.1 上它只是个校验恒等函数,0.1.2 仅保留同名类型)。本插件不静态导入该符号,而是在注册设置命名空间时本地内联常量并断言为 SettingsNamespace 类型,新旧内核通用。settingsNamespace()(见 git 历史中的兼容修复);更早版本仅在 ≤ 0.1.1 内核上可用。包的运行时符号做静态导入**。宿主 CLI 经node --import tsx/esm启动,tsx 会应用宿主tsconfig的paths映射,外部插件对@deepseek-ai/*的裸导入可能被重定向进宿主源码,一旦宿主侧改名/删符号就会以模块实例化错误的形式炸掉启动。类型导入(import type`)不受影响。插件默认采用 preset: balanced。如需切换手感,可在对应 profile 的 cordis.patch.yml 中修改:
preset |
动态特性 |
|---|---|
realtime |
紧跟模型分块到达节奏,缓冲更小 |
balanced |
默认推荐,兼顾阅读流畅度与响应延迟 |
silky |
增大缓冲区,追赶更平缓柔和 |
在 Web 界面打开 设置 → 插件 → 插件配置,可对 丝滑流式(Smooth stream) 卡片进行个性化调节:
本地淡入预览:执行 pnpm build:repro,在仓库根目录启动 python3 -m http.server 8765 --bind 127.0.0.1,打开 http://127.0.0.1:8765/repro/index.html?demo=fade。预览包含暂停、停止、深浅主题、高速分片和代码/公式保护样例,复用真实输出引擎,富文本为测试样例。
执行 node scripts/verify-logarithmic-fade.mjs 可验证并录制预览(需要 Chrome 和 pnpm exec playwright-core install ffmpeg;其他 Chrome 路径可用 CHROME_BIN 指定),报告与视频保存在未跟踪的 repro/artifacts/logarithmic-fade/。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: ai-chat、chat-ui、developer-tools、markdown、streaming-markdown、web-ui。