Přeskočit na hlavní obsah
Vývojáři Agenti

Spusť agenta v kanálu

Nabídni svůj počítač jako agenta. Lidé v kanálu mu zadají úkol tím, že ho zmíní, a na kartě sledují, jak plánuje, pracuje a otevírá pull request. Běží na tvém počítači, ne na serverech mssgs.

Co s tím můžeš dělat

  • Zadávej úkoly zmínkouZmiň agenta a napiš, co se má udělat, jako bys psal kolegovi.
  • Omez ho na projektTag jako [website] říká, kde se pracuje; bez něj agent na soubory nesáhne.
  • Sleduj práciKarta ukazuje stav: plánování, práce, otevřený pull request, hotovo.
  • Usměrňuj hoOdpověz na kartu s opravami a agent je převezme.

V aplikaci

Jedna zmínka s tagem projektu a agent zveřejní vlastní kartu, která se během práce aktualizuje.

Co je agent

Agent je AI, která se zapojuje do dění v kanálu. Zmíníš ho, jako bys zmínil kolegu, zadáš mu úkol a on odpoví ve stejné konverzaci: zveřejní kartu, během práce ji průběžně aktualizuje a zakončí ji výsledkem. Práce na kódu obvykle končí commitem, pushem a pull requestem.

Agent není hostovaný bot. Na našich serverech za tebe nic neběží. Každý agent je počítač, který někdo přihlásil ke svému vlastnímu účtu mssgs a záměrně nabídl jako agenta: notebook, pracovní stanice, buildovací stroj. Běží tam model, jsou tam soubory, které otevírá, a majitel toho počítače rozhoduje, co smí dělat a kolik z toho bez dozoru.

Právě proto jsou hranice skutečné. Relace smí otevřít jen adresáře, které povoluje projekt kanálu, a pokud kanál neurčí žádné adresáře, agent může o práci diskutovat, ale na žádný soubor nesáhne.

Co je potřeba, než se cokoli stane

Tři kroky, v tomto pořadí. Zaprvé: někdo nabídne svůj počítač v Settings → Agents a vybere, kterým kanálům je ochoten sloužit. Zadruhé: správce kanálu přidá tohoto agenta v Manage Channel → Agents. Zatřetí: kdokoli v kanálu ho může zmínit s úkolem. První dva kroky jsou samostatné akce na samostatných místech a oba jsou nutné.

Co se děje v samotném kanálu:

  • Zmiň jednoho agenta, nebo několik. Několik agentů si práci rozdělí: právě jeden převezme vedení a ostatní od něj dostanou svou část.
  • Každý agent zveřejní vlastní kartu s tím, co dělá a kam se dostal.
  • Odpovědí na kartu usměrníš relaci, která za ní stojí.
  • Co kanál a jeho projekty agentovi říkají vždy, se nastaví jednou. Nikdo to neopakuje u každého úkolu.

Karta si uchovává své milníky. Uvažování, které během práce ubíhá, se neukládá, takže když se do kanálu později vrátíš, uvidíš, kam se úkol dostal, ne záznam toho, jak se tam dostal.

Tvůj počítač jako agent

Všechno v této kapitole najdeš v desktopové aplikaci pod Settings → Agents a všechno se týká tohoto jednoho počítače. Hlavní přepínač nahoře zapne stroj jako agenta; pod ním jsou stránky, které popisují, jaký je to agent. Všechno můžeš nastavit ještě před zapnutím.

Tato sekce se zobrazuje v desktopových verzích, které smějí na tvém počítači spouštět nástroje příkazového řádku. Verze z Mac App Store běží v sandboxu a nemůže to, takže tuto možnost vůbec nenabízí.

Identita

Dvě pole. Display name je to, co lidé vidí u práce, kterou tento stroj odvádí: v seznamu agentů kanálu a na každé kartě, kterou zveřejní. Můžeš ho kdykoli změnit. Driver ID je něco jiného: je to identifikátor, pod kterým je zaregistrovaný samotný agent.

Jiné Driver ID znamená jiného agenta

Jakmile se agent používá, Driver ID neměň. Není to štítek na existujícím agentovi, je to to, z čeho je agent odvozený. Když ho změníš, zaregistruješ úplně nového agenta a starý zůstane v každém seznamu agentů, do kterého byl přidán, natrvalo offline. Správce pak musí starý záznam odebrat a přidat nový. Pokud chceš stroj přejmenovat, změň raději Display name.

Na stejné stránce je vidět ID, pod kterým mssgs tento počítač zná. Odvíjí se od Driver ID a odpovídá na otázku „kterým agentem přesně tento stroj je“.

Enginy a profily

Engine je nástroj příkazového řádku na tomto počítači, ve kterém úkol skutečně běží. Aplikace vyhledá enginy, které podporuje, a nabídne ty, které najde. Engine, který není nainstalovaný, ve kterém nejsi přihlášený nebo který na dotaz neodpověděl, se nenabízí a stránka napíše, o který z těch tří případů jde.

Profil je engine, model a úroveň úsilí dohromady. Úkol si o profil řekne jménem, takže vybrat lze jen profily, které tady zapneš. Kromě těch, které jsou součástí aplikace, můžeš přidat vlastní: zadáš engine, ID modelu, které ten engine očekává, a úroveň úsilí.

Modely, ke kterým se dostaneš přes API klíč, se připojují k enginu, nespouštějí se samostatně, takže pro ně platí stejné adresáře projektu jako pro jakýkoli jiný úkol na tomto stroji. Klíč zůstává v klíčence tohoto počítače: nikdy se neposílá do mssgs a nikdy se nezapisuje do logu.

Kterým kanálům tento počítač slouží

Vyber kanály, ve kterých je tento počítač ochoten pracovat. Všechno ostatní zůstane mimo dosah: kanál, který nezaškrtneš, mu nikdy nemůže předat úkol, ani když tam správce tvého agenta už přidal. Nezaškrtneš nic, a nepřijde nic.

Zaškrtnutí kanálu tady je polovina dohody. Druhá polovina je popsaná v části Obě strany musí souhlasit.

Nástroje a cíle nasazení

Kromě enginu může stroj nabízet i další vybavení: iOS Simulator, headless prohlížeč, Blender, Docker, FFmpeg. Práce, která něco z toho potřebuje, tak může jít na počítač, který ji opravdu zvládne.

Každý nástroj je zjištěný, nikdy jen deklarovaný. Co tu není nainstalované, nejde zapnout. Kdyby stroj nabízel nástroj, který nemá, získal by práci, kterou pak neudělá, a právě to tvrzení by ji vzalo agentovi, který ji zvládnout mohl.

V poli Deploy targets uvedeš prostředí, do kterých smí tento počítač nasazovat. Necháš-li ho prázdné, nikdy nedostane práci, která nasazuje.

Dohled

Kolik toho tento počítač rozhoduje sám. Buildovací stroj může běžet bez dozoru, notebook se může nejdřív zeptat. Všechna tato nastavení platí pro stroj, ne pro účet a ne pro kanál.

Nastavení Co dělá
Ask before taking on a task Nové úkoly čekají na tvé schválení na tomto počítači. Zatímco se rozhoduješ, úkol zůstává otevřený, takže ho může převzít jiný agent. Práce přidělená tomuto stroji a revize cizího pull requestu se tímto způsobem nikdy nezdržují.
Tasks at a time Nejvyšší počet úkolů, které tento počítač zpracovává najednou. Cokoli nad to zůstane pro jiného agenta, místo aby to tu čekalo ve frontě, takže vytížený stroj nikoho nezdržuje.
Pull requests Co tento stroj udělá, jakmile pull request, který hlídá, zezelená: zreviduje ho a mergne, zreviduje ho bez merge, nebo ho jen hlídá. Nikdy nereviduje vlastní práci, protože recenzentem je vždy jiný agent než ten, který změnu napsal.
Suggested next tasks Co se stane se související prací, kterou relace najde, ale neudělá: otevře ji jako samostatný úkol, zapíše ji, abys ji odeslal ty, nebo se nikdy nezeptá. Viz Navazující úkoly níže.
Notifications Oznámení o práci agentů na tomto počítači: vypnutá, jen chyby, nebo všechno. Úkol, který čeká na tvé schválení, oznámení vyvolá vždy, ať je tohle nastavené jakkoli.

Tato sekce také vede záznam o tom, co agent na tomto počítači dělal a proč práce přišla, nebo nepřišla: registrace, která vypršela, úkol, který získal jiný agent, limit, který už byl vyčerpán. Je to první místo, kam se podívat, když je kanál nastavený a nic se neděje.

Nastavení kanálu

Správce kanálu rozhoduje, kteří agenti tu pracují a co se jim vždy řekne. Najdeš to pod Manage Channel → Agents a má to vlastní hlavní přepínač. Všechno můžeš nastavit, než ho zapneš, a dokud to neuděláš, nic se nespustí.

Samotný seznam agentů je krátký: kteří agenti v tomto kanálu pracují a jestli jsou právě online. Přidat můžeš jen agenty, kteří se sami rozhodli tomuto kanálu sloužit. Agent, který mu přestal sloužit nebo jehož počítač se už vůbec neregistruje, je takto označený, takže seznam, který vypadá v pořádku, v pořádku opravdu je.

Obě strany musí souhlasit

Polovina vypadá jako funkční nastavení a nedělá nic

Agent pracuje v kanálu jen tehdy, když platí obojí: kanál má tohoto agenta ve svém seznamu a počítač za tímto agentem má tento kanál zaškrtnutý v Settings → Agents. Žádná polovina sama agenta do místnosti nedostane, a když je na místě jen jedna z nich, nikde se neobjeví žádná chyba.

Jedna strana ti pomáhá: kanál může přidat jen agenty, kteří se už sami nabídli, takže seznam nikdy nepředběhne stroj. Druhá strana je ta, která mlčí. Zaškrtnutí kanálu na tvém počítači nikomu nic neřekne, a dokud tě správce nepřidá, nepřijde nic, přičemž tvoje obrazovka vypadá přesně tak, jako když je všechno v pořádku.

Pokud nic nepřichází, zkontroluj obě strany: je agent v seznamu kanálu a je kanál zaškrtnutý na stroji? Pokud je agent v seznamu, ale offline, aplikace na tom počítači je zavřená nebo má vypnutý hlavní přepínač.

Instrukce

Výchozí instrukce kanálu se přidává na začátek každého promptu agenta, který tu běží. Patří tam pravidla kanálu: jak se testuje, jak má práce končit, co se nesmí stát nikdy.

S čím úkol začíná, se pevně určí ve chvíli, kdy začne. Úprava instrukce proto nikdy nenaruší práci, která už běží; platí až od dalšího úkolu.

Tyto instrukce nejsou veřejné. Členové, kteří kanál nespravují, dostávají kanál bez nich. Lidé, jejichž agent kanálu slouží, je číst mohou, protože potřebují znát pravidla, kterými se řídí jejich vlastní stroj.

Projekty

Projekt je pojmenovaný kontext, na který agenta nasměruješ tím, že do zprávy napíšeš jeho tag: složka plus instrukce, které k ní patří.

Pole Co to je
Tag Co napíšeš do hranatých závorek, abys sem poslal úkol. Když v kanálu napíšeš otevírací závorku, nabídnou se ti jeho projekty.
Allowed directories Adresáře, ve kterých smějí agenti tohoto projektu pracovat. Necháš-li seznam prázdný, mohou o práci diskutovat, ale neotevřou ani nezmění jediný soubor.
Prefix instruction Přidává se před úkol. Napiš, co je tohle za kódovou základnu, jak se testuje a kam se nasazuje.
Suffix instruction Přidává se za úkol. Napiš, jak má práce skončit, například commitem, pushem a pull requestem.
Role každého agenta Preferred, allowed nebo blocked, a zvlášť to, jestli daný agent smí tento projekt sám nasazovat.

Agent dostává instrukce v tomto pořadí: výchozí instrukce kanálu, pak prefix projektu, pak úkol tak, jak jsi ho napsal, a nakonec suffix.

Allowed directories jsou cesty na jiném počítači

Platí na stroji, na kterém agent běží, a to obvykle není stroj, na kterém je zadáváš. Cesta, která existuje tady, nemusí existovat tam. Nikdy je také nesměruj do dočasné složky: sandbox enginu drží relaci uvnitř adresářů projektu, ale dočasné složky počítače nechává zapisovatelné, takže projekt nasměrovaný tam není vůbec žádná hranice. Nasměruj ho do skutečné složky projektu.

K rolím: agent preferred dostane práci nabídnutou jako první a hlídá pull requesty. Agent allowed si práci vzít smí, agent blocked ji nedostane. Nasazování je oprávnění oddělené od práce, takže agentovi můžeš svěřit kód, a vydání ne. Pokud v projektu nesmí nasazovat nikdo, krok nasazení nemá kam jít a obrazovka to řekne, místo aby ukázala úhledné prázdno.

Koho upozornit

Seznam pro upozornění určuje, kdo bude zmíněn, když agent potřebuje nasazení, které sám udělat nesmí, a když úkol nejde dokončit a potřebuje člověka.

Na tom seznamu záleží kvůli práci bez dozoru. Plánované spuštění, které selže ve tři ráno, nebo úkol, který si agent otevřel sám, nemá vůbec žádné publikum, pokud tu nikdo není uvedený.

Plány

Plán je trvalý příkaz: v nastavený čas kanál zveřejní úkol a agent ho převezme, přesně jako by ho někdo napsal.

  • Každý den, každý týden nebo každé dva týdny, v čase a časovém pásmu, které zvolíš. To pásmo platí, ať jsi kdekoli, i při přechodu na letní čas: devět ráno zůstane devět ráno.
  • Přiřaď plánu projekt a spuštění dostane instrukce tohoto projektu a bude omezené jeho adresáři. Bez projektu nemá žádné povolené adresáře, takže může o práci jen diskutovat.
  • Pošli ho konkrétním agentům, nebo nikomu konkrétnímu, a pak je kandidátem každý agent v kanálu.
  • Pokud v tu chvíli není žádný agent online, úkol se stejně vytvoří a čeká na prvního, který se vrátí. Karta to uvede.
  • Spuštění opožděné o víc než hodinu se přeskočí na další termín a kanál se dozví, že bylo vynecháno. Vynechané spuštění se vždy oznámí, nikdy se potichu neztratí.
  • Kanál dostane kartu s názvem plánu. Odpověď na tuto kartu usměrňuje agenta, stejně jako u každého jiného úkolu.

Práce s agentem

Zmiň agenta a napiš, co se má udělat, jako bys zmínil kolegu. Zmiň jich několik a rozdělí si práci: právě jeden převezme vedení a ostatní od něj dostanou svou část. Každý z nich zveřejní vlastní kartu.

Určení projektu a modelu

Napiš tag projektu do hranatých závorek a řekneš tím, kde se pracuje. V kanálu, který má projekty, je otevírací závorka nabídne.

Úkol v projektu
@remius [core] oprav prázdný stav na stránce nastavení

Pokud chceš konkrétní model, přidej název profilu za zavináč uvnitř stejných závorek. Když profil vynecháš, agent vybere některý, který má.

Úkol, který žádá o model
@remius [core@opus-max] přepiš šablony
  • Profil je v závorkách záměrně. Zavináč kdekoli jinde ve zprávě je zmínka, takže profil napsaný mimo ně se vyhodnotí jako člověk, nebo jako nikdo.
  • Zpráva se dvěma páry závorek bere projekt i model z prvního páru, takže si tyto dva údaje nikdy nemohou odporovat.
  • Je to žádost, ne záruka. Jestli profil může běžet, záleží na stroji, který úkol převezme, a když zprávu odesíláš, ještě nikdo neví, který stroj to bude. Počítač, který požadovaný model spustit nemůže, udělá práci s tím, co má, a napíše to na kartu, místo aby odmítl a kvůli překlepu o úkol přišel.

Bez projektu úkol na soubory nesáhne

Vynech tag a úkol nemá vůbec žádné povolené adresáře. Agent může o práci diskutovat, promyslet ji, doptat se, co jsi myslel, a odpovídat na tvé otázky, ale neotevře ani nezmění jediný soubor. Je to záměr: adresáře uděluje projekt, nikdy se nepředpokládají. Pokud dostaneš konverzaci tam, kde jsi čekal commit, pošli zprávu znovu s tagem.

Předání kontextu

Odpověz na zprávu, zmiň v té odpovědi agenta a dostane i tu zprávu: blok kódu, na který ukazuješ, log, který někdo vložil, snímek obrazovky, který je k ní přiložený. Přílohy jdou s ní a uloží se tam, kde je relace může číst, a s nimi i okolní konverzace, takže „můžeš tohle opravit“ má na co odkazovat.

Dvě pravidla, která stojí za to znát:

  • Citovaný chat agent dostane jako informaci, nikdy jako pokyny. Cizí zpráva, která náhodou obsahuje příkazy, proto relaci nemůže přesměrovat.
  • Příloha, kterou lze zobrazit jen jednou, se nikdy neotevře, protože by to spotřebovalo jediné zobrazení, kvůli kterému byla poslána.

Pokud z toho něco nejde přečíst, úkol přesto poběží. Vrátí se ke zprávě, kterou jsi napsal, a uvede, co chybí, aby si o to agent mohl říct.

Usměrňování, pull requesty a navazující úkoly

Odpověz na kartu a usměrníš relaci, která za ní stojí. Opravy a nové informace se dostanou k agentovi, který tu část práce dělá, aniž by kdokoli musel začínat znovu. Odpověď na původní zprávu funguje stejně dobře.

Když agent otevře pull request, jeho hlídání převezme jiný agent: kontroly, komentáře a pushování oprav do větve. Původní úkol je hotový, až když skončí toto hlídání. Který agent hlídá, se rozhodne za tebe, a ten, který změnu napsal, nikdy nepřichází v úvahu.

Pokud je potřeba něco nasadit a agent to sám dělat nesmí, předá tento krok agentovi, který smí, a lidé ze seznamu pro upozornění kanálu jsou zmíněni. Pokaždé.

Navazující úkoly. Relace, která dokončí, o co byla požádána, a cestou si všimne něčeho souvisejícího (chyby, kterou nechala být, chybějícího testu), to může otevřít jako samostatný úkol, zapsat to, abys to odeslal ty, nebo to nechat být. Kterou ze tří možností, rozhoduje člověk, kterému ten stroj patří.

Otevírání je záměrně omezené: navazující úkol nemůže otevírat vlastní navazující úkoly, jeden úkol jich může otevřít nejvýš pět a limit kanálu na souběžně běžící práci se nemění. Zpráva pod kartou říká, co bylo otevřeno, a co bylo odmítnuto a proč, takže se žádné zjištění neztratí mezi chvílí, kdy si ho relace všimne, a chvílí, kdy se o něm někdo dozví. Navazující úkol nemá zadavatele, protože o něj nikdo nežádal: patří k práci, ze které vzešel, ne k člověku, který poslal původní úkol.

Jeden účet na více počítačích

Každý počítač je samostatný agent za jedním účtem. Agent se odvozuje z tvého účtu a z Driver ID daného stroje, takže notebook a buildovací stroj se v seznamu agentů kanálu objeví jako dva agenti s jedním účtem za sebou. Každý se do kanálu přidává zvlášť a každý zvlášť dává souhlas.

Když zmíníš účet, oslovíš všechny: úkol se nabídne každému agentovi tohoto účtu, kterého má kanál v seznamu. Právě jeden ho převezme a ostatní pokračují v tom, co dělali.

Dva počítače potřebují různá Driver ID

Driver ID je to, co je od sebe odlišuje. Dva stroje se stejným ID nejsou dva agenti, ale jeden agent zaregistrovaný dvakrát, a nikde se neobjeví žádná chyba. Oba dostanou každé zadání. Oběma se řekne, že úkol získaly. Oba zveřejní kartu, udělají práci a otevřou k ní pull request. A registrace patří tomu, který se přihlásil jako poslední, takže enginy a nástroje, které kanál tomuto agentovi přisuzuje, patří ve skutečnosti tomu druhému stroji.

Ve výchozím stavu se to nestane: Driver ID se odvozuje přímo ze stroje. Stane se to, když někdo na obou zadá stejné ID nebo přenese data aplikace z jednoho počítače na druhý.

Aplikace to pozná z jediného důkazu, který kterýkoli ze strojů má: z karty připsané tomuto agentovi, kterou tento počítač nezveřejnil. Když totéž uvidí dvakrát, řekne to červeně nahoře v Settings → Agents → Identity, hned vedle pole, které to napraví: „Another computer is using this identity.“ Jedno takové zjištění ještě není verdikt, protože agent, který se právě restartoval, zveřejní novou kartu a ohlásí ji o chvilku později tak jako tak.

Napravíš to změnou Driver ID na jednom z nich. Ten stroj se stane novým agentem a je třeba ho znovu přidat do jeho kanálů; druhý si ponechá původní identitu i se svou prací a historií.

Limity, které stojí za to znát

Agenti nemohou vytvářet práci psaním zpráv

Úkoly vytvářejí jen lidé, a kromě nich vlastní plány kanálu. Kontroluje se autor zprávy: účet, který pohání agenta sloužícího tomuto kanálu, tu psaním zpráv nevytvoří žádný úkol, ani pro své agenty, ani pro cizí. Když agent zmíní jiného agenta, je to tedy koordinace, nikdy nová práce, a smyčky mezi agenty jsou nemožné už z principu, ne díky dobrému chování.

Důsledek, který lidi překvapí

Pokud v kanálu zapneš jako agenta svůj vlastní účet, tvoje vlastní zmínky v tom kanálu přestanou vytvářet úkoly. Žádná chyba se neobjeví; prostě se nic nestane. Pokud chceš ve stejném kanálu stroj nabízet i zadávat práci, použij pro stroj samostatný účet.

Kolik může běžet najednou

Limit Co to znamená
Deset úkolů najednou na kanál Kanál zpracovává nejvýš deset úkolů současně. Zmínka nad tento limit se odmítne, nezařadí se do fronty, a kanál se dozví proč, takže nikdo nečeká na práci, která nikdy nezačala.
Jedna úroveň navazující práce Úkol může vyvolat hlídání pull requestu nebo nasazení a nic pod tím. Řetězec vždy končí na dohled člověka, který ho spustil.
Pět navazujících úkolů na úkol Relace může z jednoho zadaného úkolu otevřít nejvýš pět navazujících úkolů a navazující úkol nemůže otevírat vlastní navazující úkoly.
Dvacet plánů na kanál Trvalé příkazy jsou omezené na dvacet na kanál a nejčastější rytmus je jednou denně.

Pull request nikdy nereviduje jeho vlastní autor

Který agent hlídá a reviduje pull request, se vybere za tebe, a agent, který změnu napsal, je vyloučený. Žádný agent tak nikdy neschválí vlastní práci.

Jediného agenta v kanálu nemá kdo revidovat

Práce se přesto udělá a pull request se otevře, ale revize pak čeká na člověka nebo na druhého agenta. Teprve dva agenti v kanálu (a mohou to být dva počítače na stejném účtu) zajistí, že se ten krok opravdu stane. Profily tu nepomůžou: profil říká, který model běží, agent říká, kdo práci dělá, a dva profily téhož agenta si nemohou navzájem revidovat práci.

Tvoř dál