dsh-archived-list
Manifest validdsh plugin: view and restore archived sessions from a dedicated page in the web Settings.
dsh-archived-list
A DeepSeek Harness (dsh) plugin: view and restore archived sessions from a dedicated page in the web Settings.
- A 已归档 / Archived nav row (own
settings.sectionpage) lists every archived session grouped by workspace, newest first inside each group. - Each row shows the title (log-backed title fold via the host service, with client-list and directory-name fallbacks) and the full session id (selectable text); the group header shows the workspace name and its count.
- Multi-select: checkbox per row and per workspace group, plus a toolbar (已选 N 项) with 恢复所选 / 删除所选 / 取消选择.
- 恢复 / Restore removes the session id from the durable
archivedSessionIdsset throughworkspaceRegistry's own serialized write path. By default it does not auto-open the restored conversation and keeps Settings open; the page includes two toggles to enable auto-open and close Settings after restore (persisted in browser localStorage). - 删除 / Destroy permanently deletes one archived session (or the whole selection, behind the same double confirmation): the host reads the durable header to locate the log, detaches workspace accounting, removes the id from the archived set through the serialized write path, then removes the session log directory from disk. Live sessions are refused.
Layout
| Path | Plane | Role |
|---|---|---|
lib/index.js | host | archvList Cordis service (Typert Remote, SRC mode): list(), restore(sessionId), destroy(sessionId) |
lib/client.js | web | dsh.client bundle: settings.section page (nav "已归档"), workspace-grouped list, locale dictionaries (zh/en), own <style> |
The host half is discovered by the Loader as an ordinary plugin entry; the
browser half is discovered through package.json's dsh.client declaration
and served at /plugins/dsh-archived-list/client.js. Client -> host calls ride
the shared connection RPC carrier (connection.rpc.call("/api", "archvList/…"))
resolved by the api gateway's SRC (source-mode) discovery - no generated typert
schemas are required.
Install into a profile
Install from GitHub:
npx @deepseek-ai/dsh plugin --profile web add github:Yiklek/dsh-archived-list
For development, a link: install instead keeps this checkout live (dsh plugin
forwards to pnpm inside the profile directory; edits to lib/*.js apply on the
next dsh restart; client bundle edits need no build step because the bundle is
hand-written in the module-loader format):
dsh plugin --profile web add link:../../projects/dsh-archived-list
This package is a standard dsh bundle plugin: package.json declares
dsh.bundle.patch pointing at its cordis.patch.yml, so dsh plugin add
automatically adds the package to dsh.profile.bundles and loads this plugin's
own patch layer. No manual edit to ~/.dsh/profiles/web/cordis.patch.yml is
needed.
Restart dsh (dsh web) to activate. To verify the composition without booting
the app: dsh --profile web --dump-config | grep -A2 archived-list.
Notes
- The remote service is namespace
archvList; endpoints arearchvList/list,archvList/restore, andarchvList/destroy. Parameter names are parsed from the method source (gateway SRC mode), so keeprestore(sessionId)'s anddestroy(sessionId)'s parameter a simple identifier and avoid the reserved lookup names (agent,session). destroyis ordered so a mid-flight failure never strands accounting: refuse live sessions -> read the durable header (proves the log exists and locates it viasessionPersistence.locate; the directory basename must equal the session id) ->detachSessionwhile the registry's path index still resolves the id -> serialized archived-set removal ->rm -rthe log directory last. The UI additionally requires an explicit second click ("确认删除") before each destroy.Remote(...)markers are applied without decorator syntax inmarkRemote; this follows the decorator-context contract of@deepseek-ai/dsh-typert-protocol.- Keep
@deepseek-ai/dsh-typert-protocol(and@deepseek-ai/cordis) as symlinks to the dsh installation's own copies. The gateway discovers SRC-mode Remote endpoints throughremoteMethods(), which reads a module-private marker table (markersWeakMap). A second physical copy installed by this checkout (e.g. by a localpnpm installpullingdevDependencies) becomes a different module instance, soarchvList/listis never claimed and every archived session shows "(无标题)". If the panel regresses, check the symlinks are still valid:node_modules/@deepseek-ai/{cordis,dsh-typert-protocol}should resolve to the dsh installation'snode_modules/@deepseek-ai/...; re-run theln -sfrom the Install section after anypnpm installhere, then restartdsh web. - Archiving never touches workspace accounting, so restore is exactly the inverse set removal; the session keeps its position in the workspace.
Comments
Loading…
Similar plugins
by DreamStan
A DSH plugin for browsing archived sessions and safely deleting them.浏览归档会话,并安全地关闭、取消归档或删除会话。
★ 0
MIT
TypeScript
Aug 18, 2026
dsh plugin --profile web add @dsh-external/dsh-archive-sessionby LianbinZhou
DSH Web GUI archive manager: list archived sessions & one-click restore (with bug fixes)
★ 0
MIT
JavaScript
Sep 14, 2026
dsh plugin --profile web add dsh-archive-managerby MS666666
Archive manager for DSH Web: list archived sessions in the Settings page and delete them for real, including their log, archive marker, and projection cache.
★ 1
↓ 124/wk
MIT
JavaScript
Aug 22, 2026
dsh plugin --profile web add dsh-archive-manager-plusby huahai0202
DeepSeek Harness (DSH) web-GUI plugin: archived-session panel with unarchive & delete
★ 8
MIT
JavaScript
Sep 23, 2026
dsh plugin --profile web add dsh-better-archiveRestore archived sessions to their original workspace from the Web GUI sidebar.
★ 0
dsh plugin --profile web add dsh-session-unarchiveby z953218350
Codex-style archived session manager for DSH Web UI — view, search, restore, and delete archived sessions from the settings page
★ 12
↓ 4.3k/wk
MIT
JavaScript
Aug 31, 2026
dsh plugin --profile web add @mlgbnb/dsh-archive-manager