Premiera / Narzędzie
Agent pisze kod, a twoje pliki i tak zostają nietknięte
Shepherd, framework ze Stanforda, nagrywa uruchomienie agenta jako odwracalny zapis i odkłada wynik na bok, więc nie dotyka twoich plików, dopóki sam zmian nie zatwierdzisz. Uprawnienia deklarujesz w sygnaturze funkcji Pythona, a zakazu zapisu pilnuje samo jądro systemu, przez Seatbelt na macOS i Landlock na Linuksie. Rozgałęzianie pracy działa około pięć razy szybciej niż docker commit, a odtworzenie przebiegu odzyskuje jakieś 95% tego, co model już policzył. Docelowo mają z tego powstać metaagenci recenzujący swoją pracę, ale projekt jest we wczesnej alfie na licencji MIT, bez Windowsa.
Napisała AI, żeby oszczędzić Ci czytania setek źródeł. · Jak to działa
Premiera / Narzędzie · 3 min ·
Puszczasz agenta na swoje repozytorium i przez kilka minut nie masz pewności, co dzieje się z twoimi plikami. Pisze kod, odpala polecenia, czasem coś nadpisuje, a ty orientujesz się dopiero wtedy, gdy zajrzysz do historii gita i widzisz commit, którego nikt nie przejrzał. Shepherd, framework opisany w świeżej pracy badawczej ze Stanforda, odwraca tę kolejność. Praca agenta nie dotyka twoich plików, dopóki sam jej nie zaakceptujesz. Ten jeden ruch załatwia konkretny problem, który masz dzisiaj, a to, co autorzy chcą na nim zbudować, jest już osobną i znacznie większą obietnicą.
Pomysł jest prosty i stary jak sam git, tylko przeniesiony o piętro wyżej, na samo działanie agenta. Zamiast pozwolić modelowi pisać wprost do katalogu, Shepherd nagrywa całe uruchomienie jako odwracalny zapis, a jego wynik odkłada na bok jako propozycję do przejrzenia. W demie dołączonym do projektu agent dostaje zadanie napisania małego programu. Program powstaje, ale nie w twoim katalogu, tylko obok niego, i możesz go uruchomić, nie nakładając przy tym żadnej zmiany. Spodoba się, zostawiasz go jednym poleceniem. Nie spodoba się, wyrzucasz, a jeśli katalog zdążył się w międzyczasie zmienić, Shepherd doklei propozycję do nowego stanu trójstronnym scaleniem. Zapis pamięta każdą z tych decyzji, więc do dowolnego przebiegu można wrócić, rozgałęzić go albo odtworzyć od nowa.
To, do czego agent w ogóle ma dostęp, deklarujesz w sygnaturze funkcji. Zadanie w Shepherdzie to zwykła funkcja Pythona bez ciała: liczą się tylko jej nazwa, argumenty i opis, bo to one są kontraktem, który agent ma wypełnić w trakcie działania. Shepherd udostępnia własne typy pod skrótem sp, więc kiedy w argumentach wpiszesz repo: sp.GitRepo, dajesz agentowi prawo zapisu do tego repozytorium. Kiedy oznaczysz je jako ReadOnly, agent może je tylko czytać, a próbę zapisu odrzuca sam system operacyjny, na poziomie wywołania systemowego, wbudowanymi w niego mechanizmami ograniczania uprawnień: Seatbelt na macOS, Landlock na Linuksie. Nie na końcu, przy scalaniu, tylko w chwili, w której agent sięga po plik. Różnica jest praktyczna: agent nie obejdzie zakazu, bo nie pilnuje go grzeczna umowa zapisana w kodzie, tylko jądro systemu.
Czytaj dalej za darmo
Podaj e-mail, aby odblokować pełną treść i cały serwis. Zapiszemy Cię do newslettera.