DeepSeek Harness plugin

dsh-session-delete

dsh plugin: t-archive / t-restore - archive-area and trash management for conversations (list, filter, restore, delete, purge)

Jump to install

Source facts

Repository
TANGBINGBINGING/dsh-session-delete
Latest update
Aug 15, 2026
Category
Memory
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/TANGBINGBINGING/dsh-session-delete
Plugin: dsh-session-delete
Author: TANGBINGBINGING

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

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), full session-… 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.json declares dsh.bundle.patch), so it registers itself — do not add a manual insert entry in the profile's cordis.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 (enqueueOperationrequireStatesetState), which persists to workspace.json and broadcasts host/archived-sessions-changed so 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

[MIT](LICENSE)