πŸ“¦ @goodandready/dsh-time-machine

September 6, 2026 Β· View on GitHub

Automated Shadow Git Snapshots, Workspace Time-Travel & Instant Rollback for DeepSeek Harness

npm version license DSH Plugin Node version

All Author Projects

πŸ‡¬πŸ‡§ English β€’ πŸ‡·πŸ‡Ί Русский β€’ πŸ‡¨πŸ‡³ δΈ­ζ–‡θ―΄ζ˜Ž


⚑ Overview

dsh-time-machine provides an automated safety net and instantaneous rollback engine for DeepSeek Harness workspaces.

Autonomous agents frequently execute complex multi-file refactorings, run mutating shell commands, or install dependencies. When an unexpected regression or broken state occurs, manual git reversion can be messy and risk losing untracked files or user git history.

dsh-time-machine creates lightweight shadow git snapshots in the background without modifying user git commits or branches, providing 1-click interactive rollback, visual file diffs, and automatic recovery prompts on command failure.

graph LR
    subgraph AgentAction [DSH Agent Mutating Operations]
        Agent[πŸ€– Agent: Edits Files / Runs Commands] --> Trigger{Pre-Action Hook}
    end

    subgraph TimeMachine [dsh-time-machine Core Engine]
        Trigger --> ShadowGit[Shadow Git Snapshot Engine]
        ShadowGit --> Snapshots[(In-Memory Checkpoint Timeline)]
        Snapshots --> DiffEngine[Visual Workspace Diff Calculator]
    end

    subgraph SafetyNet [Restoration & Web UI Studio]
        DiffEngine --> Sidebar[πŸ•’ Time Machine Sidebar Tab]
        Snapshots --> Rollback[βͺ 1-Click Instant Workspace Rollback]
        Rollback --> CleanState[Restored Pristine Working Tree]
        Trigger -.->|Command Error| AutoHeal[🩹 Auto-Heal Rollback Prompt]
    end

    style AgentAction fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4
    style TimeMachine fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4
    style SafetyNet fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4

🌟 Key Capabilities

1. πŸ›‘οΈ Lightweight Shadow Git Snapshots

  • Captures the full working tree, staged changes, and untracked files using isolated Git shadow tree references;
  • Zero interference with user commit history, current active branch, or repository staging area;
  • Maintains a rolling history of the most recent checkpoints with clear timestamps, session scoping, and labels.

2. βͺ Instant Safe Rollback (time_machine_checkpoint_rollback)

  • Restores the entire workspace or specific files to any previous checkpoint in milliseconds;
  • Uses non-destructive checkout-index and clean without moving HEAD or rewriting branch history;
  • Can be triggered programmatically by the agent or interactively by the user in the UI.

3. πŸ” Visual Snapshot Diff Inspector (time_machine_diff)

  • Computes file-by-file visual diffs comparing current workspace state against any checkpoint;
  • Highlights added, deleted, and modified lines with clean line numbers and statistics.

4. πŸ•’ Interactive Sidebar & Settings Timeline (lib/client.js)

  • Seamlessly integrates into DSH Web UI sidebar and settings tab;
  • Displays a chronological timeline of session checkpoints with 1-click "Rollback", "Diff", and "Delete" buttons.

5. 🩹 Auto-Heal on Command Failure

  • Automatically records checkpoints when a tool or command fails, preserving recovery options.

πŸ› οΈ Agent Tools Reference (6 Tools)

Tool NameParametersDescription
time_machine_checkpoint_createlabel?: string, sessionId?: stringCreates a shadow git workspace checkpoint before risky edits or operations
time_machine_checkpoint_listsessionId?: stringLists all recent workspace checkpoints newest first
time_machine_checkpoint_rollbackid: string, confirm: booleanSafely reverts workspace files back to specified checkpoint without altering branch HEAD
time_machine_difffrom: string, to?: stringReturns unified file diff between current workspace and target checkpoint
time_machine_checkpoint_deleteid: string, confirm: booleanPermanently deletes a single checkpoint and purges its git reference
time_machine_checkpoint_prunesessionId?: string, keep?: numberPrunes session checkpoints, keeping only the newest N checkpoints

πŸ“¦ Quick Installation

dsh plugin --profile web add @goodandready/dsh-time-machine

βš™οΈ Configuration Reference (settings.yaml)

dsh-time-machine:
  autoSnapshotEnabled: true    # Automatically take checkpoints before file modifications
  maxSnapshots: 20             # Maximum rolling checkpoints retained in memory
  autoHealPrompt: true         # Prompt for rollback when a command fails

πŸ“‹ Release Notes

v0.1.9 β€” Event Bus Harmonization & Dependency Cleanup

  • Changed in v0.1.9: Harmonized event bus subscriptions to prevent duplicate checkpoints. Native DSH session/event bus takes precedence, with legacy ctx.events used strictly as a fallback when ctx.on is unavailable.
  • Changed in v0.1.9: Removed unused @deepseek-ai/dsh-credentials from peerDependencies.
  • Added in v0.1.9: Standardized project design contract in docs/design/DESIGN.md.

v0.1.7 β€” Critical Safety, Staging Isolation & Native Event Bus

  • Changed in v0.1.7: Safe workspace rollback via read-tree + checkout-index + clean -fd. Rolling back to a checkpoint never modifies branch HEAD or severs git commit history.
  • Changed in v0.1.7: User staging area protection. Checkpoints now isolate git index creation through GIT_INDEX_FILE, preventing disruption of pre-staged files in .git/index.
  • Changed in v0.1.7: Native DSH session event integration. Subscribed to session/event bus for automated checkpoints on turn/start, approval/asked, turn/end, and command errors.
  • Changed in v0.1.7: Automatic Git ref cleanup on snapshot eviction to eliminate disk ref leaks.
  • Changed in v0.1.7: Direct working directory diff computation when comparing checkpoints with uncommitted changes.
  • Changed in v0.1.7: Strict compliance with DSH Plugin Authoring guidelines: form fields are enabled only when settings status is ready.
  • Added in v0.1.7: WebServer request body size limit (1MB max payload) for DoS protection.
  • Added in v0.1.7: Complete Chinese localization (zh) in frontend interface.

πŸ“„ License

MIT Β© GooDAnDReaDY