Backup, odzyskiwanie i rollback
Agent AI właśnie zrefaktoryzował twój moduł uwierzytelniania w 47 plikach. Testy przechodzą. Typy się zgadzają. Scalasz PR. Dwie godziny później tokeny sesji nie są walidowane w admin API — agent usunął rejestrację middleware, która nie była pokryta testami. Musisz cofnąć zmiany, ale trzy inne PR zostały scalone na wierzchu. To jest scenariusz disaster recovery, z którym każdy zespół używający narzędzi AI ostatecznie się spotyka.
Co wyniesiesz z tego rozdziału
Dział zatytułowany „Co wyniesiesz z tego rozdziału”- Strategie checkpointów i rollbacków specyficzne dla rozwoju wspomaganego AI
- Procedury odzyskiwania po regresjach wprowadzonych przez AI na każdym etapie pipeline’u
- Kontrole bezpieczeństwa przed uruchomieniem, które zapobiegają katastrofom zanim się wydarzą
- Wzorce reagowania na incydenty związane z AI w środowisku produkcyjnym
- Praktyki audytowe, które przyspieszają i ułatwiają analizę przyczyn źródłowych
Prewencja: Architektura siatki bezpieczeństwa
Dział zatytułowany „Prewencja: Architektura siatki bezpieczeństwa”Najlepsza strategia disaster recovery to zapobieganie katastrofom. Buduj siatki bezpieczeństwa na każdym etapie.
Etap 1: Bezpieczeństwo przed zmianami
Dział zatytułowany „Etap 1: Bezpieczeństwo przed zmianami”System checkpointów Cursor zapewnia automatyczne punkty rollbacku:
- Checkpointy są tworzone automatycznie przed każdą akcją agenta
- Użyj panelu Timeline do przeglądania i przywracania dowolnego checkpointu
- Twórz ręczne checkpointy przed operacjami wysokiego ryzyka: kliknij prawym przyciskiem w timeline
Dodaj jawne reguły bezpieczeństwa:
SAFETY REQUIREMENTS:Before any multi-file refactoring:1. List all files that will be modified2. Verify the test suite passes BEFORE making changes3. After changes, run the full test suite4. If any test fails, revert ALL changes and report what went wrong
NEVER delete files without explicit user confirmation.NEVER modify configuration files (*.config.*, .env*, Dockerfile) without showing the diff first.Claude Code pracuje bezpośrednio z Git. Ustanów bezpieczeństwo oparte na commitach:
SAFETY PROTOCOL:Before starting any multi-file modification:1. Run: git stash (save any uncommitted work)2. Create a safety branch: git checkout -b ai/[task-description]3. Commit after each logical step with descriptive messages4. Run tests after each commit5. If tests fail, use git diff to identify the problem
After completing the task:- Run the FULL test suite (npm test)- Run type checking (npm run type-check)- Run linting (npm run lint)- Show the complete diff from main for review
NEVER force-push. NEVER modify the main branch directly.System uprawnień Claude Code zapewnia dodatkową warstwę bezpieczeństwa — zapisy plików wymagają jawnego zatwierdzenia, chyba że auto-zatwierdzenie jest włączone w ustawieniach.
Zadania chmurowe Codex działają w izolowanych sandboxach z wbudowanym bezpieczeństwem:
SAFETY PROTOCOL:- All changes happen in a new branch (never modify main)- Cloud tasks cannot push directly to main- Every task produces a PR for human review- Worktrees provide isolation between parallel tasks
Before submitting a PR:1. Run the full test suite2. Run the linter3. Generate a comprehensive PR description explaining all changes4. Flag any files that were deleted or had configuration changesIzolowane środowisko Codex oznacza, że wymknięte zadanie nie może wpłynąć na twoje lokalne środowisko ani inne gałęzie.
Etap 2: Bezpieczeństwo przeglądu
Dział zatytułowany „Etap 2: Bezpieczeństwo przeglądu”Etap 3: Bezpieczeństwo wdrożenia
Dział zatytułowany „Etap 3: Bezpieczeństwo wdrożenia”-
Feature flagi dla zmian generowanych przez AI
Wdrażaj zmiany wspomagane AI za feature flagami. Jeśli coś pójdzie nie tak, przełącz flagę zamiast cofać wdrożenie.
-
Wdrożenia canary
Kieruj 5% ruchu do nowej wersji. Monitoruj wskaźniki błędów, opóźnienia i kluczowe metryki biznesowe przez 30 minut przed rozszerzeniem.
-
Automatyczne triggery rollbacku
Skonfiguruj automatyczny rollback, gdy wskaźnik błędów przekroczy 2x linię bazową lub p99 opóźnienia przekroczy 3x linię bazową.
-
Monitorowanie po wdrożeniu
Obserwuj dashboardy przez 4 godziny po wdrożeniu zmian generowanych przez AI. Tryby awarii kodu AI są często subtelne — edge case’y i warunki wyścigu zamiast crashów.
Procedury odzyskiwania
Dział zatytułowany „Procedury odzyskiwania”Scenariusz 1: AI złamało testy (pre-merge)
Dział zatytułowany „Scenariusz 1: AI złamało testy (pre-merge)”To jest najłatwiejsze odzyskiwanie. AI dokonało zmian, które łamią zestaw testów.
Użyj timeline’u checkpointów Cursor, aby przywrócić ostatni dobry stan:
- Otwórz panel Timeline
- Znajdź checkpoint przed łamiącą zmianą
- Kliknij “Restore”, aby wrócić do tego stanu
- Alternatywnie użyj
Cmd+Zagresywnie — Cursor śledzi zmiany AI oddzielnie od ręcznych edycji
# If working on a branch (recommended):git diff main # See what changedgit stash # Save current stategit checkout main # Return to clean state
# If you committed incrementally (recommended):git log --oneline -10 # Find the last good commitgit revert HEAD~3..HEAD # Revert the bad commitsPR-y Codex są granicą odzyskiwania. Jeśli PR łamie testy:
- Zamknij PR bez scalania
- Utwórz nowe zadanie z bardziej szczegółowymi ograniczeniami
- Odnieś się do tego, co poszło nie tak: “The previous attempt broke auth middleware registration”
Scenariusz 2: Kod generowany przez AI scalony, ale powoduje problemy produkcyjne
Dział zatytułowany „Scenariusz 2: Kod generowany przez AI scalony, ale powoduje problemy produkcyjne”Scenariusz 3: AI uszkodziło dane
Dział zatytułowany „Scenariusz 3: AI uszkodziło dane”Najniebezpieczniejszy scenariusz. Kod generowany przez AI wprowadził błąd powodujący uszkodzenie danych.
-
Zatrzymaj krwawienie
Wdróż rollback natychmiast. Nie próbuj naprawiać w przód, gdy integralność danych jest zagrożona.
-
Oceń szkody
Zapytaj bazę danych o rekordy zmodyfikowane w oknie czasowym incydentu. Określ zakres uszkodzenia.
-
Przywróć z backupu
Użyj point-in-time recovery, aby przywrócić dotknięte dane do stanu sprzed incydentu.
-
Analiza przyczyn źródłowych
Zidentyfikuj, który kod generowany przez AI spowodował uszkodzenie. Czy to była brakująca walidacja? Błędne zapytanie? Warunek wyścigu?
-
Zapobiegaj powtórzeniu
Dodaj specyficzne przypadki testowe dla trybu awarii. Dodaj ograniczenia bazodanowe, które wyłapią uszkodzenie na warstwie danych. Zaktualizuj reguły AI, aby zapobiec podobnym wzorcom.
Budowanie odporności w przepływach pracy AI
Dział zatytułowany „Budowanie odporności w przepływach pracy AI”Strategia przyrostowych commitów
Dział zatytułowany „Strategia przyrostowych commitów”Nigdy nie pozwalaj agentowi AI na dokonanie 47 zmian w plikach w jednym commicie. Rozbij duże zmiany na małe, przeglądalne, odwracalne commity.
Strategia testów towarzyszących
Dział zatytułowany „Strategia testów towarzyszących”Przed jakąkolwiek zmianą generowaną przez AI, stwórz test przechwytujący aktualne zachowanie.
Kiedy coś się psuje
Dział zatytułowany „Kiedy coś się psuje”“Scaliliśmy kod AI bez właściwego przeglądu i teraz produkcja leży.” Cofnij natychmiast. Nie próbuj naprawiać w przód podczas aktywnego incydentu. Po cofnięciu przeprowadź bezobwinieniowe post-mortem skupione na tym, jakiej siatki bezpieczeństwa brakowało, a nie kto zatwierdził PR.
“Nie możemy cofnąć, bo inne zmiany zależą od kodu generowanego przez AI.” Dlatego przyrostowe commity mają znaczenie. Jeśli możesz zidentyfikować, który konkretny commit wprowadził problem, możesz cofnąć tylko ten commit. Jeśli zmiany są splątane, możesz potrzebować stworzyć celowany hotfix zamiast pełnego rollbacku.
“AI usunęło pliki, których potrzebujemy, i nie zauważyliśmy tego aż dużo później.” Git cię wspiera. Użyj git log --diff-filter=D, aby znaleźć usunięte pliki i git checkout <commit>^ -- <filepath>, aby je przywrócić. Dodaj kontrolę CI, która flaguje usunięcia plików do dodatkowej kontroli podczas przeglądu kodu.
“Nasza strategia backupu nie obejmuje trybów awarii specyficznych dla AI.” Standardowe strategie backupu (backupy bazy danych, kod w Git) pokrywają większość trybów awarii AI. Unikalne ryzyko z AI to subtelne zmiany behawioralne, które przechodzą wszystkie kontrole. Dodaj behawioralne testy regresyjne dla krytycznych ścieżek i wdrażaj za feature flagami.