使用 dsh-plugin-ya-workspace-sidebar 替换 DeepSeek Harness 工作区侧栏

前言

DeepSeek Harness(简称 dsh)是 DeepSeek 开源的 Agent 运行时,官方口号是「一切皆插件」:模型、工具、技能、会话、沙箱、存储、循环、调度,以及 Web UI 本身,都可以在配置层替换,而不必改核心代码。当前仍处于开发者预览阶段,API 会持续变动。

Web UI 默认用 ui-workspace 管理左侧的工作区与会话。会话一多,扁平列表就不容易按项目定位:最近用过的会话、某个工作区里按日期排开的记录、还没归组的会话,会挤在同一条时间线上。社区插件 dsh-plugin-ya-workspace-sidebar 专门替换这块浏览界面:顶部固定 5 条全局最近会话,下方改成 Workspace → Session 二级菜单,并用面包屑标明当前位置。

需要先说明两点。第一,社区插件目录(例如 deepseek-harness-plugin.com)是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。第二,同类界面增强里还有 DSH-better-sidebar,那是右侧栏/底部面板工作台,并开放 ctx.betterSidebar 给其他插件注册页面;本文介绍的插件只替换工作区/会话浏览器,两者不要混用成同一个东西。

这是什么

dsh-plugin-ya-workspace-sidebar 是一款面向 DSH Web UI 的界面增强插件,由 HuanLinOTO 维护,npm 包名为 @huanlin/dsh-plugin-ya-workspace-sidebar。截至 2026-08-18,npm 最新版本是 0.3.0(2026-08-16 发布),GitHub 仓库星标为 11,目录页同步到的星标为 8,以仓库页面为准。主要语言是 TypeScript,客户端声明的运行平台是 web

它要解决的问题很具体:在不改 DSH 源码、也不重做会话存储的前提下,把官方工作区侧栏换成「最近会话 + 工作区二级导航 + 面包屑」的信息架构。搜索、添加工作区、重命名、删除、Fork、归档仍然走 DSH 原生 Host 能力,插件自己主要负责浏览结构。

实现上它是 bundle 插件。cordis.patch.yml 会禁用官方 ui-workspace,再插入 @huanlin/dsh-plugin-ya-workspace-sidebar。官方 ui-workspace 同时占用 sidebar.workspacesconversation.hero.workspace 两个插槽,替换插件必须把这两个座位都接上,对话页顶部的工作区选择器才不会空掉。Host 侧的 apply() 是空实现,逻辑集中在浏览器端。仓库里的 dsh/ 只作类型和行为参考,插件不会修改 DSH checkout。

核心功能

结合目录页介绍、仓库 README、AGENTS.md 以及 src/client 源码,当前已核实的能力如下。

1、顶部全局最近会话。侧栏上方固定展示最多 5 条最近会话,按 updatedAt 新到旧排序。搜索进行时这块会隐藏,避免和搜索结果抢位置;无搜索时可以折叠。子 Agent 来源的会话、已归档会话不会出现在这份列表里。

2、Workspace → Session 二级菜单。第一级列出真实工作区,并额外提供一个虚拟的「未分组」项,用来收未归属任何工作区的会话。点进某个工作区后,第二级只显示该工作区的会话。工作区行会显示会话数量和路径。

3、面包屑导航。进入二级后,顶栏变成「工作区 > 当前工作区名称」。点「工作区」返回一级列表。仓库说明里写过:手动点面包屑返回后,会停在根级,直到当前会话 id 变化。

4、按本地日历日期分组。真实工作区的会话按本机日历分成「今天 / 昨天 / 更早日期」,组按日期从新到旧,组内按 updatedAt 从新到旧。未分组列表仍按最近活动平铺,不做日期分组。从 0.2.0 起,日期分组视图关闭了拖拽排序。

5、搜索。侧栏提供会话搜索,本地会匹配会话标题和工作区名称;同时调用 Host 的 sessions.search。内容搜索不可用时,界面会提示仅显示名称匹配。搜索防抖是 250 毫秒。

6、工作区与会话操作仍走 Host。添加工作区、在工作区里开新会话、重命名工作区/会话、删除工作区、Fork 会话、归档会话,都调用 ctx.workspaces / ctx.sessions。删除工作区的文案写得很清楚:只从工作区列表里移除该项,文件夹和会话记录会保留。

7、归档/删除显示模式(0.3.0)。会话行的破坏性操作默认是「归档」。可以切换成「删除」外观:红色垃圾桶图标,并弹出二次确认。底层调用仍是 Host 的 archiveSession,作用是让会话从分组界面消失,日志还在。这个偏好写在浏览器 localStorageya-workspace-sidebar:action-mode 里,不跨设备同步。

8、中英文案。插件注册了 ya-workspace-sidebar 语言包,侧栏文案有中文和英文两套。会话行还能显示进行中、等待交互、已完成等状态。

安装与启用

先确认本机已经能打开 DSH Web UI。官方快速启动方式是:

npx @deepseek-ai/dsh web

默认地址是 http://127.0.0.1:3080。插件要求 Node.js 不低于 22。

社区目录页给出的安装命令如下,在 DeepSeek Harness 终端里运行即可:

dsh plugin add github:HuanLinOTO/dsh-plugin-ya-workspace-sidebar

如需可复现安装,目录页建议固定 commit 哈希。当前 0.3.0 对应的提交是 d8bcf353c77beb2d99b8e242a3d7dca2c11a820a,可以写成:

dsh plugin add github:HuanLinOTO/dsh-plugin-ya-workspace-sidebar#d8bcf353c77beb2d99b8e242a3d7dca2c11a820a

仓库 README 把 npm 安装标为推荐,并且显式加了 web profile,因为这是浏览器端插件:

dsh plugin --profile web add @huanlin/dsh-plugin-ya-workspace-sidebar

本地开发(热更新)在 README 里的示例是:

dsh plugin --profile web add "link:D:/Projects/deepseek-harness/ya-workspace-sidebar"

路径要换成你自己的仓库目录。改源码后需要重新执行 pnpm run build,再重启 dsh web,并在浏览器里硬刷新。仓库发布时会提交预构建的 lib/,其中 lib/client.jswindow.__ModuleLoader__.load() 包装。

目录页有一条安全提示,需要照原文理解:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。

使用方法

安装完成后,按 README 重启 Web UI 并硬刷新浏览器。官方工作区侧栏会被替换成下面这套结构。

1、看最近会话。侧栏顶部是「最近会话」,最多 5 条,带相对时间(刚刚、n分钟、n小时等)。点某一条即可打开对应会话。

2、按工作区往下钻。下方第一级是工作区列表。点某个工作区进入第二级,只看这个工作区的会话;真实工作区里会按「今天 / 昨天 / 日期」分组。没归组的会话在「未分组」里。点面包屑的「工作区」返回一级。

3、搜索会话。在搜索框输入名称或关键词。有匹配结果时,顶部最近会话会让位给搜索列表。Host 内容搜索失败时,会退回名称匹配。

4、管理工作区。侧栏提供「添加工作区」。真实工作区的菜单里可以重命名或删除;删除会再确认一次,并且只移出列表。工作区行上的加号会在该工作区开新会话。

5、管理会话。会话菜单提供重命名、分叉、归档(或删除外观)。右上角可以切换归档/删除模式。删除模式只改变按钮样式和确认框,不会改成另一套 Host API。

6、对话页顶部的工作区选择。因为插件同时接管了 conversation.hero.workspace,对话英雄区里选工作区、添加工作区仍然可用,不会因为禁用了官方 ui-workspace 而缺一块。

以上步骤都来自仓库 README、AGENTS.md 和客户端源码,没有额外配置项需要手写。

适用场景与注意事项

适合已经在 DSH Web UI 里开了多个工作区、会话数量比较多,希望按「项目 → 会话」、再按日期回看记录的人。如果你主要用终端 TUI,或者需要的是文件预览、Git、子智能体那一类右侧工作台,这个插件对不上,那些需求应看 dsh-TUIDSH-better-sidebar 等其他界面增强插件。

使用前有几件事需要注意。

1、只面向 Web。package.jsondsh.client.platformweb,不要指望它改 headless 或纯终端界面。

2、它会禁用官方 ui-workspace。同一套侧栏座位上不要再叠另一个工作区浏览器。装完后如果侧栏空白,优先检查是否硬刷新、以及 web profile 是否装到了正在运行的那个实例。

3、日期分组和拖拽互斥。0.2.0 为了按本地日期分组,去掉了会话拖拽排序;不要再按旧 README 片段去找拖拽。

4、所谓「删除会话」不是物理删日志。源码注释写明:Host 对外只提供 archiveSession,删除模式只是把归档做成更醒目的确认流程。工作区「删除」也只是移出列表。

5、许可证。package.json 与仓库 LICENSE 声明为 AGPL-3.0。GitHub 和社区目录目前把许可证显示成 NOASSERTION,这是元数据识别结果,以仓库内的许可证文本为准。AGPL 对网络服务有源码 reciprocal 义务,二次分发或改过再挂出去之前应自己读一遍条款。

6、权限与预览版风险。插件以当前 dsh 进程权限运行;DSH 仍在开发者预览,插槽和 Host API 都可能不兼容升级。安装前看源码,生产或共享环境建议固定 commit。

7、社区目录不是官方商店。本文依据的是社区目录页和 GitHub/npm 仓库,不是 DeepSeek 官方应用列表。

小结

dsh-plugin-ya-workspace-sidebar 做的事情很收束:替换 DSH Web 的工作区侧栏信息架构,把全局最近会话、工作区二级菜单、面包屑和按日分组叠在官方 Host 能力之上,而不去改会话存储,也不去改 DSH 源码。会话多、工作区多的时候,这条导航路径比扁平时间线清楚。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-ya-workspace-sidebar/

GitHub:https://github.com/HuanLinOTO/dsh-plugin-ya-workspace-sidebar

npm:https://www.npmjs.com/package/@huanlin/dsh-plugin-ya-workspace-sidebar

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜