Przejdź do głównej zawartości

Czatuj z agentem

W tym poradniku pokazano, jak pracować z agentem w przestrzeni.

  1. W pasku bocznym przejdź do Przestrzenie
  2. Kliknij przycisk + obok nagłówka Przestrzenie
  3. Wpisz nazwę — jest wymagana. Pusta nazwa zostaje odrzucona; okno dialogowe pozostaje otwarte
  4. Opcjonalnie dodaj agentów z obszaru roboczego
  5. Jeśli obszar roboczy ma jakiekolwiek repozytorium, pojawia się selektor repozytoriów. Na początku zaznaczone są wszystkie repozytoria; zawęź wybór (możesz też odznaczyć pojedyncze repozytorium) do tych repozytoriów, dla których ta przestrzeń ma przygotowywać worktree
  6. Potwierdź

Control Center otwiera przestrzeń i w tle zaczyna przygotowywać worktree copy-on-write dla każdego zaznaczonego repozytorium.

Wpisz wiadomość w kompozytorze i naciśnij Enter. Agent zostaje wysłany i zaczyna strumieniować odpowiedź.

Jeśli przestrzeń wciąż jest przygotowywana, wiadomość zostaje wstrzymana, a nie utracona — kompozytor trzyma ją i wysyła automatycznie, gdy worktree będą gotowe.

W miarę pracy agenta widzisz strumieniowanie jego tury: segmenty rozumowania, wywołania narzędzi (odczyt i zapis plików, polecenia powłoki) oraz tekst odpowiedzi — wszystko w jednym komunikacie tury agenta.

Gdy agent pracuje, zwykły tekst rozmowy nie trafia do kolejki jako nowa tura. Zamienia się w kartę sterowania w kolejce na pasku nad kompozytorem i zostaje wstrzyknięty do bieżącego uruchomienia na granicy następnej tury. Nie ma żadnego powiadomienia typu toast — informacją zwrotną jest ta karta.

Trzy rzeczy zmieniają to działanie:

  • Wiadomość zawierająca @wzmiankę jest zawsze wysyłana jako wiadomość, nigdy jako sterowanie
  • Wiadomość rozpoczynająca się od polecenia slash jest zawsze obsługiwana jako to polecenie
  • Wiadomość z załącznikiem jest zawsze wysyłana jako wiadomość — kolejka sterowania przyjmuje tylko tekst
  • Jeśli wszystkie bieżące uruchomienia już się zakończyły, tekst przechodzi dalej i zostaje wysłany jako zwykła wiadomość

Gdy agent natrafi na działanie, które blokują jego guardraile — destrukcyjne polecenie, narzędzie z podwyższonymi uprawnieniami — serwer blokuje uruchomienie i publikuje prośbę o zatwierdzenie do wszystkich połączonych klientów. Jeśli masz otwartą tę rozmowę, prośba pojawia się na czacie, nad kompozytorem, jako ta sama karta z numerowanymi opcjami, której używa ask_user (odmów, zatwierdź, a opcjonalnie zatwierdź na osiem godzin). Nie ma opcji pominięcia: zablokowany agent czeka na decyzję.

Jeśli jesteś w innym miejscu aplikacji, panel zawsze na wierzchu w powłoce nadal wyświetla listę oczekujących rzeczy, więc możesz odblokować agenta bez szukania tej przestrzeni. Nakładka ukrywa prośbę w chwili, gdy rozmowa tej przestrzeni pojawi się na ekranie, więc nigdy nie odpowiadasz dwa razy na to samo pytanie.

Nie ma limitu czasu: zablokowany agent czeka, aż ktoś zdecyduje. Ta sama prośba pojawia się też na pasku uwagi w skrzynce oraz w kliencie na telefonie.

Agent, który potrzebuje preferencji, brakującego wymagania albo prawdziwego wyboru między opcjami, musi wywołać ask_user. Zapisanie pytania jako wiadomości na czacie kończy turę i musisz zadać polecenie ponownie. Narzędzie renderuje w rozmowie kartę z numerami — opcje, opcjonalny tekst własny albo jedno i drugie — a uruchomienie czeka na Twoją odpowiedź.

Dotknij pojedynczej opcji, aby ją wysłać (końcowy numer zmienia się po najechaniu w strzałkę). Wielokrotny wybór i odpowiedzi wpisywane z klawiatury zatwierdzasz przyciskiem Kontynuuj (⌘↵ / Ctrl↵). Pomiń mówi agentowi, żeby wybrał rozsądną wartość domyślną i już nie pytał.

To mechanizm odrębny od karty zatwierdzenia powyżej: zatwierdzenie odpowiada na pytanie „czy mogę to zrobić?”, a pytanie — na „co dokładnie miałeś na myśli?”. Pytanie jest dostępne w wbudowanym harnessie w każdym trybie, także w trybach tylko do odczytu (nic nie zmienia), i celowo nie jest opakowane w monit o zatwierdzenie — okno dialogowe przed oknem dialogowym zakończyłoby się bezpieczną odmową, gdy nie jest podłączony żaden zatwierdzający. Uruchomienie bez rozmowy, w której można coś wyrenderować, po prostu nie otrzymuje tego narzędzia.

Gdy uruchomienia są aktywne, przycisk wysyłania w kompozytorze zmienia się w przycisk Zatrzymaj. Wyczyść kompozytor i naciśnij go — zatrzymuje to każdego agenta działającego w tej rozmowie.

W nagłówku przestrzeni nie ma sterowania zatrzymywaniem ani skrótu klawiszowego do tego. Aby zatrzymać tylko jedno uruchomienie, gdy kilka jest aktywnych, otwórz kartę aktywności tego uruchomienia — jej nagłówek zawiera pauzę/wznowienie i zatrzymanie w zakresie tego uruchomienia (zatrzymanie prosi o potwierdzenie). Obserwowalność → Na żywo wymienia każdego działającego agenta w obszarze roboczym wraz z tym samym sterowaniem.

Zatrzymane uruchomienie jest oznaczone jako zatrzymane. Wyślij nową wiadomość, aby wysłać agenta ponownie.

Wpisz / w kompozytorze, aby zobaczyć listę poleceń. Te, które zmieniają zachowanie rozmowy:

Polecenie Co robi
/plan Przełącza przestrzeń w tryb planu. Samo /plan tylko uzbraja tryb; /plan <request> uzbraja go i wysyła resztę jako Twoją wiadomość
/goal <text> Zapisuje cel roboczy rozmowy
/loop <text> Iteruje nad zadaniem, aż zostanie ukończone
/compact Składa starszą historię w zakotwiczone podsumowanie i kontynuuje na skompaktowanym kontekście
/todo … Wyświetla i edytuje trwałą listę zadań tej rozmowy

Skille pojawiają się na tej samej liście w swojej własnej przestrzeni nazw skill:, więc nigdy nie kolidują z powyższymi poleceniami — skill o nazwie plan lub compact pozostaje dostępny:

Polecenie Co uruchamia
/skill:<name> Skill zainstalowany w obszarze roboczym albo przypisany do agenta
/skill:<repo>:<name> Skill dostarczany przez jedno z repozytoriów wyewidencjonowanych w tej przestrzeni

Skille repozytoriów są oznaczone plakietką repozytorium, z którego pochodzą, bo sama nazwa nie mówi, czyje konwencje koduje, a dwa repozytoria mogą każde dostarczać testing. Nie musisz wpisywać prefiksu, aby go znaleźć: wpisanie samej nazwy skilla pasuje również do wpisów z przestrzenią nazw.

Agent dysponuje wyłącznie skillami repozytorium, w którym aktualnie pracuje — zob. Skille w zakresie repozytorium. Kompozytor nie ma takiego ograniczenia: możesz wywołać skill dowolnego repozytorium, nazywając go.

/compact i /todo są przechwytywane przez klienta i nigdy nie są zapisywane jako wiadomości — wiersz /compact w transkrypcie przesunąłby punkt odcięcia następnej kompakcji o jedną turę wstecz. /plan przełącza zapisany tryb przestrzeni, zamiast podróżować jako tekst. Żadne z tej trójki nie jest więc „wiadomością wysyłaną agentowi”; nie oczekuj, że zobaczysz je w historii.

Przed złożoną zmianą przełącz przestrzeń w tryb planu za pomocą /plan, listy trybów na pasku narzędzi kompozytora albo Shift+Tab. Agent prowadzi wtedy badania tylko do odczytu i dostarcza typowany plan, który zatwierdzasz, zanim zacznie się jakakolwiek praca. Zob. Używaj trybu planu.

Nie potrzebujesz osobnej przestrzeni dla każdego agenta. W dowolnej przestrzeni:

@alice can you look at the failing tests in src/auth_test.dart?

Wspomniany agent zostaje dodany do przestrzeni i wysłany z kontekstem tej przestrzeni. Zob. Wspominanie agentów przez @, aby dowiedzieć się, jak dopasowywane są nazwy.