dsh-session-delete
Manifest validdsh plugin: t-archive / t-restore - archive & trash management for conversations (bilingual zh/en, vibe-coded)
dsh-session-delete
A DeepSeek Harness (dsh) plugin for conversation lifecycle management: archive area and trash commands with stable list numbering, keyword filtering and temporary keyword scopes.
中文说明见 README.zh.md。
Vibe coding notice — this plugin was developed end-to-end through vibe coding: built iteratively via interaction between the author and deepseek-v4-flash running on DeepSeek Harness, and published by deepseek-v4-flash + Harness on behalf of the author.
Features
/t-archive— manage the archive area (conversations hidden by the sidebar's archive action)- list (grouped by workspace folder), restore, delete into trash, or purge permanently
- includes an "ungrouped (stray)" section for orphaned fork/subagent sessions whose parent was deleted
/t-restore— manage the trash (files moved out by deletions)- list, restore to the original workspace, delete one, or clear all
- Stable list numbering — between two list refreshes, one number always maps to one conversation; operated slots show a gap (
———— restored (slot empty)) instead of renumbering - Keyword-first interaction — a keyword that matches exactly one conversation operates on it directly; multiple matches create a temporary keyword list, then
/t-archive --kw <number|keyword>operates within it (a non-distinctive keyword is rejected, no nested lists) - Batch numbers (
--delete 1 3 5), fullsession-…ids,--purge/--clear - Multi-workspace aware: archive listing covers all workspaces; trash is global; restore returns to each conversation's original workspace
- Safety: refuses to delete sessions with active tasks (
agent.status === 'running'); all file paths come from official APIs
Install
From GitHub (requires the repo to be published first):
dsh plugin --profile web add github:TANGBINGBINGING/dsh-session-delete
From a local checkout:
dsh plugin --profile web add file:C:/path/to/dsh-session-delete
Restart dsh (npx @deepseek-ai/dsh web), then type /t-archive or /t-restore in the input box.
The plugin is a bundle (its
package.jsondeclaresdsh.bundle.patch), so it registers itself — do not add a manualinsertentry in the profile'scordis.patch.yml(duplicate loader entry ids crash dsh on startup).
Usage
/t-archive list archive area (grouped by workspace, refresh)
/t-archive <number...> restore (back to conversations)
/t-archive --delete <number...> delete into trash
/t-archive --delete --purge <number...> purge permanently
/t-archive <keyword> unique match → restore directly; multiple → temporary keyword list
/t-archive --delete <keyword> unique match → delete directly
/t-archive --kw <number|keyword> operate within the last temporary list (keyword must be unique)
/t-restore list trash (refresh)
/t-restore <number...> restore to original workspace
/t-restore --delete <number...> permanently delete one
/t-restore --clear permanently delete all
Input rules: pure digits = list number; session-… = id; anything else = keyword. [运行中] marks conversations with an active task (not deletable).
Uninstall
dsh plugin --profile web remove dsh-session-delete
Development
node tools/dsh-session-delete/test.mjs # 35/35
Layout:
package.json bundle manifest (dsh.bundle.patch)
cordis.patch.yml loader insert for this bundle
index.js plugin source (zero runtime dependencies)
test.mjs unit tests
Localization
This plugin was originally written in Chinese (the default output language). An English adaptation is provided and selected by the DSH_LANG environment variable:
# English output (set before launching dsh)
set DSH_LANG=en
npx @deepseek-ai/dsh web
- Default (no
DSH_LANG): Chinese output DSH_LANG=en: English output for commands, lists, success/error messages, and the/-menu command descriptions- Input parsing is language-independent (numbers,
session-…ids, keywords all work the same)
Testing note: the English adaptation was verified automatically by AI agents — the unit test suite covers both locales (41/41 passing: 35 Chinese + 6 English). It has not been manually exercised by a human reviewer.
Design notes
- dsh has no public unarchive API; the plugin replays the official archive mutation in reverse through the registry's serialized mutation queue (
enqueueOperation→requireState→setState), which persists toworkspace.jsonand broadcastshost/archived-sessions-changedso the UI updates live. - Trash restore re-runs header indexing so the conversation returns to its original workspace folder.
- After deletion, the archive mark is cleaned up safely (header index rebuilt first), leaving no stale records.
License
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
Comments
Loading…
Similar plugins
by Hyna-hla
DSH-DELETE: recoverable conversation deletion for DeepSeek Harness (dsh-plugin)
★ 0
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add dsh-deleteby Earnest02522
Archived-conversation manager for DeepSeek Harness: view (grouped by workspace), restore, and reveal transcript folders of archived conversations. Zero-build, copy-to-install plugin.
★ 5
MIT
JavaScript
Oct 28, 2026
dsh plugin --profile web add dsh-archive-managerby OliYogSothoth
Delete DeepSeek Harness sessions for good — via a recycle bin: move, restore, then the next start wipes the log, projection cache, spill files and workspace accounting.
★ 1
MIT
JavaScript
Oct 21, 2026
dsh plugin --profile web add dsh-plugin-session-purgeby Zephyr-vibe
DSH Session Manager: manage conversations, archive/restore, delete safely, open record folders.
★ 21
↓ 66/wk
MIT
JavaScript
Aug 21, 2026
dsh plugin --profile web add dsh-archived-sessionsby yxv1203-collab
Native archive, retention, safe deletion, and verified backup management for DeepSeek Harness.
★ 3
MIT
JavaScript
Sep 5, 2026
dsh plugin --profile web add dsh-conversation-archiveby TheM14
DeepSeek Harness 已归档会话管理与新预设续接插件。Archived-session management and preset continuation plugin for DeepSeek Harness.
★ 0
↓ 238/wk
MIT
JavaScript
Aug 21, 2026
dsh plugin --profile web add dsh-session-cleaner