dsh-universal-palette
已验证@yunmin311/dsh-universal-palette · v0.2.1 · MIT · Web 界面
Dense translucent-glass Universal Palette for DeepSeek Harness Web — federates Commands, Models, Sessions and Conversation Hits with deterministic ranking and verified public-contract interoperability.
安装
dsh plugin add @yunmin311/dsh-universal-palette 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
作者
说明文档
dsh-universal-palette
English | 简体中文 · Language: 简体中文
面向 DeepSeek Harness Web 的命令、会话、模型与历史统一面板:一次按键,当前工作区的一切触手可及。

为什么需要 Universal Palette
DSH 的能力通过插件不断增长:官方与社区插件持续添加 Host 命令、客户端命令 UI、模型与引用源。这些能力的原生入口散落在不同位置——斜杠菜单、模型选择器、侧栏、输入框 @ 菜单——没有一个地方能回答键盘用户真正关心的问题:当前工作区里我现在能用什么,怎么到达?
Universal Palette 为同一个搜索控制器提供两种呈现:有上下文的 Composer Search,以及面向全局导航的悬浮面板。它不维护第二套目录:每一条命令、会话、模型和历史命中都在查询时来自 DSH 的公开 Client API,因此 DSH 与社区生态变化时,Palette 无需任何修改即自动保持正确。
它刻意保持克制:DSH 官方设计令牌、原生界面之上的玻璃质感、跟随界面语言的文案,以及对一切没有经过验证公开 contract 的东西零行为影响。
功能
- 命令 — 完整的实时 Host 命令目录,全部经官方 API 搜索与执行;DSH 或任何插件新增的 Host 命令零适配自动出现。
- 模型 — 会话的真实模型目录与当前选择,经公开选择契约提交。
- 会话 — Current 优先的会话导航,稳定 Session ID 去重,不做按标题合并。
- 历史命中 — 经 DSH 自带的会话全文搜索,展示片段与元数据。
- 确定性相关性 — 精确前缀优先打分加最低相关性门槛;最近使用与上下文只影响真实相关结果的排序。
- 原生外观与语言 — DSH 设计令牌、官方菜单排版与层级、玻璃表面、跟随 DSH 语言的中英文案。
- 公开契约互操作 — 与社区插件按能力检测协作;不读私有 registry、无硬依赖。
快速开始
dsh plugin --profile web add @yunmin311/[email protected]
dsh --profile web
Composer Search
- 从 DSH 原生 slash 菜单输入
/find,或点击 Search 按钮。裸/仍完全由 DSH 接管。 - Composer 始终是唯一查询输入框。
/find query保留在 Composer 中;Search 按钮则直接从当前 draft 打开同一个搜索,不插入/find。 - 活动会话中,结果以紧凑的 DSH 原生样式呈现在 Composer 上方。
- 零轮次 Hero 会话中,结果以同样的 DSH 原生样式直接呈现在 Composer 下方:常规文档流,约 5 行可见加内部滚动,绝不遮挡 Composer。这要求宿主声明
conversation.hero.composer.dock席位——在不提供该席位的宿主(包括官方0.1.2-rc.1)上,Hero 页面的 Composer Search 直接 fail closed,绝不向上回退;见兼容性。 - Hero 与活动会话两种呈现共享同一个控制器、同一组 provider、同一套排序与结果执行。
全局搜索
- Windows/Linux 按
Alt+Q,macOS 按Cmd+Shift+K。 - 打开悬浮面板:零轮次使用紧凑版,活动会话使用完整的 600px 版本。
已有用户的自定义快捷键不会被覆盖。Esc 关闭面板;点击悬浮面板外部会关闭并把点击穿透给 DSH。
使用
| 操作 | 效果 |
|---|---|
/ |
使用 DSH 原生 slash 菜单 |
Search 按钮或 /find |
从 Composer 打开 Composer Search:零轮次 Hero 会话向下展开 Morph,活动会话向上展开 Morph |
Alt+Q(Windows/Linux)或 Cmd+Shift+K(macOS) |
开关全局悬浮面板 |
| 输入 | 模糊搜索命令、模型、会话与历史 |
↑↓ |
移动选择 |
Enter |
打开 / 执行选中行 |
Tab |
操作面板(基础设施;当前内置 provider 仅提供主操作) |
Esc |
关闭 |
两种搜索模式
Composer Search — 上下文 / 嵌入式
活动会话中,Composer 始终是唯一查询输入框,搜索结果以紧凑的 DSH 原生样式直接出现在其上方。零轮次 Hero 会话中,同一个 Search 按钮或 /find 入口以常规文档流在 Composer 下方打开同一个结果面。


全局悬浮面板 — 全局 / 导航式
全局快捷键始终打开悬浮面板。零轮次使用紧凑的 540px 呈现;活动会话使用本页顶部所示的完整 600px 呈现。


搜索面
| 搜索面 | 来源契约 | 动作 | 需要活动会话 |
|---|---|---|---|
| 命令 | ctx.remote.commands.list / execute(官方 Host 目录) |
执行 | 是 |
| 模型 | ctx.modelDirectories(官方模型目录) |
选择 | 是 |
| 会话 | ctx.sessions(官方会话控制器) |
打开 | 否 |
| 历史命中 | ctx.sessions.search(官方 FTS 边界) |
打开 | 否 |
社区互操作
互操作均对真实安装的插件验证——详见互操作矩阵。
Host 命令联邦:自动。 社区插件的 Host 命令(如 dsh-tui-command-ext 的
/clear/rename/unarchive/compact-fast,或/code-review类插件)零适配出现并执行——Palette 读取实时官方目录。
dsh-keys-palette:可选公开桥接。 在其公开的
keys.actionsregistry 注册一个universal-palette.openaction,可为"打开面板"绑定快捷键。插件不存在时零影响。已验证共存: dsh-tui-command-ext、dsh-session-workbench、dsh-reference-anything、dsh-keys-palette、dsh-market——均已在真实 DSH 启动中同时安装验证。
无私有耦合。 Session Workbench 与 Reference Anything 目前没有公开 handoff API;Palette 不做超出共存范围的集成,并把 upstream gap 记录在案而不是绕过。
这不是"支持所有插件"——只消费上述契约,全部能力检测,插件不存在时零行为变化。
给插件作者
Universal Palette 联合的是 DSH 的公开契约——想出现在面板里,不需要和 Palette 集成。
- Host 命令:通过 DSH 官方 Host 命令契约(
ctx.commands.register)注册即可,Palette 每次查询都会从实时目录自动发现你。无需依赖 Palette、无需 adapter、无需协调发版。 - 更深的互操作:只有当你的插件暴露稳定公开 Cordis service 时,才会考虑做可选的、按能力检测的 adapter;插件未安装时必须零影响、卸载时生命周期正确。现行正例是 dsh-keys-palette 的公开
keys.actionsregistry——Palette 借它贡献了一个可绑定快捷键的"打开面板"action。 - Client-only
commandUi命令、私有 registry、DOM 状态、内部路由均不接入——这些场景保持共存关系,等待公开 API(upstream gaps)。 - 会话 / 引用 / 工作区类插件同理:公开 handoff service 或官方契约是进入 Palette 二级集成的唯一路径;没有公开 seam 即
WAIT_PUBLIC_API。
Universal Palette 目前没有 Provider SDK,也没有相关计划。推荐的生态路径是:**向 DSH 注册,Palette 联合公开契约。**细节与已验证案例见互操作矩阵。
兼容性
已验证:
@deepseek-ai/[email protected](baseline,deepseek-ai/deepseek-harness@76fda729799fe9b3848dbe2c211d4b231032b81e)@deepseek-ai/[email protected](API drift 已验证;仅兼容 seam)
其他 DSH 版本未验证。详见 COMPATIBILITY.md 与 COMMAND_COMPATIBILITY.md。
0.1.5-rc.1 API drift(不影响 Universal Palette)
Palette 仅消费以下公开 Client seam;这些在 0.1.2-rc.1 与 0.1.5-rc.1 之间兼容:
ctx.remote.commands.list— 形状不变ctx.sessions.list / binding / search / open— 形状不变ctx.workspaces.list / create— 不变ctx.modelDirectories.directoryFor / load / select— 不变ctx.inputTriggers.registerSource / sessionOf / adjudicate— envelope 字段images→attachments重命名(Palette 不提交 images)ctx.slots.spec / subscribe / inject / register—shell.overlay、conversation.input.left、conversation.input.overlay、conversation.hero.composer.dock、conversation.composer.dock、sidebar.footer.action名称不变locale、plugin lifecycle— 不变
0.1.5 的破坏性变更(如 commands.execute 第 3 参数 images→attachments、session 格式 V3、wire seedLength→isSeeded、history events 重组)均不与 Palette 调用面相交。
Hero 页面
- Stock
0.1.2-rc.1/0.1.5-rc.1:无conversation.hero.composer.dock→ Composer Search 直接 fail closed(Search 按钮禁用并给出原因;/find被 claim 但返回 capability 错误;绝不向上回退)。 - 增强 Hero 体验(向下 Morph)要求宿主声明
conversation.hero.composer.dock。已完整验证的宿主是维护者自己的增强 fork(yunmin311/deepseek-harness,分支feat/hero-composer-dock,SHA321bf88d10e0176674226d02de59d3e0bd79579d)。这不是 upstream 支持;该 fork 将作为完整 Hero 体验的长期增强宿主维护。
Desktop
- 当前无官方 DeepSeek Desktop 安装包发布。上游仓库包含 Desktop 打包基础设施(
apps/desktopElectron shell +apps/desktop-host),但https://download.deepseek.com/_/harness/desktop/stable/...无安装包(审查时 404)。 - 社区封装(Electron/Tauri/Wails shell 打包 stock
dsh web)存在但不在 verified matrix。 deepseekagent.io/ 第三方站点非官方 DeepSeek 产品。
隐私与安全
- 无遥测、无统计埋点。
- 不发起任何自己的网络请求:一切经由 DSH 进程内的公开 Client API。
- 不读取、不存储任何凭据;验收 profile 本身即无凭据运行。
- 用户偏好(快捷键、使用频率)保存在浏览器
localStorage中本插件自己的命名空间下。 - 历史搜索委托 DSH 的会话 FTS;其数据库属于 DSH profile,不属于本插件。
测试
pnpm run check— 类型检查 + 单元测试(含 Keys Palette 桥接生命周期)。pnpm run build— Host ESM 面 + 带 purity gate 的浏览器 CJS bundle。- Windows 真机验收:官方命令兼容性 gate(
scripts/command-compat.mjs)、多插件共存探针(scripts/interop-probe.mjs),证据见evidence/。
已知限制
- 锁定 DSH
0.1.2-rc.1;其他版本未验证。 - Client-only
commandUi命令(如弹出式选择器)不可发现——DSH 尚无公开枚举接口(upstream gaps)。
开发
pnpm install
pnpm run check
pnpm run build