dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
虹语(RainbowSpeak)——沿聊天输入框边界持续流动的彩虹跑马灯,由锥形渐变环带驱动。支持流速、宽度、七种配色、方向、边与呼吸效果的实时设置,并具备会话状态感知:运行中加速、需关注变琥珀、出错红脉冲、庆祝闪动。
中文 · English
不接管任何插槽、不打宿主补丁、不注册工具、不注入系统提示。彩虹环是纯浏览器端装饰:一条 conic-gradient 圆环经蒙版只留卡片边缘,靠注册的自定义属性旋转流动。引擎不支持 @property 时自动降级为静态渐变环。
桌宠也遵守同一条边界:宿主侧只多了一条只读的回合边界流(会话身份 + 回合序号 + 结束原因),不携带任何聊天内容、历史或审批细节;浏览器侧只往 shell.overlay 挂一个浮动条目,不改宿主的任何既有界面。
除了边框,插件还带来「小虹」——一只住在 DSH 窗口里的彩虹水滴桌宠。可拖拽、记住位置,挂在 shell.overlay 浮动层上,六种状态随手切换:待机 / 干活 / 等你点一下 / 庆祝 / 出错 / 打盹。
小虹的成功与失败以宿主的回合边界为准(经 Typert 远端读 session/event 的 turn/end):被取消的一轮不会报喜,报喜是撒谎。远端不可用时它只依据客户端会话状态做「在跑 / 在等你」的表情,安静降级,不编造结论。
Shift+F10):小菜单——关注范围 / 大小 / 让它躲一会儿;彩虹环实时反映会话:agent 运行中加速(4 s → 1.2 s/圈);工具审批或向用户提问待处理时转琥珀色慢脉冲;发送失败或 agent 出错转红色快脉冲;一轮完成播放一周期的庆祝闪光。不用盯屏幕,余光就知道它干活到哪一步。
经典彩虹 / 极光 / 日落 / 蜜桃 / 海洋 / 赛博霓虹之外,还有跟随主题——经 color-mix 从宿主品牌色派生,深浅主题切换即时跟随,永不出戏。
[data-composer-card] 宿主锚点)四周流动彩带,经注册的 @property 角度驱动渐变真实动起来;不支持 @property 的引擎降级为静态渐变环。shell.overlay(帧级浮动层,宿主推荐给「可拖拽置顶小挂件」的席位),可拖拽、位置持久化、点一下冒泡打招呼;形象是纯 CSS 几何,无任何外部素材,因此没有第三方形象的授权问题。Shift+F10)打开小菜单(关注范围 / 大小 / 隐藏)。remote.rainbowPet/watch),浏览器半逐帧用同一份 Zod schema 校验后再采信;断号即重连,绝不拿半截状态糊弄用户。Settings → Rainbow border):启用/禁用、流速(1–10 秒/圈)、环宽(1–6 px)、配色、位置(四边/顶部/底部)、反向流动、呼吸亮度叠加;以及桌面宠物分组:启用桌宠、关注范围(全部会话 / 当前会话)、动画强度(全量 / 轻柔 / 关)、桌宠大小(0.6–1.6×)。全部偏好持久化在 localStorage,即时生效。color-mix 从宿主品牌令牌派生。prefers-reduced-motion(动画禁用、保留静态环);设置控件带本地化标签与 aria 属性。赛博霓虹 · 极光 · 日落 · ·
跟随主题(浅色模式):边框取自宿主品牌色,主题切换即时跟随。
从 dsh CLI 安装:
dsh plugin add @kenz1117/dsh-ui-rainbowspeak或手动加入 profile 的 package.json:
{
"dependencies": {
"@kenz1117/dsh-ui-rainbowspeak": "*"
}
}本地开发可将依赖指向一个 checkout:
{
"dependencies": {
"@kenz1117/dsh-ui-rainbowspeak": "link:/absolute/path/to/dsh-ui-rainbowspeak"
}
}然后在 profile 目录执行 pnpm install 并重启宿主。使用 link: 形式时,插件仓库里跑一次 pnpm bundle,宿主下次重启即取到改动——无需重装。
::before 绘制覆盖整个色轮的 conic-gradient;mask 合成把内部裁掉,只留边缘环带,圆角对齐卡片半径。环宽与流速从 --dsh-rainbow-* 变量读取。--dsh-rainbow-angle 经 @property 注册为 ``,渐变起始角因此可插值;关键帧让它旋转 360°。 的 data-rainbow-*` 属性与内联 CSS 变量,每个开关即时生效、无需重建样式表。rainbowPet:监听 session/event 的 turn/start / turn/end,只投影边界元数据(会话身份、回合序号、结束原因),不读历史、不留内容、不碰审批。经 ./typert 子路径贡献给 Typert 网关。ctx.remote.$mount() 挂载同一份契约,再注入 remote.rainbowPet 命名空间消费事件流;逐帧用与宿主同源的 Zod schema 校验,帧序号必须连续,断号即退避重连。pnpm install # 依赖(peer 经 scripts/link-peers.mjs 链入 monorepo checkout)
pnpm test # vitest 套件(node 半边、偏好钳制、状态投影、桌宠状态机与互动数学、bundle 冒烟)
pnpm typecheck # tsc --noEmit
pnpm bundle # tsdown: lib/index.js + lib/remote.js + lib/typert.host.js(node 半边)+ lib/client.js(浏览器 IIFE)
pnpm preview # 生成 preview/pet-states.html:六种表情的离线对照页(改 CSS 后用它一眼看全)client 半边是注入宿主 web 客户端的自包含 IIFE;node 半边提供彩虹状态桥与桌宠的只读边界服务,并导出 ./typert 宿主面清单。
preview/pet-states.html 不依赖宿主:把 src/client/pet.module.css 原样内联,配六份静态标记。改完 CSS 跑一次 pnpm preview,浏览器打开即可对照六种状态——比每次都去宿主里点一遍快得多。
web(desktop/web 宿主渲染)。流动动画需要 @property 支持(所有 Chromium/Electron 构建均可用);其他引擎显示静态环。@deepseek-ai/cordis(由宿主在运行时提供)。@deepseek-ai/dsh-typert-loader)与客户端 Remote 运行时;缺失时插件照常加载,桌宠降级为「只看客户端会话状态」。MIT © 2026 KenZ (kenz1117)