Back to home@HrxSpace

dsh-session-sweeper

DSH 插件,扫描管理电脑本地所有终端的会话(Claude Code、Codex、Workbuddy、DSH等)

Stars
0
Language
TypeScript
Created
Sep 4, 2026
Updated
Sep 4, 2026
GitHub repo

Introduction

dsh-session-sweeper — 会话清道夫 (Session Sweeper)

中文说明

Scan, view, and safely clean local AI terminal session histories — Claude Code, Codex CLI, WorkBuddy, and DSH itself — from a dedicated card in the DSH Web UI (Settings → 会话清道夫 / Session Sweeper).

Screenshots

Session listMessage preview
Recycle binSettings

What it does

  • Scan every supported source under your home directory and list sessions with title, project, message count, size, and last-active time.
  • View session contents (user/assistant messages, tool calls) in a paged preview — including DSH logs stored as concatenated zstd frames.
  • Clean selected sessions. The default action is quarantine: the whole artifact (file, or session directory for DSH) is moved into a recycle directory with a manifest recording the original path and a SHA-256 per file. One click restores a batch byte-for-byte.
  • Hard delete is available but requires typing the confirmation phrase DELETE; it leaves an audit tombstone only.

Data safety model

GuardBehavior
Quarantine-firstDefault clean moves artifacts to ~/.hist-sweeper/recycle/<batchId>/ — always restorable
Active guardSessions modified within guardHours (default 24) are skipped unless you explicitly include them
Current sessionThe session served by the running DSH process is never cleanable
Lock detectionFiles that cannot be opened are skipped without aborting the batch
Audit logEvery operation is appended to ~/.hist-sweeper/recycle/log.jsonl and shown in the Recycle tab
ScopeTouches nothing besides session artifacts — never configs, credentials, memory, or todos

Install

From a packed tarball (no build scripts, lib/ is prebuilt and committed):

dsh plugin --profile web add ./dsh-session-sweeper-1.0.0.tgz

From git (lib/ is committed, so no prepare build permission is needed):

dsh plugin --profile web add github:HrxSpace/dsh-session-sweeper

Restart dsh web afterwards and open Settings → Session Sweeper.

Configuration

Both options can be overridden on the plugin row in your profile's cordis.patch.yml:

OptionDefaultMeaning
guardHours24Active-guard window in hours
recycleDir~/.hist-sweeper/recycleQuarantine destination

Test hooks (not for daily use): DSH_SWEEPER_HOME / DSH_SWEEPER_RECYCLE redirect the scanned home and recycle root — used by the test suite to run against synthetic trees.

Uninstall

dsh plugin --profile web remove dsh-session-sweeper

The recycle directory and audit log survive uninstalling (they are your recovery path); delete ~/.hist-sweeper manually once you no longer need them.

Permissions & network

  • Reads: ~/.claude/projects/**, ~/.codex/sessions/** (incl. archived_sessions), ~/.workbuddy/projects/**, ~/.dsh/sessions/**
  • Writes: only the recycle directory
  • Serves a same-origin-only JSON API (/sweeper/api/*) on the DSH web server; cross-origin requests are rejected
  • No network access, no lifecycle scripts, zero runtime dependencies beyond node builtins (react is provided by the DSH client runtime)

Development

# build (any tsdown ≥0.22 works; lib/ output is committed)
npx tsdown

# tests (node:test + tsx, zero package installs)
node --import tsx/esm --test tests/sweeper.test.ts

# dev instance with the local build overlaid
pnpm dsh --profile web --patch ./cordis.dev.yml --port 3180 --no-open

License

MIT