可配置的聊天自动滚动——按节定速阅读(停顿时长与篇幅成比例)、平滑跟随、单步与固定模式,支持快捷键与按会话记忆打开位置。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:TheGoodMorty/chat-pace
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
该插件的 README 只有英文版本。
Configurable chat auto-scroll for the DeepSeek Harness web UI — agent output never flies by faster than you can read.
Adds five scroll modes, on-screen controls, global hotkeys, a full settings page, and per-session reading-position memory. Works alongside the shipped follow logic instead of replacing it, so any mode can be left on safely.
Install
dsh plugin add TheGoodMorty/chat-pace
Then restart the DSH server (compositions are read at boot) and refresh the page. The controls appear in the composer tool row, the composer dock, the session header, and under Settings → Chat Pace.
Modes
| Mode | Behavior |
|---|---|
| Follow | Shipped default: jump to the newest output instantly. |
| Smooth | Keep the newest output in view, gliding at a configurable px/s. |
| Paced | Section-by-section reading: glide to each settled text section, pause for sectionHeight / screenHeight × seconds-per-screen, then continue. Tall sections spend the pause drifting through themselves. Between text sections the view keeps following tool output live, and while a text section is being written the view holds still so the text arrives unread below the fold. Sections already fully visible when they settle are skipped — they streamed in front of you. |
| Step | No auto-scroll; one section per press (button or hotkey), optionally animated. |
| Hold | The view is pinned; new output never moves it. |
An "output section" is each settled assistant message (assistant-step with
status settled/interrupted); tool results and command rows can be opted in.
The Paced reading pause is clamped between a configurable minimum and maximum (up to 80 s), so a single huge section never freezes the view for minutes, and tall sections drift through their text at reading speed instead of sitting still.
Controls
- Composer tool row — pause/resume, next-section, and the mode menu (always visible)
- Composer dock — live status line and reading-pause progress bar
- Session header — mode menu button
- Settings → Chat Pace — every option: mode, glide speed, seconds-per-screen reading pace, pause clamps, section kinds, behavior toggles, session open position, and a hotkey recorder with conflict detection
- Global hotkeys (defaults):
F9pause/resume,Ctrl+ArrowDownnext section,Ctrl+ArrowUpprevious,Ctrl+Endjump to latest
User wheel/touch input instantly takes control back from any auto-scroll mode; an optional toggle resumes automatically when you scroll back to the bottom.
Settings persist in localStorage (dsh-chat-pace-settings-v1).
Session open position
"When a session opens" (Settings → Chat Pace) decides where a conversation
lands when you open or switch to it: Top, Bottom, or Where I left
it. The last reading position of every session is remembered per-session
in localStorage (dsh-chat-pace-scrollpos-v1) regardless of this setting —
as a row anchor plus offset, so it survives content growth and window
resizing — so enabling "Where I left it" later still restores sessions you
left before turning it on. Restores run on timers (not
requestAnimationFrame), yield instantly if you touch the view mid-restore,
and hold their position against the UI's own layout restores for up to
12 seconds.
How it coexists with the shipped follow logic
The shipped ChatView snaps to the bottom on content growth while the reader
is at the bottom, and disengages when a scroll event shows reader movement.
chat-pace recognizes those snaps (floor-adjacent jumps arriving with
scrollHeight growth and no recent user input) and restores the reader's
anchor row; the restore reads as reader movement to the shipped handler, so
it disengages by itself. Smooth/paced motion is written frame-by-frame as
engine-authored scrollTop values — ordinary reader scrolls to the shipped
code — so the two never fight over a frame. Reader intent is tracked via
wheel/touch/pointer/scroll-key listeners on the scrollport.
Support
A minimal read-only diagnostic handle is exposed as
window.__chatPaceDebug in the page console: the engine state, the live
settings (via getSettings()), and a bounded ring of recent engine
decisions (scrollLog). If something misbehaves, that log is the fastest
way to pinpoint it.
License
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 9262
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 9262
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 5677
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 5125
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4413
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1491
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。