Codumentor logo Codumentor

Célok

A cél (goal) egy hosszú életű feladat, amelyen az asszisztens a beszélgetésed lezárása után is tovább dolgozik — például minden reggel ellenőriz egy irányítópultot, figyel egy adott típusú változást egy repóban, vagy heteken át vezet egy folyamatos naplót valamiről. Egyszer, egyszerű nyelven állítod be, onnantól a saját ütemezése szerint fut. Ez a Codumentor egyik haladóbb funkciója. A célokat kétféleképpen kezelheted: a webes felület Célok oldalán (Goals), vagy úgy, hogy egy szokásos beszélgetésben megkéred rá az asszisztenst. A legtöbbet mindkét esetben akkor hozod ki belőle, ha érted, mi zajlik a háttérben.

Ez a funkció nem biztos, hogy minden telepítésen elérhető. Ha nem történik semmi, amikor megkéred az asszisztenst egy cél beállítására, lehet, hogy a rendszergazda nem engedélyezte a célokat, vagy nincs beállítva tárolási hely hozzájuk.

Mi is valójában egy cél

Egy cél három dolgot fog össze:

Mivel a KB csupán fájlokból áll, minden, amit egy cél megtanult vagy létrehozott, emberi szemmel olvasható — te (vagy az asszisztens, ha megkéred rá) közvetlenül megnyithatod és elolvashatod.

Cél létrehozása

Írd le egy normál üzenetben, mit szeretnél, például:

"Állíts be egy célt, amely minden hétköznap reggel ellenőrzi a CI irányítópultunkat, és jelenti a piros buildeket."

Az asszisztens megkérdezi, amire szüksége van — egy nevet, az egyes workerek ismétlődő ütemezését (egy cron kifejezést, amelyet alapértelmezetten UTC időzónában értelmez), és utasításokat minden workerhez —, majd létrehozza a célt. A telepítés beállításaitól függően előfordulhat, hogy előbb megmutat egy javasolt tervet (javasolt workerek és a cél leírásának vázlata), amelyet jóvá kell hagynod, mielőtt bármi ütemezésre kerülne; egyszerűbb beállításnál egy lépésben létrehozza és ütemezi a célt.

Minden workerhez opcionálisan megadható egy szerepkör-címke, egy futásonkénti időkorlát (alapértelmezetten egy óra, legfeljebb hat óráig), egy futásonkénti tokenkeret (lásd lent: Tokenkeretek), egy konkrét modell, amelyen fut, valamint azon subagentek listája, amelyeknek átadhatja a munkát. Ezt nem kell magadnak megadnod — az asszisztens ésszerű alapértékeket használ, és csak akkor kérdez, ha ez számít.

Mi történik egy "tick" (lefutás) alkalmával

Amikor egy worker ütemezése elindul, a Codumentor egy friss, üres beszélgetést nyit neki — ez egy "tick". Ez a beszélgetés:

  1. Beolvassa a KB-ból a cél megosztott leírását és a saját utasításait.
  2. Elvégzi, amit az utasítások leírnak — keresést futtat, ellenőriz valamit, jelentést ír.
  3. Visszaírja az eredményeit a KB-ba (egy outbox bejegyzést, egy frissített állapotfájlt, egy naplósort), hogy a következő tick, egy testvér-worker, vagy az asszisztens elolvashassa, mi történt.

A tickek között semmi sem marad meg azon kívül, amit a KB-ba írtak — egy worker mindig tiszta lappal indul, ez teszi lehetővé, hogy egy cél heteken át felügyelet nélkül fusson anélkül, hogy fölösleg halmozódna fel.

Hol látod

Minden tick egy szokásos, Ütemezett futás címkéjű beszélgetés, de a célfutások alapértelmezés szerint rejtve vannak az oldalsávban, hogy egy sűrűn futó cél ne árassza el a listádat — a Célok oldalán olvashatod őket (az Open transcript bármely beszélgetéshez hasonlóan megnyitja). Ha az oldalsávban is látni szeretnéd őket, válaszd a beszélgetéslista szűrőjében az Összes vagy az Ütemezett lehetőséget, majd a Célfutásokkal kapcsolót; a Célfutások nélkül (vagy egy célfutás menüjében a Célfutások elrejtése) újra elrejti őket.

Az összképhez használd a Célok oldalt (lásd a következő szakaszt), vagy kérdezd meg az asszisztenst, például:

"Listázd a céljaimat."
"Mit talált a CI-figyelő cél ezen a héten?"

Az asszisztens beolvassa a cél definícióját, a haladási jegyzeteit, és az egyes workerek élő állapotát, hogy válaszolhasson.

A Célok oldal

A Célok oldal egy helyen mutatja az összes célodat: mi vár rád, mikor futottak az egyes workerek és mit találtak, és mi van az egyes célok tudásbázisában. A legtöbb mindennapi művelet egy kattintásra van. Az oldal felirata angol nyelvű, ezért alább a gombokat az eredeti nevükön említjük.

Hol találod

Ha sem a jelvényt, sem a dobozt nem látod, lehet, hogy a célok nincsenek engedélyezve, vagy a hozzáférési profilod nem ad teljes hozzáférést a repókhoz.

Az összes cél

A kezdőoldal két részből áll:

A listákban a nevek hivatkozások: egy cél, worker vagy fájl nevére kattintva (a Needs you listában, az eseményfolyamban, a futás panelen vagy a Health panelen) odajutsz. Egy Needs you tételben a health check a cél Health panelét nyitja meg.

Az állapot ezek egyike, ebben a fontossági sorrendben: Paused (szüneteltetve), Failing (egy worker háromszor egymás után hibázott), Needs you (van egy riasztás, amelyet még nem láttamoztál), Stale (elakadt: egy futó workernek az utolsó három ütemezett tickje közül egy sem sikerült — óránkénti workernél ez három óra, hetinél három hét; az ennél újabb, az azóta folytatott, a szüneteltetett és az éppen futó worker nem számít) vagy Healthy (rendben).

A 14 napos sávban minden négyzet egy nap. Egy nap csak akkor piros, ha egy worker hibás állapotban zárta a napot, vagy az aznapi tickek legalább tizede hibával végződött. Különben a legérdekesebb eredményt mutatja: riasztás, azután „írt a tudásbázisba”, végül „semmi új”. Így egyetlen hiba, amelyből a következő tick már helyreállt, nem festi pirosra a napot. Minél erősebb a szín, annál több futás volt aznap, a sáv legforgalmasabb napjához mérve. A csak körvonalas négyzet azt jelenti, hogy aznap nem volt futás.

Egy cél

Egy cél megnyitásakor négy fület látsz:

Egy cél oldalain minden időpont a cél időzónájában látszik, abban, amelyben az ütemezései futnak. Ha ez eltér a sajátodtól, az oldal jelzi (például: times in UTC).

Bármelyik futásra kattintva (egy jelre az idővonalon, egy sorra az eseményfolyamban vagy egy futásra egy listában) megnyílik a futás panel. Ez mutatja az eredményt és az összefoglalót, hogy mikor indult a futás, meddig tartott, hány tokent használt (a worker tokenkeretéhez viszonyítva, ha van neki — például 84k / 100k (84 %), mellette a gyorsítótárból kiszolgált tokenekkel; ha föléviszed az egeret, látod a bemeneti és kimeneti tokeneket és a költséget, amely ismert ár nélküli modellnél unknown), mi indította el (az ütemezése, te, vagy egy esemény — ha a worker egy másik worker fájljainak változására fut, akkor azt is, mely fájlok változtak és melyik futás változtatta meg őket, egy kattintásnyira), valamint azt, hogy mit változtatott ez a tick (What this tick changed): a tudásbázisban módosított fájlokat, diffként. Egy csendes tick, amely semmit sem változtatott, ezt ki is írja. A ← és → billentyűkkel lépkedhetsz a futások között. Az Open transcript megnyitja a futás teljes beszélgetését, a még futó tickeknél pedig a Watch live élőben mutatja.

Egy worker

Egy worker nevére kattintva megnyílik a saját oldala. Felül az elmúlt 30 napjának összesítése látható. A naponta többször futó workereknél ez egy napok × órák rács, így a napszakhoz kötött mintázatok is kirajzolódnak. A napi vagy heti workereknél egyetlen sor, naponként egy cellával. Alatta darabszámok, átlagok, és egy diagram arról, meddig tartottak az egyes futások, az időkorláttal szaggatott vonalként. Így még azelőtt látszik, hogy egy worker lassan az időkorlátja felé kúszik, hogy hibázni kezdene. Ha a workernek van tokenkerete, az átlagos tokenszám mellett látszik. Az a futás, amely elköltötte a keretét, Stopped at token budget jelölést kap. Ezután jön a futások listája. Szűrheted Alerts (riasztások), Errors (hibák), Wrote to the KB (írt a tudásbázisba) vagy Run by you (általad indított) szerint, a hosszú „semmi új” szakaszok pedig össze vannak vonva.

Riasztások láttamozása

Egy riasztás addig marad a Needs you listában, és addig tartja a cél állapotát Needs you-n, amíg nem láttamozod. Kattints az Acknowledge gombra a listában vagy a futás panelen. A láttamozás személyes: azt rögzíti, hogy te láttad a riasztást. A célon semmit nem változtat, és másoktól sem rejti el. Vissza is vonhatod (Undo).

Üzenet a célnak

Az Activity fülön a Message the goal mezővel közölhetsz valamit a workerekkel anélkül, hogy az utasításaikat módosítanád, például: „Figyeld a Scale termékoldalát is” vagy „Mostantól hagyd figyelmen kívül a staging buildet”. Címzettként egy workert vagy az összeset (every worker) választhatod. Az üzenet a worker tudásbázisbeli beérkező mappájába (inbox) kerül, és a worker a következő tickje elején elolvassa. Addig az eseményfolyamban a waiting for the next tick (vár a következő tickre) felirat látszik mellette, utána pedig a read by … (elolvasta: …).

Futtatás és szüneteltetés

Egy worker szerkesztése

Egy worker oldalán az oldalsó panelen van a definíciója: az ütemezés (egy cron kifejezés, amelyet gépelés közben ellenőriz, szövegesen is kiír, és megmutatja a következő futási időpontokat), a modellszerep, az időkorlát, a tokenkeret (Token budget: legfeljebb ennyi tokent használhat egy futás; legalább 1000; üresen hagyva az adminisztrátor alapértéke érvényes, ami gyakran korlátlan), az utasítások, a subagentek, amelyeket használhat, és az előre betöltendő eszközök. Amint bármelyik mezőt módosítod, a gomb Save changes (változások mentése) lesz. A változások a worker következő tickjétől érvényesek. Ugyanezen az oldalon el is távolíthatod a workert.

Javaslatok a workerektől

Egy worker maga nem módosíthatja a cél workereit, de javasolhat változtatást: például egy felügyelő (overseer) worker, amely észreveszi, hogy egy másik worker óránkénti tickjei sosem találnak újat, javasolhatja, hogy az csak kétóránként fusson. A workerek javasolhatják egy worker ütemezésének, utasításainak, modelljének, időkorlátjának vagy eszközeinek módosítását, egy worker hozzáadását vagy eltávolítását, illetve egy megjegyzés hozzáfűzését a cél leírásához. Minden javaslat egy fájl a cél proposals/ mappájában, és megjelenik a Needs you listában és a cél Health paneljén.

Az a javaslat, amely nem alkalmazható, mert hibás vagy elavult (például az a worker, amelyről szól, már nincs meg), megmondja, miért, és csak a Dismiss lehetőséget kínálja.

Cél létrehozása a varázslóval

Kattints a Célok oldalon a New goal gombra:

  1. Írd le a kívánt eredményt, ne a lépéseket. Vagy indulj ki egy sablonból: Watch a website for changes (weboldal figyelése), Nightly repository health check (éjszakai repóellenőrzés), Weekly digest of a topic (heti összefoglaló egy témáról) vagy Documentation drift watcher (elavult dokumentáció keresése). A sablon kitölti a leírást (igazítsd a céljaidhoz, például add meg a figyelendő oldalakat vagy a témát), és kész workereket hoz magával. A Don't use a template gombbal visszavonhatod a választást.
  2. Kattints a Plan it gombra. Ha a rendszergazda bekapcsolta a beállító agentet (setup agent), az átnézi a kódbázist, hogy a tervet ahhoz igazítsa, és közben követheted a lépéseit; a választott sablon a kiindulópontja. Ezután javasol egy workerlistát. A workereket szerkesztheted, újakat adhatsz hozzá vagy törölhetsz közülük, egy előnézet pedig megmutatja, mikor fognak futni a következő napokban. Ha a beállító agent ki van kapcsolva, a sablon workereivel kezdesz (sablon nélkül üres tervvel), és magad igazítod őket.
  3. Ha szeretnéd, kattints egy worker ▷ Test fire gombjára, hogy az utasításait egyszer, azonnal kipróbáld, még mielőtt a cél létezne. A futás a terv egy eldobható másolatán történik: semmi nem kerül a célba, és semmi nincs ütemezve. A worker sora mutatja, hogy fut-e még és hogyan ért véget, a beszélgetésére mutató hivatkozással és azokkal a fájlokkal, amelyeket írt volna. Amit a worker a cél fájljain kívül tesz, az viszont valódi: ha az utasításai szerint e-mailt küld vagy weboldalt tölt le, a próbafuttatás is megteszi.
  4. Kattints a Create goal & schedule N workers gombra. A cél létrejön, és az ütemezései elindulnak.

Kérdés egy célról

A cél fejlécében az Ask about this goal új beszélgetést nyit. Az üzenetmező előre ki van töltve, de nincs elküldve: megmondja az asszisztensnek, hogy a cél mely fájljait olvassa el először (a leírását, a haladási jegyzeteit és minden worker legutóbbi outboxát), és hogy csak olvasson, ne módosítson semmit. Írd a kérdésedet a végére, és küldd el.

A módosításaid nyoma

Amit a Célok oldalon vagy az asszisztens megkérésével változtatsz egy célon, az a nevedben kerül a cél előzményei közé, a workerek saját módosításaitól elkülönítve. Így rögzül egy cél létrehozása, egy worker szerkesztése vagy eltávolítása, egy üzenet elküldése, a leírás szerkesztése, egy worker javaslatának alkalmazása vagy elvetése és egy cél törlése is.

Cél- és worker-állapotok

ÁllapotJelentés
AktívA cél workerei a normál ütemezésük szerint futnak.
SzüneteltetveA cél összes workere le van állítva — nem fut tick, nem jön létre beszélgetés, amíg fel nem oldod.
Törölve (KB megtartva)A cél workerei véglegesen eltávolítva; a fájljai a lemezen maradnak nyomonkövetési célra, és egy leállító jelzéssel vannak megjelölve, hogy véletlenül se éledjenek újra.
Törölve (KB is eldobva)A cél workerei és a teljes KB mappája is eltávolításra kerül.

Egy worker saját feladata (task) egymástól függetlenül lehet aktív, szüneteltetett vagy törölt — ugyanazok az állapotok, amelyeket a Codumentor bárhol máshol is használ az ütemezett dolgokra.

Szüneteltetés, folytatás, törlés

Kérd meg az asszisztenst, hogy nevén szüneteltessen vagy folytasson egy célt — ez leállítja vagy újraindítja a workerei tickjeit anélkül, hogy hozzányúlna ahhoz, amit már megírt:

"Szüneteltesd a CI-figyelő célt."
"Folytasd."

A Célok oldalon ugyanezt a cél fejlécében lévő Pause / Resume gombbal teheted meg.

Egy cél törlése erősebb lépés, és alapértelmezetten az ütemezésre nézve végleges, még ha a KB meg is marad:

"Töröld a CI-figyelő célt."

Ez alapértelmezetten megtartja a cél KB-ját a lemezen (így még mindig elolvashatod, mit talált), de leállítottként jelöli meg, így többé nem indulhat el. Kérd meg, hogy a fájlokat is távolítsa el, ha nem akarsz semmit hátrahagyni. A Célok oldalon a Delete goal… a ⋯ menüben (és a Setup fülön) található; a megerősítő ablakban egy jelölőnégyzettel a cél mappáját is törölheted.

Workerek tesztelése és szerkesztése

Mielőtt egy új workerre bíznád az ütemezését, kipróbálhatod a varázslóban (lásd Cél létrehozása a varázslóval), vagy megkérheted az asszisztenst, hogy azonnal indítsa el egyszer, és mutassa meg, mi történt — ez hasznos az utasítások ellenőrzésére az első valódi tick előtt. Azt is kérheted, hogy adjon új workert egy meglévő célhoz, változtassa meg egy worker ütemezését, utasításait, modelljét, időkorlátját vagy tokenkeretét, vagy távolítson el egy workert teljesen, a többi érintése nélkül. Egy worker utasításainak szerkesztése a legközelebbi tickjétől érvényes — semmit nem kell újraütemezni, mert a worker valójában a KB-ból olvas (nem az ütemezésből).

Tokenkeretek. Egy worker tokenkeretébe beleszámít minden, amit a futásai a modellnek küldenek és tőle kapnak, a subagentjeiket és a külső kódoló ágenseket is beleértve, és a szolgáltató gyorsítótárából kiszolgált prompt-tokeneket is. A háttérben futó segédhívások (címadás, összefoglalók, memória-előhívás, biztonsági ellenőrzések, tömörítés) nem számítanak bele. A keretet a lépések között ellenőrzi a rendszer, ezért egy futás legfeljebb egy lépéssel lépheti túl; 80 %-nál a worker utasítást kap, hogy mentse a munkáját és zárja le. Az a futás, amely elköltötte a keretét, sikertelenként rögzül, és az időtúllépéshez hasonlóan beleszámít abba, hogy ismételt hibák után a worker automatikusan kikapcsol. A Run now és a Test fire ugyanazt a keretet használja, mint az ütemezés.

Egy cél tudásbázisának olvasása

Kérd meg az asszisztenst, hogy mutassa meg egy cél fájljait közvetlenül — a leírását, a haladási jegyzeteit, egy worker inboxát vagy outboxát —, és elolvassa neked. Ez a legmegbízhatóbb módja annak, hogy megértsd, mit is csinált valójában egy hosszan futó cél, mivel egy worker saját összefoglalói tömörek lehetnek.

Inkább kérd meg az asszisztenst, hogy olvassa el vagy foglalja össze a KB-t, ahelyett hogy általános célú fájlszerkesztő eszközökkel nyittatnál meg cél-fájlokat. A tudásbázis egy külön, tartósan megosztott helyen van, elkülönítve egy worker saját homokozójától, és a rossz "ajtón" keresztül végzett szerkesztések csendben elveszhetnek ahelyett, hogy eljutnának a célhoz.

Egy cél áthelyezése, visszaállítása vagy másolása

Egy cél KB mappája máshová vihető — biztonsági mentés céljából, vagy egy másik Codumentor-példányra való átköltöztetéshez —, majd ott újraregisztrálható:

Az importált cél mindkét esetben a tiéd lesz, a workerei pedig újra ütemezésre kerülnek.

A ⋯ menü Fork… pontja ugyanazon a példányon készít másolatot: egy új, saját célt ugyanazokkal a workerekkel és protokollal, új azonosítóval (javaslat: a régi, -copy végződéssel). Ha bejelölöd az Also copy the knowledge lehetőséget, az állapot, valamint a workerek outboxai és mappái is átkerülnek; a futási előzmények és az üzenetek az eredetinél maradnak. A másolat szüneteltetve indul, hogy ne fusson az eredetivel párhuzamosan — igazítsd, amit kell, aztán folytasd. Ez egy haladó, alkalmi művelet; a legtöbb cél a helyén jön létre, fut, majd végül törlődik, anélkül hogy valaha is szükség lenne erre.

Megjegyzés a célközönségről

A célok azoknak szólnak, akik szívesen bíznak rá egy nyitott végű, ismétlődő munkát, és később néznek rá vissza, nem egy gyors, egyszeri kérdésre. Egy cél jó beállítása — világos leírás, ésszerű ütemezés, olyan workerek, amelyek tudják, mit jelent a "kész" egyetlen tickre nézve — ugyanolyan gondosságot igényel, mint amilyet egy ismétlődő feladatot átvevő embertársad eligazításába fektetnél.