dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在侧栏会话菜单的「归档会话」下方新增红色「删除会话」项,配自定义确认对话框,实现真正的会话删除——停止会话进行中的工作、摘除工作区/归档/置顶记账、删除投影缓存与日志目录,然后广播移除事件让该行立即消失,而不是只能归档。会话删除会把对话从磁盘彻底移除且无法恢复;删除会话与会话删除是同一种操作的两种叫法,搜其中任意一种都可以找到本插件。
给 DeepSeek Harness 增加真正的 「删除会话」:从侧栏每个会话的「…」菜单永久删除它,而不是只能「归档」。
DSH 内建的「归档」(archive)只做一件事:把会话 id 加进 archivedSessionIds 集合,把它从分组界面里藏起来。它从不删除磁盘文件——会话日志(~/.dsh/sessions/<project>/<id>/session.v4.jsonl.zstd)和投影缓存(~/.dsh/storages/session_projcache/sessions/<id>.json)会一直留在硬盘上。
本插件补上缺失的「删除」:停止该会话正在跑的工作 → 摘除归档/置顶/工作区记账 → 删除投影缓存 → 删除日志目录 → 广播移除事件让界面立即刷新。
dsh plugin --profile desktop add dsh-delete-sessions
cordis.patch.yml 会自动插入一行,加载插件。
node_modules/dsh-delete-sessions(或用 link: 依赖)。cordis.patch.yml 里加一行:- insert:
- id: dsh-session-delete
name: 'dsh-delete-sessions'
注意:手动加行后不要再让
cordis.patch.yml(本目录里的那份)也被应用,否则同一插件会因 id 冲突重复加载。
删除按固定顺序执行,任何一步失败都会整体报错,避免「界面里没了但磁盘还在」的半完成状态:
workspace/session-stop(与归档「停止并归档」同一条路径,agent.cancel),并短暂等待最后一次事件落盘。unarchiveSession + unpinSession + 逐工作区 detachSession(均幂等)。session_projcache 域(内存与磁盘同步);域未挂载时跳过(缓存是派生数据,下次冷读会重建)。sessionPersistence.locate() 拿精确路径(session id 已被安全编码,无路径穿越风险),带重试处理 Windows 上反病毒/索引短暂占用。api-session/removed 已在 DSH 的转发白名单中,浏览器会立即移除该行。sessionId。sessionPersistence.stat() 校验真实存在,才继续删除。locate() 路径由 DSH 自身的 encodeSegment 编码,无路径穿越。session_projcache 域或 ~/.dsh/sessions 无法定位,投影缓存/日志目录可能残留(缓存下次冷读自动重建;日志需手动清理)。MIT