dsh-workspace-toolkit
已验证dsh-workspace-toolkit · v0.1.2 · MIT · Web 界面
DSH 工作区增强工具包:在资源管理器中打开、批量归档会话,以及后续文件/会话操作功能
安装
dsh plugin add dsh-workspace-toolkit 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
说明文档
dsh-workspace-toolkit
DSH workspace enhancement toolkit: add "Copy Workspace Path" and "Batch Archive Sessions" actions to every workspace row in the DSH sidebar.
DSH 工作区增强工具包:在资源管理器侧边栏的每个工作区行注入“复制工作区路径”和“批量归档会话”快捷操作。
Features
复制工作区路径 / Copy Workspace Path
- 出现在每个 workspace 行右侧的“⋮”菜单中。
- 从
ctx.workspaces.list读取该工作区的绝对路径,调用剪贴板 API 复制到系统剪贴板。 - 无路径或复制失败时给出提示。
批量归档会话… / Batch Archive Sessions…
- 从工作区菜单打开会话列表面板。
- 列出该工作区下所有非空白、未归档的会话(运行中的会话半透明显示,由用户自行决定是否归档)。
- 支持全选 / 取消全选、显示更新时间、顺序调用
uiWorkspace.archiveSession(sessionId),单个失败即暂停并提醒,避免并发覆盖 archive set。
Requirements
- Node.js >= 18
- DSH CLI / Web Client(本插件针对 DSH 工作区侧边栏的 DOM 结构实现)
- Peer dependency:
@deepseek-ai/dsh-tools >= 0.0.1-rc.1
Installation
As a DSH plugin(推荐 / Recommended)
# 替换 <your-profile> 为实际 profile 名
dsh plugin --profile <your-profile> add dsh-workspace-toolkit
添加后刷新或重启 DSH Web 客户端即可生效。
From npm / 从 npm 安装
npm install dsh-workspace-toolkit
在 DSH profile 中按本地插件引用(示例):
# your-profile.yml
plugins:
- id: workspace-toolkit
package: ./node_modules/dsh-workspace-toolkit
实际路径和配置方式请遵循你使用的 DSH 版本文档。
Usage
- 打开 DSH Web 客户端左侧的工作区(Workspace)侧边栏。
- 点击工作区行右侧的
⋮(Workspace actions)菜单。 - 选择 复制工作区路径 / Copy Workspace Path 即可复制该工作区的绝对路径。
- 选择 批量归档会话… / Batch Archive Sessions…,勾选需要归档的会话后点击“归档所选”。
File Structure
index.js # Host half entry point. No server-side state is required.
client.js # Browser half. Observes workspace rows/menus, injects menu items, renders the batch-archive dialog.
cordis.patch.yml # Cordis bundle patch used by DSH to load the browser plugin.
How It Works
- DOM observation: 监听
document.body下的[role="menu"],识别 workspace 菜单后注入自定义menuitem。 - Copy path: 从
ctx.workspaces.list快照获取对应工作区的path,写入系统剪贴板;不支持 Clipboard API 的环境会回退到document.execCommand('copy')。 - Batch archive: 打开弹窗时读取
ctx.workspaces.list与ctx.sessions.list的快照,筛选出可归档会话,按顺序逐个归档。 - Internationalization: 文案根据浏览器
navigator.language在中文与英文间自动切换;暂时无法跟随 DSH 内部语言热切换。
Limitations
- 本插件不修改 DSH core,依赖 workspace 行与菜单的 DOM 结构;若 DSH 更新后 DOM 变化,插件可能需要同步更新。
- 批量归档弹窗基于
ctx.workspaces.list和ctx.sessions.list渲染,不直接操作会话行 DOM,因此相对稳定。 - 菜单文案基于
navigator.language简单判断,无法跟随 DSH 内部语言切换。 - 批量归档使用顺序调用以避免并发覆盖;单个失败会暂停并弹窗提示。