dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 插件:侧栏工作区行四态灯(🟡 待交互 / 🔄 执行中 / 🟢 已完成 / ⏰ 仅定时)+ 会话「⋯」菜单 Mark as unread。纯客户端,外观复用宿主原生组件。
说明:
| 状态灯 | 含义 | 优先级 |
|---|---|---|
| 🟡 | 该工作区有会话在等你(提问 / 待批准) | 1(最高) |
| 🔄 | 有会话正在执行(转圈) | 2 |
| 🟢 | 有会话已完成但你没看过 | 3 |
| ⏰ | 只剩定时任务 | 4(最低) |
插件注册一个 ctx.shortcuts 命令 workspace-light.markUnread,把同一个「标为未读」动作暴露给键盘。
它不带默认键(defaults: {}),需要你在用户覆盖里自己绑 —— 例如 ⌘R:
// ~/Library/Application Support/@deepseek-ai/dsh-desktop/keybindings.json
{
"schemaVersion": 2,
"profiles": {
"desktop:macos": {
"workspace-light.markUnread": { "code": "KeyR", "modifiers": ["meta"] },
"page.refresh": { "code": "KeyR", "modifiers": ["alt", "meta"] }
}
}
}
为什么要把
page.refresh一起写:宿主内置的「刷新当前页」默认就是 ⌘R。 显式覆盖虽然能压过默认("Explicit overrides displace defaults"),但那等于把刷新静默挤没; 顺手把它挪到 ⌥⌘R(宿主 Web 端本来就用这个组合)才不丢功能。
为什么不做成默认键:注册期 parseShortcutDefinitions 会逐 profile 检查默认键重叠 ——
同一 profile 下两条命令不能占同一个默认组合。page.refresh 已占 ⌘R 的默认,
本命令若也声明 ⌘R,会直接抛 Conflicting or reserved shortcut default 导致注册失败。
所以这里用 defaults: {},绑定只走用户覆盖。
目标会话如何确定:快捷键没有菜单上下文,故读宿主会话行的语义属性 ——
[data-row-key^="session:"][aria-selected="true"](不是 CSS module 哈希类名,宿主升级不易失效)。
没有选中会话时返回 blocked(no session selected),不会误标。
改完键位需重启 DSH(桌面端没有文件监视器);也可在 设置 → 快捷键 面板里录制,两条路等价。
⚠️ 改名时注意:命令 id 是用户可见契约(
keybindings.json以它为键),green-light.markUnread→workspace-light.markUnread这次改名就让绑定静默休眠了。 详见 INSTALL.md §7。
会话可以用标签组织 —— 这是本插件第二个一等公民能力。
a/b 这种带 / 的名字会直接建立层级;已贴到会话上的标签不受影响(关联按 id)。14min ⋯ [标签]2。没有标签的行仍保持宿主「仅悬停显示」的行为。iconButton(28px / --dsw-radius-sm / hover 高亮底色)。菜单内只有分组 / 排序 / 筛选三组。/ 分段自动成树,如 工作/紧急)/ 单列表;
排序 手动(可拖拽)/ 最近更新 / 按名称 / 按使用次数;
筛选会话 隐藏已归档 / 全部(显示已归档)/ 仅显示已归档。test/test1 贴到会话上不等于贴了 test。
面板里选中某个标签只列出显式贴上它的会话,右侧数字也是它自己的用量;
中间的隐式层级(没有对应标签记录)自然为空。状态灯仍按子树聚合(这是你此前要的"逐级穿透")。标签数据存在浏览器本地(
localStorage),不跨设备同步、换浏览器会丢。面板走的是宿主官方的「全局面板」机制(
sidebar.panellist+main键控条目), 因此内容渲染在主区域 —— 而不是塞进侧栏标题栏(那里没有插槽)。
dsh plugin --profile <你的profile> add \
https://github.com/luzonghao/dsh-workspace-light/releases/latest/download/dsh-workspace-light.tgz
新增 bundle 后需重启 DSH;此后改代码只需刷新页面。 其余装法(目录 / npm / git)、卸载、手工等价操作见 INSTALL.md。
node test/logic.test.mjs # 离线单测 70 例,不需要 DSH
__dshWorkspaceLight.panel() # 在页面右下角显示诊断面板(可直接截图)
useWorkspaces / sessionStatus,因此折叠的工作区组也会计入汇总;localStorage),不跨设备同步;| 文件 | 内容 |
|---|---|
| INSTALL.md | 安装 / 卸载 / 验证 / 发布 |
| index.md | 设计、决策与全部修订记录(含实现细节) |
| LICENSE | MIT |
第三方插件,与 DeepSeek 官方无关。安装第三方 dsh 插件等于在本机以你的权限运行其代码 —— 请先读源码。