DeepSeek Harness plugin

dsh-archive-manager

A minimal DeepSeek Harness Web plugin that lists archived sessions and permanently deletes an archived session directory after explicit confirmation.

Jump to install

Source facts

Repository
zimixvx/dsh-archive-manager
Latest update
Aug 13, 2026
Category
Plugin Markets & Managers
GitHub stars
2
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/zimixvx/dsh-archive-manager
Plugin: dsh-archive-manager
Author: zimixvx

Check the source files

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

File explorer3 files
README.mdSource · read only

dsh-archive-manager

A minimal out-of-tree DeepSeek Harness Web Cordis plugin that permanently deletes the on-disk session directory of an archived session from the sidebar.

It does not modify the DSH core installation or any profile configuration. The only durable effect on $DSH_HOME is the intended one: after the user confirms, it deletes the selected session directory under $DSH_HOME/sessions. No other DSH durable state (workspace registry, projection cache, shared attachments) is written. The host half owns one HTTP route; the client half adds a sidebar footer action that lists archived sessions and deletes them after an explicit second confirmation.

What it does

  • Host half (index.js) registers POST /archive-manager/delete.
  • Client half (client.js) registers a sidebar.footer.action list entry

(id: archive-manager, order: 80). Wide mode shows the label 已归档 N; the narrow rail shows only the archive icon.

  • The modal lists only the ids in the workspace registry's archivedSessionIds

that also have a session summary in the client session baseline, displaying displayTitle (or the id), cwd, and updatedAt.

  • Each row has a trash button. Deleting requires a clear second confirmation

stating that the session directory will be permanently deleted and cannot be restored.

  • Deleting issues a same-origin POST /archive-manager/delete and, on

success, refreshes both sessions and workspaces. A local deleted-id set hides the row even though the archived marker is intentionally left intact.

Install

This is an out-of-tree plugin: place it on disk and install it into the existing web profile.

Option A — install from GitHub

dsh plugin --profile web add "github:zimixvx/dsh-archive-manager"

Option B — install from a local path

With the plugin directory at D:\Code\DeepseekHarness\plugins\dsh-archive-manager:

dsh plugin --profile web add "D:\Code\DeepseekHarness\plugins\dsh-archive-manager"

Then add the plugin to the web profile's bundle list in $DSH_HOME/profiles/web/package.json:

{
  "name": "dsh-profile-web",
  "private": true,
  "dependencies": {
    "dsh-archive-manager": "file:D:/Code/DeepseekHarness/plugins/dsh-archive-manager"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-archive-manager"
      ]
    }
  }
}

The exact dependencies entry is written by dsh plugin --profile web add; only the bundles list needs the manual addition.

The plugin's cordis.patch.yml (declared via dsh.bundle.patch) inserts the host row:

- insert:
    - id: archive-manager
      name: dsh-archive-manager

Restart

A running process does not pick up new bundle rows, so restart the web profile:

dsh web

After a page refresh, the sidebar footer shows the archive-management action.

Safety and limitations

  • Only archived sessions. The route refuses any id not present in

workspaceRegistry.archivedSessionIds.

  • Live sessions are refused — checked before the persistence lookup and

again immediately before the rm, with HTTP 409.

  • Raw-artifact backend required. The persistence backend must advertise

supportsRawArtifacts === true and a locate() returning { kind: 'jsonl', path }. Otherwise the route answers 501.

  • Deletes the session directory only. `rm(dirname(location.path),

{ recursive: true, force: false })` removes the directory that holds the session's JSONL log (and any session-local files inside it). It does not modify the workspace registry, the archived markers, the projection cache, or content-addressed attachments (which live in a separate shared store and are shared across sessions).

  • Stale archived markers. After a successful delete, the archived marker in

archivedSessionIds remains by design (removing it would mutate the registry). Because the panel only lists archived ids that still have a session summary, and the physical deletion removes that summary, the leftover marker does not reappear after a page reload. A local deleted-id set also hides the row immediately even if the follow-up refresh fails.

  • Not reversible. The deletion is a recursive rm with force: false.

There is no trash or restore path.

Uninstall

Remove dsh-archive-manager from the profile's dsh.profile.bundles (and from dependencies), then restart. The plugin adds no durable state of its own, so there is nothing else to clean up.

License

MIT — see [LICENSE](LICENSE).