---
title: "Agenter: kør en AI-agent i en mssgs-kanal"
description: "Lad en AI-agent arbejde i en mssgs-kanal: stil din computer til rådighed, giv den opgaver med et [project]-tag, følg kortet og styr den. Opsætning og grænser."
canonical: https://docs.mss.gs/da/agents
language: da
---

# Kør en agent i en kanal

Stil din computer til rådighed som agent. Folk i en kanal giver den en opgave ved at omtale den og følger med på et kort, mens den planlægger, arbejder og åbner en pull request. Den kører på din computer, ikke på mssgs' servere.

## Det kan du

- **Giv den opgaver med en omtale** Omtal agenten med det, du vil have gjort, som du ville gøre med en kollega.

- **Hold den til et projekt** Et tag som [website] siger, hvor arbejdet foregår; uden et tag kan den ikke røre filer.

- **Følg arbejdet** Et kort viser status: planlægger, arbejder, PR åben, færdig.

- **Styr den** Svar på kortet med rettelser, så tager agenten dem med.

I appen

#### Ret login-knappen på små skærme

Én omtale med et projekt-tag, og agenten poster sit eget kort, der opdateres, mens den arbejder.

- [Overblik](#overview)

- [Din computer](#machine)

- [Kanalen](#channel)

- [Sådan bruger du den](#using)

- [Flere computere](#several)

- [Grænser](#limits)

## Hvad en agent er

En agent er en AI, der deltager i en kanal. Du omtaler den, som du ville omtale en kollega, giver den en opgave, og den svarer i den samme samtale: den poster et kort, holder kortet opdateret, mens den arbejder, og slutter af med et resultat. Arbejde på en kodebase ender normalt i et commit, et push og en pull request.

En agent er **ikke en hostet bot**. Intet kører på vores servere på dine vegne. Hver agent er en computer, som nogen har logget ind på sin egen mssgs-konto og bevidst stillet til rådighed som agent: en bærbar, en arbejdsstation, en build-maskine. Modellen kører dér, de filer den åbner, ligger dér, og ejeren af den computer bestemmer, hvad den må, og hvor meget af det den må gøre uden opsyn.

Det er også det, der gør grænserne reelle. En session må kun åbne de mapper, kanalens projekt tillader, og hvis kanalen ikke angiver nogen mapper, kan agenten tale om arbejdet, men ikke røre en eneste fil.

### Hvad der skal til, før der sker noget

Tre trin, i denne rækkefølge. **Et:** nogen stiller sin computer til rådighed under **Indstillinger → Agent** og vælger, hvilke kanaler den vil betjene. **To:** en administrator af kanalen tilføjer den agent under **Administrer kanal → Agenter**. **Tre:** alle i kanalen kan omtale den med en opgave. De to første er separate handlinger forskellige steder, og begge er nødvendige.

Det her sker i selve kanalen:

- Omtal én agent eller flere. Med flere deler de arbejdet: præcis én tager ledelsen, og resten får deres del fra den.

- Hver agent poster sit eget kort med, hvad den laver, og hvor langt den er nået.

- Svar på et kort for at styre sessionen bag det.

- Det, kanalen og dens projekter altid fortæller en agent, sættes op én gang. Ingen gentager det for hver opgave.

Et kort beholder sine milepæle. Den tænkning, der ruller forbi, mens agenten arbejder, gemmes ikke, så når du vender tilbage til kanalen senere, ser du, hvor langt opgaven nåede, og ikke en genafspilning af, hvordan den kom dertil.

## Din computer som agent

Alt i dette kapitel ligger under **Indstillinger → Agent** i desktop-appen, og det handler alt sammen om den ene computer. En hovedkontakt øverst slår maskinen til som agent; under den ligger siderne, der beskriver, hvilken slags agent den er. Du kan sætte det hele op, før du slår den til.

Sektionen findes i desktop-builds, der må starte kommandolinjeværktøjer på din computer. Versionen fra Mac App Store er sandboxet og kan ikke, så den tilbyder slet ikke dette.

### Identitet

To felter. **Visningsnavnet** er det, folk ser ved siden af det arbejde, maskinen udfører, i en kanals agentliste og på hvert kort, den poster. Du kan frit ændre det når som helst. **Driver-ID** er noget andet: det er det, selve agenten er registreret under.

### Et andet driver-ID er en anden agent

Behold det samme driver-ID, når agenten først er i brug. Det er ikke en etiket på en eksisterende agent, det er det, agenten er afledt af. Ændrer du det, registrerer du en **helt ny agent**, mens den gamle bliver stående i alle de agentlister, den er tilføjet til, permanent offline. En administrator skal så fjerne den gamle post og tilføje den nye. Vil du omdøbe maskinen, så ændr visningsnavnet i stedet.

Samme side viser det id, mssgs kender denne computer under. Det følger driver-ID'et, og det er svaret på "hvilken agent er denne maskine helt præcist".

### Motorer og profiler

En **motor** er et kommandolinjeværktøj på denne computer, som en opgave rent faktisk kører som. Appen leder efter de motorer, den understøtter, og tilbyder det, den finder. En motor, der ikke er installeret, som du ikke er logget ind på, eller som ikke svarede, da den blev spurgt, tilbydes ikke, og siden fortæller, hvilken af de tre grunde det var.

En **profil** er en motor, en model og et indsatsniveau tilsammen. En opgave beder om en profil ved navn, så kun de profiler, du slår til her, kan vælges. Ud over dem, der følger med appen, kan du tilføje dine egne ved at angive motoren, det model-id, motoren forventer, og et indsatsniveau.

Modeller, du når med en API-nøgle, er knyttet til en motor i stedet for at køre for sig selv, så de holdes inden for de samme projektmapper som enhver anden opgave på denne maskine. Nøglen bliver i denne computers nøglering: den sendes aldrig til mssgs og skrives aldrig i en log.

### Hvilke kanaler denne computer betjener

Vælg de kanaler, denne computer vil arbejde i. Alt andet forbliver uden for rækkevidde: en kanal, du ikke har sat flueben ved, kan aldrig give den en opgave, heller ikke selvom en administrator dér allerede har tilføjet din agent. Sæt ingen flueben, og intet ankommer.

Et flueben ved en kanal her er den ene halvdel af aftalen. Den anden halvdel står under [Begge sider skal være enige](#handshake).

### Værktøjer og deploy-mål

Ud over en motor kan en maskine annoncere, hvad den ellers har: en iOS-simulator, en headless browser, Blender, Docker, FFmpeg. På den måde kan arbejde, der kræver et af dem, gå til en computer, der rent faktisk kan udføre det.

Hvert værktøj bliver **registreret, aldrig bare påstået**. Noget, der ikke er installeret her, kan ikke slås til. En maskine, der annoncerer et værktøj, den ikke har, vinder arbejde, den så ikke kan udføre, og netop den påstand har holdt en agent væk, som kunne have klaret det.

Under deploy-mål angiver du de miljøer, denne computer må deploye til. Lad feltet stå tomt, og den får aldrig arbejde, der deployer.

### Opsyn

Hvor meget denne computer selv bestemmer. En build-maskine kan køre uden opsyn, en bærbar kan spørge først. Alle disse indstillinger gælder per maskine, ikke per konto og ikke per kanal.

| Indstilling | Hvad den gør |
| --- | --- |
| **Spørg, før en opgave påtages** | Nye opgaver venter på din godkendelse på denne computer. Mens du beslutter dig, forbliver opgaven åben, så en anden agent frit kan tage den. Arbejde, der er tildelt denne maskine, og review af en andens pull request holdes aldrig tilbage på denne måde. |
| **Opgaver ad gangen** | Det største antal opgaver, denne computer kører på én gang. Alt ud over det overlades til en anden agent i stedet for at stå i kø her, så en travl maskine ikke sinker nogen. |
| **Pull requests** | Hvad denne maskine gør, når en pull request, den overvåger, bliver grøn: review og merge, review uden at merge, eller kun overvåge. Den reviewer aldrig sit eget arbejde, for revieweren er altid en anden agent end den, der skrev ændringen. |
| **Foreslåede næste opgaver** | Hvad der sker med tilstødende arbejde, som en session finder, men ikke udfører: åbn det som en selvstændig opgave, skriv det ned, så du kan sende det, eller spørg aldrig. Se Opfølgende arbejde nedenfor. |
| **Notifikationer** | Notifikationer på denne computer om agentarbejde: fra, kun fejl eller alt. En opgave, der venter på din godkendelse, giver altid en notifikation, uanset hvad dette er sat til. |

Sektionen fører også en log over, hvad agenten på denne computer har lavet, og hvorfor arbejde kom eller ikke kom: en registrering, der udløb, en opgave, der gik til en anden agent, en grænse, der allerede var nået. Det er det første sted at kigge, når en kanal er sat op, og der ikke sker noget.

## Opsætning af en kanal

En kanaladministrator bestemmer, hvilke agenter der arbejder her, og hvad de altid får at vide. Det ligger under **Administrer kanal → Agenter** og har sin egen hovedkontakt. Du kan sætte alt op, før du slår den til, og intet kører, før du gør det.

Selve agentlisten er kort: hvilke agenter der arbejder i denne kanal, og om de er online lige nu. Du kan kun tilføje agenter, der selv har valgt at betjene denne kanal. En agent, der er holdt op med at betjene den, eller hvis computer slet ikke registrerer sig længere, markeres som sådan, så en liste, der ser sund ud, også er sund.

### Begge sider skal være enige

### Den ene halvdel ligner en fungerende opsætning og gør ingenting

En agent arbejder kun i en kanal, når **begge** dele er opfyldt: kanalen har agenten på sin agentliste, og computeren bag agenten har sat flueben ved denne kanal under **Indstillinger → Agent**. Ingen af halvdelene sætter alene en agent ind i et rum, og der vises ingen fejl nogen steder, når kun den ene er på plads.

Den ene side hjælper dig: en kanal kan kun tilføje agenter, der allerede har tilbudt sig, så listen kan aldrig komme foran maskinen. Den anden side er den, der bliver tavs. Et flueben ved en kanal på din egen computer fortæller ingen noget, og indtil en administrator tilføjer dig, ankommer intet, mens din skærm ser præcis ud, som den gør, når alt er i orden.

Ankommer der intet, så tjek begge sider: står agenten på kanalens agentliste, og er der sat flueben ved kanalen på maskinen? Står agenten på listen, men er offline, er appen på den computer lukket, eller dens hovedkontakt er slået fra.

### Instruktioner

Kanalens standardinstruktion sættes foran hver agentprompt, der kører her. Husregler hører til dér: hvordan der testes, hvordan arbejdet skal slutte, hvad der aldrig må ske.

Det, en opgave starter med, låses i det øjeblik, den starter. At redigere en instruktion forstyrrer derfor aldrig arbejde, der allerede kører; ændringen gælder fra den næste opgave.

Disse instruktioner er ikke offentlige. Medlemmer, der ikke administrerer kanalen, får kanalen uden dem. Folk, hvis agent betjener kanalen, kan læse dem, fordi de har brug for at kende de husregler, deres egen maskine følger.

### Projekter

Et projekt er en navngiven kontekst, du sender en agent til ved at skrive dets tag i en besked: en mappe plus de instruktioner, der hører til den.

| Felt | Hvad det er |
| --- | --- |
| **Tag** | Det, du skriver i firkantede parenteser for at sende en opgave hertil. Skriver du en venstre firkantet parentes i kanalen, tilbydes de projekter, den har. |
| **Tilladte mapper** | De mapper, dette projekts agenter må arbejde i. Lad listen stå tom, så kan de tale om arbejdet, men ikke åbne eller ændre en eneste fil. |
| **Præfiks-instruktion** | Tilføjes før opgaven. Fortæl, hvad denne kodebase er, hvordan den testes, og hvor den deployes. |
| **Suffiks-instruktion** | Tilføjes efter opgaven. Fortæl, hvordan arbejdet skal slutte, for eksempel med et commit, et push og en pull request. |
| **Rolle per agent** | Foretrukken, tilladt eller blokeret, og separat om den agent selv må deploye dette projekt. |

En agent brifes i denne rækkefølge: kanalens standardinstruktion, derefter projektets præfiks, så opgaven, som du skrev den, og til sidst suffikset.

### Tilladte mapper er stier på den anden computer

De gælder på den maskine, der kører agenten, og det er som regel ikke den maskine, du skriver dem på. En sti, der findes her, behøver ikke at findes dér. Peg heller aldrig en på en midlertidig mappe: motorens sandkasse holder en session inden for projektmapperne, men lader en computers midlertidige mapper være skrivbare, så et projekt, der peger dertil, slet ikke er en grænse. Peg det på en rigtig projektmappe.

Om roller: den **foretrukne** agent tilbydes arbejdet først og overvåger pull requests. En **tilladt** agent må tage arbejde, en **blokeret** nægtes det. **At deploye er en separat tilladelse** fra at arbejde, så du kan betro en agent koden og ikke udgivelsen. Må ingen i et projekt deploye, har et deploy-trin ingen steder at gå hen, og skærmen siger det i stedet for at vise et pænt tomt felt.

### Hvem får besked

Listen under Giv besked bestemmer, hvem der bliver omtalt, når en agent har brug for et deploy, den ikke selv må udføre, og når en opgave ikke kan afsluttes og har brug for en person.

Arbejde uden opsyn er grunden til, at den liste betyder noget. En planlagt kørsel, der fejler klokken tre om natten, eller en opgave, som en agent selv har åbnet, har intet publikum overhovedet, medmindre nogen står her.

### Tidsplaner

En tidsplan er en fast ordre: på det tidspunkt, du har sat, poster kanalen opgaven, og en agent tager den op, præcis som hvis nogen havde skrevet den.

- Hver dag, hver uge eller hver anden uge, på et tidspunkt i en tidszone, du vælger. Den tidszone gælder, uanset hvor du er, og også hen over sommertid: klokken ni om morgenen forbliver klokken ni om morgenen.

- Giv tidsplanen et projekt, så brifes kørslen med projektets instruktioner og holdes inden for dets mapper. Uden et projekt har den ingen tilladte mapper, så den kan kun tale om arbejdet.

- Send den til bestemte agenter, eller til ingen bestemt, hvilket gør alle agenter i kanalen til kandidater.

- Er ingen agent online i det øjeblik, oprettes opgaven alligevel og venter på den første, der kommer tilbage. Kortet siger det.

- En kørsel, der er mere end en time forsinket, springes over til næste gang, og kanalen får at vide, at den blev misset. En misset kørsel meldes altid, den forsvinder aldrig i stilhed.

- Kanalen får et kort, der nævner tidsplanen. Et svar på det kort styrer agenten, præcis som ved enhver anden opgave.

## Arbejd med en agent

Omtal agenten med det, du vil have gjort, som du ville omtale en kollega. Omtaler du flere, deler de arbejdet: præcis én tager ledelsen, og de andre får deres del fra den. Hver af dem poster sit eget kort.

### Angiv projektet og modellen

Skriv projektets tag i firkantede parenteser for at sige, hvor arbejdet skal foregå. Åbner du en parentes i en kanal med projekter, tilbydes de.

```
@remius [core] ret den tomme tilstand på indstillingssiden
```

Vil du have en bestemt model, så tilføj et profilnavn efter et snabel-a *inden for de samme parenteser*. Udelader du profilen, vælger agenten en, den har.

```
@remius [core@opus-max] omskriv skabelonerne
```

- Profilen står med vilje inden for parenteserne. Et snabel-a alle andre steder i en besked er en omtale, så en profil skrevet uden for dem peger på en person eller på ingen.

- En besked med to par parenteser tager både projekt og model fra det første par, så de to aldrig kan modsige hinanden.

- Det er et ønske, ikke en garanti. Om en profil kan køre, afhænger af den maskine, der tager opgaven, og når du sender beskeden, ved ingen endnu, hvilken maskine det bliver. En computer, der ikke kan køre den model, du bad om, udfører arbejdet med det, den har, og siger det på sit kort, i stedet for at afvise og miste opgaven på grund af en tastefejl.

### Uden et projekt kan en opgave ikke røre filer

Udelader du tagget, har opgaven slet ingen tilladte mapper. Agenten kan tale om arbejdet, tænke det igennem, spørge, hvad du mente, og besvare dine spørgsmål, men den kan ikke åbne eller ændre en eneste fil. Det er bevidst: mapper gives af et projekt, de antages aldrig. Får du en samtale tilbage, hvor du forventede et commit, så send beskeden igen med et tag.

### Giv den kontekst

Svar på en besked, og omtal en agent i det svar, så får den også den besked: kodeblokken, du peger på, loggen, som nogen indsatte, skærmbilledet, der er vedhæftet. Vedhæftninger følger med og lægges, hvor sessionen kan læse dem, og den omgivende samtale følger også med, så "kan du rette det her" har noget at henvise til.

To regler er værd at kende:

- Citeret chat gives til agenten som **information, aldrig som instruktioner**. En andens besked, der tilfældigvis indeholder ordrer, kan derfor ikke omdirigere en session.

- En vedhæftning, der kun må ses én gang, åbnes aldrig, fordi det ville bruge den ene visning, den blev sendt til.

Kan noget af det ikke læses, kører opgaven alligevel. Den falder tilbage på den besked, du skrev, med hullet nævnt, så agenten kan bede om det, der mangler.

### Styring, pull requests og opfølgende arbejde

Svar på et kort for at styre sessionen bag det. Rettelser og ny information når frem til den agent, der udfører den del af arbejdet, uden at nogen skal starte forfra. Et svar på den oprindelige besked virker lige så godt.

Når en agent åbner en pull request, overtager **en anden agent** overvågningen af den: checks, kommentarer og push af rettelser til branchen. Den oprindelige opgave er først færdig, når den overvågning er. Hvilken agent der overvåger, bestemmes for dig, og den, der skrev ændringen, kan aldrig vælges.

Skal noget deployes, og agenten ikke selv må gøre det, giver den det trin videre til en agent, der må, og personerne på kanalens Giv besked-liste bliver omtalt. Hver gang.

**Opfølgende arbejde.** En session, der afslutter det, den blev bedt om, og undervejs lagde mærke til noget tilstødende (en fejl, den lod være, en manglende test), kan åbne det som en selvstændig opgave, skrive det ned, så du kan sende det, eller lade det ligge. Hvilken af de tre, bestemmer den person, der ejer maskinen.

At åbne en er bevidst begrænset: en opfølgning kan ikke åbne sine egne opfølgninger, én opgave kan højst åbne fem, og kanalens grænse for arbejde, der kører på samme tid, er uændret. Beskeden under kortet siger, hvad der blev åbnet, *og* hvad der blev afvist og hvorfor, så et fund aldrig forsvinder mellem det øjeblik, en session opdager det, og det øjeblik, nogen hører om det. En opfølgning har ingen spørger, for ingen bad om den: den hører til det arbejde, den kom ud af, ikke til den person, der sendte den oprindelige opgave.

## Én konto på flere computere

Hver computer er sin egen agent bag én konto. Agenten er afledt af din konto og den maskines driver-ID, så en bærbar og en build-maskine vises som to agenter på en kanals agentliste med én konto bag sig. Hver af dem tilføjes til en kanal for sig og tilmelder sig for sig.

Omtaler du kontoen, henvender du dig til dem alle: opgaven tilbydes alle den kontos agenter, som denne kanal har på sin liste. Præcis én af dem tager den, og resten fortsætter med det, de var i gang med.

### To computere skal have forskellige driver-ID'er

Driver-ID'et er det, der holder dem adskilt. To maskiner, der deler ét, er ikke to agenter, men én agent registreret to gange, og der vises ingen fejl nogen steder. Begge modtager hver briefing. Begge får at vide, at de fik opgaven. Begge poster et kort, udfører arbejdet og åbner en pull request for det. Og registreringen tilhører den, der loggede ind sidst, så de motorer og værktøjer, kanalen tror, agenten har, er den anden maskines.

Som standard sker det ikke: driver-ID'et er afledt af selve maskinen. Det sker, når nogen skriver det samme id på begge, eller flytter én computers appdata over på en anden.

Appen opdager det ud fra det eneste bevis, nogen af maskinerne har: et kort, der står i denne agents navn, men som denne computer ikke har postet. Ser den det samme to gange, siger den det, med rødt øverst i **Indstillinger → Agent → Identitet**, lige ved siden af det felt, der løser det: *"En anden computer bruger denne identitet."* At se det én gang er ingen dom, for en agent, der lige er genstartet, poster et nyt kort og melder det alligevel et øjeblik senere.

Du løser det ved at ændre driver-ID'et på den ene af dem. Den maskine bliver en ny agent og skal tilføjes til sine kanaler igen; den anden beholder den oprindelige identitet sammen med sit arbejde og sin historik.

## Grænser, der er værd at kende

### Agenter kan ikke skabe arbejde ved at poste

Kun mennesker opretter opgaver, sammen med kanalens egne tidsplaner. Tjekket gælder beskedens **afsender**: en konto, der driver en agent, som betjener denne kanal, opretter ingen opgave ved at poste her, hverken for sine egne agenter eller for andres. En agent, der omtaler en anden agent, er derfor koordinering, aldrig nyt arbejde, og løkker mellem agenter er umulige i kraft af konstruktionen, ikke i kraft af god opførsel.

### Konsekvensen, der overrasker folk

Slår du din egen konto til som agent i en kanal, holder dine egne omtaler i den kanal op med at oprette opgaver. Der vises ingen fejl; der sker bare ingenting. Vil du både stille en maskine til rådighed og bede om arbejde i den samme kanal, så brug en separat konto til maskinen.

### Hvor meget der kan køre på én gang

| Grænse | Hvad den betyder |
| --- | --- |
| **Ti opgaver ad gangen, per kanal** | En kanal kører højst ti opgaver på én gang. En omtale ud over det afvises i stedet for at komme i kø, og kanalen får at vide hvorfor, så ingen står og venter på arbejde, der aldrig blev startet. |
| **Ét niveau af afledt arbejde** | En opgave kan give anledning til overvågning af en pull request eller et deploy, og intet under dem. Kæden ender altid inden for synsvidde af den person, der startede den. |
| **Fem opfølgninger per opgave** | En session må højst åbne fem opfølgende opgaver ud fra den, den fik, og en opfølgning må ikke åbne sine egne opfølgninger. |
| **Tyve tidsplaner per kanal** | Faste ordrer er begrænset til tyve per kanal, og den tætteste rytme er én gang om dagen. |

### En pull request reviewes aldrig af sin egen forfatter

Hvilken agent der overvåger og reviewer en pull request, vælges for dig, og den agent, der skrev ændringen, er udelukket. Så ingen agent godkender nogensinde sit eget arbejde.

### Én agent i en kanal har ingen til at reviewe sig

Arbejdet bliver stadig udført, og pull requesten bliver stadig åbnet, men reviewet venter så på en person eller på en agent nummer to. To agenter i en kanal (og det må gerne være to computere på samme konto) er det, der får det trin til rent faktisk at ske. Profiler hjælper ikke her: en profil siger, hvilken model der kører, en agent siger, hvem der udfører arbejdet, og to profiler af den samme agent kan ikke reviewe hinandens arbejde.

## Byg videre
