Rollback

Automatycznie wersjonuj pliki przestrzeni roboczej podczas zadań AI. Bezpiecznie eksploruj sugestie AI i eksperymentuj ze zmianami, i łatwo odzyskuj się po niechcianych zmianach.

Czym jest rollback

Rollback pozwala ci:

  • Bezpiecznie eksperymentować ze zmianami sugerowanymi przez AI
  • Łatwo odzyskiwać się po niechcianych modyfikacjach
  • Porównywać różne podejścia do implementacji
  • Wracać do poprzednich stanów projektu bez utraty pracy

Jak działa rollback

Bob przechwytuje migawki plików podczas wykonywania zadań, oddzielnie od głównego systemu kontroli wersji. Te migawki są automatycznie tworzone przed modyfikacjami plików, zapewniając możliwość cofnięcia niechcianych zmian w dowolnym momencie.

Migawki są rejestrowane po rozpoczęciu zadań i przed modyfikacjami plików.

Praca z rollbackiem

Rollback jest bezpośrednio zintegrowany z twoim przepływem pracy za pośrednictwem interfejsu czatu i pojawia się bezpośrednio w historii czatu. Migawki są tworzone przed modyfikacjami plików, umożliwiając łatwe cofnięcie wszelkich zmian.

Każda migawka zapewnia dwie główne funkcje, które są zawsze dostępne zarówno w historii czatu, jak i w menu rollback:

Wyświetlanie różnic

Aby zobaczyć, jakie pliki zmieniły się w ramach zadania:

  1. Po edycji plików przez Boba, widok Zmienione pliki pojawi się zwinięty.
  2. Możesz kliknąć, aby go rozwinąć.
  3. Przejrzyj różnice w widoku:
    • Użyj Pokaż wszystko, aby zobaczyć wszystkie zmienione pliki w zadaniu
    • Możesz kliknąć konkretny plik, aby zobaczyć zmiany

Przywracanie migawki

Opcje przywracania są zawsze widoczne w przyciskach i oknach dialogowych rollback, niezależnie od tego, czy wykryto zmiany. Dzięki temu zawsze możesz wrócić do dowolnego stanu.

Aby przywrócić projekt do poprzedniego stanu:

  1. Najedź kursorem na dowolną wiadomość użytkownika i użyj przycisku rollback, który przywróci zmienione pliki do stanu sprzed tej wiadomości.
  2. Kliknij przycisk rollback przy poszczególnych plikach w widoku Zmienione pliki. Dzięki temu Bob dowie się, że cofnąłeś plik.

Ograniczenia

  • Zakres: Rollback przechwytuje tylko zmiany dokonane podczas aktywnych zadań Boba.
  • Zmiany zewnętrzne: Modyfikacje dokonane poza zadaniami (ręczne edycje, inne narzędzia) nie są uwzględniane.
  • Duże pliki: Bardzo duże pliki binarne mogą wpływać na wydajność.
  • Niezapisana praca: Przywracanie nadpisuje wszelkie niezapisane zmiany w przestrzeni roboczej.
  • Czas: Migawki są tworzone przed zastosowaniem zmian, zapewniając sieć bezpieczeństwa dla wszystkich modyfikacji.
  • Zużycie pamięci: Migawki gromadzą się z czasem i mogą zużywać znaczną ilość pamięci, szczególnie w przypadku dużych projektów lub długotrwałych zadań. Jeśli masz wiele starych zadań z migawkami, rozważ ich okresowe czyszczenie w celu zwolnienia pamięci. Możesz to zrobić, usuwając stare rozmowy z zadaniami, co usuwa powiązane migawki.

Implementacja techniczna

Architektura rollbacku

System rollback składa się z:

  1. Usługa rollback: Obsługuje operacje na plikach i zarządzanie stanem poprzez:
    • Tworzenie i przechowywanie migawek
    • Obliczanie różnic
    • Przywracanie stanu
  2. Komponenty UI: Elementy interfejsu wyświetlane na czacie, umożliwiające interakcję z rollbackiem.

Proces przywracania

Gdy uruchamiane jest przywracanie, Bob:

  • Wykonuje reset do określonego czasu w danym zadaniu.
  • Aktualizuje wewnętrzny stan śledzenia rollbacku.

Typ przechowywania

Rollback jest przypisany do zadania, co oznacza, że każda migawka jest specyficzna dla pojedynczego zadania.

Obliczanie różnic

Porównanie rollbacku wykorzystuje bazowe możliwości diff Gita do tworzenia ustrukturyzowanych różnic plików:

  • Zmodyfikowane pliki pokazują zmiany linia po linii.
  • Pliki binarne są prawidłowo wykrywane i obsługiwane.
  • Wykrywanie zmiany nazwy może być ograniczone; diffy koncentrują się na zmianach zawartości pliku między migawkami.
  • Tworzenie i usuwanie plików są wyraźnie identyfikowane.

Wykluczanie plików i wzorce ignorowania

System rollback używa inteligentnego wykluczania plików do śledzenia tylko odpowiednich plików.

Wbudowane wykluczenia

System posiada wbudowane wzorce wykluczeń, które automatycznie ignorują:

  • Artefakty kompilacji i katalogi zależności (node_modules/, dist/, build/).
  • Pliki multimedialne i zasoby binarne (obrazy, wideo, audio).
  • Pliki pamięci podręcznej i tymczasowe (.cache/, .tmp/, .bak).
  • Pliki konfiguracyjne z wrażliwymi informacjami (.env).
  • Duże pliki danych (archiwa, pliki wykonywalne, pliki binarne).
  • Pliki bazy danych i dzienniki.

Obsługa .gitignore

System rollback respektuje wzorce .gitignore w przestrzeni roboczej:

  • Pliki wykluczone przez .gitignore nie wyzwalają tworzenia migawek.
  • Wykluczone pliki nie pojawiają się w diffach rollbacku.
  • Standardowe reguły ignorowania Gita mają zastosowanie podczas przygotowywania zmian plików.

Zachowanie .bobignore

Plik .bobignore (który kontroluje dostęp AI do plików) jest oddzielony od śledzenia rollbacku:

  • Pliki wykluczone przez .bobignore, ale nie przez .gitignore, są nadal przechwytywane przez rollback.
  • Zmiany w plikach niedostępnych dla AI mogą być nadal przywracane przez rollback.

To rozdzielenie jest celowe. .bobignore ogranicza, do których plików AI może uzyskać dostęp, a nie które pliki powinny być śledzone w historii wersji.

Jak oceniasz ten temat?