Introduction

In DSH’s web profile, if you need to clean up the disk directory for a specific archived session under $DSH_HOME/sessions instead of just retaining its record in the interface, dsh-archive-manager provides a sidebar entry. It lists archived sessions, requires double confirmation, and then deletes the corresponding session directory.

Below, we introduce what it is, what it can do, how to install it, and the limitations to note before using it.

What is it

dsh-archive-manager is maintained by zimixvx and is licensed under the MIT license. It is an out-of-tree DeepSeek Harness Web Cordis plugin targeting the web profile.

It does not modify the DSH core installation nor the profile configuration; the only persistent impact on $DSH_HOME is deleting the selected session directory under $DSH_HOME/sessions after user confirmation.

The plugin is split into two halves:

  • The host half registers POST /archive-manager/delete;
  • The client half registers sidebar.footer.action, where id: archive-manager and order: 80.

Core Features

  1. Adds an archive management action in the sidebar footer. In wide mode, it displays Archived N; in a narrow sidebar, it only displays an archive icon.

  2. After opening the popup, it lists only session IDs that still have a session summary in archivedSessionIds, displaying displayTitle (or ID), cwd, and updatedAt.

  3. Provides a trash button for each row. It requires double confirmation before deletion, clearly stating that the session directory will be permanently deleted and cannot be recovered.

  4. After successful deletion, the plugin refreshes sessions and workspaces. The local deleted-id set also immediately hides that row.

Installation and Enablement

Install from GitHub

Add the plugin to the web profile:

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

Install from Local Path

If the plugin directory is at:

D:\Code\DeepseekHarness\plugins\dsh-archive-manager

You can run:

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

This command writes to dependencies. Subsequently, you need to add dsh-archive-manager to dsh.profile.bundles 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 key here is the bundles list; specific entries in dependencies are written by the dsh plugin --profile web add command.

Restart the web profile

Running processes do not read new bundle lines, so you need to restart the web profile after installing or uninstalling:

dsh web

After refreshing the page, the archive management action will appear in the sidebar footer.

Typical Usage

  1. In the restarted web profile page, click the archive management action in the sidebar footer.

  2. Select an archived session in the popup. The list only contains session IDs that still have a session summary in archivedSessionIds.

  3. Click the trash button on that row and confirm permanent deletion in the second confirmation.

  4. The plugin initiates a same-origin POST /archive-manager/delete. Upon success, it refreshes sessions and workspaces; even if subsequent refreshes fail, the local deleted-id set will immediately hide that row.

Applicable Scenarios and Notes

Suitable for developers who need to manually clean up the disk directories of archived sessions in the DSH web profile. It only handles archived sessions, does not replace workspace registry management, and does not handle shared attachments.

Be sure to check the source code and license before use. This plugin runs with the permissions of the current dsh process; please confirm you trust the code and understand that the directories it deletes are located at $DSH_HOME/sessions before installing.

The limitations are as follows:

  • Only allows deletion of sessions present in workspaceRegistry.archivedSessionIds; live sessions will be rejected, returning HTTP 409.
  • Requires raw-artifact backend: supportsRawArtifacts === true and locate() returns { kind: 'jsonl', path }; otherwise, the route returns 501.
  • Deletion is simply a recursive rm on the session directory with force: false; it is not recoverable and has no trash or restore path.
  • Does not modify the workspace registry, archived markers, projection cache, or content-addressed/shared attachments.
  • After successful deletion, markers in archivedSessionIds are retained as designed. Since the popup only lists archived IDs that still have a session summary, and physical deletion removes the summary, they will not appear again after reloading.
  • The plugin has no own durable state. To uninstall, remove dsh-archive-manager from dsh.profile.bundles and dependencies, then restart.

Links

  • GitHub: https://github.com/zimixvx/dsh-archive-manager
  • Community Directory Page: https://www.skillhub.cn/plugins/zimixvx/dsh-archive-manager