deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
中文 | English
Adds two capabilities that are missing from DeepSeek Harness Web:
workspace.archiveSession, built in) and
unarchive (missing in rc.6 — this plugin implements it on the host side through
the workspace registry's own persistence queue, with
host/archived-sessions-changed frames keeping every client in sync).| Location | Content |
|---|---|
| Conversation header (next to the session title) | "Archive / Unarchive" and "Delete session…" (red, confirmation dialog) buttons |
| Sidebar footer | "会话管理" button that opens the full manager panel |
dsh plugin --profile web add dsh-session-manager
Restart the web app to activate (profile bundle auto-assembles; lib/ is the runtime
artifact, no build step).
dsh plugin --profile web add github:hkkz9522/dsh-session-manager
After cloning, inject in a web session that has dsh-super-injector resident (activates immediately, no restart):
dev_inject_plugin {"dir": "<absolute path to the repo>"}
dsh plugin add: remove the entry from dsh.profile.bundles and
dependencies in ~/.dsh/profiles/web/package.json, then restart.dev_uninject_plugin {"name": "dsh-session-manager"}conversation.session.header.actions / sidebar.footer.action, the standard toolkit
useSessions / useWorkspaces / t, locale, client bundle format) — upgrades are
very likely seamless.@deepseek-ai package (only Node built-ins), so it never
fails at load time after an upgrade. Delete/unarchive rely on a few internals that
rc.6 does not expose publicly (accessed defensively); if a future version refactors
them, you get a runtime error rather than a crash — adapt per the error message.peerDependencies declares only the cordis range; no hard-coded DSH version.node scripts/smoke-test.mjs (read-only smoke checks of the two host
endpoints; touches no real session).lib/ is the runtime artifact (host is ESM; client is a hand-written
loader-factory bundle).node scripts/smoke-test.mjs [baseUrl] (needs a running dsh web)..github/workflows/ci.yml): node --check on both files + npm pack --dry-run
content assertion.lib/index.js): a cordis plugin injecting
webServer / workspaceRegistry / sessions / agents / sessionPersistence, exposing two
HTTP endpoints:POST /session-manager/api/delete { sessionId }POST /session-manager/api/unarchive { sessionId }lib/client.js): a loader-factory bundle registering two slots:conversation.session.header.actions (per-session actions + delete confirmation)sidebar.footer.action (manager panel entry)Delete of a live session: agent.cancel (interrupt) → agent.scope.dispose (quietly
dispose the agent fiber, 3 s cap) → drop the zombie entry from the agents registry →
sessions.flush → detach the session store entry (session/disposed → all clients
remove the row) → workspace accounting cleanup → archive-set cleanup → remove the on-disk
directory.
Free to use, modify, copy, and distribute (including commercially) as long as the copyright notice and this license text are retained. The project is provided "as is", without warranty of any kind, express or implied. See LICENSE for the full terms.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。