Conversation rewind for dsh web: /undo rolls back one turn, /rewind cuts to a past message, and hovering a user bubble offers a visual undo.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:flow2dream/dsh-msg-rewind
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 中文
Conversation rewind commands for DeepSeek Harness web.
/undo— roll the chat back one full turn (drop the last real user message and everything after it)/rewind— pick a past user message from a dialog and cut the conversation back to it- Visual rewind — hover a user message bubble in the chat and click the ⤺ undo button to rewind to that point
Both the model context and the visible transcript are truncated, and the durable JSONL artifact is rewritten so the cut survives a restart.
Screenshots




Real screenshots from dsh web.
Features
| Capability | Detail |
|---|---|
/undo |
Reverts the previous turn: deletes the last real user message and all events after it |
/rewind (bare) |
Opens a dialog listing every user message (chronological, most recent preselected); pick one to rewind there |
/rewind <seq> |
Directly rewinds to the given message seq |
| Visual rewind | Hover any user bubble → click the undo icon (shown with time + copy) to rewind to that message |
| Durable | Rewrites the session's JSONL+zstd artifact; the cut survives a restart |
| Clean UI | No "command completed" noise cards after a rewind |
Requirements
- DeepSeek Harness web (dsh web)
- Node
^22.19.0 || >=24.0.0
Install
Via npm (recommended)
dsh plugin --profile web add @flow2dream/dsh-msg-rewind@0.1.2
Then restart the web profile:
dsh web
Via GitHub
dsh plugin --profile web add dsh-msg-rewind@github:flow2dream/dsh-msg-rewind
Then restart the web profile:
dsh web
Manual
Add the dependency and bundle to your web profile:
// ~/.dsh/profiles/web/package.json
{
"dependencies": {
"@flow2dream/dsh-msg-rewind": "0.1.2"
},
"dsh": {
"profile": {
"bundles": ["@flow2dream/dsh-msg-rewind"]
}
}
}
Then install and restart the web profile:
cd ~/.dsh/profiles/web
pnpm install
dsh web
Usage
In any conversation:
- Type
/undo— the chat rolls back one turn. - Type
/rewind— a dialog opens with every user message; the most recent one is preselected. Arrow keys navigate, Enter rewinds. - Hover a user message bubble — a small undo icon appears next to the copy button; click it to rewind to that message.
The rewind target is the real user message (system injections such as runtime-context and skill-catalog snapshots are never treated as user turns).
How it works
- Host (
lib/index.js) registers the/undoand/rewindcommands. A rewind drains the persistence coordinator, splices the live session log, resets every derived cache, rewrites the JSONL artifact, resets the agent's request-header anchor, and broadcastssession/rewind. - Browser (
lib/client.js) listens forsession/rewind, resyncs the target session's window from the host, and injects the hover undo button into user bubbles. - The
session/rewindevent is allowlisted indsh-api-remotes's forwarded events.
Development
# from your web profile
npm install /path/to/dsh-msg-rewind
Source lives in lib/:
lib/index.js— host half (commands + truncation)lib/client.js— browser half (resync + visual rewind)
License
MIT
Links
More in this category
Minglink/dsh-infinite-gen-4★ 2250
System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status badge driven by a session projection.
ranxianglei/billion-context★ 472
The official billion-context plugin: a context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).
liangmianya/dsh-synapse★ 464
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
Nwflower/dsh-chat-import★ 208
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
Totoro-qaq/dsh-plugin-bridge★ 165
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Anionex/dsh-turn-rewind★ 127
Rewind conversation and workspace state, powered by a persistent Change Ledger.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.