dsh-matrix-terminal: A terminal skin for DSH Web UI

前言

在 DSH Web UI 里跑长会话的人常会遇到同一件事:聊天窗口里挤满工具调用、compaction、retry 这类过程行,真正想读的问答被冲散;界面本身也是通用编辑器观感,看不出「这是一条终端会话」。dsh-matrix-terminal 就是处理这两件事的。

它是 DSH 社区插件,维护者是 victorcastro55(package.json 作者名写作 Victor Castro Solalto),归类「趣味换装」,星标数为 0。社区目录页在 https://www.skillhub.cn/plugins/victorcastro55/dsh-matrix-terminal ,源码在 https://github.com/victorcastro55/dsh-matrix-terminal 。下面介绍它的能力、安装方式和几点限制。

这是什么

一句话定位:磷光绿终端皮肤,把 Web UI 的排版、配色、光标和会话信息层级往终端方向重排。它不改功能,不改行为,只改界面呈现。

装上后会话的观感是:左侧只剩提示和回答,像一份 transcript;右侧多出一块工作日志;composer 下方多出一行伪提示符。

核心功能

README 把改动拆成几块,分别是:

设计令牌

Web UI 读取的 123 个 --dsw-* 令牌全部被覆盖——surface、文字阶梯、发丝线、brand、按钮、交互底色、状态、菜单、markdown 与代码块、diff、滚动条,加几何(圆角全部 0px)和字体族。没有在令牌之上硬涂颜色,皮肤不会和主题系统打架。

注入样式

令牌表达不了的部分走一张注入样式表:

  • body::after:扫描线遮罩,每三个像素一行暗条,指针穿透。
  • body::before:从顶部往下的磷光晕染,边缘加 vignette。
  • 一套只走绿色、按亮度分层的 Shiki 主题,代码块保持等宽绿。
  • 标题加 text-shadow,滚动条切方角,caret 和文字选区变绿。

提示符行

在 composer 底下挂一个 conversation.composer.dock 槽位,内容是 harness@matrix:~$、会话 id 的前八个字符、一个闪烁的方块光标。如果配套装了 balance 插件,右侧再对齐显示账户余额。

聊天区变 transcript

原本内联打印的过程行——工具调用、turn 过程、system prompt、context、compaction、retry、workflow run——不再留在聊天流里,而是投影到右侧日志。聊天区只保留输入、模型回答和本轮的结束方式。

右侧工作日志

right sidebar 里多出一个页面类型,分为上下两块:上面是 reasoning,每想一步一条;下面是 work log,每次工具调用或过程事件一行,带时钟、标签、主题和耗时。两块各自跟随各自的尾部,一旦你滚动离开就释放。日志每个会话自己开一次;你关掉之后到下一次切换会话之前不会再自动弹出来。

安装与启用

README 写明还没有发布到 npm,直接从仓库装:

dsh plugin --profile web add github:victorcastro55/dsh-matrix-terminal

重启 dsh web(或让 profile 自行重载)之后皮肤生效。想同时让提示符行显示余额,装配套插件:

dsh plugin --profile web add github:victorcastro55/dsh-matrix-terminal-balance

如果要改皮肤源文件并即时生效,可以 clone 后链接工作树:

git clone https://github.com/victorcastro55/dsh-matrix-terminal.git
dsh plugin --profile web add link:"$PWD/dsh-matrix-terminal"

卸载:

dsh plugin --profile web remove dsh-matrix-terminal

README 说令牌层、样式表和日志页类型全部注册在插件自己的 effect scope 里,所以删除后没有残留,重启即恢复原生 Web UI。

典型用法

不需要写配置文件,装好、重启、开 Web profile 就用。进会话之后:

1、左侧是对话 transcript,过程行已不在其中。
2、右侧自动出现 reasoning 与 work log 两块。
3、composer 下方是提示符行,光标在闪。

README 对运行环境的要求是 DeepSeek Harness 0.2.1-rc.5 或兼容版本,并且走 Web profile。

有两点要注意。其一,work log 依赖右侧 sidebar;如果实例没有侧栏,皮肤照样装上,只是这一栏拿不到内容。其二,皮肤只做深色,README 原文写的是「A terminal has one look」,明确不做浅色分支。

它是怎么做到的

README 的实现说明很短:index.js 是 host 侧入口,什么都不做;皮肤完全在 client 侧。client.js 依次做了五件事——注册 en / zh 两个 locale namespace;用 ctx.theme.overrideTokens('dsh-matrix-terminal', …) 推色板,叠在当前主题之上而非替换主题系统;把样式表带 data-plugin 标记挂进 DOM,销毁时移除;注册提示符槽位;按需注入 sidebarRightTabs / sidebarRight,然后在右侧注册 work log 页类型。

整个皮肤没有网络请求、没有遥测,数据不出页面。家族里唯一可能的出网请求来自配套的 balance 插件,它跑在 host 进程里,且不暴露密钥。

适用场景与注意

适合两类人。一是把 Web UI 当长会话阅读终端、嫌聊天区被过程行冲散的开发者;二是想给 Web UI 换一套深色皮肤、且不介意只保留一种视觉的人。

两点使用前提需要自己确认。第一,插件以当前 dsh 进程权限运行,装之前应当看一下源码和许可证;本项目是 MIT 许可,作者声明与 DeepSeek 没有隶属关系,也没有重新分发 Harness 的资源。第二,皮肤只作用于 Web profile;host 侧是空的,所以只读部署的主机或远程主机同样能工作,对一些共享环境是优势。

结尾

dsh-matrix-terminal 做的事很单一:把会话界面往终端的观感和信息分层上推——问答留在左边像 transcript,过程进右边日志,界面统一为磷光绿等宽。功能边界清楚,没有多余动作,适合当一件换装皮肤来尝。社区目录页是 https://www.skillhub.cn/plugins/victorcastro55/dsh-matrix-terminal ,源码在 https://github.com/victorcastro55/dsh-matrix-terminal 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye