DSH Hub

imrascal/dsh-archive

dsh-archive

UIWeb UI3 GitHub stars· updated 2026-08-26

dsh-archive is a community DeepSeek Harness plugin. Read the repository README before installing.

Install

npx @deepseek-ai/dsh plugin --profile web add github:imrascal/dsh-archive

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-archive DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-archive.svg)](https://dshhub.dev/plugins/dsh-archive)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from imrascal/dsh-archive, cleaned of badges and images.

@imrascal/dsh-archive

A DeepSeek Harness (DSH) plugin that manages archived sessions and the trash from the settings panel.

  • Archived Sessions: review sessions that are hidden from the sidebar but keep their records; restore them individually or all at once, or move them to the trash.
  • Trash: review deleted sessions; restore, permanently purge, or empty the whole trash.

Deletes are reversible: deleting a session moves it to the trash (~/.dsh/trash); only purge / empty trash are permanent. Live (running) sessions refuse deletion with a clear message.

Install

dsh plugin --profile web add github:imrascal/dsh-archive

Or from a local checkout:

dsh plugin --profile web add file:C:/path/to/dsh-archive

Restart the app after installing (the host half loads at boot), then refresh the page — the section appears under Settings → Archived Sessions.

dsh plugin forwards to pnpm, so pnpm must be on your PATH.

How it works

This feature originally lived as in-box patches across 12 files (dsh-workspace, dsh-session-persistence-jsonl, dsh-host-apiproxy, dsh-client-runtime, dsh-client-ui-workspace, ... — reference diffs in patches/). This plugin re-implements it as a standalone package with a dual-path design:

PathWhenBehavior
Nativehost/client already carry the archive APIthe client calls ctx.workspaces.unarchiveSession / trashList / ... directly — same RPC + store-frame sync as the in-box implementation
Fallbackan app update reverted host or client to stockthe host half patches at runtime: adds the trash layer to sessionPersistence and the archive API to workspaceRegistry; the client talks to the plugin's own /dsh-archive/session HTTP route

So the feature survives app updates: trash data lives in ~/.dsh/trash (data, not code) and the archive set lives in the workspace registry's persisted state. Whatever the update does to the packages, the plugin feature-detects at startup and fills in whatever is missing.

Layout

dsh/index.js   host half: persistence trash layer + registry archive API + /dsh-archive/session route
dsh/client.js  browser half: "Archived Sessions" settings section (settings.section slot), no build, react only
cordis.patch.yml   bundle mount declaration
patches/       reference diffs for the in-box host patches (the client patches are replaced by this plugin)
scripts/       eval-check.mjs (client factory eval) and host-logic-test.mjs (host backend lifecycle)

Migrating from an in-box patch (optional)

If your DSH install already carries the local archive-management patches (as this repo's dev machine did), the plugin and the in-box patch would register the same archived-sessions section. To migrate:

  1. Restore node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js to the official release (drops the embedded ArchivedSessionsSection registration; the host patches may stay — the plugin detects them and no-ops).
  2. Install and restart this plugin.
  3. The plugin stands down automatically when the same section id already exists; once the in-box patch is removed the plugin takes over.

To move the host side back to stock as well, back up ~/.dsh first, reverse patches/, and let this plugin's host half re-add the backend. Trash data and the archive set are unaffected.

Data safety

Related plugins