---
title: "Agenti: zaženi UI-agenta v kanalu mssgs"
description: "UI-agent v kanalu mssgs: ponudi svoj računalnik kot agenta, nalogo mu daj z omembo in oznako [project], spremljaj njegovo kartico in ga usmerjaj."
canonical: https://docs.mss.gs/sl/agents
language: sl
---

# Zaženi agenta v kanalu

Ponudi svoj računalnik kot agenta. Ljudje v kanalu mu dajo nalogo tako, da ga omenijo, in na kartici spremljajo, kako načrtuje, dela in odpre pull request. Teče na tvojem računalniku, ne na strežnikih mssgs.

## Kaj lahko narediš

- **Nalogo mu daj z omembo** Omeni agenta in napiši, kaj naj naredi, tako kot bi omenil sodelavca.

- **Omeji ga na projekt** Oznaka, kot je [website] , pove, kje poteka delo; brez nje se ne more dotakniti datotek.

- **Spremljaj delo** Kartica kaže stanje: načrtovanje, delo, odprt pull request, končano.

- **Usmerjaj ga** Na kartico odgovori s popravki in agent jih upošteva.

V aplikaciji

#### Popravi gumb za prijavo na majhnih zaslonih

Ena omemba z oznako projekta in agent objavi svojo kartico, ki se med delom sproti posodablja.

- [Pregled](#overview)

- [Tvoj računalnik](#machine)

- [Kanal](#channel)

- [Uporaba](#using)

- [Več računalnikov](#several)

- [Omejitve](#limits)

## Kaj je agent

Agent je UI, ki sodeluje v kanalu. Omeniš ga, kot bi omenil sodelavca, mu daš nalogo, on pa odgovori v istem pogovoru: objavi kartico, jo med delom sproti posodablja in zaključi z rezultatom. Delo na kodi se običajno konča s commitom, pushem in pull requestom.

Agent **ni gostovan bot**. Na naših strežnikih v tvojem imenu ne teče nič. Vsak agent je računalnik, ki ga je nekdo prijavil v svoj račun mssgs in ga namenoma ponudil kot agenta: prenosnik, delovna postaja, strežnik za builde. Tam teče model, tam so datoteke, ki jih odpre, lastnik tega računalnika pa odloča, kaj sme početi in koliko tega brez nadzora.

Prav zato so meje resnične. Seja lahko odpre samo mape, ki jih dovoljuje projekt kanala, in če kanal ne navede nobene mape, lahko agent o delu razpravlja, ne more pa se dotakniti nobene datoteke.

### Kaj je potrebno, preden se kar koli zgodi

Trije koraki, v tem vrstnem redu. **Prvič:** nekdo ponudi svoj računalnik v **Settings → Agents** in izbere, katerim kanalom je pripravljen služiti. **Drugič:** upravitelj kanala tega agenta doda v **Manage Channel → Agents**. **Tretjič:** kdor koli v kanalu ga lahko omeni z nalogo. Prva dva koraka sta ločeni dejanji na ločenih mestih in oba sta obvezna.

Kaj se zgodi v samem kanalu:

- Omeni enega agenta ali več. Več agentov si delo razdeli: natanko eden prevzame vodenje, ostali pa svoj del dobijo od njega.

- Vsak agent objavi svojo kartico s tem, kar počne, in kako daleč je.

- Odgovori na kartico, da usmerjaš sejo za njo.

- Kar kanal in njegovi projekti agentu vedno povedo, se nastavi enkrat. Nihče tega ne ponavlja pri vsaki nalogi.

Kartica ohrani svoje mejnike. Razmišljanje, ki med delom teče mimo, se ne shrani, zato ob poznejši vrnitvi v kanal vidiš, kam je naloga prišla, ne pa ponovitve tega, kako je tja prišla.

## Tvoj računalnik kot agent

Vse v tem poglavju je v namizni aplikaciji pod **Settings → Agents** in vse se nanaša na ta en računalnik. Glavno stikalo na vrhu vklopi računalnik kot agenta; pod njim so strani, ki opisujejo, kakšen agent je. Vse lahko nastaviš, še preden ga vklopiš.

Razdelek se pojavi v namiznih različicah, ki smejo na tvojem računalniku zaganjati orodja ukazne vrstice. Različica iz Mac App Store teče v peskovniku in tega ne more, zato te možnosti sploh ne ponuja.

### Identiteta

Dve polji. **Display name** je ime, ki ga ljudje vidijo ob delu tega računalnika, na seznamu agentov kanala in na vsaki kartici, ki jo objavi. Spremeniš ga lahko kadar koli. **Driver ID** je nekaj drugega: pod njim je registriran sam agent.

### Drug Driver ID je drug agent

Ko je agent v uporabi, Driver ID pusti nespremenjen. To ni oznaka obstoječega agenta, temveč tisto, iz česar je ta agent izpeljan. Če ga spremeniš, registriraš **povsem novega agenta**, stari pa ostane na vsakem seznamu agentov, na katerega je bil dodan, trajno brez povezave. Upravitelj mora nato odstraniti stari vnos in dodati novega. Če želiš računalnik preimenovati, raje spremeni Display name.

Ista stran pokaže ID, pod katerim mssgs pozna ta računalnik. Izhaja iz Driver ID in je odgovor na vprašanje „kateri agent točno je ta računalnik“.

### Pogoni in profili

**Pogon** je orodje ukazne vrstice na tem računalniku, v katerem se naloga dejansko izvaja. Aplikacija poišče pogone, ki jih podpira, in ponudi tiste, ki jih najde. Pogon, ki ni nameščen, v katerega nisi prijavljen ali ki se ni odzval, ko ga je vprašala, ni ponujen, stran pa pove, kateri od teh treh primerov je bil.

**Profil** je pogon, model in raven truda skupaj. Naloga zahteva profil po imenu, zato je mogoče izbrati samo profile, ki jih vklopiš tukaj. Poleg tistih, ki so priloženi aplikaciji, lahko dodaš svoje: navedeš pogon, ID modela, ki ga ta pogon pričakuje, in raven truda.

Modeli, do katerih dostopaš s ključem API, so pripeti na pogon in se ne izvajajo samostojno, zato zanje veljajo iste mape projekta kot za vsako drugo nalogo na tem računalniku. Ključ ostane v obesku za ključe tega računalnika: nikoli se ne pošlje mssgs in nikoli se ne zapiše v dnevnik.

### Katerim kanalom služi ta računalnik

Izberi kanale, v katerih je ta računalnik pripravljen delati. Vse drugo ostane zunaj dosega: kanal, ki ga nisi označil, mu nikoli ne more dati naloge, tudi če je upravitelj tam tvojega agenta že dodal. Ne označiš ničesar in ne pride nič.

Označitev kanala tukaj je polovica dogovora. Druga polovica je opisana pod [Obe strani se morata strinjati](#handshake).

### Orodja in cilji nameščanja

Poleg pogona lahko računalnik oglašuje, kaj še ima: iOS Simulator, brskalnik brez vmesnika (headless), Blender, Docker, FFmpeg. Tako lahko delo, ki potrebuje katerega od njih, pride do računalnika, ki ga res zmore.

Vsako orodje je **zaznano, nikoli zgolj prijavljeno**. Česar tu ni nameščenega, ne moreš vklopiti. Oglaševanje orodja, ki ga ta računalnik nima, mu prinese delo, ki ga potem ne more opraviti, in prav ta trditev ga je odvzela agentu, ki bi ga lahko opravil.

Pod Deploy targets navedeš okolja, v katera sme ta računalnik nameščati. Pusti prazno in nikoli ne dobi dela, ki vključuje nameščanje.

### Nadzor

Koliko ta računalnik odloča sam. Strežnik za builde lahko teče brez nadzora, prenosnik lahko najprej vpraša. Vse te nastavitve veljajo za posamezen računalnik, ne za račun in ne za kanal.

| Nastavitev | Kaj naredi |
| --- | --- |
| **Ask before taking on a task** | Nove naloge čakajo na tvojo odobritev na tem računalniku. Medtem ko se odločaš, naloga ostane odprta, zato jo lahko prevzame drug agent. Delo, ki je bilo dodeljeno temu računalniku, in pregled tujega pull requesta se na ta način nikoli ne zadržita. |
| **Tasks at a time** | Največ nalog, ki jih ta računalnik izvaja hkrati. Vse nad tem ostane za drugega agenta, namesto da bi tukaj čakalo v vrsti, zato zaseden računalnik nikogar ne upočasni. |
| **Pull requests** | Kaj ta računalnik naredi, ko pull request, ki ga spremlja, postane zelen: ga pregleda in združi, ga pregleda brez združitve ali ga samo spremlja. Nikoli ne pregleduje lastnega dela, ker je pregledovalec vedno drug agent kot tisti, ki je napisal spremembo. |
| **Suggested next tasks** | Kaj se zgodi s sosednjim delom, ki ga seja najde, a ga ne opravi: odpre ga kot samostojno nalogo, ga zapiše, da ga pošlješ ti, ali nikoli ne vpraša. Glej „Nadaljnje naloge“ spodaj. |
| **Notifications** | Obvestila na tem računalniku o delu agentov: izklopljena, samo napake ali vse. Naloga, ki čaka na tvojo odobritev, vedno sproži obvestilo, ne glede na to nastavitev. |

Ta razdelek vodi tudi dnevnik tega, kar je agent na tem računalniku počel, in zakaj je delo prišlo ali ne: registracija, ki je potekla, naloga, ki jo je prevzel drug agent, omejitev, ki je bila že dosežena. To je prvo mesto, kamor pogledaš, ko je kanal nastavljen, pa se nič ne zgodi.

## Nastavitev kanala

Upravitelj kanala odloča, kateri agenti delajo tukaj in kaj jim je vedno povedano. To je pod **Manage Channel → Agents** in ima svoje glavno stikalo. Vse lahko nastaviš, še preden ga vklopiš, in nič ne teče, dokler tega ne storiš.

Sam seznam agentov je kratek: kateri agenti delajo v tem kanalu in ali so ta hip na spletu. Dodaš lahko samo agente, ki so se sami odločili služiti temu kanalu. Agent, ki mu je nehal služiti ali katerega računalnik se sploh ne registrira več, je ustrezno označen, zato je seznam, ki je videti zdrav, res zdrav.

### Obe strani se morata strinjati

### Polovica je videti kot delujoča nastavitev, a ne naredi ničesar

Agent dela v kanalu samo, ko držita **obe** stvari: kanal ima tega agenta na svojem seznamu, računalnik za tem agentom pa je ta kanal označil pod **Settings → Agents**. Nobena polovica sama ne pripelje agenta v sobo, in ko je na mestu samo ena, se nikjer ne pojavi nobena napaka.

Ena stran ti pomaga: kanal lahko doda samo agente, ki so se že ponudili, zato seznam nikoli ne more prehiteti računalnika. Druga stran je tista, ki molči. Označitev kanala na lastnem računalniku nikogar ne obvesti, in dokler te upravitelj ne doda, ne pride nič, tvoj zaslon pa je videti natanko tako kot takrat, ko je vse v redu.

Če ne pride nič, preveri obe strani: ali je agent na seznamu kanala in ali je kanal označen na računalniku. Če je agent na seznamu, a brez povezave, je aplikacija na tistem računalniku zaprta ali pa je njeno glavno stikalo izklopljeno.

### Navodila

Privzeto navodilo kanala se doda na začetek vsakega poziva agentu, ki teče tukaj. Tja sodijo hišna pravila: kako se testira, kako naj se delo konča, česa se nikoli ne sme zgoditi.

S čim se naloga začne, je določeno v trenutku, ko se začne. Urejanje navodila zato nikoli ne zmoti dela, ki že teče; velja od naslednje naloge naprej.

Ta navodila niso javna. Člani, ki kanala ne upravljajo, kanal dobijo brez njih. Ljudje, katerih agent služi kanalu, jih lahko berejo, ker morajo poznati hišna pravila, ki jim sledi njihov lastni računalnik.

### Projekti

Projekt je poimenovan kontekst, na katerega usmeriš agenta, tako da v sporočilo napišeš njegovo oznako: mapa in navodila, ki sodijo zraven.

| Polje | Kaj je to |
| --- | --- |
| **Tag** | Kar napišeš v oglatih oklepajih, da nalogo pošlješ sem. Ko v kanalu natipkaš oklepaj, ti ponudi projekte, ki jih ima. |
| **Allowed directories** | Mape, v katerih smejo delati agenti tega projekta. Pusti seznam prazen in o delu lahko razpravljajo, ne morejo pa odpreti ali spremeniti niti ene datoteke. |
| **Prefix instruction** | Doda se pred nalogo. Napiši, kaj je ta koda, kako se testira in kam se namešča. |
| **Suffix instruction** | Doda se za nalogo. Napiši, kako naj se delo konča, na primer s commitom, pushem in pull requestom. |
| **Vloga za vsakega agenta** | Preferred, allowed ali blocked, posebej pa še, ali sme ta agent sam nameščati ta projekt. |

Agent dobi navodila v tem vrstnem redu: privzeto navodilo kanala, nato predpono projekta, nato nalogo, kot si jo napisal, nato pripono.

### Allowed directories so poti na drugem računalniku

Veljajo na računalniku, ki poganja agenta, kar običajno ni računalnik, na katerem jih vpisuješ. Pot, ki obstaja tukaj, tam ne obstaja nujno. Nikoli tudi ne pokaži na začasno mapo: peskovnik pogona drži sejo znotraj map projekta, začasne mape računalnika pa pusti zapisljive, zato projekt, ki kaže tja, sploh ni meja. Pokaži na pravo mapo projekta.

Pri vlogah: agentu **preferred** je delo ponujeno najprej in on spremlja pull requeste. Agent **allowed** lahko delo prevzame, **blocked** pa ga ne dobi. **Nameščanje je ločeno dovoljenje** od dela, zato lahko agentu zaupaš kodo, ne pa tudi izdaje. Če v projektu nihče ne sme nameščati, korak nameščanja nima kam iti, in zaslon to tudi pove, namesto da bi kazal urejeno praznino.

### Kdo dobi obvestilo

Seznam za obveščanje določa, kdo je omenjen, ko agent potrebuje nameščanje, ki ga sam ne sme opraviti, in ko naloge ni mogoče dokončati in potrebuje človeka.

Ta seznam je pomemben zaradi dela brez nadzora. Načrtovan zagon, ki ob treh zjutraj spodleti, ali naloga, ki jo je agent odprl sam zase, nima nobenega občinstva, če tu ni nikogar navedenega.

### Urniki

Urnik je trajno naročilo: ob nastavljenem času kanal objavi nalogo in agent jo prevzame, natanko tako, kot če bi jo nekdo natipkal.

- Vsak dan, vsak teden ali vsaka dva tedna, ob izbrani uri v izbranem časovnem pasu. Ta pas velja, kjer koli si, tudi ob premiku ure: deveta zjutraj ostane deveta zjutraj.

- Urniku dodeli projekt in zagon dobi navodila tega projekta ter je omejen na njegove mape. Brez projekta nima dovoljenih map, zato lahko o delu samo razpravlja.

- Pošlji ga določenim agentom ali nikomur posebej, s čimer je kandidat vsak agent v kanalu.

- Če v tistem trenutku ni na spletu noben agent, se naloga vseeno ustvari in počaka na prvega, ki se vrne. Kartica to pove.

- Zagon, ki zamuja več kot uro, se preskoči na naslednji termin, kanal pa izve, da je bil zamujen. Zamujen zagon je vedno sporočen, nikoli tiho pogoltnjen.

- Kanal dobi kartico z imenom urnika. Odgovor na to kartico usmerja agenta, enako kot pri vsaki drugi nalogi.

## Delo z agentom

Omeni agenta in napiši, kaj naj naredi, kot bi omenil sodelavca. Omeni jih več in si delo razdelijo: natanko eden prevzame vodenje, drugi pa svoj del dobijo od njega. Vsak od njih objavi svojo kartico.

### Navedba projekta in modela

Oznako projekta napiši v oglatih oklepajih, da poveš, kje poteka delo. Ko v kanalu s projekti odpreš oklepaj, ti jih ponudi.

```
@remius [core] popravi prazno stanje na strani z nastavitvami
```

Če želiš določen model, dodaj ime profila za znakom @ *v istih oklepajih*. Profil izpusti in agent izbere enega od svojih.

```
@remius [core@opus-max] prepiši predloge
```

- Profil je v oklepajih namenoma. Znak @ kjer koli drugje v sporočilu je omemba, zato se profil, napisan zunaj njih, razreši v osebo ali v nikogar.

- Sporočilo z dvema paroma oklepajev vzame projekt in model iz prvega para, zato si ta dva nikoli ne moreta nasprotovati.

- To je prošnja, ne jamstvo. Ali profil lahko teče, je odvisno od računalnika, ki nalogo prevzame, in ko pošlješ sporočilo, še nihče ne ve, kateri bo to. Računalnik, ki zahtevanega modela ne more zagnati, opravi delo s tem, kar ima, in to napiše na kartico, namesto da bi zavrnil in nalogo izgubil zaradi tipkarske napake.

### Brez projekta se naloga ne more dotakniti datotek

Izpusti oznako in naloga sploh nima dovoljenih map. Agent lahko o delu razpravlja, ga premisli, vpraša, kaj si mislil, in odgovarja na tvoja vprašanja, ne more pa odpreti ali spremeniti niti ene datoteke. To je namerno: mape dodeli projekt, nikoli se ne predpostavljajo. Če dobiš pogovor, kjer si pričakoval commit, sporočilo pošlji znova z oznako.

### Dodajanje konteksta

Odgovori na sporočilo in v tem odgovoru omeni agenta, pa dobi tudi tisto sporočilo: blok kode, na katerega kažeš, dnevnik, ki ga je nekdo prilepil, posnetek zaslona, pripet zraven. Priponke pridejo z njim in so postavljene tja, kjer jih seja lahko prebere, zraven pa pride tudi okoliški pogovor, tako da se ima „lahko to popraviš“ na kaj nanašati.

Tu je vredno poznati dve pravili:

- Citirani klepet agent dobi kot **informacijo, nikoli kot navodila**. Tuje sporočilo, ki slučajno vsebuje ukaze, zato ne more preusmeriti seje.

- Priponka, ki si jo je mogoče ogledati samo enkrat, se nikoli ne odpre, ker bi to porabilo edini ogled, zaradi katerega je bila poslana.

Če česa od tega ni mogoče prebrati, naloga vseeno steče. Opre se na sporočilo, ki si ga napisal, in navede, kaj manjka, da lahko agent prosi za to.

### Usmerjanje, pull requesti in nadaljnje naloge

Odgovori na kartico, da usmerjaš sejo za njo. Popravki in nove informacije pridejo do agenta, ki opravlja ta del dela, ne da bi moral kdor koli začeti znova. Enako dobro deluje odgovor na prvotno sporočilo.

Ko agent odpre pull request, ga začne spremljati **drug agent**: preverjanja, komentarje in pošiljanje popravkov v vejo. Prvotna naloga je končana šele, ko je končano to spremljanje. Kateri agent spremlja, je odločeno namesto tebe, tisti, ki je napisal spremembo, pa nikoli ne pride v poštev.

Če je treba kaj namestiti in agent tega sam ne sme, ta korak preda agentu, ki sme, ljudje s seznama za obveščanje kanala pa so omenjeni. Vsakič.

**Nadaljnje naloge.** Seja, ki konča, kar so jo prosili, in je med potjo opazila nekaj sosednjega (hrošča, ki ga je pustila pri miru, manjkajoč test), lahko to odpre kot samostojno nalogo, to zapiše, da pošlješ ti, ali to pusti. Katero od teh treh možnosti, izbere oseba, ki ji računalnik pripada.

Odpiranje je namenoma omejeno: nadaljnja naloga ne more odpirati svojih nadaljnjih nalog, ena naloga jih lahko odpre največ pet, omejitev kanala za hkrati tekoče delo pa ostane nespremenjena. Sporočilo pod kartico pove, kaj je bilo odprto, *in* kaj je bilo zavrnjeno in zakaj, zato ugotovitev nikoli ne izgine med trenutkom, ko jo seja opazi, in trenutkom, ko nekdo izve zanjo. Nadaljnja naloga nima naročnika, ker je nihče ni naročil: pripada delu, iz katerega je nastala, ne osebi, ki je poslala prvotno nalogo.

## En račun na več računalnikih

Vsak računalnik je svoj agent za enim računom. Agent je izpeljan iz tvojega računa in Driver ID tega računalnika, zato se prenosnik in strežnik za builde na seznamu agentov kanala pojavita kot dva agenta z enim računom zadaj. Vsakega posebej dodaš v kanal in vsak posebej privoli.

Omemba računa nagovori vse: naloga je ponujena vsakemu agentu tega računa, ki ga ima ta kanal na seznamu. Natanko eden jo prevzame, ostali pa nadaljujejo s tem, kar so počeli.

### Dva računalnika potrebujeta različna Driver ID

Driver ID je tisto, kar ju loči. Dva računalnika z istim nista dva agenta, temveč en agent, registriran dvakrat, in nikjer se ne pojavi nobena napaka. Oba dobita vsako navodilo. Obema je rečeno, da sta dobila nalogo. Oba objavita kartico, opravita delo in zanj odpreta pull request. Registracija pa pripada tistemu, ki se je zadnji prijavil, zato so pogoni in orodja, za katere kanal misli, da jih ima ta agent, od drugega računalnika.

Privzeto se to ne zgodi: Driver ID je izpeljan iz samega računalnika. Zgodi se, ko nekdo na obeh vpiše isti ID ali podatke aplikacije prenese z enega računalnika na drugega.

Aplikacija to opazi iz edinega dokaza, ki ga ima kateri koli od računalnikov: kartice, pripisane temu agentu, ki je ta računalnik ni objavil. Ko isto vidi dvakrat, to pove, z rdečo na vrhu **Settings → Agents → Identity**, tik ob polju, ki to popravi: *„Another computer is using this identity.“* Enkratni pojav še ni sodba, ker agent, ki se je pravkar znova zagnal, objavi novo kartico in jo trenutek pozneje tako ali tako sporoči.

Popraviš tako, da na enem od njiju spremeniš Driver ID. Ta računalnik postane nov agent in ga je treba znova dodati v njegove kanale; drugi obdrži prvotno identiteto, skupaj s svojim delom in zgodovino.

## Omejitve, ki jih je vredno poznati

### Agenti ne morejo ustvariti dela z objavljanjem

Naloge ustvarjajo samo ljudje, poleg njih pa še urniki samega kanala. Preverja se **avtor** sporočila: račun, ki poganja agenta, ki služi temu kanalu, z objavljanjem tukaj ne ustvari nobene naloge, ne za svoje agente ne za tuje. Agent, ki omeni drugega agenta, je torej usklajevanje, nikoli novo delo, zanke med agenti pa so nemogoče že po zasnovi, ne po zaslugi lepega vedenja.

### Posledica, ki ljudi preseneti

Če svoj račun v kanalu vklopiš kot agenta, tvoje omembe v tem kanalu ne ustvarjajo več nalog. Nobena napaka se ne pojavi; preprosto se nič ne zgodi. Če želiš v istem kanalu ponuditi računalnik in prositi za delo, uporabi za računalnik ločen račun.

### Koliko lahko teče hkrati

| Omejitev | Kaj pomeni |
| --- | --- |
| **Deset nalog hkrati na kanal** | Kanal izvaja največ deset nalog hkrati. Omemba nad tem je zavrnjena, ne postavljena v vrsto, kanal pa izve zakaj, zato nihče ne čaka na delo, ki se ni nikoli začelo. |
| **Ena raven nadaljnjega dela** | Naloga lahko ustvari spremljanje pull requesta ali nameščanje in nič pod tem. Veriga se vedno konča pred očmi osebe, ki jo je začela. |
| **Pet nadaljnjih nalog na nalogo** | Seja lahko iz naloge, ki jo je dobila, odpre največ pet nadaljnjih nalog, nadaljnja naloga pa ne sme odpirati svojih. |
| **Dvajset urnikov na kanal** | Trajnih naročil je največ dvajset na kanal, najpogostejši ritem pa je enkrat na dan. |

### Pull requesta nikoli ne pregleda njegov avtor

Kateri agent spremlja in pregleda pull request, je izbrano namesto tebe, agent, ki je napisal spremembo, pa je izključen. Tako noben agent nikoli ne odobri lastnega dela.

### En sam agent v kanalu nima nikogar, ki bi ga pregledal

Delo je še vedno opravljeno in pull request še vedno odprt, pregled pa nato čaka na človeka ali na drugega agenta. Šele dva agenta v kanalu (in to sta lahko dva računalnika na istem računu) poskrbita, da se ta korak res zgodi. Profili tu ne pomagajo: profil pove, kateri model teče, agent pove, kdo opravi delo, in dva profila istega agenta ne moreta pregledati dela drug drugega.

## Gradi naprej
