dsh-session-actions

DSH PLUGINUI 与外观

仓库 duanyunlun/dsh-session-actions · npm dsh-session-actions

UI 与外观 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件
安装这个插件

为 DeepSeek Harness 侧边栏会话列表补上右键菜单、双击重命名、复制会话 ID 与永久删除会话,删除时同步清理磁盘存储并通知其他插件。

一句话选型结论

按资料字段整理

dsh-session-actions 是UI 与外观类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类UI 与外观 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 0 复刻 0 · 未关闭 issue 1
最近更新 2026-09-17 创建于 2026-09-12
README 9.1 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-session-actions
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名dsh-session-actions可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-session-actions:为 DeepSeek Harness 会话列表补上右键操作

  • 右键打开会话菜单
  • 双击会话行重命名
  • 一键复制会话 ID
  • 二次确认永久删除会话
  • 删除后清理磁盘存储

上游标签

conversationdeepseek-harnessdshdsh-pluginrenamesessionsession-deletesidebar

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在UI 与外观场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-actions当前 未做沙盒验证 未标注 0 未标注 有
nuwa-skill 未做沙盒验证 未标注 3.8 万 未标注 有
awesome-dsh-plugin L4 · 沙盒安装通过 低风险 1.8 万 0.1.1-rc.2 有
deepseek-balance-whale-widget L4 · 沙盒安装通过 低风险 4,492 0.1.7-rc.2 等 2 个 有
dsh-better-sidebar L4 · 沙盒安装通过 低风险 4,112 0.1.7-rc.2 等 10 个 有
dsh-deep-whale L4 · 沙盒安装通过 低风险 2,470 未标注 有

仓库档案

UI 与外观
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方duanyunlun仓库 dsh-session-actions · 默认分支 main
分类UI 与外观ui
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 1收录时的数值,非实时
创建 / 更新2026-09-12 · 2026-09-17最后推送 2026-09-17
本站收录2026-09-15首次进入本站目录的时间

README 全文

9.1 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-session-actions

English | 中文

给 DeepSeek Harness(DSH)Web 界面左侧会话列表补充操作。

DSH 内置的会话菜单只有 重命名 / 分叉会话 / 归档会话,且必须点行尾的 ⋯ 才能打开。本插件在不修改 DSH 源码的前提下,为这个菜单补上:

功能 触发方式
右键打开菜单 在会话行任意位置点右键,弹出 DSH 自带的那一个菜单(重命名 / 分叉 / 归档 + 本插件的两项)
双击重命名 双击会话行(按钮除外),直接打开 DSH 自带的那个重命名弹窗
复制会话 ID 行菜单 → 复制会话 ID,写入剪贴板后菜单自动关闭(复制失败则保留菜单,可重试)
删除会话 行菜单 → 删除会话(红色高亮、位于归档下方),二次确认后永久删除磁盘数据,该行随即从列表消失

「删除会话」不同于「归档会话」:归档只是把会话从列表里隐藏,日志和记账位都保留;删除会把会话从物理存储上抹掉,无法恢复,因此强制弹出二次确认。

删除成功后,浏览器半边会直接调用会话列表自己的移除入口(sessions.handleSessionRemoved,也就是宿主 api-session/removed 事件所调用的同一个方法),行立即消失——不再重新拉取列表,因为那次拉取会把宿主当前基线合并回来,任何宿主仍在报告的会话都会跟着回来。宿主半边同时也会广播官方的 api-session/removed,作为同一条通路的冗余信号。如果删掉的恰好是当前打开着的那个会话,选择会先被清空(回到"没有会话"的空态),聊天面板不会继续显示一个已经不存在的会话。

删除必须不留痕迹,包括留在别的插件里的那条。 所以宿主半边在删完之后、广播 api-session/removed 之前,会先发一个 conversation/deleted(负载就是被删的 session id),让任何自己记着这个会话的插件把记录丢掉——比如 dsh-conversation-link 会据此删掉它的 handle、昵称与边。顺序是刻意的:先让别的插件忘掉,再让列表收起那一行。监听器抛错只记一条 warn,不会把已经完成的删除变成失败。

会话在界外被删掉(磁盘上已经没有它)时也能收尾。 那种情况下 inspect 会返回 exists: false,确认框改为说明"磁盘上已经没有它了,但列表里还留着这一行",主按钮变成从列表移除并保持可点;确认后走同一条删除路由:不能再删的目录是空操作,但投影缓存、工作区名册引用照样会被清掉,api-session/removed 照样广播,于是那一行也会消失。绝不再出现"看着能点、点了没反应"的删除框。

安装

本包是一个 DSH bundle(package.json 里声明了 dsh.bundle.patch → 包内的 cordis.patch.yml)。因此有两种装法,二选一,不要同时用:

推荐:作为 bundle 安装(社区市场 / 插件管理器点「安装」,或手动)

dsh plugin --profile desktop add dsh-session-actions

装好后该包会出现在 profile 的 dsh.profile.bundles 里,它的 patch 层会在启动时自动插入 Loader 行,不需要你再改任何文件。市场安装前会从 npm 校验这个包确实声明了 dsh.bundle.patch,缺少声明会被直接拒绝。

或者:手动加一行 insert(profile 不用 bundles 的场合)

在 DSH profile 的 cordis.patch.yml(例如 $DSH_HOME/profiles/desktop/cordis.patch.yml)里加:

- insert:
- id: session-actions
name: 'dsh-session-actions'

⚠️ 如果 profile 已经把本包装进 dsh.profile.bundles,就不要再写这行 insert —— 那会把插件加载两次(宿主半边会因路由重复注册报错,界面上的菜单项也会重复)。

dsh.client.platform 已声明为 web,插件包同时提供宿主半边(index.js)和浏览器半边(client.js),无需构建步骤。

两半都在应用启动时装载:浏览器半边的代码字节是启动时快照的,宿主半边是启动时求值的,而 DSH Desktop 当前构建的 HMR 不可用(日志会报 [hmr] Error: --expose-internals is required for HMR service)。因此升级插件版本后需要重启 DSH,仅刷新页面不够。

它到底删了什么

删除是按照 DSH 实际的存储布局进行的,逐个会话地清掉这些:

$DSH_HOME/sessions/<工程目录键>/<会话 ID>/session.v.jsonl.zstd   会话日志(含锁文件与同目录其他产物)
$DSH_HOME/storages/session_projcache/sessions/<会话 ID>.json        投影缓存
$DSH_HOME/storages/workspace.json                                   从 archivedSessionIds[] 与
各 workspaces[*].sessionIds[] 中摘除该 ID

工程目录键(projectKey)是有损编码(分隔符折叠、超长截断),无法由会话 ID 反推,因此插件是扫描 sessions/ 下每个工程桶来定位会话目录,而不是重算路径。这样即使会话头读不出来也能删掉。

附件不会删。 $DSH_HOME/attachments/v1/objects/ 里是按内容寻址(sha256 分片)的对象,多个会话可能共享同一份,按会话删除会误伤其他会话,所以插件不碰它。确认弹窗里也写明了这一点。

已知限制

  • 正在运行的会话不能删。 判定用的是 DSH 自己的 agent/status:只要该会话的 Agent 正在跑一个回合(ctx.agents.get(id).status === 'running'),插件就拒绝删除,因为那一轮还在往日志里追加内容,删掉等于同时丢掉问题和答案。只是打开着、但没在跑的会话可以正常删除:文件会被清掉,列表行也会随之消失。
  • 代价要说清楚:已被本进程装载(attached)的会话,其内存对象由创建它的 fiber 持有,插件没有处置它的权限(AgentHandle.dispose() 只给创建者)。所以删除一个"打开着的空闲会话"之后,进程内还会留着它的副本,直到你重启 DSH 才彻底释放。磁盘和列表都已经干净,重启前也不会再产生新的日志内容。
  • 工作区记录的摘除可能被回滚。 插件是直接改 workspace.json,而 Workspace registry 在内存里另有一份状态,它下次写入(归档、排序等)会整份覆盖。回滚后的残留是一个指向"已不存在的会话"的 ID,任何分组视图都不会渲染它。宿主的会话索引本身有对账逻辑(session-query-sqlite 每次读都会与磁盘比对),所以列表不会残留幽灵行。
  • 依赖渲染后的 DOM。 会话行菜单没有任何插件扩展点(SessionNodeItem 内联构造 Menu 的 items),因此浏览器半边是在菜单渲染出来之后往上贴两行;右键也是按下该行自己渲染的那个 ⋯ 按钮来开菜单,而不是另建一个菜单。贴完两行后会按菜单的真实高度重新定位一次:下方放不下就翻到触发按钮上方,四周保留 12px 边距(与 DSH 自己的定位规则一致),滚动/缩放时再补一次——否则窗口较矮时,追加的两行会落到窗口下沿之外。会话 ID 不是从 DOM 文本猜的,而是沿 React fiber 读回该行自己的 props(node / onRename / onArchive);这些属性名在打包产物中未被混淆。若将来 DSH 改变行组件的 props 命名,插件会退化成"什么都不加",而不是删错会话。
  • 只对 Web 界面生效。无头 profile 下宿主半边加载为空操作。

安全

/api2/dsh-session-actions/* 是一个自建的 JSON 接口,不走 DSH 官方 /api 通道(那是代码生成的 Remote 装配,树外插件没有席位)。因为它是破坏性接口,所以带了三重栅栏,与另一处插件自建接口一致:

  1. 只接受 POST;
  2. 只接受 application/json(跨站页面无法在不触发 CORS 预检的前提下发出该 Content-Type,而本路由不响应预检);
  3. 只接受回环 Host(可用环境变量 DSH_SESSION_ACTIONS_TRUSTED_HOSTS 追加受信主机名,逗号分隔)。

会话 ID 在拼进路径前按 ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$ 校验,路径段再做一次与存储后端一致的转义,并在拼接后复核结果仍在 sessions 根目录之下。

开发

node --test 'test/*.test.mjs'

零依赖,用 node:test。测试分三层:

  • test/session-files.test.mjs —— 真实文件系统(临时目录里搭出与 DSH 一致的存储布局),断言删除后磁盘上剩下什么;
  • test/plugin.test.mjs —— 假 Cordis context,覆盖信任栅栏、请求校验、运行中会话拒绝、删除后的 conversation/deleted + api-session/removed 广播、以及「磁盘上已不存在」时的幂等收尾;
  • test/client.test.mjs —— 自建假 DOM 与一个极小的有状态 React 替身,覆盖 fiber 取 ID、双击重命名、右键开菜单、菜单行注入与重新定位、复制后关闭菜单、确认流程、删除后的列表移除,以及残留行(磁盘已无该会话)仍可一键清掉。

许可

MIT

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-session-actions 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-session-actions` 即可。对应的 npm 包名是 `dsh-session-actions`。

dsh-session-actions 的验证等级是什么意思?

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-session-actions 安全吗?

未标注。

dsh-session-actions 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-session-actions 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-session-actions 有哪些功能?

右键打开会话菜单、双击会话行重命名、一键复制会话 ID、二次确认永久删除会话、删除后清理磁盘存储。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

2 条
不同作者的仓库分开列,请确认你要装的是哪一个
UI 与外观
按星标排序,可作替代方案

nuwa-skill

nuwa-skill

女娲 DSH plugin 只需输入一个名字,就自动调研、提炼并验证任何人的心智模型、决策启发式与表达 DNA,生成可直接调用的思维视角 S

未标注验证等级 3.8 万 星

awesome-dsh-plugin

awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harnes

L4 · 沙盒安装通过 1.8 万 星

deepseek-balance-whale-widget

DeepSeek-Balance-Whale-Widget

DSH 界面右下角的常驻小鲸鱼余额挂件,实时显示 DeepSeek 账户余额、今日已用与每轮对话消耗,支持拖拽吸附、Q 弹动画与音效,开箱即

L4 · 沙盒安装通过 4,492 星

dsh-better-sidebar

DSH-better-sidebar

面向 DeepSeek Harness 的服务化侧边栏工作台插件,把文件编辑、终端、Git 变更、子代理任务与侧边对话整合进右侧栏与底部面板

L4 · 沙盒安装通过 4,112 星

dsh-deep-whale

dsh-deep-whale

DSH Web 鲸鱼娘皮肤系列(深海女仆工坊 maid-atelier)。

L4 · 沙盒安装通过 2,470 星

deepseek-design

deepseek-design

可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。

L4 · 沙盒安装通过 1,438 星

duanyunlun 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。