DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Undo — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-undo

Undo

Durable multi-level context undo/redo for DeepSeek Harness, with per-user-message WebUI actions.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add dsh-undo@0.2.0
READMECompatibilityVersions

Compatibility and provenance

Undo is published as dsh-undo and currently resolves to version 0.2.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
9/20/2026

Versions

0.2.0stable
8/13/2026
0.1.1stable
8/13/2026
0.1.0stable
8/13/2026
Show 1 more versionCollapse versions
0.3.0-preview.1prerelease
8/13/2026
Latest
0.2.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
36 kB
Files
13
Surface
any
License
MIT
Source
npm
GitHub
★ 0
Weekly downloads
133
Security scan
✓ v0.2.0 scan passed
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

README

dsh-undo

User-side undo/redo plugin for DeepSeek Harness (dsh), inspired by the undo/redo experience in coding agents like opencode.

The plugin registers two slash commands (never sent to the model):

  • /undo — rolls the transcript back to before the last message. If the last message is an assistant reply, its whole closing reply flow (assistant fragments and tool results) is shadowed out of the visible context; if the last message is yours, that message is removed. The durable session log keeps every rolled-back event, so nothing is lost.
  • /redo — restores the messages the most recent /undo removed, re-adding them exactly as they were.

How it works

The session log is append-only, so /undo never deletes events. Instead it appends one empty-content assistant/message whose surface replace op shadows the targeted messages. Empty assistant content derives to no message, so the transcript and the model context show exactly the pre-undo state, while the log remains a complete, replayable, reversible history. /redo re-appends fresh copies of the shadowed events as ordinary surface appends (with re-minted message identities; tool results keep their call correlation, so transcript tool-call → tool-result adjacency is preserved).

Design notes:

  • Undo unit is the last reply — one /undo removes the closing reply flow of the last turn (or the trailing user message), returning to your last input. Repeated /undo calls walk back one reply at a time.
  • Redo is invalidated by new user input — any new user-role message clears the redo stack (standard undo/redo semantics). Redo copies carry their source seqs and never invalidate it.
  • Durability — every operation flushes through the shared session durability barrier (ctx.sessions.flush) before reporting success; if persistence cannot be proven, the command reports an error rather than lying.
  • Undo history is process-local — like a browser's undo stack, the redo stack is in memory. Restarting the process keeps the log consistent (markers stay shadowed, copies stay restored) but clears the redo stack.

Install

The package is a dsh bundle: package.json declares dsh.bundle pointing at cordis.patch.yml, which activates the plugin row.

From npm:

dsh plugin --profile demo add dsh-undo

From git (source checkout — the prepare script builds lib/ on install; authorize the build in the profile's pnpm-workspace.yaml first):

dsh plugin --profile demo add github:LingLambda/dsh-undo#<sha>

For local development against a source checkout of deepseek-harness, load the plugin directly as an overlay:

pnpm dsh web --patch ./cordis.patch.yml --patch /absolute/path/to/dsh-undo/overlay.yml

where overlay.yml references the source entry:

- insert:
    - id: undo
      name: /absolute/path/to/dsh-undo/src/index.ts

Usage

Type /undo in the composer to roll back to your last input, then /redo to restore what was undone:

/undo
/redo

Each command's result is shown in the transcript as a command card (已回滚 N 条消息 / 已恢复 N 条消息, or an error such as 没有可撤销的内容).

Develop

yarn install
yarn typecheck
yarn test
yarn build

License

MIT