DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Rewind — DeepSeek Harness 插件(DSH Plugin)
← Plugins

@zoytown/dsh-rewind

Rewind

DeepSeek Harness (dsh) 插件会在每一轮将您的工作区快照保存到影子 Git 仓库中,因此您可以将文件恢复到之前任意一轮。不会触碰您自己的 .git,普通目录也同样适用。

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

npx -y @deepseek-ai/dsh plugin --profile web add @zoytown/dsh-rewind@0.1.0
README兼容性版本
The Rewind page in dsh Settings, listing each turn of a DeepSeek Harness session with the files it changed and a Restore button

兼容性与来源证明

Rewind 以 @zoytown/dsh-rewind 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/8/19

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
188.7 kB
文件数
24
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 1
周下载
45
最近提交
2026/8/19
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Plugindsh-pluginDeepSeek Harness 社区插件市场,遵循官方插件规范——无需离开应用即可浏览、搜索并安装 9000+ 个由人工精选的社区插件。· DeepSeek Harness 社区插件市场(遵循官方开发规范):9000+ 人工精选社区插件,每日更新。Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话

README

@zoytown/dsh-rewind

English | 中文

Put the files back. A DeepSeek Harness plugin that saves your workspace at the end of every turn, so when the agent takes a wrong turn you can restore the files to any earlier point — from the Settings page or with /rewind.

Your own git repository is never touched. Directories that are not git repositories work too.

The Rewind page in dsh Settings, listing each turn of a DeepSeek Harness session with the files it changed and a Restore button


Why

The agent has been editing for six turns. Turn 3 was right; turns 4 through 6 made it worse. You want turn 3 back.

git cannot help: you have not committed since turn 1, and the agent's intermediate states were never commits in the first place. git checkout . throws away everything, including the parts that were good.

The harness does not save workspace files anywhere — its built-in checkpointing (dsh-session-checkpoint-policy) governs when the session log becomes durable and has nothing to do with your files.

This plugin fills that gap.

What it does

  • Saves every turn. When a turn ends, the workspace is committed into a shadow repository of the plugin's own. Turns that changed nothing cost one tree comparison and produce no entry.
  • Restores any turn. Files edited since then are reverted, files created since then are deleted — the workspace becomes that state rather than having it layered on top.
  • Every restore is reversible. The state being overwritten is saved first, so an unwanted restore is undone by restoring the entry above it.
  • Never touches your git. Snapshots live in $DSH_HOME/rewind/, not in your .git. Your index, HEAD, stashes, reflog, and gc are outside the blast radius, and a plain directory gets the same protection a repository does.

Install

npx -y @deepseek-ai/dsh plugin --profile web add @zoytown/dsh-rewind

Then restart dsh. A Rewind entry appears in the Settings sidebar.

Requires git on the machine. Without it the plugin reports that snapshots are paused and everything else in dsh keeps working.

To remove it:

npx -y @deepseek-ai/dsh plugin --profile web remove @zoytown/dsh-rewind

Snapshots outlive the plugin; delete $DSH_HOME/rewind/ to reclaim the space.

Using it

The Settings page

Settings → Rewind lists every saved point for the current workspace, newest first, with what changed and which tools ran. Restore asks for confirmation, spelling out that newer files will be deleted, then puts the files back.

The badge marks the snapshot your files currently equal — after a restore it moves to the restored entry, not the newest one.

The dsh Rewind confirmation dialog, warning that newer files will be deleted before restoring a snapshot

The /rewind command

Costs no tokens and runs no model turn — it is handled by the harness, not sent to the model.

CommandWhat it does
/rewindRestore the previous turn of this session
/rewind 3Restore the end of turn 3
/rewind a1b2c3d4Restore a snapshot by id (a unique prefix of 4+ characters)
/rewind listList this workspace's snapshots
/rewind saveSave the current state now, outside a turn

A restore prints the id of the state it overwrote, so /rewind <that id> undoes it.

What is and is not saved

Snapshots respect your .gitignore, so ignored files — .env, build output, node_modules — are not saved and not restored. This keeps snapshots small, and it means a restore leaves those files exactly as they are.

On top of that, the excludes list below is applied to every workspace, git repository or not. It exists so a directory with no ignore rules of its own does not swallow node_modules, but it is not conditional: a project that deliberately tracks dist/ or build/ in git will not have those captured either. Set excludes: [] if you want nothing beyond your own .gitignore.

.git itself is always excluded and cannot be configured otherwise: saving it would double the size of every snapshot, and restoring it would overwrite your real commit history with a stale copy.

Configuration

Edit the dsh-rewind row in your profile's cordis.yml:

- id: dsh-rewind
  name: '@zoytown/dsh-rewind'
  config:
    gitTimeoutMs: 60000
    retentionDays: 30
    maxSessions: 50
    listLimit: 200
    exposeTool: 'off'
OptionDefaultMeaning
gitTimeoutMs60000Deadline for one git command. Raise it for very large workspaces.
excludescommon dependency and build directoriesExtra paths never saved, applied to every workspace on top of your .gitignore. Set to [] to rely on your .gitignore alone.
retentionDays30Sessions whose newest snapshot is older than this are dropped.
maxSessions50How many sessions to keep per workspace, newest first.
listLimit200Most snapshots shown at once.
exposeTool'off'Whether the model can use rewind. See below.

Letting the agent rewind itself

exposeTool is 'off' by default, which keeps rewind a human-only capability.

ValueThe agent can
'off'nothing — rewind is yours alone
'read-only'read its own history (rewind_list)
'full'also restore the workspace (rewind_restore)

'full' is genuinely useful — "this approach is wrong, put the files back and start over" is a recovery move no amount of prompting replaces — and genuinely risky: an agent that misjudges can discard work you wanted. Every restore still saves the overwritten state first, so it is reversible, but the decision to enable it should be yours and deliberate.

FAQ

How do I undo what the agent just did to my files?

Type /rewind. It restores the workspace to the end of the previous turn. If you want a specific point, /rewind list shows every saved turn and /rewind 3 restores turn 3.

Does this commit to my git repository?

No. Snapshots go into a separate repository under $DSH_HOME/rewind/, and your .git is never opened for writing. Your index, HEAD, stashes, and reflog are unchanged, and git status shows exactly what it showed before.

Does it work if my project is not a git repository?

Yes. The shadow repository is the plugin's own, so your directory does not need to be a repository — this is the case rewind protects best, because there is nothing else protecting it.

Does rewinding undo the conversation too?

No. Rewind restores files only. The session log is append-only by design in DeepSeek Harness, and the transcript stays exactly as it was — so after a restore the agent still remembers what it did, which is usually what you want when telling it to try a different approach.

I installed it but there is no Rewind page. What now?

Restart dsh — plugins are mounted at boot. If it is still missing, run npx -y @deepseek-ai/dsh --profile web --dump-config and check that a dsh-rewind row appears; if it does not, the package was installed as a plain dependency rather than a bundle.

Will it slow down my turns?

No. Snapshotting runs after the turn ends and is never awaited by the agent loop, and a turn that changed no files costs one tree comparison and stores nothing.

How much disk does it use?

Snapshots share storage the way git commits do: unchanged files are stored once. The cost of a workspace is roughly one copy of it plus the changes since. Sessions older than retentionDays (30 by default) are deleted automatically.

Can the agent rewind by itself?

Only if you turn it on. exposeTool is 'off' by default; set it to 'full' to let the agent restore the workspace, or 'read-only' to let it read its history without restoring.

Known limitations

  • Files ignored by .gitignore are not saved or restored. If the agent breaks .env or something under node_modules, rewind cannot bring it back.
  • A restore does not touch the conversation. Files go back; the transcript does not.
  • Retention is per session, not per snapshot. A single very long session keeps all of its snapshots; the limits drop whole sessions once they are old or too numerous.
  • Sandboxed or remote subprocess providers are not supported in 0.1. The shadow repository is created on the machine dsh runs on, so a provider that executes tools elsewhere (E2B) would snapshot the wrong filesystem. The default local provider is what this version targets.
  • git must be installed. Without it the page says snapshots are paused; nothing else in dsh is affected.
  • Files inside a nested git repository are not captured. A sub-repository is recorded the way git records one — as a pointer, not as files — so rewind neither saves nor restores anything inside it.
  • Restoring from the panel or /rewind is refused while the agent is mid-turn. Those paths wait for an idle agent. The opt-in rewind_restore tool is the deliberate exception: the agent calls it during its own turn, so that path does not wait (it is barred from running beside other tool calls instead).
  • A restore interrupted partway — a git timeout, a killed process — can leave the workspace between the two states. The safety snapshot is always written first, so nothing is lost: re-running the restore, or restoring the safety entry, settles it. But do not read an error from a restore as a guarantee that nothing on disk moved.
  • excludes applies to every workspace, not only to directories without a .gitignore. A project that tracks dist/ or build/ in git will not have those files captured or restored unless you set excludes: [].

How it works

Each workspace gets a git repository under $DSH_HOME/rewind/<key>/repo.git, bound to your directory with --work-tree. Saving is add → write-tree → commit-tree → update-ref, which writes only inside that repository: no file in your workspace is touched and no HEAD moves. Restoring is read-tree -m -u, which makes the workspace equal the snapshot — including deleting files the snapshot does not have.

Every git command runs with hooks disabled, signing disabled, and your global excludes neutralized, so your repository's own hooks never fire and a signing passphrase is never demanded. Git runs through the harness's subprocess service, so it executes wherever your files actually live.

Sessions are separate chains inside one workspace repository, so they share storage while staying individually restorable and individually expirable.

Privacy

Nothing leaves your machine. The plugin has no telemetry and makes no outbound network requests.

Its two HTTP routes are local surfaces for the Settings page, and both require the request to arrive over the loopback interface and to address the server by a loopback Host — the second check is what a DNS-rebinding page cannot satisfy. The restore route additionally requires POST and refuses a request labelled cross-site. Anything already able to run code on your machine as you can, of course, reach them, exactly as it could reach dsh itself.

Verified

The behaviour described above was exercised on 2026-08-19 against DeepSeek Harness packages 0.1.0-rc.6/0.1.0-rc.7 and git 2.50.1, including a full save → restore → undo cycle through the Settings page. DeepSeek Harness is a developer preview; re-check these claims after a harness upgrade.

Requirements

  • git available where dsh runs tools
  • Node ^22.19 || >=24
  • DeepSeek Harness (developer preview — expect breaking changes)

License

MIT