dsh-archived-conversation
No description
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 19, 2026
- Updated
- Aug 19, 2026
Introduction
dsh-archived-conversation
简体中文 | English
An archived-conversation manager plugin for DeepSeek Harness (DSH). It adds a Settings → 已归档 (Archived) page that lists every archived conversation grouped by project, with unarchive and delete actions.
DSH already ships the archive capability (right-click a conversation in the left sidebar → Archive; the conversation disappears from the workspace view and its id is written to archivedSessionIds in ~/.dsh/storages/workspace.json). But DSH currently has no management UI for archived conversations and no unarchive / delete entry point — this plugin fills that gap.
Features
- Grouped by project — reuses DSH's workspace info to group archived conversations under their owning project.
- Unarchive — removes the id from
archivedSessionIds; the conversation returns to its original position in its workspace. - Delete — detaches from the workspace, drops from the archive set, and removes the on-disk session directory (irreversible).
- Auto-refreshes every 3s, staying in sync with DSH's
host/archived-sessions-changedbroadcast.
How it works
- Pure ESM, zero runtime dependencies (Node built-ins only), same shape as
dsh-mcp-manager. - Client: registers the "已归档" tab via the
settings.sectionslot, rendered withreact.createElement(no JSX, no bundler). - Host: mounts the
/archived-conversation/api/*same-origin JSON API viactx.webServer.register. - Reuses DSH's own services; never parses the session file format:
ctx.workspaceRegistry— the authority on archive state and project membership.ctx.sessionPersistence.readFrom— reads each archived session's log and folds its lastsession/titleevent (the same logic as DSH's own "title" projection unit;sessionQuery.readTitleSnapshotsis unreliable for cold persisted sessions).ctx.webServer— mounts the management API.
- Guard rail: an active (open) session cannot be unarchived or deleted, so an in-flight conversation is never corrupted.
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add <path-or-repo>
Then restart dsh --profile web and reload the page. The plugin self-activates through dsh.bundle.patch; no manual cordis.patch.yml edits needed.
Usage
- In the left sidebar, right-click any conversation → Archive (provided natively by DSH).
- Open Settings → 已归档: see archived conversations grouped by project.
- For each conversation you can:
- Unarchive — return it to its original workspace position.
- Delete — remove it permanently (confirmation dialog; irreversible).
API
| Method | Path | Description |
|---|---|---|
| GET | /archived-conversation/api/ping | Liveness probe |
| GET | /archived-conversation/api/list | Archived conversations grouped by project |
| POST | /archived-conversation/api/:id/unarchive | Unarchive |
| DELETE | /archived-conversation/api/:id | Delete |
Layout
dsh-archived-conversation/
package.json # dsh.client.inject + dsh.bundle.patch
cordis.patch.yml # plugin row (activated by bundle.patch)
lib/index.js # host: API + archive-state read/write
lib/client.js # client: Settings "已归档" UI
README.md / README.zh-CN.md / LICENSE
Verification
No build step. After installing into a live web profile, open Settings → 已归档 in the browser. Host liveness: GET /archived-conversation/api/ping.