Sessions & Messages
dsh-session-management-andywipe
AndyWipe13/dsh-session-management · ★ 2
Manage DeepSeek Harness sessions: delete legacy sessions and import sessions from Claude Code/Codex
Manifest details
安装
dsh plugin --profile web add 'github:AndyWipe13/dsh-session-management#daad083abfab872a393320449d5c62cc2363a3aa'GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
English | 中文
A DeepSeek Harness (DSH) plugin that manages sessions generated by the Harness: users can delete legacy sessions, and sessions can be imported from third-party agents (currently Claude Code and Codex).
Features
- Unified session management: cross-source (DSH / Claude Code / Codex) session list, search, preview, open/resume, archive/unarchive, delete and batch cleanup, plus stats — all inside the DSH settings page.
- Third-party session import: converts local Claude Code / Codex session histories into resumable native DSH sessions with full fidelity (text, thinking, tool calls and results are all preserved; no fake executable tools are invented).
- Safety invariants: third-party source files are always read-only; running sessions can never be deleted; deletion is explicit and irreversible (batch deletion requires typing
DELETE); cleanup always previews before it executes.
Installation
One-step install from npm (recommended):
dsh plugin --profile web add @nathan110628/dsh-session-management
dsh --profile web --dump-config # you should see the "# == @nathan110628/dsh-session-management" layer
dsh web
Or install from GitHub (equivalent; the repo ships prebuilt lib/):
dsh plugin --profile web add github:AndyWipe13/dsh-session-management
Uninstall:
dsh plugin --profile web remove @nathan110628/dsh-session-management
Development build & local assembly
src/index.ts— plugin entry point (exportsapply(ctx))cordis.patch.yml— config patch contributed by the bundle (dsh.bundle.patch)package.json— declaresdsh.bundleand peer dependenciesscripts/build.js— cross-platform Node build script
Build (no DSH source checkout needed; automatically falls back to the official dependency mirror at ~/.dsh/profiles/node_modules):
npm install
npm run build
Output goes to lib/ (entry lib/index.js, types lib/types/index.d.ts).
Assembly:
dsh plugin --profile web add .
dsh --profile web --dump-config
dsh web
Baseline verification
On a Windows environment without a DSH source checkout (relying on the official dependency mirror at ~/.dsh/profiles/node_modules), you can run directly:
npm run build # compile src -> lib
npm run typecheck # TypeScript type checking (builds and links dependencies first)
npm test # run tests (builds first)
Tests use the Node built-in test runner (--test-isolation=none) and cover:
- plugin baseline exports and bundle-assembly self-check (the
helloplaceholder tool has been removed); - assembly against fake official services (
sessions/sessionQuery/sessionPersistence/workspaceRegistry/storageDomain); - a read-only fixture bank (≥ 2 sessions each for Claude Code — including
archived_sessions— and DSH, with empty-session / malformed-line / Chinese Unicode / subagent edge-case samples).
Fixtures live in test/fixtures/; their bytes and mtime must not change before or after any test. See scripts/generate-fixtures.js for the generator script.
Import creates or reuses the official workspace based on the source session's cwd, registers session members after the log is persisted, and saves the scan-page title as a session/title event. Import reports a failure when the working directory does not exist. On rc.7 the sidebar needs a page refresh to sync.
Host-interface regression tests live in test/host-contract.test.js, covering the official title's value.title.title nesting, workspace registration after persistence, and the release of the cold-preparation object in the legacy title-repair path. scripts/check-session-ui.cjs takes a Playwright page plus a temporary session's { sessionId, title } and verifies selection, archive, unarchive, delete-cancel and actual deletion; it runs only against disposable test sessions.
Reference
Official plugin development guide: https://deepseek-harness.github.io/deepseek-harness/develop/basic/