全部插件

DSH / BUNDLE / CLIENT-UI

dsh-session-actions

v0.3.1duanyunlun / dsh-session-actions754a0f9329

可安装组合包UI 与客户端插件社区 · Topic 自动分析Web UI

概览

dsh-session-actions

Sidebar Conversation actions for DeepSeek Harness: double-click to rename, copy the session ID, and permanently delete a Conversation with its storage.

README / ZH

插件文档

目录摘要

Sidebar Conversation actions for DeepSeek Harness: double-click to rename, copy the session ID, and permanently delete a Conversation with its storage.

dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。

在 GitHub 阅读完整 README

LIMITATIONS

已知限制

- **正在运行的会话不能删。** 判定用的是 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 下宿主半边加载为空操作。