ShiraGawaAnri
dsh-session-cleanup
DSH 会话/归档清理插件:在 **设置** 面板里新增两个页面,用来查看并清理 DSH 的残留会话与归档会话。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-session-cleanup
A DSH profile bundle that adds two Settings pages for inspecting and cleaning up residual (persisted but not open) sessions and archived sessions.
Features
Settings → Sessions清理
- 刷新Sessions button
- 当前Sessions: live in-memory sessions (display only, no action buttons) with session ID / date / summary (title + first user message excerpt)
- 残留Sessions: persisted but not currently open sessions, each with a delete button
Settings → 归档清理
- 刷新归档 button
- 所有归档: all archived sessions with ID / summary / date
- Per-row delete button plus delete-all
- Live sessions show a "运行中" badge and cannot be deleted
Every deletion requires double confirmation (arm → confirm, with cancel).
What deletion does
- Refuses live (running) sessions
- Removes the persisted session log file/directory (paths come from
sessionPersistence.locate(); the client only ever submits session ids) - Detaches the session from its workspace account (durable write)
- Removes the id from the global archive set if present (durable write + registry cache sync so later archive operations cannot resurrect it)
Deletion is not recoverable.
Installation
Prerequisites: a working DSH installation (dsh web) and pnpm on PATH
(dsh plugin forwards to pnpm).
# 1. Unzip, e.g. to D:\plugins\dsh-session-cleanup
# 2. Install into the web profile
dsh plugin --profile web add file:D:/plugins/dsh-session-cleanup
# or from the parent directory of the unzipped folder:
dsh plugin --profile web add ./dsh-session-cleanup
dsh plugin add runs pnpm in the profile directory and appends
@dsh-external/dsh-session-cleanup to the profile's dsh.profile.bundles
layer — no manual cordis.yml edit.
# 3. Restart dsh web
# 4. Open Settings → Sessions清理 / 归档清理
Uninstall
dsh plugin --profile web remove @dsh-external/dsh-session-cleanup
# then restart dsh web
Notes
- Host-side deletion uses Node
fs.rm, restricted to paths returned bysessionPersistence.locate(). - The API route (
POST /_dsh/session-cleanup/api) rejects cross-site requests. - Deletion is an administrative action triggered explicitly from the Settings page; it does not interact with DSH sandbox policies or model tool calls.
- Requires host services
sessions,sessionPersistence,workspaceRegistry,storageDomain(and optionalwebServer), plus the clientslotsservice. - Zero third-party npm dependencies.