tttnny/my-dsh--plugins-dsh-smooth-stream ↗★ 4
@lynn123411/dsh-smooth-stream
丝滑流式渲染与零重排跟随引擎。单内核适配 DSH 0.1.5-rc.1;工具卡片内部即时呈现,不逐字揭示。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:tttnny/my-dsh#46eb212fa958c3fccd76ab644ed83d68bda6fd60&path:plugins/dsh-smooth-stream说明文档
阅读完整 README ↗@lynn123411/dsh-smooth-stream
把 AI 的长篇生成变成提词器式的温润流淌:内容呈现与视口运动各自是一条独立的物理状态机,在每一帧 rAF 里连续积分,从而消掉「整段砸在屏幕上」的跳跃感与「scrollTop = scrollHeight 硬跳」的重排抖动。插件同时接管助理回复与其余 Agent 行的入场、增长与跟随;工具行仍然享受入场与跟随,但卡片内部不再逐字打印(译文除外)。
特性
- 逐字揭示(Reveal Engine):按积压深度自适应调节速度($v = 90 + \text{backlog}^{1.25} \times P$),慢速时从容、爆发时平稳追赶;折行处单帧视觉位移限制在 8px 以内。
- 零重排跟随(Follow Engine):二阶阻尼弹簧($k=130, c=24, m=1$)在合成层做
translate3d补偿,真实滚动容器始终锚定底部,跟随过程不读写触发 Layout 的属性。 - 闭环背压:跟随滞后逼近预留空间时反向给揭示引擎施加阻尼(最低 0.55 倍速),防止文字增长冲出视口弹簧范围。
- 工具卡片内部即时呈现:
tool-call行依旧被包装,保留 220ms 入场/增长滑行与滚动跟随,但卡片里的文本以完整长度落盘、不再逐字揭示 —— 所以展开工具、看命令输出时没有打字机延迟。唯一例外是dsh-chat-translate挂上译文的.dsh-tidy-translated-block:译文仍逐字从左到右流入(工具摘要与思考折叠摘要都会挂这个块),其余文本即时落盘。 - 单内核适配:只面向 DSH
0.1.5-rc.1及以上的接缝 ——ClientContext用 cordisContext、Chat 节点契约取自@deepseek-ai/dsh-client-ui-chat/client、图片走内核的conversation.message.imagesslot、客户端 store 静态取自模块表 seed,不含旧内核的兼容探针。 - 原生设置命名空间:偏好读写走 DSH 的
settingsScope服务(命名空间lynn-smooth-stream);仅「版本 + 一键更新」保留一条极小的插件 RPC。 - 共享「阅读体验」设置页:本插件的卡片与
dsh-oil-sticky-prompt、dsh-chat-translate等参与者一起挂在同一个设置页里(settings.sectionidreading,参与者可增删)。内核不允许一页被多个插件共同声明,因此每个参与者各持一份逐字节相同的页壳,先加载者当选页面宿主、其余只注册卡片;当选者被卸载后下次启动自动改选。做法与约束见仓库docs/rules/shared-settings-page.md。 - 动效偏好三态:
auto(跟随系统 reduce-motion)/force-smooth/force-reduced。 - 思考块自动展开与回合折叠:流式期间自动展开思考,回合结算后收敛为
已处理 X 秒摘要行。 - 诊断面板:可选的实时 HUD,观测 FPS、字符积压、弹性曲线并微调物理参数。
安装
dsh plugin --profile web add @lynn123411/dsh-smooth-stream
从本仓库源码本地联调(临时装配,改动即时生效):
cd plugins/dsh-smooth-stream
pnpm install
pnpm check # typecheck + 构建 + 客户端装配自检
# 然后在 ~/.dsh/profiles/web 里以本地路径依赖加入本包,并写进 dsh.profile.bundles
pnpm smoke(scripts/smoke-client.mjs,零依赖)会把 lib/client.js 按 Web shell 的 __ModuleLoader__ 协议加载一遍,用假的 cordis 服务跑 apply(),断言共享页声明、卡片、诊断面板、助理行接管与语言包都真的注册上了(含「别人已占页时不重复声明」的选举分支)—— 这类「装配线断了但界面只是少个入口」的问题只有它拦得住。