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

АвтоматичСскиС Ρ‚Π΅Π½Π΅Π²Ρ‹Π΅ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для DeepSeek Harness

npm version license DSH Plugin Node version

ВсС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π°Π²Ρ‚ΠΎΡ€Π°

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

⭐ Если Π²Π°ΠΌ нравится этот ΠΏΠ»Π°Π³ΠΈΠ½, ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅ΠΌΡƒ Π·Π²Π΅Π·Π΄Ρƒ Π½Π° GitHub β€” это ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСня Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ дальшС.

πŸ› Если Π²Ρ‹ нашли Π±Π°Π³ ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», создайтС issue Π½Π° GitHub Π½Π° любом языкС β€” я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсий ΠΏΠ»Π°Π³ΠΈΠ½Π°.
--- ## ⚑ ΠžΠ±Π·ΠΎΡ€ **`dsh-time-machine`** прСдоставляСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ систСму бСзопасности ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚Π° для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ пространства Π°Π³Π΅Π½Ρ‚ΠΎΠ² **DeepSeek Harness**. АвтономныС Π°Π³Π΅Π½Ρ‚Ρ‹ часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ слоТныС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ мноТСства Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Π’ случаС ошибок ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ ΠΊΠΎΠ΄Π° Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΡ‚ΠΊΠ°Ρ‚ Ρ‡Π΅Ρ€Π΅Π· git ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Ρ‘Π½ ΠΈ Π³Ρ€ΠΎΠ·ΠΈΡ‚ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ нСотслСТиваСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΡ€Ρ‡Π΅ΠΉ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². `dsh-time-machine` создаёт лСгковСсныС **Ρ‚Π΅Π½Π΅Π²Ρ‹Π΅ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹ (shadow git snapshots)** Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· измСнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², обСспСчивая **ΠΎΡ‚ΠΊΠ°Ρ‚ Π² 1 ΠΊΠ»ΠΈΠΊ, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ просмотр Diff ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎ-восстановлСния ΠΏΡ€ΠΈ сбоях**. ```mermaid graph LR subgraph AgentAction [ДСйствия Π°Π³Π΅Π½Ρ‚Π° DSH] Agent[πŸ€– АгСнт: ΠŸΡ€Π°Π²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² / Запуск ΠΊΠΎΠΌΠ°Π½Π΄] --> Trigger{Π₯ΡƒΠΊ ΠΏΠ΅Ρ€Π΅Π΄ дСйствиСм} end subgraph TimeMachine [Π―Π΄Ρ€ΠΎ dsh-time-machine] Trigger --> ShadowGit[Π”Π²ΠΈΠΆΠΎΠΊ Ρ‚Π΅Π½Π΅Π²Ρ‹Ρ… Git-ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ²] ShadowGit --> Snapshots[(Π₯ронологичСская Π»Π΅Π½Ρ‚Π° Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ²)] Snapshots --> DiffEngine[ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Diff] end subgraph SafetyNet [Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Web UI] DiffEngine --> Sidebar[πŸ•’ Π’ΠΊΠ»Π°Π΄ΠΊΠ° Time Machine Π² сайдбарС] Snapshots --> Rollback[βͺ ΠœΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°] Rollback --> CleanState[ВосстановлСнноС чистоС состояниС] Trigger -.->|Ошибка ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹| AutoHeal[🩹 ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎ-ΠΎΡ‚ΠΊΠ°Ρ‚Π°] 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 ``` --- ## 🌟 ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности ### 1. πŸ›‘οΈ ЛСгковСсныС Ρ‚Π΅Π½Π΅Π²Ρ‹Π΅ Git-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹ * ЀиксируСт всё Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, индСксированныС ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ shadow-ссылки Git; * НС создаёт Π»ΠΈΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ истории, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ Π½Π΅ сдвигаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ `HEAD`; * Π˜Π·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ индСкс `.git/index` ΠΎΡ‚ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ сохранСния Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ `GIT_INDEX_FILE`; * Π₯Ρ€Π°Π½ΠΈΡ‚ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ послСдних $N$ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² с понятными ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ, сСссионной привязкой ΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ### 2. βͺ ΠœΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ бСзопасный ΠΎΡ‚ΠΊΠ°Ρ‚ (`time_machine_checkpoint_rollback`) * Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всё Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π·Π° миллисСкунды; * НС Π·Π°Ρ‚ΠΈΡ€Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Π΅Ρ‚ΠΎΠΊ Git: ΠΎΡ‚ΠΊΠ°Ρ‚ выполняСтся Ρ‡Π΅Ρ€Π΅Π· бСзопасный `read-tree` + `checkout-index` + `clean -fd`; * ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π°Π³Π΅Π½Ρ‚ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² интСрфСйсС. ### 3. πŸ” Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ инспСктор Diff (`time_machine_diff`) * Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° со ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠΌ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ наглядный ΠΏΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Diff. ### 4. πŸ•’ Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ Ρ…Ρ€ΠΎΠ½ΠΈΠΊΠ° Π² сайдбарС ΠΈ настройках (`lib/client.js`) * ВстраиваСтся Π² Π±ΠΎΠΊΠΎΠ²ΡƒΡŽ панСль Web UI DSH ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ настроСк ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²; * ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Β«ΠžΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΒ», Β«Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ DiffΒ» ΠΈ Β«Π£Π΄Π°Π»ΠΈΡ‚ΡŒΒ». ### 5. 🩹 Авто-восстановлСниС ΠΏΡ€ΠΈ сбоях ΠΊΠΎΠΌΠ°Π½Π΄ * АвтоматичСски фиксируСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΈ сбоях выполнСния инструмСнтов ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. --- ### 4. Π’Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° staging (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² v0.1.15) - **Π’ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ΅ восстановлСниС Ρ„Π°ΠΉΠ»Π°**: ВосстановлСниС ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· снимка Π±Π΅Π· сброса ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° Ρ‡Π΅Ρ€Π΅Π· агСнтский инструмСнт `time_machine_file_rollback` ΠΈΠ»ΠΈ UI модального ΠΎΠΊΠ½Π° Diff. - **Π—Π°Ρ‰ΠΈΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ staging**: БостояниС Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ `git add` (`stagedTreeHash`) фиксируСтся ΠΈ защищаСтся ΠΎΡ‚ пСрСзаписи. - **Авто-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ рискованных инструмСнтов**: БнятиС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ (`bash`, `execute_command`, `apply_patch` ΠΈ Π΄Ρ€.). - **Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ просмотр Diff**: Π”Π²ΡƒΡ…ΠΏΠ°Π½Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр с ΠΏΠΎΡ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ статистикой ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (+/- строк) ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ восстановлСния. ## πŸ› οΈ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π°Π³Π΅Π½Ρ‚Π° (7 инструмСнтов) | Имя инструмСнта | ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ | ОписаниС | |---|---|---| | `time_machine_checkpoint_create` | `label?: string, sessionId?: string` | Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Ρ‚Π΅Π½Π΅Π²ΠΎΠΉ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ рискованными ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ | | `time_machine_checkpoint_list` | `sessionId?: string` | Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊ старым | | `time_machine_checkpoint_rollback` | `id: string, confirm: boolean` | БСзопасно ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ пространства Π±Π΅Π· измСнСния HEAD Π²Π΅Ρ‚ΠΊΠΈ | | `time_machine_diff` | `from: string, to?: string` | Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Diff ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ состояниСм ΠΈ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠΌ | | `time_machine_checkpoint_delete` | `id: string, confirm: boolean` | УдаляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Git ref | | `time_machine_checkpoint_prune` | `sessionId?: string, keep?: number` | ΠŸΡ€ΠΎΡ€Π΅ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Ρ‹ сСссии, сохраняя ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство самых свСТих | --- ## πŸ“¦ Быстрая установка ```bash dsh plugin --profile web add @goodandready/dsh-time-machine ``` --- ## βš™οΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (`settings.yaml`) ```yaml dsh-time-machine: autoSnapshotEnabled: true # Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² maxSnapshots: 20 # МаксимальноС количСство Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² Π² памяти autoHealPrompt: true # ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ``` --- ## πŸ“‹ Π˜ΡΡ‚ΠΎΡ€ΠΈΡ вСрсий (Release Notes) ### v0.1.14 β€” Π Π΅Π΄ΠΈΠ·Π°ΠΉΠ½ Π² стилС dsh-clinebot, CSRF-Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ * **Added in v0.1.14**: ПолноС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ интСрфСйса ΠΊ эталонному стандарту Π΄ΠΈΠ·Π°ΠΉΠ½-Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² `dsh-clinebot`: нативная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅ΠΌΠ½ΠΎΠΉ/свСтлой Ρ‚Π΅ΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ `--dsw-alias-*`, Π°ΠΊΡ†Π΅Π½Ρ‚Π½Ρ‹Π΅ (`.tm-btn-primary`) ΠΈ дСструктивныС (`.tm-btn-danger`) ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π±Π΅ΠΉΠ΄ΠΆΠΈ статуса Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ настроСк ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ², соврСмСнноС модальноС ΠΎΠΊΠ½ΠΎ просмотра diff с Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ΠΌ Ρ„ΠΎΠ½Π°. * **Security in v0.1.14**: Π’Π½Π΅Π΄Ρ€Π΅Π½Π° CSRF-Π·Π°Ρ‰ΠΈΡ‚Π° ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… HTTP-ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² (`create`, `delete`, `rollback`, `prune`) Ρ‡Π΅Ρ€Π΅Π· Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° `Sec-Fetch-Site` (`isTrustedSettingsRequest`). * **Fixed in v0.1.14**: АвтоматичСская очистка сиротских индСксов Git (`cleanupOrphanedIndices`) ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°; Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ созданиС Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… (`autoHealPrompt`) Π² ΡˆΠΈΠ½Ρƒ legacy events fallback. ### v0.1.13 β€” УстранСниС fallback settings.section ΠΈ бСзопасный доступ ΠΊ settingsScope * **Changed in v0.1.13**: Π£Π΄Π°Π»Π΅Π½Π° рСгистрация запасной строки Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня `settings.section` ΠΈΠ· Π±ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ списка настроСк DeepSeek Harness Web UI; настройки ΠΏΠ»Π°Π³ΠΈΠ½Π° строго Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ сворачиваСмой ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ `settings.plugin.item`. * **Fixed in v0.1.13**: Доступ ΠΊ сСрвису настроСк ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π½Π° бСзопасный Π²Ρ‹Π·ΠΎΠ² `ctx.get('settingsScope')` для прСдотвращСния чтСния `undefined` Ρ‡Π΅Ρ€Π΅Π· Cordis proxy. ### v0.1.12 β€” Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠΊΠΎΠ½ΠΊΠΈ часов Π½Π° страницС Guide Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ сайдбара * **Fixed in v0.1.12**: Π—Π°ΠΌΠ΅Π½Π΅Π½Π° стрСлочная функция ΠΈΠΊΠΎΠ½ΠΊΠΈ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ `TimeMachineIcon`, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ props `{ size, className }`, Ρ‚Π°ΠΊ ΠΈ числовой Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚; Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ явныС inline-стили (`width`, `height`, `flex: none`), ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ растягиваниС ΠΈΠΊΠΎΠ½ΠΊΠΈ часов Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Guide. ### v0.1.11 β€” ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ DSH Right Sidebar ΠΈ legacy BetterSidebar * **Added in v0.1.11**: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ DSH (`sidebarRightTabs` + слот `sidebar.right.pane.tab`), появившСйся Π² DSH 0.1.5-alpha.1, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π½Π° страницС Guide с ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ. * **Preserved in v0.1.11**: Полная обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с `betterSidebar`; Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ повСрхностСй ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ совмСстном Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ. * **Added in v0.1.11**: БСзопасный ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ настроСк ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΏΡ€ΠΈ отсутствии ΠΎΠ±Π΅ΠΈΡ… Π±ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠ°Π½Π΅Π»Π΅ΠΉ Π² хостС. ### v0.1.10 β€” Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, динамичСский CWD, Unified Diff ΠΈ оптимизация Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ * **Added in v0.1.10**: ДинамичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (`cwd`): инструмСнты ΠΈ REST API автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ сСссии Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ явный ΠΏΡƒΡ‚ΡŒ. * **Added in v0.1.10**: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unified Diff (`format: "patch" | "stat"`) с Π»ΠΈΠΌΠΈΡ‚ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Π΄ΠΎ 256 ΠšΠ‘) ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ пСрСполнСния контСкста. * **Added in v0.1.10**: Асинхронная ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΉ Git, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ `index.lock` ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросах. * **Added in v0.1.10**: ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ Π²Ρ‹Ρ‡ΠΈΡ‚ΠΊΠ° ссылок Ρ‡Π΅Ρ€Π΅Π· `git for-each-ref` вмСсто $O(N)$ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² `git log`, ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‰Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ списка Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ². * **Added in v0.1.10**: ДСдупликация ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ²: Π°Π²Ρ‚ΠΎ-сохранСниС пропускаСтся, Ссли Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ измСнилось с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°. * **Added in v0.1.10**: АвтоматичСская очистка сиротских Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… индСксов `tm_index_*` ΠΏΡ€ΠΈ запускС ΠΏΠ»Π°Π³ΠΈΠ½Π°. * **Changed in v0.1.10**: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° настроСк: ΡƒΠ΄Π°Π»Π΅Π½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅Π½Ρ‚Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π² Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ. * **Changed in v0.1.10**: ПолноС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок Ρ‡Π΅Ρ€Π΅Π· `console.warn` вмСсто Ρ‚ΠΈΡ…ΠΎΠ³ΠΎ подавлСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ### v0.1.9 β€” Гармонизация ΡˆΠΈΠ½Ρ‹ событий ΠΈ очистка зависимостСй * **Changed in v0.1.9**: УстранСно ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎ-ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ². Нативная шина событий DSH `session/event` Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Π° legacy `ctx.events` ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ строго ΠΊΠ°ΠΊ fallback ΠΏΡ€ΠΈ отсутствии `ctx.on`. * **Changed in v0.1.9**: Π£Π΄Π°Π»Π΅Π½Π° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ `@deepseek-ai/dsh-credentials` ΠΈΠ· `peerDependencies`. * **Added in v0.1.9**: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° `docs/design/DESIGN.md`. ### v0.1.7 β€” Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ истории Π²Π΅Ρ‚ΠΎΠΊ, изоляция индСкса ΠΈ события DSH * **Changed in v0.1.7**: БСзопасный ΠΎΡ‚ΠΊΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Ρ‡Π΅Ρ€Π΅Π· `read-tree` + `checkout-index` + `clean -fd`. УстранСна критичСская ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° пСрСноса `HEAD` Π²Π΅Ρ‚ΠΊΠΈ Π½Π° сиротский ΠΊΠΎΠΌΠΌΠΈΡ‚. * **Changed in v0.1.7**: Π—Π°Ρ‰ΠΈΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ индСкса Git. Π§Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ `GIT_INDEX_FILE`, прСдотвращая ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² `.git/index`. * **Changed in v0.1.7**: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΡˆΠΈΠ½Ρ‹ событий DSH `session/event` для автоматичСских Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² Π½Π° `turn/start`, `approval/asked`, `turn/end` ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. * **Changed in v0.1.7**: АвтоматичСскоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ссылок `refs/dsh-time-machine/...` ΠΈΠ· Git ΠΏΡ€ΠΈ вытСснСнии старых Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² ΠΏΠΎ Π»ΠΈΠΌΠΈΡ‚Ρƒ `maxSnapshots`. * **Changed in v0.1.7**: ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ расчСт Diff Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с Π½Π΅Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ измСнСниями. * **Changed in v0.1.7**: БоотвСтствиС стандартам DSH Plugin Authoring: поля Ρ„ΠΎΡ€ΠΌΡ‹ настроСк Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ строго Π² состоянии `ready`. * **Added in v0.1.7**: Π—Π°Ρ‰ΠΈΡ‚Π° WebServer API ΠΎΡ‚ DoS-Π°Ρ‚Π°ΠΊ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΈΠΌΠΈΡ‚ Ρ‚Π΅Π»Π° запроса (макс. 1 ΠœΠ‘). * **Added in v0.1.7**: Полная китайская локализация интСрфСйса (`zh`). --- ## πŸ“„ ЛицСнзия MIT Β© [GooDAnDReaDY](https://github.com/GooDAnDReaDY)