DeepSeek Harness 插件

dsh-archived-list

DSH plugin: view and restore archived sessions - shell overlay panel over the workspaceRegistry restore write path(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Yiklek/dsh-archived-list
最近更新
2026年8月20日
分类
工具与能力
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Yiklek/dsh-archived-list
插件名:dsh-archived-list
作者:Yiklek

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

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.section page) 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 archivedSessionIds

set through workspaceRegistry'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

PathPlaneRole
lib/index.jshostarchvList Cordis service (Typert Remote, SRC mode): list(), restore(sessionId), destroy(sessionId)
lib/client.jswebdsh.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 are archvList/list,

archvList/restore, and archvList/destroy. Parameter names are parsed from the method source (gateway SRC mode), so keep restore(sessionId)'s and destroy(sessionId)'s parameter a simple identifier and avoid the reserved lookup names (agent, session).

  • destroy is ordered so a mid-flight failure never strands accounting:

refuse live sessions -> read the durable header (proves the log exists and locates it via sessionPersistence.locate; the directory basename must equal the session id) -> detachSession while the registry's path index still resolves the id -> serialized archived-set removal -> rm -r the log directory last. The UI additionally requires an explicit second click ("确认删除") before each destroy.

  • Remote(...) markers are applied without decorator syntax in markRemote;

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 through remoteMethods(), which reads a module-private marker table (markers WeakMap). A second physical copy installed by this checkout (e.g. by a local pnpm install pulling devDependencies) becomes a different module instance, so archvList/list is 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's node_modules/@deepseek-ai/...; re-run the ln -s from the Install section after any pnpm install here, then restart dsh web.

  • Archiving never touches workspace accounting, so restore is exactly the

inverse set removal; the session keeps its position in the workspace.