READMESource: master@864b0bff
dsh-more-session-operations
DeepSeek Harness Web 侧边栏会话行「…」菜单增强插件。
GitHub: https://github.com/Ruiming-cn/dsh-more-session-operations
功能
- 复制会话 ID:在会话行菜单中新增「复制会话 ID」,点击后把会话 ID 写入剪贴板,并在菜单项上短暂显示「已复制」。
- 删除会话:在会话行菜单中新增「删除会话」,点击后弹出二次确认弹窗;确认后通过宿主端
POST /__dsh-more-session-operations/delete物理删除会话(停止运行中的 agent、刷新/分离会话、删除日志目录与 projection/workspace 记账),并递归同步删除所有后代子代理会话(普通分叉会话保留)。 - 同源保护:删除端点校验
Origin/Sec-Fetch-Site,拒绝跨源浏览器请求。 - 归档会话二次确认:拦截官方「归档会话 / Archive session」菜单项,点击后先弹确认弹窗;确认后调用官方
__workspacesSvc.archiveSession(sessionId),取消则不操作。
使用
本地开发 / 运行时注入:
npm run build # 把 src/ 同步到 lib/
# 在已加载 dsh-super-injector 的 web 会话中:
# dev_inject_plugin {"dir": "<本仓库绝对路径>"}
打包 / 安装:
npm pack # prepack 会自动构建 lib/
# 然后通过 dsh plugin --profile web add <生成的 tgz> 安装
结构
src/index.js 宿主端源码:注册删除端点 POST /__dsh-more-session-operations/delete
src/client.js 客户端源码:DOM 注入菜单项、归档拦截、确认弹窗(shell.overlay)
lib/ 构建产物(由 scripts/build.mjs 从 src/ 复制生成)
scripts/ 构建脚本与只读冒烟测试
cordis.patch.yml 插件行插入配置
技术说明
- 宿主删除逻辑复用/裁剪自 lsz-asd/dsh-plugin-session-delete 的完整删除链路,仅保留 HTTP 端点,不注册模型工具。
- 客户端沿用已验证的
MutationObserver + [role=menu] + sessionRow.menuOpenDOM 注入方案;确认弹窗为自包含 plain-DOM 覆盖层,使用同一套 DSH 主题变量与官方 Menu 的 40px 高度/14px 字号,不依赖 React/UI primitives 的客户端模块表(便于免构建动态注入)。 - 中英文文案集中在
src/client.js的zhDict/enDict,优先通过locale服务注册,缺失时回退浏览器语言字典。 - 图标使用官方
IconCopyOutline16/IconTrashOutline16的 16×16currentColorSVG path。
License
MIT
No comments yet. Be the first to write one.