Back to home

ShiraGawaAnri

dsh-session-cleanup

DSH 会话/归档清理插件:在 **设置** 面板里新增两个页面,用来查看并清理 DSH 的残留会话与归档会话。

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

中文 | English

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

  1. Refuses live (running) sessions
  2. Removes the persisted session log file/directory (paths come from sessionPersistence.locate(); the client only ever submits session ids)
  3. Detaches the session from its workspace account (durable write)
  4. 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 by sessionPersistence.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 optional webServer), plus the client slots service.
  • Zero third-party npm dependencies.