ywsldxk
dsh-color-preview
DeepSeek Harness 颜色预览插件:按需预览对话中提到的十六进制颜色
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-color-preview
DeepSeek Harness 颜色预览插件:按需预览对话中提到的十六进制颜色。
当模型在对话中给出一个颜色代码(如 #F59E0B)时,你只需要说一句「预览这个颜色」,对话流里就会渲染出一张色块卡片——72px 真实色块 + RGB / HSL / WCAG 对比度 / 颜色名。
为什么做这个
Codex 终端里输入 #F59E0B 会显示一个同字号的小色块,而 DeepSeek Harness 没有这个能力。我们本可以修改 markdown 渲染器全局扫描 #hex,但那会:
- 引入常驻扫描的性能开销(每个 text 节点跑正则)
- 产生误匹配(
#fff、#123456在代码、issue 编号里到处都是) - 需要 patch 编译产物,升级即被覆盖
这个插件选择了另一条路:零扫描、零渲染开销,只有工具被调用才工作。这正是「按需」的含义——不常驻、不打扰、要的时候一秒钟出结果。
特性
- ✅ 按需触发:模型给出色号 → 你说「预览」→ 卡片出现。不扫描、不常驻、零性能影响
- ✅ 真实色块:对话流内渲染 72px 色块,暗色自动配白字、亮色配黑字
- ✅ 完整信息:RGB / HSL / 白字对比度 / 黑字对比度 / 常用颜色名(中英双语)
- ✅ 格式宽容:支持
#F59E0B(6 位)、#fff(3 位)、#ff000080(8 位含透明度) - ✅ 纯增量:注册在
tool.call.toolview的开放 key 域,不替换任何官方 UI - ✅ 无源码改动:纯 Cordis 动态插件机制,不动 node_modules,升级不丢
安装
方法一:作为 preset 静态插件(推荐,持久)
- 把
color-preview.mjs复制到你的 agent preset 目录:
$target = Join-Path $env:USERPROFILE '.dsh\.agent-presets\<你的preset>\color-preview.mjs'
Copy-Item -LiteralPath .\color-preview.mjs -Destination $target
- 在
agent.cordis.yml里加一行(放在任意位置):
- id: color-preview
name: ./color-preview.mjs
- 重启 DSH,新建会话即可。
方法二:作为动态插件(临时体验)
如果你只是想试试,可以在 DSH 的创造模式(cordis preset)里用动态插件机制加载本文件的 host / client 两半。
使用
- 对话里让模型给一个颜色(或自己提一个):「帮我看看 #F59E0B 这个颜色」
- 模型调用
color_preview工具 - 对话流里出现色块卡片:
┌──────────────────────────┐
│ ████████████████████████ │ ← 72px 真实色块
│ #F59E0B │
├──────────────────────────┤
│ 名称: Amber 琥珀 │
│ RGB: rgb(245, 158, 11) │
│ HSL: hsl(38, 92%, 50%) │
│ 白字对比度: 2.15:1 │
│ 黑字对比度: 9.78:1 │
└──────────────────────────┘
工作原理
Host 半:harness.defineTool 注册 color_preview
hex → RGB → HSL → WCAG 亮度/对比度 → 颜色名
↓ 返回 JSON
Client 半:slots.register('tool.call.toolview', key='color_preview')
读取 ToolCallBlock(RunningToolCall | ToolResultNode)的 argsRaw + content
→ 渲染色块卡片
关键点:Client 读取的 ToolCallBlock 字段是 callId / argsRaw / content(RunningToolCall 与 ToolResultNode 两种形态),不是 arguments / result——这是本插件调试中踩过的最大的坑。
兼容性
- DeepSeek Harness
0.1.0-rc.6实测通过 - 需要支持动态工具注册(
harness.defineTool)与tool.call.toolviewSlot 的版本
许可
MIT License。参见 LICENSE。
相关
- DeepSeek Harness — 官方仓库(社区插件请发布到自己的项目并打上
dsh-plugintopic)