DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Turn Fork — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-turn-fork

Turn Fork

DeepSeek Harness 对话的按轮原子化消息编辑、重试、重新生成和版本树导航

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-turn-fork@0.1.4
README兼容性版本

兼容性与来源证明

Turn Fork 以 dsh-turn-fork 发布,当前版本为 0.1.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.1.4stable
2026/9/10
0.1.0stable
2026/8/17

相关插件

正在加载相关插件…

最新版
0.1.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
201.4 kB
文件数
9
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 3
周下载
114
安全扫描
✓ v0.1.4 扫描通过
最近提交
2026/8/20
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Agent Teams@nanmicoder/dsh-agent-teamsAgentTeams for DeepSeek Harness:通过自然语言驱动多智能体团队协作(队长、成员、具有依赖关系的任务、消息传递),并在 Web GUI 中提供树状监视器

README

dsh-turn-fork

Turn-atomic message editing, retry, reroll, and version-tree navigation for DeepSeek Harness conversations.

简体中文

  • Edit any settled user message and re-run the conversation from that turn (truncate or preserve downstream turns).
  • Retry any historical turn; regenerate the latest reply.
  • Version tree Timeline with undo/redo navigation across branches.
  • Branch logs survive a dsh process restart — the P0 durability guarantee the community plugin dsh-message-edit fails (see below).
  • Official slots only: Timeline tab, session-header actions, and per-message assistant actions. No DOM injection, no text guessing.
  • Bilingual UI (zh / en) through the dsh-client-locale service.

Install

dsh plugin add dsh-turn-fork

Then restart dsh. The plugin registers a Turn Fork tab (between Trajectory and Prompt Studio), compact undo/redo/regenerate buttons in the session header, and retry/regenerate buttons on each finalized assistant message.

Why this plugin exists

dsh-message-edit (v0.2.3) has a P0 defect: its durable provenance event message-edit/version is written without the ignorable marker. The live write path accepts it, but after a dsh restart the persistence layer's cold-read vocabulary guard (assertEventsSupported) rejects the whole log with SessionFormatUnsupportedError — every branch session becomes unreadable. See tests/p0-persistence.test.mjs for a reproduction (live write OK → restart → cold read REJECTED) and this plugin's regression test (ignorable marker → restart → cold read PASSES), run against the real dsh-session + dsh-session-persistence-jsonl packages in a fresh child process.

dsh-turn-fork also fixes the design gaps the review found in the community plugin:

GapThis plugin
Custom events must be ignorable: trueturn-fork/version is always ignorable; schema-versioned for future migration
HTTP route without trust fence (CSRF / DNS rebinding, quota burning)Origin/Host loopback fence + content-type check + 64 KiB body cap
Message targeting by DOM text guessingOfficial slots only (conversation.view, conversation.session.header.actions, conversation.chat.assistant-actions)
reasoningEffort / config lost on forkprovider/model/maxTokens derive from the last request/header; reasoningEffort and adapterDefaults ride the inherited header inside the seed
Steering messages dropped on replayEvery user input of a turn is preserved and replayed in order
Assistant edits forge source: {kind:'model'} and drop tool callsNot supported (honest limitation, see below)
Undo navigation leaves branches running silentlyRunning branches are reported; each has an explicit Stop control
preserve replays N turns with no confirmationCost hint and explicit cascade choice before saving
No tests, no i18nnode:test suite + P0 regression + dsh-testkit lifecycle gate; zh/en dictionaries

Usage

  • Edit a user message — open the Turn Fork tab, pick a message, correct the text, choose the downstream policy and save. A new branch session is created from the completed prefix and the corrected turn re-runs.
  • Retry / regenerate — per-turn buttons in the tab, per-message buttons on assistant replies, or the header regenerate button for the latest reply.
  • Version tree — the tab lists every branch with its operation summary (from "…" to "…"), marks the current version, and offers Undo/Redo navigation plus Open for any branch. Branches with a running agent show a warning and a Stop control.
  • Cascade policy — truncate drops everything after the edited turn; preserve replays the edited turn and every later turn (each replayed input becomes its own turn, with inputs of the same original turn kept in order). The editor shows how many turns preserve will replay before you confirm.

Design notes

  • Fork semantics. The official session.fork(atSeq) RPC cuts including the anchored turn, which cannot express "edit turn N and re-run it". This plugin therefore uses the same underlying transaction seam the official fork uses internally — ctx.agents.create — with the seed cut before the target turn, alpha.4 lineage fields (parentSession, isSeeded, the separate inheritedEventCount, cwd, and agentPreset), the source's preset re-mounted, and durability flushed before the branch is announced.
  • Workspace. The fork inherits the source's workspace attachment exactly like the official fork does (re-attach, no filesystem snapshot). Re-running a task that rewrites files can therefore leave the working tree at the new branch's state. Pair with a checkpointing plugin (e.g. dsh-checkpoint-rewind) when you need workspace state rewind.
  • Branch deletion / GC. The platform currently exposes no session-delete API, so branches cannot be garbage-collected yet; the version tree is a plain disclosure of this lineage.
  • Migration from dsh-message-edit. Logs written by the broken event format are refused by the persistence layer itself, so no reader — this plugin included — can repair them in place. The Timeline detects the refusal and reports it explicitly. To recover old transcripts, use the official export flow before upgrading, or wait for the upstream fix.

HTTP trust fence

The host route /turn-fork is served by the dsh web server, which performs no origin checks of its own. Every request must pass the plugin's fence: a browser Origin must be http(s)://localhost|127.0.0.1|[::1] with the server's exact port (relaxed only when the server listens on 0.0.0.0, the operator's explicit remote-exposure opt-in); requests without an Origin must carry a loopback Host. POST bodies must be application/json and at most 64 KiB.

Development

npm install
npm run build      # tsc typecheck + tsdown host/client bundles
npm test           # build + node:test (core, lineage, P0 persistence regression)

Version 0.1.4 is developed and release-tested against DSH 0.1.5-rc.1 and Cordis 4.0.2. The browser side uses the Session Controller and client store, waits for the renderer, Conversation, and Chat slot owners, and contains no dependency on the removed dsh-client-runtime package. The npm development graph pins the full DSH peer closure to 0.1.5-rc.1 because the packages' prerelease-compatible ranges would otherwise allow npm to mix in a newer alpha.

0.1.5-rc.1 tightened the seeded-session contract in two ways this build now honours. The session constructor admits only the exact inherited prefix, so the plugin's provenance event is appended to the constructed session instead of riding along in the constructor seed; and a stored seeded log must carry the library's session/end-seed marker at the inherited cut before the cold-read guard will interpret it. The persistence regression in tests/ covers both, and inspect/readFrom are replaced by the open/read/close handle seam.

This build does not claim dual compatibility with 0.1.1-rc.2. The two hosts have incompatible creation fields (seedLength versus isSeeded plus inheritedEventCount) and incompatible browser service/module tables. A shared source tree could carry explicit rc.2 and 0.1.5-rc.1 adapters, but one manifest and one emitted client bundle cannot truthfully target both.

Tests

  • tests/p0-persistence.test.mjs — the P0 regression: the plugin's real fork seed is written through a real dsh-session store and dsh-session-persistence-jsonl backend, flushed to disk, then cold-read in a fresh child process ("restart"). A negative control proves the guard rejects the same log with the marker stripped.
  • tests/core.test.mjs — steering fidelity, plan boundaries, seed construction, model-config derivation, alpha.4 client event revisions, trust-fence matrix, body cap, operation decoding.
  • tests/lineage.test.mjs — version projection, undo/redo stacks, running flags.
  • tests/alpha4-lifecycle.test.mjs and tests/alpha4-package-contract.test.mjs — optional Web lifecycle injection, a POST fork through the alpha.4 creation API, client-loader boundaries, and exact alpha.4 manifest/lock closure.
  • dsh-testkit.yaml — real-host lifecycle gate (install → boot → register → uninstall → reboot → residue) via the community dsh-testkit, plus the generated .github/workflows/dsh-lifecycle.yml CI workflow, both pinned to alpha.4.

Testkit notes

The published dsh-testkit package currently declares prerelease peer ranges that do not semver-admit 0.1.2-alpha.4, so it is deliberately absent from this candidate's npm development lock. The checked-in quick-suite contract and CI action target alpha.4; local package checks use the direct lifecycle, real JSONL persistence, and exact package-lock tests above without resolving a mixed prerelease graph.

License

MIT. The client bundle preset under scripts/dsh-client-preset.ts is vendored from the DeepSeek Harness repository (MIT, © DeepSeek).