Tovább a tartalomhoz

Csevegés ügynökkel

Ez az útmutató bemutatja, hogyan dolgozhat egy ügynökkel egy térben.

  1. Nyissa meg az oldalsávban a Terek pontot
  2. Kattintson a Terek címsor melletti + gombra
  3. Írjon be egy nevet — ez kötelező. Az üres nevet elutasítja a rendszer; a párbeszédablak nyitva marad
  4. Ha szeretne, adjon hozzá ügynököket a munkaterületről
  5. Ha a munkaterületen van bármilyen repó, megjelenik egy repóválasztó. Kezdetben minden repó ki van jelölve; szűkítse arra a repókra, amelyekhez ez a tér worktree-ket provisionáljon (egyetlen repó kijelölésének megszüntetése is ide tartozik)
  6. Erősítse meg

A Control Center megnyitja a teret, és a háttérben elkezd kijelölt repónként egy copy-on-write worktree-t provisionálni.

Írja be az üzenetét a beviteli mezőbe, és nyomja le az Entert. Az ügynök elindul, és streamelni kezdi a válaszát.

Ha a tér még provisionálás alatt áll, az üzenete nem vész el, hanem várakozik — a beviteli mező megtartja, és automatikusan elküldi, amint a worktree-k elkészültek.

Ahogy az ügynök dolgozik, látja beérkezni a kört: érvelési szegmensek, eszközhívások (fájlolvasások, írások, shell-parancsok) és a válasz szövege — mindez egyetlen ügynökkör-üzeneten belül.

Amíg egy ügynök dolgozik, a sima beszélgetési szöveg nem állít sorba új kört. Várólistás irányítókártyává válik a beviteli mező feletti sávban, és a következő körhatáron bekerül a futó futtatásba. Nincs felugró értesítés — a visszajelzést maga a kártya adja.

Három dolog változtat ezen a viselkedésen:

  • Az @említést tartalmazó üzenet mindig üzenetként megy el, soha nem irányításként
  • A slash-paranccsal kezdődő üzenetet mindig az adott parancsként kezeli a rendszer
  • A mellékletet tartalmazó üzenet mindig üzenetként megy el — az irányítási várólista csak szöveget fogad
  • Ha minden élő futtatás már befejeződött, a szöveg átcsúszik, és rendes üzenetként megy el

Amikor az ügynök olyan műveletbe ütközik, amelyet a korlátai kapuznak — egy destruktív parancsba vagy egy kiemelt jogosultságú eszközbe —, a szerver blokkolja a futtatást, és jóváhagyási kérést tesz közzé minden csatlakozott kliensnek. Ha éppen meg van nyitva az a beszélgetés, a kérés a csevegésben, a beviteli mező felett jelenik meg, ugyanolyan számozott opciós kártyaként, mint amilyet az ask_user használ (tiltás, jóváhagyás, és opcionálisan jóváhagyás nyolc órára). Nincs kihagyás: a blokkolt ügynök döntésre vár.

Ha az alkalmazás más részén jár, a felületen egy mindig felül lévő panel továbbra is felsorolja, mi vár döntésre, így anélkül oldhatja fel az ügynök blokkolását, hogy a teret keresgélnie kellene. Az átfedő panel abban a pillanatban elrejti a kérést, amikor az adott tér beszélgetése megjelenik a képernyőn, így soha nem válaszol ugyanarra a kérésre kétszer.

Nincs időtúllépés: a blokkolt ügynök addig vár, amíg valaki nem dönt. Ugyanez a kérés megjelenik a beérkezett üzenetek figyelmet igénylő sávjában és a telefonos kliensen is.

Az ügynöknek, ha beállítást, hiányzó követelményt vagy valódi elágazást kell tisztáznia, muszáj meghívnia az ask_user eszközt. Ha a kérdést csevegőüzenetként írja meg, az lezárja a kört, és újra kell kérnie. Az eszköz számozott kártyát jelenít meg a beszélgetésben — opciók, opcionális szabad szöveg vagy mindkettő —, és a futtatás a válaszára vár.

Koppintson egyetlen opcióra az elküldéséhez (a végi szám fölévittel nyíllá változik). A több elem kijelölését és a beírt válaszokat a Folytatás (⌘↵ / Ctrl↵) küldi el. A Kihagyás azt mondja az ügynöknek, hogy válasszon egy észszerű alapértelmezést, és ne kérdezzen újra.

Ez külön mechanizmus a fenti jóváhagyási kártyától: a jóváhagyás a „megtehetem ezt?”, a kérdés pedig a „melyikre gondoltál?”. A kérdezés minden módban elérhető a beépített harnessen, a csak olvasható módokat is beleértve (nem módosít semmit), és szándékosan nincs jóváhagyási kérésbe csomagolva — egy párbeszédablak egy másik előtt zárt állapotban hibázna, ha nincs csatlakozva jóváhagyó. Egy olyan futtatás, amelynek nincs beszélgetése, ahová megjeleníthetné, egyszerűen nem kapja meg az eszközt.

Amíg futások vannak folyamatban, a beviteli mező küldés gombja Leállítás gombbá válik. Ürítse ki a beviteli mezőt, és nyomja meg — ezzel leállítja a beszélgetésben futó összes ügynököt.

A tér fejlécében nincs leállításvezérlő, és billentyűparancs sincs hozzá. Ha több élő futás közül csak egyet szeretne leállítani, nyissa meg az adott futtatás tevékenységfülét — a fejléce futtatásra vonatkozó szüneteltetés/folytatás és leállítás vezérlőt tartalmaz (a leállítás megerősítést kér). A Megfigyelhetőség → Élő nézet a munkaterület minden futó ügynökét felsorolja ugyanezzel a vezérlővel.

A leállított futtatás leállítottként van megjelölve. Küldjön új üzenetet az újbóli elindításhoz.

Írjon be egy / karaktert a beviteli mezőbe a parancslista megjelenítéséhez. A beszélgetés viselkedését megváltoztató parancsok:

Parancs Mit tesz
/plan Tervmódba váltja a teret. Az önmagában álló /plan csak élesíti a módot; a /plan <request> élesíti, és a többit az üzeneteként küldi el
/goal <text> Rögzíti a beszélgetés munkacélját
/loop <text> Addig iterál egy feladaton, amíg az be nem fejeződik
/compact Régebbi előzményeket horgonyzott összefoglalóba hajt össze, és a tömörített kontextuson folytatja
/todo … Megtekinti és szerkeszti a beszélgetés tartósított tennivalólistáját

A készségek ugyanabban a listában, a saját skill: névterük alatt jelennek meg, így soha nem ütköznek a fenti parancsokkal — egy plan vagy compact nevű készség elérhető marad:

Parancs Mit futtat
/skill:<name> Egy munkaterületre telepített vagy az ügynökhöz csatolt készség
/skill:<repo>:<name> A térben checkoutolt repók egyike által szállított készség

A repókészségek a származási repójuk jelvényét viselik, mert egy név önmagában nem árulja el, melyik szolgáltatás konvencióit kódolja, és két repó is szállíthat egy-egy testing nevűt. A megtalálásukhoz nem kell begépelnie az előtagot: a csupasz készségnév beírása a névtérbe tartozó bejegyzésekre is illeszkedik.

Az ügynök mindig csak annak a repónak a készségeit hordozza, amelyben éppen dolgozik — lásd a Repóhoz kötött készségek szakaszt. A beviteli mező viszont nincs így leszűkítve: a megnevezésével bármelyik repó készségét meghívhatja.

A /compact és a /todo parancsot a kliens fogja el, és soha nem perzisztálódnak üzenetként — egy /compact sor az átiratban egy körrel hátrébb tolná a következő tömörítés vágási pontját. A /plan a tér tárolt módját billenti át, nem szövegként utazik. Így a három közül egyik sem „az ügynöknek küldött üzenet”; ne számítson arra, hogy megjelennek az előzményekben.

Egy összetett változtatás előtt váltsa a teret tervmódba a /plan paranccsal, a beviteli mező eszköztárán lévő módválasztóval vagy a Shift+Tab billentyűkombinációval. Az ügynök ezután csak olvasható módon kutat, és egy típusos tervet ad át, amelyet jóváhagy, mielőtt bármilyen munka elindulna. Lásd a Tervmód használata oldalt.

Ügynök elérése külön tér nélkül

Szekció neve “Ügynök elérése külön tér nélkül”

Nem kell ügynökönként külön tér. Bármelyik térben:

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

Az említett ügynök bekerül a térbe, és az adott tér kontextusával indul el. A névillesztésről lásd az Ügynökök @-említése oldalt.