Wąskie gardło jednej ikony

Wyobraź sobie swój ekran podczas intensywnej sesji kodowania. W jednej karcie terminala Claude Code refaktoryzuje komponent React. W innej Codex przepisuje moduł Pythona. Trzeci agent generuje testy jednostkowe, czwarty czeka na klucz API, a piąty właśnie zakończył przebieg lintera w tle. Twój pasek menu — lub jakikolwiek inny zasobnik systemowy, którego używasz — ma miejsce na dokładnie jedną ikonę statusu. Jedna mała kropka lub etykieta ma reprezentować cały rój. Pytanie brzmi: która sesja zasługuje na to miejsce.

Leniwą odpowiedzią jest pokazanie tej sesji, która poruszyła się jako ostatnia. Wydaje się to racjonalne. Coś się wydarzyło, więc pojawia się na wierzchu. Ten instynkt jest błędny i będzie Cię kosztować. Monitorowanie plików w tle, które aktualizuje znacznik czasu, to nie jest wołanie o pomoc. Tymczasem sesja, która dziesięć minut temu napotkała błąd uprawnień, może pozostawać niewidoczna, czekając, aż wpiszesz „tak” lub poprawisz ścieżkę. Jeśli sortujesz według świeżości, ukrywasz dokładnie to, co wymaga Twojej uwagi. Musisz sortować według możliwości podjęcia działania (actionability).

Dlaczego świeżość danych zawodzi

Programiści sięgają po znaczniki czasu, ponieważ są łatwe. Każdy system je generuje, każda baza danych je indeksuje, a sortowanie to jedna linia kodu. Ale łatwość przestaje być użyteczna w momencie, gdy zaczynasz orkiestrować wielu niezależnych pracowników.

Oto konkretny scenariusz błędu. Sesja piąta właśnie dopisała linię logu, ponieważ jej watcher zależności zauważył zmianę pliku w node_modules. Jej znacznik czasu odświeżył się na „teraz”. Sesja druga natomiast zadała Ci pytanie trzy minuty temu: „Czy mam zainstalować ten pakiet? (y/n)”. Nie odpowiedziałeś. Jeśli Twój pasek menu pokazuje najnowszą sesję, sesja piąta otrzyma zieloną poświatę, a sesja druga zniknie z listy. Nic nie wygląda na zepsute. A jednak jeden z Twoich agentów utknął w oczekiwaniu na Twoją decyzję, podczas gdy Ty zajmujesz się monitorowaniem lintera, który nie potrzebuje Twojej pomocy.

Świeżość mierzy ruch. Pilność wymaga znaczenia. Zapis pliku nie ma wrodzonego znaczenia, chyba że tworzy dla Ciebie zadanie. Z kolei oczekujący prompt to czysta możliwość podjęcia działania. Nie dostarczysz kodu, obserwując zmiany w tle. Dostarczasz go, usuwając blokady. Pierwsza zmiana w myśleniu jest prosta: traktuj znacznik czasu jako czynnik rozstrzygający w przypadku remisu, a nigdy jako sygnał główny.

Najpierw klasyfikuj, potem sortuj

Lepszym podejściem jest dwuetapowy filtr. Po pierwsze, nadaj każdej sesji etykietę na podstawie tego, czego potrzebuje od Ciebie. Po drugie, uszereguj te etykiety. Dopiero jeśli dwie sesje mają tę samą etykietę, spójrz na zegarek.

To zmusza Cię do zdefiniowania, co w Twoim przepływie pracy oznacza właściwie „pilne”. Sesja z ograniczoną przepustowością (rate-limited) nie jest pilna; ona śpi. Sesja pracująca jest zajęta, ale jeśli nie wymaga decyzji, może spokojnie kontynuować obliczenia. Zatrzymana sesja jest pilna, ponieważ błędy „gniją”. Nieobsłużone przekazanie zadania (handoff) jest pilne, ponieważ dosłownie Ty odpowiadasz za kolejny krok i agent nie może kontynuować, dopóki nie podejmiesz działania.

Klasyfikacja zmienia Twój pasek menu z kanału informacyjnego w listę zadań. Krok sortowania staje się wtedy mechaniczny. Już zdecydowałeś, że zablokowany pracownik ma wyższy priorytet niż pracujący. Już zdecydowałeś, że niewidoczne pytanie ma wyższy priorytet niż widoczne. Czas wchodzi do gry tylko wtedy, gdy dwie sesje wołają o uwagę na tym samym poziomie priorytetu. Wtedy, i tylko wtedy, wygrywa ta starsza. To małe ustępstwo na rzecz sprawiedliwości typu „kto pierwszy, ten lepszy”, ale nigdy nie powinno ono nadpisywać samego stanu.

Praktyczna skala priorytetów

W Agent Island v1.7.1 zespół sformalizował to w pięciostopniową skalę, którą może pożyczyć każdy, kto uruchamia wiele sesji AI:

  • Nieodnotowane „wymaga Twojej uwagi”: 4. Sesja przekazała Ci coś i jeszcze tego nie widziałeś. Ty decydujesz o kolejnym ruchu.
  • Zatrzymana: 3. Sesja napotkała błąd, problem z uprawnieniami lub inną blokadę. Wymaga Twojej uwagi, ponieważ nie potrafi sama naprawić problemu.
  • W trakcie pracy: 2. Sesja aktywnie wykonuje obliczenia. Nie czeka na Ciebie, więc otrzyma ikonę tylko wtedy, gdy nie istnieje nic pilniejszego.
  • Odnotowane „wymaga Twojej uwagi”: 1. Widziałeś już prompt lub pytanie, ale jeszcze nie odpowiedziałeś. Jesteś świadomy sytuacji, więc pilność spada o stopień poniżej nieodnotowanych przerwań.
  • Bezczynna lub z limitem (rate limited): 0. Sesja to szum tła. Czeka na swoją kolej lub po prostu nic nie robi.

Ta skala bezpośrednio przekłada się na działania użytkownika. Gdy obsłużysz przekazanie zadania, sesja spada do poziomu „w trakcie pracy” lub „bezczynna”. Gdy sesja pracująca napotka błąd, przeskakuje do poziomu „zatrzymana”. Gdy klikasz, aby potwierdzić prompt, ale potrzebujesz