READMESource: main@82fd93f1
dsh-chat-ux
English | 中文
面向 DeepSeek Harness(dsh) Web GUI 聊天区的 UX 优化插件。
装好之后,思考行不会一直杵在那儿、过程组该开的时候开该收的时候收、输入框与读数区都换上这个插件的那一套——而读者自己滚到哪里,都不会被动画抢回去。
它做了什么
- 思考行自动开合:思考时自动展开,这段思考结束就收起;读者自己动过手,就不再打扰。
- 过程组自动开合:工具调用开始自动展开,这一段跑完再收起,展开收起都走一道卷帘门过渡。展开体里有好几张卡片的行(
run_code的代码加输出)也是一整扇门,不会一张一张地开合。两者共用一个「自动开合」开关,可在插件页关掉。标准/简洁档里被限高的过程组只滚纵向,这一条常驻、不跟开关走。 - 文件变更行:
run_code里 write / edit 的改动,diff 行直接显示在聊天区;直接调用时,路径、输入大小与+n -m在参数还在流进来时就显示,两个数随内容往上长(内容一到就显示,不必等另一个字段,也不必等路径——写入的参数里file_path排在最后一个字符);行尾那两个数按节拍一跳一跳地弹(让每一轮动画走完整,写入与编辑同款),落定那一下才是实时跟随(默认开着,可在插件页关掉)。 - 光标动效:输入框的光标会滑过去,打字、方向键、点击都算,80 ms。主输入框、提问卡片的作答框、排队消息的编辑框(给跑着的子智能体追加消息时用的那个)都算。
- 聊天气泡动效(默认开):提交那一下输入框原样浮起来一份——工具栏收进两边的角里淡掉,外形收成气泡,字跟着形状重新排版——一路飞进消息列,整段固定 300 ms。位移与形状同一条曲线、都在合成器上(同一个
FLIGHT_MS的时间轴),dsh 发消息那一刻主线程再忙,两条也一起走,右边缘不越界。 - 工作步骤默认标准:网页端把 dsh 的「工作步骤展示」默认补成「标准」(dsh 自己的网页端默认是「详细」)。你之后在 设置 → 通用 → 工作步骤展示 里改过,就以你的选择为准,插件不再动它。
- 缓存命中率:输入框下方那枚胶囊里的读数恒取一位小数,颜色按 90%~99% 六档走——90 以下是红、99 以上是深绿,中间由红经橙黄、黄、黄绿走到浅绿;「缓存命中」这几个字与读数同色(详细档里那个 token 总量与中间那个分隔点不算在内)。读数一变,变了的那几位会原地弹到新数字:从下方一点的位置落回来,旧的朝反方向淡出(500 ms,低位起手更晚);插件页上可以关掉。
- 上下文占用改成饼:原来那圈环换成一枚 16px 的实心饼,颜色按 20%~40% 六档走(20 以下绿、40 以上红),读数与饼同色。已占用那一角沿一条折点在圆心的折线切开,并沿角平分线端出去一点,缺口与那一块之间那道缝处处 1.2px 宽;插件页上可以整枚关掉,回到 dsh 原来的环。旁边那串百分比也会跟着弹。
- 输入框毛玻璃(默认开):输入框自带一条蓝调渐变(两端各一片极淡的色、中间完全透明,端色淡到只是隐约一层),底只让出一成不到,再叠一层轻模糊与顶边亮边、内侧微光、底部内阴影三笔质感;右下角那枚发送按钮(跑起来时是停止)与左下角那枚加号也跟着换成同一套材质:发送是玻璃上的一片蓝,加号是同一块玻璃上的一片灰。下面那排统计与上面那几张卡不受影响,上方那条从画布淡出的过渡带照旧。可在插件页关掉。
- 轨迹视图收掉输入区:切到「轨迹」那一页时,dsh 会把输入框当浮层压在记录表上;插件把整条输入区收掉,记录表铺到底,切回「对话」原样回来。
安装
在 dsh Web GUI 里打开插件页 →添加插件→ 输入包名:
@alm-allen/dsh-chat-ux
或者直接走命令行(等价于在 profile 目录里执行 pnpm):
dsh plugin --profile web add @alm-allen/dsh-chat-ux
装完重启 dsh、刷新页面即可。卸载用插件页的开关,或:
dsh plugin --profile web remove @alm-allen/dsh-chat-ux
从 GitHub 仓库安装
也可以直接从仓库装 —— 仓库里带了构建产物,所以不需要任何构建授权:
dsh plugin --profile web add github:Alm-Allen/dsh-chat-ux
想锁死到某个 commit(后续推送就改不了你装到的东西):
dsh plugin --profile web add github:Alm-Allen/dsh-chat-ux#<commit-sha>
配置
插件装好后,在插件页的这一行上可以直接改:
| 项 | 默认 | 说明 |
|---|---|---|
| 自动开合 | 开 | 关掉后,思考行与过程组都不再自己展开收起,读者自己点开收起照常。 |
| 光标动效 | 无论何时 | 三档:关/移动时/无论何时。 |
| 聊天气泡动效 | 开 | 关掉后,提交时不再有那段起飞,消息照常出现。 |
| 命中率转轮 | 开 | 关掉后,命中率变化时直接换成新数字。 |
| 上下文占用饼 | 开 | 关掉后回到 dsh 原来的环。 |
| 输入框毛玻璃 | 开 | 关掉后,输入区、发送按钮与那枚加号都回到 dsh 原来的样子,背后不再模糊。 |
| 实时改动行数 | 开 | 打开后,直接调用 write / edit 时行尾那两个 +n -m 在内容流进来时就长(两个字段各自到、各自开始数,不等另一半);流式期间那两个数按节拍换数、让数字轮每次都弹完整,落定那一下才是实时跟随。 |
「工作步骤展示」不在插件卡片上:它在 dsh 自己的 设置 → 通用 里,插件只在你没选过时把它补成「标准」。
兼容性
- 在 dsh
0.2.1-alpha.2(网页端)与0.2.1-alpha.1(桌面端)上开发与验证;0.2.0-rc.2及更早的老版本照旧可用(2026-10 那几轮适配曾让三处在老版本上静默失效——命中率那一枚、上下文占用饼、文件变更行的准备态,都已修掉)。 0.2.0-rc.2上读者看到的与新版一样:「缓存命中」那一枚仍是插件画的(一位小数 + 90%~99% 的色阶)。差别在接管方式——那一版 dsh 的坞里只有一枚stats胶囊,按 id 遮蔽不了座位,插件改在 DOM 上把 dsh 自己那一枚收起来(只是display: none),所以也不会并列两枚读数。- 更早的
0.1.x没有逐版核过:data-composer-*那一族是 dsh0.2才有的,输入框下方那一行的结构可能整个不同,认不出时插件不动手。 - Node
^22.19.0 || >=24.0.0。
关于本仓库
这里是插件的源码与发行说明。构建脚本、内部设计文档不在本仓库内,因此 clone 之后不能直接 npm run build;需要用插件请直接安装 npm 上的包。
每个版本的更新记录在 CHANGELOG.md —— 打标签发布时,Release 报告就是从它里面抽的。
No comments yet. Be the first to write one.