Preface¶
DeepSeek Harness (dsh) is an agent framework open-sourced by DeepSeek AI, with the official slogan “Everything is a plugin”: models, tools, conversations, sandboxes, and web UIs are all combined via plugins. When running tasks via the web UI daily, the local conversations will accumulate over time—some have already ended, some are just intermediate forks, and some are still hosting child agents. The sidebar allows switching the current session, but the default interface is insufficient for inventorying, archiving, restoring, or safely deleting unwanted records by workspace.
Community maintainer Zephyr-vibe created a web plugin dsh-archived-sessions: it provides a session management page in the “Settings” menu, bringing all local conversations together for centralized processing. This article is collated after cross-checking against the plugin directory page, the GitHub repository README / package.json, and the official deepseek-ai/deepseek-harness. The community plugin directory deepseek-harness-plugin.com is an independent site with no official affiliation to DeepSeek / HyperMind, and should not be treated as an official app store.
What is this¶
dsh-archived-sessions is a conversation and message plugin for the DeepSeek Harness web frontend, maintained by Zephyr-vibe, licensed under MIT, and primarily written in JavaScript. The current repository version is 0.1.2 (per package.json), and as of 2026-08-17, the GitHub repository shows 13 stars; the directory page lists 7 stars, so please refer to the repository for the accurate star count.
It solves a specific problem: providing a session management entry in the settings to uniformly manage all conversations on the local machine. The directory page summarizes its functions as: manage conversations, archive/restore, safely delete, and open the record directory. The README provides more complete details: unarchived and archived sessions are split into two tabs, and you can also group by workspace, search by title or ID, and expand individual session details.
There is another同名 repository on GitHub maintained by a different author. When installing, please confirm that the owner is Zephyr-vibe to avoid installing the wrong plugin.
Core Features¶
The following capabilities are sourced from the repository README (with consistent Chinese and English descriptions) and the 0.1.2 changelog, not speculative.
Dual Tabs and Two View Modes¶
The page is divided into two tabs:
- All Conversations: Unarchived sessions
- Archived Sessions: Already archived sessions; you can move sessions out of the archive back to “All Conversations” on this page
You can switch between single list and grouped by workspace views. Sessions without a workspace will fall into the “Ungrouped” category. The list displays sessions by title and relative time, with the most recent ones at the top; the relative time will automatically refresh.
Search and Batch Operations¶
There is a search box at the top that filters sessions in real time by title or session ID. Selection methods include checking boxes, drag-selecting multiple items, selecting all, and keyboard navigation (Tab + Enter / Space).
There are two types of batch actions:
- Archive: Keep the records, only change the archive status
- Delete: Permanently delete, with a confirmation popup
Version 0.1.2 changed batch operations to execute in batches of 20 items to avoid overwhelming the browser with requests when selecting hundreds of sessions at once.
Details, Child Agents, and “Non-Cascading Delete”¶
Each row is collapsed by default. When expanded, you can see:
- Disk usage and last update time
- Activity statistics: rounds, steps, counts of user/assistant messages, tool call distribution, and fetch records
- Files produced or downloaded by this session
- Parent and child session (fork) relationships
Child agent sessions are nested under their parent sessions with indentation and a “Child Agent” badge, and are collapsed by default; expand the parent row’s arrow to view them. When the parent session is deleted or missing, the child agent will float as a top-level row and remain visible in the workspace view.
The delete function is intentionally non-cascading: only the selected sessions are deleted. Child agents, forks, and downloaded/produced files are retained unless you also select them for deletion. The currently open session will be marked “Current Session” and cannot be deleted. Deleting a running session will be rejected (HTTP 409). Deleting a non-existent session will return a 404 error.
File deletion is also strictly restricted: you can only delete the files produced by the selected session, deleting directories is prohibited, and the operation includes a confirmation popup and failure summary. The details interface also has limits (up to 200 files and 50 fetch records) to avoid lagging the page with overly large sessions.
Open Record Folder¶
After selecting a session, you can click “Open Record Folder” to open the session’s record directory with the system file manager. Windows / macOS / Linux use explorer / open / xdg-open respectively. Sessions without a working directory use the _no-cwd layout, and this function has been supported since version 0.1.2.
Implementation Boundaries (README Compatibility Notes)¶
The README lists four points related to functional commitments:
- Zero Configuration: The session directory is automatically recognized according to the official DSH layout (standard path under $DSH_HOME/sessions/), no patches to the Harness core are required
- Archive/Restore: Uses the same registry state primitives as the official archiveSession function
- Non-Cascading Delete: Only deletes the selected sessions; running sessions are rejected for deletion
- Local API: The interface only trusts 127.0.0.1 / localhost / ::1, and declares that only official public APIs are used (workspaceRegistry, sessionPersistence)
The package.json marks the client platform as web, the peerDependencies target @deepseek-ai/dsh-* at ^0.1.0-rc.6, and requires Node.js >=20. DeepSeek Harness itself is still in developer preview, and the official README notes that breaking compatibility changes may occur in the future, so the plugin version needs to be matched with the host framework.
Installation and Activation¶
The installation command provided on the directory page can be executed in the DeepSeek Harness terminal:
dsh plugin add github:Zephyr-vibe/dsh-archived-sessions
This is the original text from the directory page, do not manually concatenate the repository name. For reproducible installations, pin the commit hash at the end as instructed on the directory page. When cross-checking the repository, the latest commit on the main branch is 1e8d1b55f72438209c1036de82a3455d3d6a657d (2026-08-16), which can be used as:
dsh plugin add github:Zephyr-vibe/dsh-archived-sessions#1e8d1b55f72438209c1036de82a3455d3d6a657d
The hash will change as the repository is updated, so please confirm on GitHub again before installing.
The repository README also provides a tarball installation for the web profile, suitable for explicitly installing to the web frontend:
dsh plugin --profile web add https://codeload.github.com/Zephyr-vibe/dsh-archived-sessions/tar.gz/refs/heads/main
If pnpm blocks the build script, add --ignore-scripts at the end of the command:
dsh plugin --profile web add https://codeload.github.com/Zephyr-vibe/dsh-archived-sessions/tar.gz/refs/heads/main --ignore-scripts
You can also directly tell the agent:
Help me install this project as a plugin: https://github.com/Zephyr-vibe/dsh-archived-sessions
The README explains that the agent will download the project, place it in the node_modules of the current profile, and register it to dsh.profile.bundles.
After installation is complete, you need to restart the web frontend. One of the official startup methods is:
npx @deepseek-ai/dsh web
After restarting, you should see the “Session Management” entry in the “Settings” menu.
Typical Usage¶
The following steps are sourced from the README’s functional description, not a custom-made operation manual.
1. Open the DeepSeek Harness web UI and go to “Settings → Session Management”.
2. Browse unarchived sessions in the “All Conversations” tab. When there are many conversations, use the search box to filter by title or ID; when you need to categorize by project, switch to “Grouped by Workspace”.
3. Select sessions that have ended but you want to keep a record of, and perform batch archiving. After archiving, the records remain, only moved from “All Conversations” to “Archived Sessions”.
4. When you need to resume an archived conversation later, go to “Archived Sessions” and move it out of the archive, and the session will return to “All Conversations”.
5. After confirming that a record is no longer needed, select it and delete it. Check the confirmation popup first; do not expect deleting the parent session to automatically clean up child agents—it will not happen, and child agents need to be selected individually for deletion.
6. The session you are currently viewing cannot be deleted; if the delete button is unavailable, switch to another session first.
7. When you need to verify the JSONL or output files on disk, select the session and click “Open Record Folder” to view the directory directly in the system file manager.
8. Expand a row to check how much space the session occupies, how many rounds it ran, which tools it called, whether there are downloaded files, and its parent/child session relationships.
The repository README includes two sets of interface screenshots: child agents nested under parent sessions in the archive view, as well as the batch delete confirmation and detail panel with activity statistics. For interface reference, you can directly view the GitHub repository.
Applicable Scenarios and Notes¶
It is particularly suitable for these use cases:
- Running multiple workspaces on the same machine, wanting to inventory conversations by project instead of relying only on the sidebar
- Conversations have ended but you still need to keep the records, archive them first instead of deleting immediately
- There are many child agents and forks, and you need to avoid accidentally deleting child sessions and output files during deletion
- Need to open the session directory to verify persistent files or download artifacts
There are several important points you must understand before use.
The plugin runs with the permissions of the current dsh process, and may execute code during installation. This is a security warning from the directory page, not just a polite reminder. You should read the GitHub source code and MIT license before installing; do not install plugins from untrusted sources.
It is a web plugin, and the peer dependency targets the official package versions around 0.1.0-rc.6. Harness is still in developer preview, and both APIs and slots may change. If the “Session Management” option does not appear in the settings after installation, first confirm that you installed it for the web profile and restarted the web frontend.
Deletion is permanent. Archiving only changes the status, while deletion removes the session directory. Although deletion is non-cascading, the current session is protected, and running sessions will return a 409 error, you should still carefully check which rows are selected before performing batch deletion.
The management interface only accepts local loopback addresses. Do not expose the Harness web port to the public network and rely on this restriction; it is a local protection measure, not remote authentication.
There are other “archive session / session management” plugins in the community, with different functional boundaries. Some only manage archived lists, while others require patching the core. dsh-archived-sessions (Zephyr-vibe) clearly states in its README that it works with a pure Harness setup, uses official APIs, and requires no core patches. Please refer to the respective repository descriptions when choosing plugins.
Summary¶
dsh-archived-sessions brings all local DeepSeek Harness conversations into the settings page: unarchived and archived sessions are viewed separately, with search and workspace grouping capabilities, archive and restore use the official state mechanism, deletion has confirmation and is non-cascading, and you can directly open the record directory. It is maintained by Zephyr-vibe, licensed under MIT, and the current version is 0.1.2.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-archived-sessions/
GitHub: https://github.com/Zephyr-vibe/dsh-archived-sessions