- Home
- Plugin
- Strumenti e capacità
- dsh-archive-manager
dsh-archive-manager
leitaoyu/dsh-archive-manager
NPM-installable DSH Web plugin for managing archived sessions.
Installazione
dsh plugin --profile web add github:leitaoyu/dsh-archive-managerREADME
DSH Archive Manager
Safely manage archived sessions in DeepSeek Harness
简体中文 · Changelog · Apache-2.0
DSH Archive Manager is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product.
Fork of @michengai/dsh-archive-manager, rebased onto upstream
0.1.36. This fork removes the Delete session option from the workspace sidebar to prevent accidental deletion; permanent deletion is still available through Settings → Archived sessions. Everything else follows upstream.
Features
Put inactive conversations away and find them again when needed. Search, restore, and clean up archives in one place while keeping everyday task lists tidy.
- Put finished tasks away: archive one conversation or all active chats in a workspace.
- Find past work: search titles, filter by project, and sort by time or title in Settings → Archived sessions.
- Resume your work: restore one conversation, a project group, or all archived chats.
- Clean up records: permanently delete individual chats or batches from Settings → Archived sessions after confirmation. Permanent deletion cannot be undone.
- Fork difference: the sidebar session menu and archived rows no longer offer Delete session, so a mis-click in the sidebar cannot destroy a conversation. Permanent deletion remains in Settings → Archived sessions.
Screenshots
Search, sort, filter by project, unarchive, or permanently delete chats in Settings → Archived sessions:

DSH product ecosystem
For a ready-to-use workbench, download DSH Codex Desktop. If you already use DeepSeek Harness, install any of these eight plugins individually. The desktop app includes all eight.
| Plugin | What you can do |
|---|---|
| Codex UI | Organize projects and conversations, search tasks, and navigate chat turns |
| IM Connect | Send tasks and receive replies through your usual messenger |
| Automation | Schedule tasks and review each run |
| Skills Manager | Find, enable, create, and import local skills |
| Archive Manager | Search, restore, or clean up archived conversations |
| Agency Agents | Choose and summon specialists for your task |
| BTW | Ask side questions without interrupting the main task |
| Simplify | Use /simplify to improve code within your Git changes |
Prerequisites
-
The current source supports DeepSeek Harness
0.1.5-rc.1and the legacy hosts below. The locally installed0.1.2-rc.1host is covered by the same matrix. -
A working DeepSeek Harness Web installation with
dshavailable in PowerShell. -
Examples use the
webprofile; replace it with the target profile. -
Source installation and development require Node.js 22+ and pnpm. npm installation does not require running
pnpm installseparately.
DSH peer dependencies accept only 0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1; other RCs and stable versions are not automatically accepted. Development dependencies remain pinned to 0.1.5-rc.1.
Installation
Run pnpm test:compat to test the same plugin artifacts with isolated host dependencies. The following combinations have passed; this does not claim coverage of every intermediate release:
pnpm test: build and run local tests, excludingtest/fixtures; local host links may affect dependency resolution.pnpm test:matrix: build, then install four isolated host versions and run the full matrix.pnpm test:latest: build, then run the six real storage tests against the isolated latest baseline.pnpm test:compat: validate legacy cache migration and run the full matrix.
Do not run test/fixtures/*.mjs directly. Fixtures validate the isolated entry point, dependency versions, and resolved paths before loading the host. If local dependencies have drifted, run pnpm install --frozen-lockfile to restore declared development dependencies. This does not guarantee removal of undeclared packages or host links under test/node_modules; use the isolated commands for compatibility acceptance.
| DSH | Cordis | Automated regression |
|---|---|---|
0.1.0-rc.8 | 4.0.1 | 154 passed |
0.1.1-rc.2 | 4.0.1 | 154 passed, plus legacy cache migration validation |
0.1.2-rc.1 | 4.0.2 | 154 passed |
0.1.5-rc.1 | 4.0.2 | 157 passed |
Counts above were measured on this fork under Linux / Node.js 24. The 0.1.5-rc.1 row is the newest supported version, and a newer sibling set (0.1.5-rc.2) exists in the registry, so a plain npm install resolves peers such as dsh-session-title@^0.1.5-rc.1 to those newer siblings; their peer chain (dsh-agent, dsh-system-prompt, dsh-tools, dsh-user-approval, dsh-invariants at ^0.1.5-rc.2) conflicts with the pinned 0.1.5-rc.1 set and npm aborts with ERESOLVE before any plugin code runs. This reproduces against untouched upstream main, whose dependency blocks are identical, and is a registry drift issue rather than a plugin regression. The isolated install for that row therefore passes --before=2026-09-10T12:00:00.000Z, the midpoint between the last 0.1.5-rc.1 publication and the first 0.1.5-rc.2 one, which resolves the whole @deepseek-ai/dsh-* tree to exactly 0.1.5-rc.1; move that cutoff when the newest supported version changes.
Coverage includes workspace navigation, global-panel dismissal, cancellation of stale navigation, sidebar wiring, peer version acceptance, client Remote integration, archive/restore, real JSONL/Zstandard deletion and subagent cascades, and queries/reopened storage after deletion. Upstream verified these combinations on Windows / Node.js 24 and also passed a real browser acceptance run in an isolated DSH 0.1.5-rc.1 Web Profile: package installation, archive/restore, deletion cancellation and confirmation, subagent cascades, cross-filter batch deletion, workspace selection, returning from global panels, new sessions and forks, content search, and restart persistence. Content search requires an open host query database; it passed after changing the isolated Profile from openAt: never to startup. This fork re-ran the automated suites only; it has not repeated the browser acceptance run, and the other three versions have isolated automated coverage only. No external model calls were made. The latest storage fixture isolates only the upstream POSIX fs-ext import that cannot load on Windows; file operations and native Windows locking still use the official implementation.
The installation commands below use the official npm registry.
Ask an agent to install it (recommended)
Send the prompt below to any agent that can run terminal commands on your computer. Replace web with your actual profile. Once installed, use the plugin in DSH.
Install the DSH plugin @leitaoy/dsh-archive-manager into my local web profile by running: dsh plugin --profile web add @leitaoy/dsh-archive-manager@latest --registry=https://registry.npmjs.org/. Then run dsh --profile web --dump-config, confirm the configuration includes workspace-archive-manager, ui-workspace-archive-manager, and explain how to reload DSH and start using the plugin.
Install the latest package from the official npm registry
Run this from any PowerShell directory:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
dsh plugin --profile web add @leitaoy/dsh-archive-manager@latest --registry=https://registry.npmjs.org/
dsh --profile web --dump-config
To pin a release, replace @latest with a specific version such as @x.y.z.
This fork previously shipped under the @ggtec528 scope. An installation created from that scope must be removed first with dsh plugin --profile web remove @ggtec528/dsh-archive-manager, because both packages declare the same service lines; the Settings entry is then provided by @leitaoy/dsh-archive-manager.
The configuration output should contain workspace-archive-manager and ui-workspace-archive-manager. Restart DSH Web and hard-refresh the browser. Do not copy client files manually: the Settings page and archive menu need the mounted plugin.
Updates
The settings title shows the installed version and a Check for updates button. When a newer release is available, Update automatically runs only when the DSH CLI or Desktop update service is available; otherwise, the dialog provides a profile-specific manual command to copy and run.
Usage
- Open the sidebar session menu and choose Archive session.
- Open Settings → Archived sessions to inspect sessions by workspace.
- Search by title, sort by update time, creation time, or title, or filter the list by project.
- Select Unarchive to restore one session, or select Restore all in the page header.
- Open a project heading's action menu to restore or delete all of that project's archived chats.
- To permanently delete one session, open Settings → Archived sessions, find the session, and use the delete icon. It cannot be undone. The sidebar has no delete entry in this fork.
If the entry is missing after installation or upgrade, restart DSH Web and hard-refresh the browser. It is located directly after Connectors in Settings.
Data handling limits
- Deletion always requires confirmation, and the only entry point is Settings → Archived sessions.
- It removes workspace records, archive markers, and the projection cache. For the official JSONL backend, a validated layout also allows removal of the session-owned directory and its contents, including attachments. Other backends or unknown layouts only lose the located transcript artifact, never its parent directory.
- Project containers and storage roots are retained. Deletion refuses symbolic links or Windows junctions at the official layout's project/session directory levels and keeps the operation retryable.
- Layout validation uses the official backend's initialized absolute root, so a relative root remains stable across host working-directory changes. If that field is unavailable, only an absolute configured root is accepted. An unverified official JSONL layout emits a warning with the session ID and artifact path before falling back to artifact-only deletion.
- Directory validation is not a cross-process filesystem lock: do not concurrently move or replace storage directories or change directory links during deletion. Storage paths writable by untrusted processes are not a security isolation boundary.
- A live session finishes writing before cleanup to prevent data truncation.
- The plugin replaces DSH’s default workspace and projection services. Install through the DSH profile instead of manually composing the patch.
Secondary development
Install from source
Use this for debugging or unpublished changes. The cloned directory becomes the plugin source path:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
git clone https://github.com/leitaoyu/dsh-archive-manager.git
Set-Location .\dsh-archive-manager
pnpm install --frozen-lockfile
pnpm build
dsh plugin --profile web add .
dsh --profile web --dump-config
Restart DSH Web and hard-refresh the browser. dsh plugin ... add . reads the package metadata and cordis.patch.yml; do not install by copying lib directly.
src is the sole maintained source directory. pnpm build uses esbuild to compile it into publishable lib output. Do not edit lib directly because the next build overwrites it.
- src\index.js: host service entry point.
- src\workspace.js: archived-session and workspace service.
- src\projcache.js: session projection cache.
- src\client.js: Settings page and archive UI.
test\*.test.mjs: host, client, Remote, and styling coverage.
After changing src, run the tests, confirm that generated lib output is committed with the source, then install from the local directory:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
pnpm test
pnpm pack:check
dsh plugin --profile web add .
pnpm test runs pnpm build first. The build generates all lib output from src in a temporary directory, then atomically replaces the previous output only after a successful build. A failed build preserves the existing lib.
Validation
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
pnpm verify
prepublishOnly runs the full verification suite before publishing and verifies that committed lib output matches the current src build.
Acknowledgments
Thanks to @michengai/dsh-archive-manager for the upstream project this fork is based on.
License
Licensed under Apache License 2.0.
Before creating or pushing a release tag, run pnpm release:preflight in PowerShell 7 (pwsh). It installs from the official npm registry with a frozen lockfile and the same 1440-minute release-age policy as CI, then runs the full verify suite. Recent dependencies require committed, exact-version exclusions; manual retries never add exclusions dynamically.
Tag releases and manual retries verify the exact npm version and gitHead before creating or updating the bilingual GitHub Release. Network, authorization, or metadata errors stop the flow. Retrying an older tag does not take GitHub Latest away from the npm latest version. These release controls do not change the four supported host versions.
Recovery checks the npm package name, version, and tag commit first. An exact match skips dependency installation, full builds, and republishing, and only synchronizes the Release. Unpublished old tags must still satisfy their original cooling policy. Exact-version and latest propagation each have a two-minute deadline; a lagging latest tag does not create a non-Latest Release prematurely.
Updating main does not retrigger an existing tag. After pushing workflow changes, manually run publish.yml on main with the original tag (for example, v0.1.18); do not move or recreate the tag.
Plugin correlati
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill