Rimlight
![]()
为 DeepSeek Harness 桌面客户端提供「思考时沿窗口边缘流动的流星光带」的轻量美化插件。
简体中文 · English
效果

调试台右上角可切换黑暗 / 明亮两套配色,默认黑暗。
截图为调试台渲染结果(复刻的客户端窗口,深色主题)。
工作方式
会话进入思考状态后,客户端窗口的圆角边框上会出现一条流星式光带,沿边框环绕运行。同时处于思考状态的会话各自拥有一条光带,最多 4 条,按所属会话使用的模型取色,并在同一圈内等距分布。会话结束时,光带飞向与之对应的界面位置,绕行一圈后淡出。
特性
| 行为 | 说明 |
|---|---|
| 思考时流动 | 会话运行期间,光带沿窗口圆角边框顺时针环绕:头部最亮,尾部向后拖出渐变,经过圆角时随轨道弯折。 |
| 多会话并行 | 最多 4 条,每条对应一个会话。新光带加入后,所有光带在 4 秒内同步加减速,平滑收敛到等距位置。 |
| 等待回复反向 | 会话进入等待用户输入的状态时改为逆时针;用户回复后恢复顺时针,方向切换带缓动过渡。 |
| 按模型配色 | 每条光带按所属会话所用的模型取色,预设 12 套(见下表),可在插件设置中固定全局使用配色。 |
| 边缘泛光 | 在光带两侧叠加白色高光与柔光,可在插件设置中关闭。 |
| 结束回程 | 会话结束时,光带飞向对应目标并绕行一圈后淡出:当前对话 → 输入框;后台会话 → 侧边栏中对应行;该行不在可视区域 → 工作区;侧边栏折叠 → 展开按钮。 |
| 渲染隔离 | 绘制在独立覆盖层上,不修改宿主代码,不接收指针事件;DOM 与几何访问均有异常兜底,插件自身异常不会中断客户端渲染。 |
| 多条光带等距分布 | 等待回复时反向 |
|---|---|
![]() |
![]() |

配色
渐变方向为尾部 → 头部,下表列出各 stop 的实色(尾部起止为同色低透明度,故从首个不透明 stop 起列):
| key | 名称 | 渐变(尾 → 头) | 特征 |
|---|---|---|---|
deepseek |
DeepSeek | #2f6bff → #5b8dff → #eaf2ff |
— |
kimi |
Kimi | #8f97a8 → #e6eaf2 → #ffffff |
尾部漂浮粒子 |
openai |
OpenAI | #6f9b8b → #cfe6dd → #f4fffa |
— |
claude |
Claude | #e07a4f → #b64f28 → #ffeada |
— |
zhipu |
GLM | #7285ab → #bccce8 → #f4f8ff |
— |
gemini |
Gemini | #34a853 → #fbbc05 → #ea4335 → #ffffff |
Google 四色 |
qwen |
Qwen | #1d3fd6 → #3f6bff → #dbe6ff |
— |
grok |
Grok | #141518 → #c9ccd4 → #ffffff |
黑→白 |
minimax |
MiniMax | #ff5fc0 → #ff2d63 → #ffdcec |
— |
meta |
Meta | #2f7bff → #0866ff → #e2eeff |
— |
nvidia |
NVIDIA | #76b900 → #a4e01f → #f4ffd9 |
— |
unknown |
Prism | 半透明白多层叠加 | 液态玻璃:色散、边缘形变 |
模型识别以模型 id 与名称为主、供应商为辅;无法识别时使用 Prism,可在设置中改为其它配色。
安装
要求:DeepSeek Harness 桌面版。插件是标准的 DSH bundle 包(cordis.patch.yml + 客户端模块),装进任一 profile 即可。
方式一:插件页安装(推荐)
- 获取本目录(
dsh-rimlight/)。 - 打开「插件」页,选择安装本地插件,目标指向该目录。
- 安装成功后返回
application: applied,插件立即生效;若界面未更新,重启一次客户端。
方式二:命令行安装
dsh 是客户端自带的命令(位于 DeepSeek Harness.exe 同级的 runtime/cli/bin/dsh.cmd,安装时通常已加入 PATH;未加入时用完整路径调用)。它把参数转发给 profile 所在的 pnpm:
# 把插件目录链接进 profile(示例为 desktop,按实际 profile 名替换)
dsh plugin --profile desktop add "link:/绝对路径/dsh-rimlight"
link: 前缀表示直接链接本地目录,而不是从注册表拉取。命令执行后,客户端会把包写入 profile 的 dependencies,并按包内声明的 dsh.bundle.patch 自动并入 dsh.profile.bundles;重启客户端后插件生效。
方式三:从 npm 安装
发布到 npm 之后,标准安装命令就是包名本身:
dsh plugin --profile desktop add dsh-rimlight
pnpm 从注册表拉取预构建产物,插件没有安装期构建步骤,因此不需要 allowBuilds 授权。
方式四:从 GitHub 安装
也可以直接从远端安装:
dsh plugin --profile desktop add "github:<owner>/<repo>"
<owner>/<repo> 替换为仓库地址,例如 github:someone/dsh-rimlight;其他分支或 tag 可写成 github:<owner>/<repo>#<ref>。
卸载
dsh plugin --profile desktop remove dsh-rimlight
该命令会同时从 dependencies 与 dsh.profile.bundles 中移除条目。也可在「插件」页移除 Rimlight。
设置
位于「插件 → Rimlight → 设置」。
| 设置项 | 默认 | 范围 | 说明 |
|---|---|---|---|
拖尾长度 trailLength |
320 | 40–1200 | 尾部可见长度(px) |
粗细 thickness |
6 | 2–24 | 光带宽度(px) |
速度倍率 speed |
1.6 | 0.3–3 | 环绕一圈的快慢 |
扫掠幅度 sweep |
0.62 | 0–0.95 | 一圈内的速度呼吸:0 为匀速,取值越大则拐角越慢、直边越快;改动在 200 ms 内平滑生效 |
泛光开关 edgeGlow |
开 | — | 光带边缘的白色高光与柔光 |
根据对话使用模型自动选择配色 modelColor |
开 | — | 关闭后使用「全局配色」 |
全局配色 theme |
— | 12 套 | 仅在关闭自动配色后显示 |
无法识别时使用的配色 unknownTheme |
Prism | 12 套 | 模型名无法识别时使用 |
调试台
lab/rimlight-lab.html 与 lab/rimlight-lab.js 构成一个独立的交互式调试台:它直接加载本插件的 client.js,复用同一份轨道几何与动画代码,在复刻的客户端窗口中渲染效果,可实时调整参数、切换配色,并模拟多会话、等待回复、输出完成与手动中断等状态。
本地运行(自仓库根目录):
python -m http.server 8733 --bind 127.0.0.1
# 浏览器访问 http://127.0.0.1:8733/lab/rimlight-lab.html
常用 URL 参数(用于脚本化截图或分享特定状态):
| 参数 | 说明 |
|---|---|
mode=thinking | streaming | done | stop |
初始状态 |
n=1..4 |
并发光带数 |
trail=320 / t=6 |
拖尾长度 / 粗细 |
theme=kimi |
强制指定配色 |
multi=1 |
每条光带各自配色 |
reply=1 |
等待回复(反向流动) |
sweep=0 |
扫掠幅度(0 为匀速) |
warm=1600 |
预跑 N 毫秒,便于单帧截取指定阶段 |
click=reset,think&after=900 |
依次点击面板按钮后再预跑 |
项目结构
dsh-rimlight/
├── client.js # 客户端半:覆盖层渲染、轨道几何、动画、设置面板、双语
├── index.js # 宿主半:配置 schema(schemastery)
├── cordis.patch.yml # bundle patch:将插件插入 profile
├── package.json
├── icon.svg
├── locale/
│ ├── zh.json
│ └── en.json
├── lab/ # 独立调试台
│ ├── rimlight-lab.html
│ └── rimlight-lab.js
├── docs/ # README 配图
├── screenshots.json # 插件市场详情页截图清单
└── LICENSE
兼容性
- 仅在 DeepSeek Harness 桌面客户端内运行(web carrier);以浏览器直接访问 DSH 页面时不会加载客户端插件。
- 依赖宿主提供的公开模块(
react、@deepseek-ai/dsh-client-ui-*、@deepseek-ai/schemastery),不打包、不重分发这些模块。 - 光带绘制在独立覆盖层,不参与布局,不接收指针事件。
- 「最终输出」的判定依赖宿主界面的 DOM 结构;宿主版本升级后若内部类名变化,该判定可能失效,此时插件会退化为始终沿边框运行,不影响客户端稳定性。
许可证
本项目采用 Mozilla Public License 2.0(MPL-2.0)。


No comments yet. Be the first to write one.