Hoppa till innehåll

@-nämn agenter

Den här guiden visar hur du @-nämner agenter och medarbetare i en yta.

Skriv @ i meddelandefältet och välj en agent i autokompletteringen, eller skriv namnet själv:

@alice fix the login bug

Den omnämnda agenten läggs till i ytan som deltagare om den inte redan är det och dispatchers med ytans kontext och läge. Deltagare som inte nämns ser meddelandet men dispatchers inte.

Om du skickar ett meddelande utan något agentomnämnande väljer Control Center själv en svarande: agenten som talade senast i samtalet, annars samtalets ägare när det har en, annars den första toppnivåagenten bland ytans deltagare. I en yta med en enda agent är det alltid den enda agenten.

En omnämnandetoken matchas skiftlägesokänsligt, efter exakt namn eller prefix. Så når @arch en agent som heter architect och @Alice når alice.

Två konsekvenser värda att ta höjd för:

  • En kort token är inte ett fel. Om två agenter delar ett prefix vinner den första som hittas, och vilken det är beror på ordningen — inte på någon regel för att lösa lika fall. Använd hela namnet när namn överlappar.
  • Endast bokstäver, siffror och understreck ingår i en token. Parsern matchar @(\w+), så @code-reviewer läses som token code och @my agent som my. En agent vars namn innehåller ett bindestreck, en punkt eller ett mellanslag kan inte nämnas tillförlitligt — inte ens via autokompletteringen, som infogar namnet som vanlig text. Döp agenter till ett enda ord, eller använd understreck.

Omnämnanden tas bort från texten innan den når agenten. Ett meddelande som bara består av omnämnanden (@alice) dispatchers därför ingenting — ge det något att göra.

@alice refactor the auth module. @bob write tests for it.

Båda agenterna dispatchers parallellt in i samma samtal och båda tar emot hela meddelandet.

De delar också den ytans worktrees. Repo-worktrees etableras per yta, inte per agent; varje agent får sin egen overlay-arbetskatalog för sin AGENTS.md, sina skills och sin konfiguration, med de delade repona länkade läs-och-skriv. Så två agenter som nämns tillsammans kan se — och krocka med — varandras ändringar.

Varje @token som inte matchar en agent prövas mot arbetsytans mänskliga medlemmar, efter handle, med samma skiftlägesokänsliga regel om exakt namn eller prefix.

Ett matchat medarbetaromnämnande dispatchers inte. Det följer bara med i meddelandets metadata så att aviseringsroutern kan pinga den personen.

Agentnamn prövas alltid först, och en token som en agent har gjort anspråk på erbjuds aldrig till medlemslistan — ett @word kan bara matcha en enda principal.

En dispatchad agent får ett ”Summons”-block i sin prompt som namnger vem som kallade på den och listar ytans närvarolista — de andra agenterna (markerade som toppnivå eller underordnade) och de mänskliga medlemmarna — så att den vet vem den kan lämna över till. Blocket berättar också att ett omnämnande av en annan agent i svaret väcker den agenten och att ett omnämnande av sig själv ignoreras.

En agent kan lämna över i sitt eget svar. När en tur avslutas rent matchas omnämnandena i dess text, och de agenterna läggs till i ytan och dispatchers in i samma samtal, med den nämnande turen som sin prompt. En tur som misslyckades eller avbröts väcker ingen — den stannade mitt i tanken.

Reglerna är avsiktligt strängare än meddelandefältets, eftersom ingen sitter och tittar och kan rätta en felaktig gissning:

  • Endast exakta namn. Ingen prefixmatchning. @arch når architect när en människa skriver det; från en agent når det ingen. Ett namn som matchar två agenter når inte heller någon.
  • Kod är inte prosa. Omnämnanden inuti staketavgränsade block eller `backticks` ignoreras, så att citera en @Override-annotering eller ett pip install foo@1.2 är säkert. Ett oavslutat staket gör allt efter det tomt.
  • Ett @ som sitter ihop med föregående token är inget omnämnande — sam@host.com, pkg/@scope och node@20 matchar ingen.
  • Bindestreck behålls, så @code-reviewer matchar sig själv i stället för token code.
  • Högst tre agenter per tur. En agent som listar sex medarbetare i en sammanfattning listar dem, den kallar inte på dem.

En väckningskedja begränsas på samma sätt som delegering: djup 3, och en agent som redan finns i kedjan kan inte väckas av den igen (ingen A → B → A). Ett ordnat par är också frekvensbegränsat mellan kedjor. Ett avvisat väckningsförsök lägger ett systemmeddelande i samtalet som säger vilket omnämnande som inte levererades och varför — ett namn som inte matchar gör det inte, eftersom varje @ i en mening annars skulle berätta om sig själv.

För en överlämning som inte får bero på prosa — en fråga/svar, eller att nå en agent utanför ytan — använd verktygen send_to_agent, ask_agent och delegate_task i stället.