liangmianya/dsh-synapse
liangmianya/dsh-synapseDeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
在侧栏会话菜单里彻底删除单个对话(含已归档),同时清理会话日志、投影缓存、归档状态与提醒。
Permanently delete one conversation at a time — archived or not — straight from its sidebar row menu in DeepSeek Harness.
DeepSeek Harness (DSH) can archive a session but never delete one: the JSONL backend keeps every log on disk forever. This plugin adds the missing operation to the row's ⋯ menu, behind a confirmation dialog that names the conversation, shows whether it is archived, its log size, and how many subagent sessions it spawned.
在 DSH 侧栏会话行的
⋯菜单里增加「彻底删除对话」:带二次确认,删除该对话的会话日志、投影缓存、归档/置顶状态、所属工作区记录和绑定提醒;运行中的对话会被拒绝。
DSH 0.2.1 or newer (verified on 0.2.1-rc.2), Node ^22.19.0 || >=24.
# npm
dsh plugin --profile <profile> add dsh-conversation-purge
# GitHub
dsh plugin --profile <profile> add github:Seastar101/dsh-conversation-purge
Or in the Web UI: Settings → Plugins → Install and enter the package name. Restart dsh web (or the desktop app), then reload the page. The Host half and the browser half activate together.
⋯ menu.The row disappears immediately (the Host emits DSH's own api-session/removed notification); if the deleted conversation is the one open in the main panel, its composer becomes read-only.
<storage-root>/session_projcache/sessions/<id>.json and its .bak.* files).origin: subagent lineage). A fork is an independent conversation and is deliberately kept.$DSH_HOME.:memory: / openAt: never, so there is nothing persistent to clean; if a profile enables durable content search, stale hits fail to resolve and are dropped on rebuild.error.running). Stop the turn first.ENOENT instead of recreating a header-less log.<session-root>/.session-purge-pending.json; the Host retries the removal once at the next start, before anything can resume the session.sessionPersistence.root), then the profile's configEditor values, then $DSH_HOME (~/.dsh) defaults. No configuration is required.Requires connection and sessionPersistence. Workspace accounting, reminders, the running-work check, and the projection cache degrade gracefully when their owning plugins are not composed.
The UI goes through two shipped slots — sidebar.workspaces.session.menu.item and shell.overlay — and uses only theme tokens, so it follows the host's light/dark themes and locale. Dictionaries ship for English and Simplified Chinese.
npm test
index.js — plugin entry: the two authenticated exact-fetch routes (/api/session-purge/inspect, /api/session-purge/delete) on the connection.fetch channel.lib/purge.js — root discovery, path encoding (~XXXX, mirroring the JSONL backend), lineage collection, workspace/reminder cleanup, directory removal with truncation fallback, pending queue.client.js — the ⋯ menu row, the confirmation dialog, the stylesheet, and the locale dictionaries.MIT.