Agent Orchestrator 0.12.0
80 commitów od 0.11.2. Aplikacja desktopowa mówi teraz w ośmiu językach, ma nową paletę kolorów i pozwala przypinać sesje oraz wybierać recenzenta dla każdej sesji. Aplikacja mobilna dostała motywy i dyktowanie przez przytrzymanie. Kontenery uruchomione przez sesję są sprzątane, gdy sesja się kończy.
Obejmuje wszystko od v0.11.2.
Użytkownicy macOS powinni od razu przejść na wersję 0.12.1 lub nowszą. W tym buildzie wyciekają deskryptory plików, co po kilku godzinach użytkowania psuje widok Files oraz tworzenie zadań.
0.11.0 dotyczyło tego, by fundament utrzymał ciężar. 0.12.0 to to, co na nim zbudowano: aplikacja mówi teraz w ośmiu językach, pasek boczny i ustawienia działają tak, jak można się spodziewać, a cała klasa awarii, która mogła zmieść z tablicy wszystkie sesje, zniknęła.
To wydanie dodaje nowe możliwości produktu i poprawki niezawodności bez psucia istniejących przepływów pracy.
Najważniejsze
Aplikacja mówi w ośmiu językach
Aplikacja desktopowa ma teraz prawdziwą warstwę lokalizacji opartą na i18next; język wybiera się w Settings > General i jest zapamiętywany w ~/.ao/ui-settings.json. Jako pierwszy pojawił się chiński uproszczony, obejmujący ramę aplikacji, pasek boczny, tablicę, ustawienia, okna dialogowe, karty inspektora, paletę poleceń i teksty terminala. Potem doszły japoński, koreański, hiszpański, francuski, niemiecki i portugalski (Brazylia), a do tego README w każdym z tych języków. Angielski pozostaje domyślny i zapasowy, więc nieprzetłumaczony tekst wyświetla się po angielsku, a nie jako klucz. (#3465, #3541)
Mobile: motywy, natywne arkusze i dyktowanie przez przytrzymanie
Aplikacja mobilna nie jest już wyłącznie ciemna. Ma palety jasną i ciemną oraz preferencję „system”, która stale podąża za systemem, zamiast trzymać się tego, co odczytała przy starcie. Powłoka aplikacji została przebudowana na natywnych arkuszach, a tablica sesji dzieli się według zakończonego środowiska uruchomieniowego, a nie statusu ukończenia.
Jest też dyktowanie push-to-talk. Przytrzymaj klawisz mikrofonu w polu wiadomości, by mówić, puść, by wstawić tekst, albo przesuń w górę, by zablokować nagrywanie bez trzymania. Rozpoznawanie działa na urządzeniu (iOS SFSpeechRecognizer, Android SpeechRecognizer), więc nie ma klucza API ani opłat za minutę, a jest dostrojone do słownictwa, którym pełne są prompty dla agentów, więc dostajesz „git” i „npm” zamiast „get” i „MPM”. Transkrypt trafia do pola wiadomości jako edytowalny szkic, a nie jest wysyłany, bo zamiana mowy na tekst myli się przy kodzie na tyle często, że ciche wysyłanie nie byłoby bezpieczne. Kolejne przytrzymania dopisują tekst, więc kilka naciśnięć buduje jeden prompt.
Do tego ikona aplikacji Liquid Glass zgodna z wersją desktopową oraz poprawka domyślnego portu LAN, który wskazywał port demona dostępny tylko przez loopback zamiast mostka mobilnego na 3011, przez co świeża instalacja nie mogła się połączyć bez ręcznej edycji. (#3399, #3400, #3304, #3494)
Nowe podstawy kolorystyki
Renderer przeszedł na paletę tokenów projektowych oklch z Geist jako fontem interfejsu i zmapowanymi na nią aliasami kolorów shadcn, które zastąpiły wartości zakodowane na sztywno w bibliotece komponentów. Status sesji ma teraz jedną spójną paletę wszędzie, gdzie się pojawia: praca w toku jest niebieska, czeka na ciebie — pomarańczowa, w review — żółta, gotowe — zielona. (#3421)
Przypinaj sesje, do których stale wracasz
Sesje można przypiąć do sekcji Pinned na górze paska bocznego; przypięcie jest zapisywane po stronie serwera, więc przetrwa restart. Sam pasek boczny stał się zwijany: sekcje Pinned i Projects zwijają się osobno, a kliknięcie ikony folderu projektu rozwija go lub zwija bez wcześniejszego przełączania się na niego. (#3511, #3310)
Wybór recenzenta dla każdej sesji
Agent-recenzent był dotąd jednym ustawieniem dla całego projektu. Teraz możesz wybrać go dla pojedynczej sesji, a uruchomienie tej rundy nie zmieni tego, czego używają inne sesje w projekcie. Karta Reviews pokazuje też wszystkie zapisane rundy dla sesji, a nie tylko bieżący i poprzedni przebieg dla PR, więc możesz porównać, co powiedzieli dwaj różni recenzenci. Odrzucone review, gdy demon używa istniejącej rundy zamiast uruchamiać nową, nie zgłasza już sukcesu. (#3477)
Ustawienia otwierają się w oknie modalnym
Ustawienia i ustawienia projektu otwierają się nad tablicą, zamiast przenosić cię gdzie indziej, z paskiem bocznym zawierającym General, Updates, Developer i Help. Escape lub kliknięcie poza oknem je zamyka i wracasz tam, gdzie byłeś. (#3497)
Powiadomienia, na które można zareagować
Gdy sesja cię potrzebuje, a okno nie ma fokusu, ikona w docku macOS podskakuje, pasek zadań Windows miga, dopóki nie wrócisz, a liczba nieprzeczytanych powiadomień na plakietce pozostaje zsynchronizowana w systemach macOS, Windows i Linux.
W panelu całe wiersze są klikalne, a nie tylko tytuł, a ręczne karty Unread/All i oznaczanie jako przeczytane zniknęły. Powiadomienia śledzą teraz dwie niezależne rzeczy: czy je widziałeś (czyszczone po otwarciu panelu) i czy problem, którego dotyczą, jest wciąż otwarty (zapisywane wyłącznie przez cykl życia). Przeczytane powiadomienie pozostaje na liście, dopóki zgłoszona sprawa nie zostanie rozwiązana, i zamyka się samo, gdy sesja wyjdzie ze stanu needs-input, zakończy się albo PR zostanie scalony lub zamknięty. Przejścia, które nastąpiły, gdy demon nie działał, są ponownie sprawdzane przy starcie. (#2534, #3296, #3495, #3558)
Akcje w palecie poleceń i ikona w pasku menu
Cmd/Ctrl+K obsługuje teraz akcje sesji, a nie tylko nawigację, a kreator zadań stojący za New Task został wydzielony, więc paleta może uruchamiać pracę w tym samym interfejsie. macOS dostaje też w pasku menu ikonę sesji czekających na ciebie. (#3531)
Kontenery uruchomione przez sesję są sprzątane
Kontenery Docker uruchomione przez sesję są usuwane, gdy sesja osiągnie stan końcowy, także gdy ulegnie awarii lub dostanie SIGKILL, a nie tylko gdy zabijesz ją ręcznie. Oznacz kontener etykietą ao.session=$AO_SESSION_ID, by został posprzątany, albo ao.spare=true dla współdzielonej infrastruktury, która powinna przeżyć sesję. Wywołania Docker mają limit czasu, a projekt, którego nie udało się załadować, kończy się bezpiecznie, bez sprzątania. (#3153)
Pliki i diffy
Panel Files zastąpił przełączany przycisk wyszukiwania i etykietę z liczbą plików stale widocznym polem wyszukiwania, pozbył się przycisku odświeżania (lista i tak jest odpytywana) i przebudował listę jako akordeon z bieżącą liczbą plików na karcie. Przeglądarka diffów strumieniuje zmiany w przestrzeni roboczej na bieżąco, ma czytelniejszy przełącznik układu i feedback do poszczególnych plików w miejscu oraz poprawnie się rozwija w widoku zmaksymalizowanym. Diffy przestrzeni roboczej uwzględniają też bazę, więc sesja potomna porównuje zmiany z gałęzią, z której faktycznie pochodzi, a nie ze stałą bazą. (#3466, #3503, #3492, #3369, #3214)
Niezawodność
Jedna awaria nie czyści już tablicy. To była ta najważniejsza zmiana (#3475). Trzy osobne błędy mogły naraz zarchiwizować wszystkie sesje. Zamykanie podglądu zabijało całą grupę procesów po samym PID bez ponownego sprawdzenia, czy nadal należy on do uruchomionego procesu, więc ponownie użyty numer PID zabijał niezwiązaną rodzinę procesów; a ponieważ serwer tmux jest liderem własnej grupy, jedno nieaktualne zabicie grupy niszczyło wszystkie sesje. Odpowiedź tmux „no server running” była interpretowana jako śmierć każdej sesji, choć nie mówi nic o żadnej konkretnej sesji, więc chwilowy problem serwera archiwizował tablicę. A uszkodzona migracja zwracała błędy 500, które tablica traktowała jako brak sesji. Sondy żywotności zgłaszają teraz wynik nierozstrzygnięty zamiast śmierci, mechanizm sprzątający odmawia zakończenia przebiegu, w którym większość tablicy naraz wygląda na martwą, a rejestr migracji sam się naprawia w historiach, które już zostały uszkodzone. (#3491, #3598)
Orkiestratory. Nie da się już utworzyć zduplikowanych aktywnych orkiestratorów dla tego samego projektu, ao session ls pokazuje ukryte sesje orkiestratora i liczy ukryte zakończone sesje, zamiast je po cichu pomijać, a automatyczne wiadomości ponownie angażujące orkiestratora zostały wycofane, bo okazały się bardziej hałaśliwe niż przydatne. (#3397, #3393, #3394)
Agenci. Droid przekazuje konfigurację modelu dla poszczególnych ról przez swój plik ustawień, zapisywany w katalogu danych, a nie w katalogu tymczasowym. Prompty Grok są dostarczane po zakończeniu startu jego TUI, a nie do terminala, który jeszcze nie nasłuchuje, a jego terminal przewija się kółkiem. Wewnętrzne sztuczne środowisko testowe nie pojawia się już w selektorach agentów. (#3156, #3534, #3533, #3518)
Przeglądarka. Zaznaczenie adnotacji jest blokowane, gdy prompt jest w drodze, więc kliknięcie nie zmieni celu w trakcie wysyłania, natywne widoki nie zamalowują już aplikacji, gdy są ukryte, edycja URL działa w zmaksymalizowanej przeglądarce w macOS, plakietka selektora elementów zniknęła z okna adnotacji, a przełączenie się z sesji i powrót nie przywraca już URL podglądu, z którego zdążyłeś przejść gdzie indziej. (#3232, #3295, #3488, #3464, #3538, #3370)
Desktop. Mechanizm automatycznych aktualizacji loguje błędy 404 przy brakujących manifestach wydań, zamiast wyświetlać okno z prośbą o sprawdzenie tokenu uwierzytelniającego, którego nie masz. Przeciąganie paska bocznego i inspektora zatrzymuje się na minimalnej szerokości, zamiast zatrzaskiwać panel. Demon ignoruje SIGPIPE przy zamkniętym wyjściu. Sekcje PR i Completion w inspektorze pozostają ukryte, gdy nic w nich nie ma, a zduplikowane podsumowania PR są deduplikowane. Oprócz tego seria poprawek ramy aplikacji: nawigacja w pasku tytułu wyrównana do świateł okna macOS, dopracowany pasek kart terminala, linie oddzielające w ustawieniach i archiwum, odstępy w górnym pasku terminala oraz wyłączone zaznaczanie tekstu w ramie aplikacji i na stronach marketingowych. (#3012, #3478, #3193, #3325, #3250, #3505, #3480, #3507, #3556, #3508, #3520)
Pod maską
Telemetria zyskała wyłącznik działający w czasie pracy: AO_TELEMETRY_DISABLED_EVENTS wycisza wskazane strumienie (z dopasowaniem prefiksu przez *) bez wydawania nowej wersji, a wyciszone strumienie nadal trafiają do lokalnego SQLite, więc da się je debugować. Zdarzenia demona mają znacznik wersji, zdarzenia aktualizacji są rejestrowane, kontrolki PostHog zostały utwardzone, a w testach sprawdzane jest, że autocapture jest wyłączone. CI generuje teraz linuksowy .rpm obok .deb.
Na stronie: dokumentacja jest publikowana także w bliźniaczych wersjach Markdown z pełną hierarchią udostępnioną w llms.txt, dodano strony porównujące agentów, tablica w sekcji hero, demo delegowania i makieta mobilna zostały przebudowane, by odpowiadały temu, jak naprawdę wygląda aplikacja desktopowa, a CTA bety iOS zostało uruchomione. Usunięto zduplikowane dane strukturalne Organization, a sygnały treści dotyczą teraz dozwolonych crawlerów. (#3401, #3388, #3406, #3395, #3363, #3438, #3344, #3430, #3496, #3428, #3429, #3500, #3521, #3522, #3144, #3367, #3365, #3389)
Aktualizacja
Obsługiwane ścieżki instalacji to GitHub Releases i Homebrew. Istniejące instalacje aktualizują się w miejscu. Jeśli poprzednia aktualizacja pozostawiła rejestr migracji w uszkodzonym stanie, 0.12.0 naprawia go przy starcie, zamiast przerywać uruchamianie.
Pełna lista zmian: https://github.com/OrchestratorInc/agent-orchestrator/compare/v0.11.2...v0.12.0