让 AI 的长篇生成如提词器般温润流淌。
58.6/100
综合分
88
GitHub 星标
1,013
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-smooth-streamnpm 源 · dsh-smooth-stream 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-smooth-stream @ 0.7.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 20:42:48
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 6 处,展示前 6 条)
- 读取本地文件lib/index.js:56
const manifest = JSON.parse(readFileSync(packageManifestPath(), "utf8")); - 读取本地文件lib/index.js:107
manifest = JSON.parse(readFileSync(join(profileDir, "package.json"), "utf8")); - 执行外部命令来自配置/变量lib/index.js:125
const child = spawn(command, ["update", packageName], { - 读取本地文件src/package-meta.ts:25
const manifest = JSON.parse(readFileSync(packageManifestPath(), 'utf8')) as PackageManifest - 读取本地文件src/profile-installation.ts:91
manifest = JSON.parse(readFileSync(join(profileDir, 'package.json'), 'utf8')) as ProfileManifest - 执行外部命令来自配置/变量src/profile-installation.ts:109
const child = spawn(command, ['update', packageName], {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-attachment@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 流式渲染
- 滚动处理
DeepSeek Harness 的 Web UI 插件,负责流式渲染和滚动处理。
最近更新
在 GitHub 查看全部 →v0.8.0-rc.12026-10-07预发布
· Harness 兼容性验证候选版
· 整合 #35、#40,修复 #36:Harness 0.1.7 / 0.2.x 的插件详情设置页、实时偏好和 Think 自动展开恢复正常。
· 修复动态 Agent slot 注册重入、卸载组件恢复、通用 Agent 文本队列排空后无法唤醒。
· 设置写入使用真实 volatile 配置及 revision 校验;移除绕过校验的回退。
· 现代配置投影内核默认使用 Harness 原生滚动,设置中仍可开启插件接管;旧设置注册表保持默认开启。
· 含跨行行内代码的段落禁用 text-box-trim,避免 #34 所描述的裁剪组合;保留代码换行。
· 保留 #39 的助手原地替换、流程分流和单一滚动所有者。
· 验证状态
独立完整构建 Harness 0.1.7-rc.2、0.2.0-rc.2,真实 Chrome 设置保存/刷新、Think 展开/回答时折叠验证通过,控制台无错误。typecheck、build、产物新鲜度、8 项设置卡产物校验和真实配置服务集成测试通过。
完整 Vitest:275 通过 / 8 失败;剩余失败均在 main 对照中存在,涉及滚动几何与终态测试,仍保留待验证。Windows #25 重影与 #34 中文绘制丢失尚待同平台回归,因此本版为 prerelease,npm 发布到 next,latest 保持 0.7.0。
此版本的 peer 范围面向 Harness 0.1.7-rc.1 起及 0.2.0 预发布线;更旧内核的兼容分支保留,但不再属于声明支持范围。
完整验证记录
v0.7.02026-10-05
· 更新内容
· 新增流式输出速度预设,可通过设置界面与 RPC 选择。
· 调整流式渲染与帧协调,改善对数渐显、结束贴底和行入场动画。
· 适配 Harness 0.2.x 的 groupPart 行拆分、响应行滚动所有权与状态尾行。
· 优化思考块折叠时机、高度限制及本地化显示。
· 合入 PR #39:
· 验证与已知限制
· 发布前类型检查、构建和产物新鲜度检查通过;设置与设置通道相关的 10 项测试通过。
· 已在 Harness 0.2.0-rc.2 验证插件加载、设置读取及浏览器生命周期。
· 旧全量测试尚未全部通过,部分测试仍依赖旧 Harness 接口和注册优先级。
· Harness 0.2.x 中自定义设置卡仍需迁移至新的设置表单接口。
· 在内置 assistant-step 尚未注册、插件先使用回退组件的组合下,后续动态注册仍可能触发重复 slot;卸载也可能留下行包装组件。内置组件已注册的常规流程验证正常。
· 安装 / 更新
dsh plugin --profile web add dsh-smooth-stream@0.7.0
完整变更:
v0.6.12026-09-11
· 🛠 修复:设置卡片恒显示「当前连接无法访问插件设置。」(#29)
DSH 0.1.5-rc.1+ 上,插件 Host 半区加载正常(逐字揭示、滚动接管都在跑),但 /smooth-stream RPC 通道从未挂载:内核 connection.rpc.handle() 在服务内部用未注入 webServer 的上下文解析 webServer,被 cordis 4.0.2 的 inject 守卫拒绝(cannot get property "webServer" without inject)。抛错发生在 inject fiber 内被吞掉,浏览器请求落到静态回退(POST 一律 405),卡片因此恒为「无法访问」,点「重试」无效。
本版新增插件侧兼容层(src/settings-channel.ts):
· connection.rpc.handle() 仍是首选路径,老内核行为完全不变;
· 服务调用抛错时,把同一 /smooth-stream 前缀路由直接挂到 webServer 上,鉴权沿用 connection 的公开方法 requestRejection(与 /api 同一套 Host/Origin + 浏览器会话闸门;该方法缺失时拒绝挂载,不做无鉴权暴露);
· 请求/响应信封与端点词汇不变(settings-api.ts 原样保留),卡片控制器零改动;
· 隔离宿主实测:POST /smooth-stream/settings.read 405 → 401(挂载),认证后读写均 200;新增 3 条宿主回归测试。
内核侧同根因影响面更大(生态内其它插件同样命中),仍在 deepseek-harness#5926 与 #6105 跟进;内核修复后,本插件的回退分支自然退役。
· 🛠 修复:流式结束时刻的 Y 轴上跳与回弹漂移(#28)
流式输出结束(揭示排空)瞬间,宿主执行 DOM 替换(卸载 turnStatus、挂载 turn-process/turn-tail、live→settled re-key),高度塌缩导致视口单帧上跳或数帧 ±20px 拉锯;此后为排水撑开的临时跑道(runway)与 flowPad 以约 1px/帧慢速退休(约 1.5s),表现为整屏内容像电梯一样缓慢下滑归位。
· 锚点公式引入 scrollDelta 校正:measureReadingAnchor 此前未剔除滚动增量,把纯视口滚动(宿主贴底、用户滚动)误判为「布局把内容向下推」,向 flowPad 错误发放补偿;
· 完成时刻快速交接(Fast Handoff):检测到流式结束立即清空跑道与临时 Pad、对齐自然贴底并释放所有权标记,不再启动 1.5s 的垫高与慢速退休循环——结束瞬间的拉锯与下沉回弹随之消除。
· 📦 安装 / 更新
dsh plugin --profile web add dsh-smooth-stream@0.6.1 # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.6.1 # 或从 tag 安装
Full Changelog: v0.6.0...v0.6.1
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-smooth-stream
让 AI 的长篇生成如提词器般温润流淌。
为 DeepSeek Harness(dsh)打造的二阶弹簧物理流式渲染与零重排跟随引擎。
English · 项目主页 · 工作原理与基准 · npm
极致丝滑的阅读手感
无论是阅读数百行的长篇推演,还是紧盯高速吐字的代码生成,dsh-smooth-stream 带来的是一种沉浸、连贯且零视觉负担的阅读质感:
- 如水流般自然铺展:告别大段文本突然「砸」在屏幕上的视觉压迫,字句如打字机般富有呼吸感地逐字涌现;
- 视线无需追赶跳动:视口如同搭载了高精度阻尼滑轨,随文字增长平稳匀速推移,彻底终结换行时的突发踢移;
- 呼吸感与实时性的平衡:慢速输出时从容优雅,高并发爆发时平稳追赶,无论模型吐字多快,画面始终从容自若。
为什么需要它?
大模型输出通过网络分块到达。一个数据包可能在几毫秒内送达数百字符,下一个分块却需要数十毫秒。
展开完整文档(README 剩余 1 节)
dsh-smooth-stream
让 AI 的长篇生成如提词器般温润流淌。
为 DeepSeek Harness(dsh)打造的二阶弹簧物理流式渲染与零重排跟随引擎。
English · 项目主页 · 工作原理与基准 · npm
极致丝滑的阅读手感
无论是阅读数百行的长篇推演,还是紧盯高速吐字的代码生成,dsh-smooth-stream 带来的是一种沉浸、连贯且零视觉负担的阅读质感:
- 如水流般自然铺展:告别大段文本突然「砸」在屏幕上的视觉压迫,字句如打字机般富有呼吸感地逐字涌现;
- 视线无需追赶跳动:视口如同搭载了高精度阻尼滑轨,随文字增长平稳匀速推移,彻底终结换行时的突发踢移;
- 呼吸感与实时性的平衡:慢速输出时从容优雅,高并发爆发时平稳追赶,无论模型吐字多快,画面始终从容自若。
为什么需要它?
大模型输出通过网络分块到达。一个数据包可能在几毫秒内送达数百字符,下一个分块却需要数十毫秒。
如果直接把 DOM 渲染和视口滚动绑定在离散的到达事件上,通常会引发两个阅读体验问题:
1. 视觉跳跃与撕裂:段落、代码块和表格整段突发呈现,视线被迫频繁重新寻焦;
2. 滚动抖动与重排风暴:依靠 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 合成)
1. 动态自适应的揭示引擎(Reveal Engine)
- 分数级字符积分:根据积压队列深度自适应调节速度($v = 90 + \text{backlog}^{1.25} \times P$),低负载时从容自然,高积压时平稳追赶,绝不倾泻整段文本。
- 折行限幅平滑:长文本和代码块发生换行时,单帧视觉位移被限制在 8px 以内,将原本 24~28px 的单帧跳跃平摊至数帧完成。
- 尾部平稳收束:回合结束标记到达后,残余缓冲区以恒定速率释放,正文、思考链与工具调用之间自然衔接。
2. 纯合成层驱动的跟随引擎(Follow Engine)
- 二阶阻尼物理系统:采用 $k=130, c=24, m=1$ 的亚步进物理弹簧,将内容高度的变化转化为平滑连续的速度与位移轨迹。
- 零重排(Zero-Reflow)位移补偿:真实滚动容器始终锚定在底部,剩余的视觉滞后完全由外层 DOM 的 transform: translate3d 吸收。跟随过程不读写任何触发 Layout 的属性,杜绝重排风暴。
- 闭环背压控制(Closed-Loop Backpressure):当跟随滞后接近预留空间时,反向向揭示引擎施加阻尼(最低降至 0.55 倍速),防止文本增长超出视口弹簧范围。
- 掉帧自愈与跨刷新率一致:主线程卡顿(Stall)时自动钳位物理时间($\le 32\text{ms}$),避免画面恢复后的突进瞬移;在 60Hz 与 120Hz(ProMotion)屏幕下拥有近乎一致的物理收敛时间。
3. 会话生命周期自动折叠(Turn Auto-Collapse)
- 对话进行时,思考链与工具调用保持实时展开;
- 回合结算完成并稳定后,自动将执行过程收敛为一行极简的 已处理 X 秒 摘要,保持工作区专注;支持随时点击无缝展开。
效果对比
左:默认 Web UI。右:dsh-smooth-stream。
左:未使用插件。右:使用 dsh-smooth-stream。
性能与基准
平滑度与稳定性基于本地自动化审计台架验证:
| 验证闸门 | 测试项目 | 指标要求 |
| 流式渲染审计 | node scripts/run-render-audit.mjs | 5 种典型生成场景下 10/10 Clean,零位移回退 |
| 视口溢出闸门 | node scripts/verify-overflow.mjs | 极限输出场景下零过滚、零反弹 |
| 尾行晃动抑制 | pnpm test | 单帧跳变 ≤30px,7 帧振幅峰值 ≤32px |
- 核心 ESM 产物经 Gzip 压缩后仅约 4.7 kB。详见工作原理与基准。
安装与使用
在 DeepSeek Harness 源码根目录运行:
sh
pnpm dsh plugin --profile web add dsh-smooth-stream
如果系统 PATH 中已有 dsh: sh
dsh plugin --profile web add dsh-smooth-stream
启动界面: sh
pnpm dsh web
Host 日志中显示 [dsh-smooth-stream] plugin loaded! 即表示已成功加载。
卸载命令:pnpm dsh plugin --profile web remove dsh-smooth-stream。
内核兼容性
| DSH 内核 | 本插件支持情况 |
| 0.2.x(@deepseek-ai/dsh-client- ≥ 0.2.0-rc.0) | ✅ peerDependencies 已声明。助手步骤的接管改为原地替换内置行(0.2.x 每个 keyed 条目各占一个座位),因此保留了内核的 children/locale/inject 座位;思考正文新增的 conversation.chat.reasoning.body 槽位已接入(见下) |
| 0.1.7(@deepseek-ai/dsh-client- ≥ 0.1.7-rc.1) | ✅ 当前声明范围:peerDependencies 的下限即此版本。插件配置页迁到侧栏 Plugins(plugins.bundle.config)、助手步骤的双流程座位(groupPart)、图标与 primitive 改名、settings 投影 seam(describe() / update())均已适配 |
| ≤ 0.1.6(含 0.1.5-rc 桌面内核) | ⚠️ 代码里保留了旧 seam 的兼容分支(设置注册表、size 后缀图标名),但已不在 peerDependencies 声明范围内,本版未实测 |
| 0.1.0-rc.5 ~ 0.1.0-rc.7 | ✅ 旧版本(≤ 0.6.1)支持 |
| 0.1.1-rc.2 | ✅ 旧版本(≤ 0.6.1)支持 |
| 0.1.2-alpha.1 ~ 0.1.2-alpha.3 | ✅ 0.4.3 起 |
- ✅ = 兼容;⚠️ = 仍可用但已超出声明范围。0.1.7 线是本版的目标内核,已按“同一份构建、运行时探测”的方式适配;0.1.5-rc 的兼容分支保留在代码中,便于回退到旧内核时仍能加载。
- 0.2.x 给思考正文新增了 conversation.chat.reasoning.body 槽位(内核自带的思维链翻译、以及后续任何思考正文特性都注册在这里)。接管渲染思考正文时会先看该槽位:只有内核默认实现占位时仍由插件自己画(保留插件的平滑与自动滚动),一旦有别的特性替换了默认实现,展开状态就交回槽位,插件自身的显示层翻译同时让位,避免同一行出现两份互相矛盾的翻译。槽位不存在(旧内核、影子注册回退)时行为不变。
- 0.1.7 起内核把插件配置从 Settings 移到侧栏 Plugins 面板(plugins.bundle.config 槽位),并给助手步骤同时挂上 reasoning / response 两个流程座位(groupPart)、把图标导出从 size 后缀改名为权重后缀。本版对三者都做了运行时适配:槽位不存在时旧路径继续生效,groupPart 缺失时按“全部块归属本渲染”处理,图标按候选名逐个探测。
- 0.1.2 起内核移除了 settingsNamespace() 运行时助手(≤ 0.1.1 上它只是个校验恒等函数,0.1.2 仅保留同名类型)。本插件不静态导入该符号,而是在注册设置命名空间时本地内联常量并断言为 SettingsNamespace 类型。
- 不要对 @deepseek-ai/ 包的运行时符号做静态导入。宿主 CLI 经 node --import tsx/esm 启动,tsx 会应用宿主 tsconfig 的 paths 映射,外部插件对 @deepseek-ai/ 的裸导入可能被重定向进宿主源码,一旦宿主侧改名/删符号就会以模块实例化错误的形式炸掉启动。类型导入(import type)不受影响;本版对 primitive 的读取因此改走模块表探测(harnessIcons.ts / primitives-compat.tsx)。
配置与手感预设
插件默认采用 preset: balanced。如需切换手感,可在对应 profile 的 cordis.patch.yml 中修改:
| preset | 动态特性 |
| realtime | 紧跟模型分块到达节奏,缓冲更小 |
| balanced | 默认推荐,兼顾阅读流畅度与响应延迟 |
| silky | 增大缓冲区,追赶更平缓柔和 |
用户偏好设置
在 Web 界面打开侧栏 插件 → 已安装 → dsh-smooth-stream,在包详情页的配置卡片中个性化调节(0.1.7 之前的内核仍在 设置 → 插件 → 插件配置):
- 启用丝滑流式渲染(默认开启):接管回复和工具行的渲染与跟随;关闭后即时恢复 Harness 内置渲染。
- 折叠行为:按阶段管理思考块的开合与展开高度。
- 思考生成中(默认展开):思考内容到达时是否自动打开;收起后可随时手动打开。
- 思考结束后(默认收起):停止输出后继续展开便于回看,或折叠回一行摘要。
- 展开高度(默认限高):限高时正文留在自身的 300px 滚动框内;全高时按完整高度铺开,滚动交给会话。
- 回合结束后(默认跟随内核):回合完成时是否把整个过程收起成一行摘要。选「保持展开」或「收起」时,插件在回合已关闭且可折叠时,对当前挂载的回答行应用一次所选状态;该行保持挂载期间,之后的手动开合不会被改回去,回答行重新挂载时会再次应用。
- 对数淡入(默认开启):回答正文和展开的思考内容中,尾部范围随输出速度从 24 扩展到最多 160 个字素,从 0% 不透明度在 240ms 内按反向对数曲线变实(前段更通透,后段变实)。网络停顿时也会恢复清晰;关闭此项保留逐字输出与滚动。遵循动效偏好,跳过代码、公式和思考摘要,不支持文字范围着色的浏览器自动使用原有输出效果。
- 显示渲染调试面板(默认关闭):在界面右侧开启实时 HUD,观测 FPS、字符积压、弹性曲线并微调物理参数。
升级提示:旧的 thinkAutoExpand 只保留用于接受历史配置,其值不再影响渲染。此前关闭自动展开的用户,升级后需要将「思考生成中」重新选为「收起」。新配置未设置时仍默认展开。回合策略在当前回答行上应用一次后,再改策略不会重置该行的开合;后续回合或重新进入会话时采用新策略。内核强制展开的回合仍由内核决定。
本地淡入预览:执行 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/。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Laplace-bit/dsh-smooth-stream
让 AI 的长篇生成如提词器般温润流淌。
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1