DeepSeek Harness功能包,用于在两个DSH工作空间之间移动现有的冷DSH会话,同时保留其SessionId和事件历史。交互目标为…
A DeepSeek Harness feature bundle for moving an existing cold DSH session between two DSH workspaces while preserving its SessionId and event history. The interactive target is…
安装
dsh plugin --profile web add github:kirkchinese/DSH-Session-MoveGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
A DeepSeek Harness feature bundle for moving an existing cold DSH session between two DSH workspaces while preserving its SessionId and event history. The interactive target is the existing session-title row in the DSH Web sidebar; this package does not import Claude Code or other external transcripts.
Current iteration
The service exposes a read-only ctx.sessionMove.inspect({ sessionId, targetWorkspaceId }) dry-run that reports:
- source and target workspace identity;
- source and target JSONL locations;
- immutable source/target headers;
- persistence revision;
- physical row and logical event counts;
- contiguous seq bounds;
- raw-artifact and logical-event SHA-256 values;
- stable blockers such as live, archived, missing, same-workspace, unsupported backend/core capability, or target collision.
It uses SessionPersistence.readRaw() rather than inspect(), so the dry-run does not populate a prepared-session cache. The inspection itself performs no mutation.
With all revision-fenced core patches applied, the service registers itself as the one WorkspaceRegistry cold-session mover. The official Web sidebar then executes workspace.moveSession({ targetWorkspaceId, sessionId, beforeSessionId? }) through the typed Host RPC gateway, the registry validates the commit and emits the authoritative workspace/session-moved frame, and clients replace the session cwd plus both Workspace snapshots without optimistic membership edits. A private durable journal under configured root recovers or restores persistence cwd, lifecycle-bound message feedback, workspace accounting, and manual target/source order after interruption. It verifies the final header, unique effective workspace owner, event count, and logical-event SHA-256 before deleting the journal. The ./invariant companion rejects publication if any startup move journal remains unresolved.
Move semantics
A final move changes only the session header cwd and its workspace account. It preserves ID, creation time, lineage, preset, every logical event, and external dsh-session: references. Future tools and sandbox policy use the destination workspace. The first release is JSONL-only and cold-session-only.
See docs/phase-2-design.md for the core relocation seam, crash journal, rollback protocol, and UI integration plan, and docs/distribution.md for installation, support matrix, and rollback. Reproducible first-party changes are stored as a revision-fenced patch series under patches/deepseek-harness/; validate the current series with node scripts/apply-core-patches.mjs <checkout> --check.
Installation
Full capability requires a DSH built from the exact public base with the bundled first-party patch series applied. The npm package is the runtime plugin; the patch bundle builds the runtime.
| Runtime | ctx.sessionMove.inspect() |
Sidebar drag move |
|---|---|---|
Exact public base 47f943859bef60e4160492346772ded9b24f765a + the bundled patches, built from source |
Yes | Yes |
| Official installed rc.6, unpatched | Yes (read-only) | No — every move is refused with the unsupported blocker |
Quick install after the patched DSH build:
dsh plugin --profile <profile> add dsh-session-move
# or, from a packed tarball (also works with `pnpm dsh` in a source checkout):
DSH_HOME=<dsh-home> pnpm dsh plugin --profile <profile> add ./dsh-session-move-0.1.0.tgz
dsh --profile <profile> --dump-config
For the complete build-from-exact-base, installation, verification, provenance,
and rollback steps, see docs/distribution.md. Use an isolated profile for
first-time checks; a profile containing only @deepseek-ai/dsh-base fails
activation with "did not activate (waiting for workspaceRegistry,
messageFeedback)" until a host bundle is present.
Model Experience
Inspection and journal orchestration add no prompt, message, tool schema, tool result, or model selection. A completed explicit move preserves historical events but changes future working-directory-derived instructions, skills, tools, and sandbox context to the destination.
KV Cache effect
Inspection consumes no model tokens and does not affect cache. A completed move retains the event stream but a resumed request may not reuse provider cache entries whose system context includes the old cwd.
Known Limitations and Deferred Work
- Official installed DSH rc.6 has no relocation or mover capability, so an unpatched runtime only gets the read-only
inspect()service. Drag-to-move requires the user-built patched DSH: exact public base47f943859bef60e4160492346772ded9b24f765aplus the bundled 8-patch series, which adds the cold lifecycle lease, coordinator seam, recoverable POSIX JSONL transaction, mover registration, typedworkspace.moveSessionRPC, authoritativehost/session-movedframe, and official sidebar cross-group drag. This package never patches an installed DSH on its own. - The service injects the workspace/feedback host layer: a
dsh-base-only profile fails activation with an explicit "did not activate" error until a host bundle (dsh-headless/dsh-web-app) is present. - SQLite and Windows relocation are deferred; the first Provider implementation is POSIX JSONL only.
- Cross-group drag is verified in official UI tests and the assembled Host integration; a real GUI profile drag has not yet been exercised.
- Filesystem locks stay defense-in-depth under DSH's one-live-writer-per-session/process model; they do not make concurrent live writers cross-process transactional.
- No active profile or real session is modified during development.
- Public source commit
47f943859bef60e4160492346772ded9b24f765alabels itself rc.5, while the installed runtime is rc.6; exact build provenance is unavailable.
原始 README: https://github.com/kirkchinese/DSH-Session-Move/blob/main/README.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥