DeepSeek Harness の後戻り術:dsh-undo-savepoint でワンクリック元に戻す
プラグイン作者本人の録画をコマごとに読み解く:プラグインを 1 つ入れて、赤い「撤销」ボタンと緑の「恢复」ボタンを覚え、デスクトップの取り消しマネージャーを知り、わざとクラッシュさせた DSH がセッションごと無傷で戻ってくるまでを見届けます。
最終更新: 2026-10-01

DSH エージェントに危険な仕事を任せる——依存関係の入れ替え、プラグインの組み替え、cordis.patch.yml の書き換え——そのうちバックアップのない何かを壊します。DeepSeek Harness 本体には Ctrl+Z がありません。コミュニティの答えが、lire-安安 による OSS の dsh-undo-savepoint(MIT)です。プラグインのマウント時・設定変更時・15 分ごと・起動時に自動スナップショットを保存し、さらに自動では消されない手動保管庫を用意しています。
このページは「使い方」の実録解説です。スクリーンショットはすべて作者本人の録画から取ったフレームで、各画像から元動画の該当秒へ飛べます。どのロールバック系プラグインを入れるか迷っている人は、まずコレクションページをどうぞ: 巻き戻し・取り消しプラグイン コレクション
TL;DR
- ▸インストールは 1 行:dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master(Node.js ≥ 20)。dsh web を再起動すると、全セッションのヘッダーに赤「撤销」・緑「恢复」・グレー「快照」の 3 ボタンが並びます。
- ▸入口は 3 つ:ヘッダーのボタン、デスクトップのショートカット Ctrl+Alt+Z / Ctrl+Alt+Y(設定で変更可)、そしてチャットで AI に一言頼むルート。
- ▸取り消しは「後悔スナップショット」付きのソフトデリート:ロールバックの前に必ず before-restore の 1 行が記録され、手動ライブラリは自動削除されず、自動ライブラリは既定で最新 20 件だけ残します。
- ▸DSH が起動しなくても救出できます:デスクトップの取り消しマネージャーは本体なしでスナップショットを読めます。スナップショットには .env のコピーが含まれるので絶対に共有しないこと。ZIP 書き出しは AES-256-GCM 暗号化に対応。
インストールから「クラッシュしても復活」まで
パート 1 · インストールと 3 つの入り口
- 1
プラグインを入れて dsh web を再起動
dsh-undo-savepoint は lire-安安(この録画の作者)作の MIT プラグインで、Node.js ≥ 20 が必要です。GitHub ソースから入れて再起動すると、マウントした瞬間にベースラインのスナップショットを 1 枚取ります——マネージャーで最初に見る行が、この plugin-mounted の基点です。スナップショットには DSH の設定、profiles の cordis.patch.yml、ユーザープラグインツリーが入ります。
$dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master - 2
3 つの「帰り道」を覚える
セッションヘッダーにはモード名の横に 3 つのボタンがあります:赤「撤销」(直前の変更を取り消し)、緑「恢复」、グレー「快照」(スナップショットマネージャーを開く)。キーボード派には既定で取り消し Ctrl+Alt+Z、復元 Ctrl+Alt+Y。dsh web の設定で割り当てを変えられ、Backspace でクリアします。作者のスライドが挙げる 3 つ目の入口はチャット:AI に一言伝えれば、同じロールバックが走ります。

セッションヘッダーの 3 つの入口「撤销 / 恢复 / 快照」は常に手元に6:36 から再生 
キーボード経路:取り消し Ctrl+Alt+Z、復元 Ctrl+Alt+Y、設定で変更可能7:28 から再生
パート 2 · 日々のロールバックとクラッシュ演習
- 3
快照管理を開いて任意の版に戻す
スナップショットマネージャーのダイアログには 7 つの操作があります:手動保存・取り消し・復元・更新・期限切れ整理・ZIP の書き出し / 読み込み。各行には時刻、種別——ベースライン・自動・手動・後悔——、理由(plugin-mounted、config-change、settings-change、before-restore…)、ファイル数、所属ライブラリが並び、行ごとの操作は差分表示・このバージョンへ戻す・削除です。既定では自動ライブラリに 20 件、後悔スナップショットに 10 件、手動保存は無期限——いずれも「スナップショット設定」で変えられます。

スナップショット管理:7 つの操作、どの行も差分表示・復元・削除が可能7:00 から再生 - 4
デスクトップの取り消しマネージャーは後悔行を先に書く
同じ操作はネイティブのデスクトップウィンドウ「DSH 撤销管理器」にもあります:手動保存・取り消し・復元・選択行を戻す・選択行を削除・更新・期限切れ整理・書き出し・読み込み——しかも DSH 本体が起動しなくてもライブラリを読めるのが「局外でも救える」の意味です。取り消しを押すと、まず最上行に before-restore の後悔スナップショットが記録されてからロールバックが始まるので、「後悔を後悔する」ことも常に可能。行をダブルクリックすると差分が出ます。

取り消しではまず「後悔」スナップショットを書き込んでからロールバックする10:30 から再生 - 5
クラッシュ演習:わざと落として、そのまま連れ戻す
作者のクラッシュデモボタンは、重複する dsh-vision ローダー id を patch に注入します——DSH は TypeError: duplicate loader entry id、終了コード 1 で即死。ただし死ぬ前に手動スナップショット demo-crash-before と cordis.patch.yml のバックアップを保存済み。同じウィンドウには「注入クリア」(悪い注入を外す安全弁)、「取り消しマネージャーを開く」、「patch ファイルを表示」のボタンも並びます。悪い変更を取り消し、注入を解除して再起動——録画では 8 ラウンド・133 ステップのセッションがそのまま帰ってきました。ボタン下部の注意書きのとおり、これは実行中の DSH プロセスを本当に強制終了するので、先にセッションを保存しておくこと。

クラッシュ演習:スナップショット → 注入 → 強制終了——救出ボタンは常にそばに10:18 から再生 
ロールバックと再起動の後もセッションは無傷10:58 から再生
パート 3 · v0.4.5 のスナップショットタイムライン
- 6
v0.4.5 はダイアログをタイムラインに進化させた
現行版はダイアログに代わるタイムラインページ:日付ごとにグループ化された行に AUTO / BASELINE、理由、サイズが付き、行ごとに比較・復元・メモ / タグ編集・削除の 4 操作。ツールバーにはセーフモード(起動しないとき用)、診断(undo_doctor)、クリーンアップ、チャット取り消し、ZIP の書き出し / 読み込みが加わりました。この世代から既定でマスキングされ、.env・認証情報・home レベルの設定はローカルの保管庫へ退避、ZIP 書き出しは AES-256-GCM 暗号化も選べます。

v0.4.5 タイムライン:比較 / 復元 / メモ・タグ / 削除5:09 から再生
もう一つの後戻り術:メッセージ単位の dsh-rewind
dsh-undo-savepoint が設定とファイルをスナップショットへ戻すのに対し、dsh-rewind(夏桑菊XSJ 作、GitHub は XSJUSTC、パッケージ名 @xsj/dsh-rewind)は会話そのものを任意のユーザーメッセージまで巻き戻します。プロンプトの「送信取り消し」です。README の説明そのまま:各ユーザーメッセージの操作行、コピーアイコンの隣に ↺ 戻しアイコンが現れる。押すと実行中のターンを即座に中断し、そのメッセージ以降をチャット表示から隠し(なかったことにして)、メッセージ本文を送信前・編集可の状態で入力欄に戻します。送信ボタンの左には「取消回溯」が現れ、押せば隠したメッセージをそのまま復元します。
送信すれば、モデルは切り詰められた履歴と新しいメッセージだけを見ます——巻き戻された末尾がモデルのコンテキストに再入することはありません。戻せるのはユーザーメッセージだけで、アシスタントの返信には入口がありません(ホスト側で強制)。インストール:dsh plugin --profile web add github:XSJUSTC/dsh-rewind。

3 つを混同しないこと:dsh-undo-savepoint(本ページ)は設定とファイルをスナップショットで守り、クラッシュからも救出する。dsh-rewind は 1 つの会話をメッセージ単位で巻き戻す。anionex/dsh-turn-rewind はさらに別の独立系ターン巻き戻しプラグインです。コレクションページに勢ぞろいしています。
FAQ
ロールバックを任せる前に、読者が一番気になること。
取り消すと、残したい変更まで消えてしまいませんか?
ロールバックは記録付きのソフトデリートです:取り消し自体も後悔スナップショットとして記録されるので、いつでも前へ戻れます。作者のスライドは「最新スナップショットへの復元は何も起きない」とも警告——中身が本当に違う行を選び、確定前に差分を確認すること。既定では自動ライブラリに最新 20 件、後悔スナップショットに 10 件、手動保存は無期限で、いずれも「スナップショット設定」から変更できます。戻った時点より後の仕事はやり直しです。
DSH がもう起動しない場合、ロールバックできますか?
そのためのデスクトップ版があります:取り消しマネージャーは web UI なしでスナップショットを読めるので、作者のデモではわざと DSH を落としてから元に戻してみせます。悪い patch 注入が原因のクラッシュなら「注入クリア」が自動バックアップから cordis.patch.yml を復旧。v0.4.5 では起動しないとき用のセーフモードと undo_doctor 診断もワンボタンで使えます。
スナップショットから API キーが漏れませんか?
スナップショットには .env と設定のコピーが含まれます——作者自身のスライドも「秘匿情報を持ち出さない」ことを明言。v0.4.x からは既定でマスキングされ、.env・認証情報・home レベル設定の実値はローカル保管庫へ退避し、ZIP 書き出しは AES-256-GCM 暗号化に対応します。保管庫はローカルに置き、書き出す ZIP は暗号化を。
dsh-rewind、dsh-turn-rewind、undo-savepoint は同じプラグインですか?
いいえ、3 つの別プロジェクトです。lire1131 の dsh-undo-savepoint(本ページの主役)は設定とファイルのスナップショットとクラッシュ救出。XSJUSTC の dsh-rewind は会話を任意の過去ユーザーメッセージへ巻き戻す。anionex/dsh-turn-rewind はさらに別のコミュニティ製ターン巻き戻しプラグインです。コレクションページに一覧があり、本チュートリアルは undo-savepoint の実録解説に絞っています。
関連ガイド
同じセーフティネットを、別の角度から。
巻き戻し・取り消しプラグイン コレクション
undo-savepoint、turn-rewind、config-manager ほかロールバック系を比較——このチュートリアルの「どれを入れるか」上位層。
ガイドを読むDSH トラブルシューティング
dsh が起動しない・挙動がおかしいときの一般診断。ステップ 5 のクラッシュ演習と併用を。
ガイドを読むセッションの再生
エージェントの行動を事後にたどる機能——事前スナップショットと対をなす後追いの視点。
ガイドを読むセッションの書き出しと移行
マシンを変えるときセッションを持ち運ぶ。設定側はスナップショット ZIP 書き出しと合わせて。
ガイドを読むDSH の設定体系
profiles、cordis.patch.yml、設定項目——スナップショットが守るまさにそのファイル群。
ガイドを読むDSH プラグインとは?
初めての人はここから:プラグインの正体、入れ方、置き場所。
ガイドを読む出典とクレジット
スクリーンショットはすべて作者本人の Bilibili 録画からのフレームで、各画像から元動画の該当秒へ深リンクします。文章はこのサイトのオリジナル。インストールコマンド、マスキング、安全模式などの事実は lire1131/dsh-undo-savepoint と XSJUSTC/dsh-rewind の README と突き合わせて確認しました。
