Körningskontext och gränser
När en agent kan vidta åtgärder och ansluta till verktyg är nästa fråga var och hur dessa åtgärder körs.
Exekveringskontext definierar gränserna inom vilka en agent verkar. Detta inkluderar den lagringsplats som den kan komma åt, den gren som den fungerar på, arbetsflödet som kör dess uppgifter och de behörigheter som den beviljas.
Utan en tydligt definierad körningskontext blir agentbeteendet oförutsägbart och osäkert.
I den här lektionen får du lära dig:
- Vad körningskontext innebär i GitHub
- Hur lagringsplats och grenomfång definierar gränser
- Hur arbetsflöden isolerar exekvering
- Så här framtvingar behörigheter kontroll över agentåtgärder
Vad är körningskontext?
Körningskontext är den uppsättning begränsningar som definierar var en agent fungerar och vad den kan komma åt.
I GitHub omfattar körningskontexten:
- Lagringsplatsen som agenten arbetar i
- Den gren som agenten riktar in sig på
- Arbetsflödet som kör uppgifter
- Behörigheterna som beviljats till arbetsflödet
Den här kontexten avgör både synlighet och kapacitet.
Lagringsplatsomfång
Agenter fungerar alltid inom ett repository. De kan bara läsa och ändra kod på den lagringsplatsen. De interagerar med ärenden, pull-requester och arbetsflöden som är associerade med det. De har inte åtkomst till andra lagringsplatser om de inte uttryckligen beviljas.
Lagringsplatsens omfång är den första gränsen som begränsar agentbeteendet.
Så här konfigureras lagringsplatsens omfång
För agenter som Copilot molnagent konfigureras den här gränsen uttryckligen på lagringsplatsnivå.
Så här konfigurerar du detta:
- Öppna lagringsplatsen på GitHub
- Klicka på Inställningar
- I sidofältet, under Kod & automation klickar du på Copilot
- Välj Molnagent
- Aktivera och konfigurera agenten för lagringsplatsen
- Spara konfigurationen
När agenten har konfigurerats är den begränsad till lagringsplatsen och kan inte användas utanför den.
Anpassat agentomfång på en lagringsplats
Anpassade agenter fungerar inom samma gräns i lagringsplatsen men kan ytterligare förfina sitt omfång genom konfiguration.
I en anpassad agentfil (till exempel .github/agents/security-reviewer.agent.md) definieras omfånget med hjälp av fält som:
- applyTo → gränser för vilka filer eller kataloger agenten fokuserar på
- verktyg → definierar vilka åtgärder agenten kan utföra
Exempel:
applyTo:
- '**/*.js'
- 'src/auth/**' tools:
- read_file
- search_files
Så här konfigurerar du en anpassad agent:
- Skapa katalogen .github/agents/i lagringsplatsen
- Lägg till en agentfil med tillägget .agent.md
- Definiera dess omfång med applyTo och verktyg
- Committa och pusha filen
Detta gör att agenten endast kan fokusera på specifika delar av lagringsplatsen och arbeta med begränsade funktioner.
Så här passar detta in i körningskontexten
Lagringsplatsens omfång definierar var agenten fungerar, medan konfiguration av anpassad agent definierar vad agenten kan komma åt och göra inom den gränsen.
Tillsammans skapar de ett flerskiktat system för kontroll.
Grenbaserad isolering
Agenter arbetar inte direkt på huvudgrenen.
I stället:
- Skapa en ny gren från den gren du valde
- Gör ändringar i den grenen
- Öppna en pull-begäran som riktar sig mot en basgren
Detta isolerar ändringar och säkerställer att alla ändringar genomgår granskning innan de sammanfogas.
Grenbaserad isolering är en viktig säkerhetsmekanism.
Konfigurera en agent för att använda grenbaserat omfång
Följ dessa steg för att konfigurera en Copilot Cloud-agent som ska fungera med ett grenbaserat omfång:
- Välja en basgren:
- Gå till agentersidan: Navigera till agentersidan i ditt GitHub-arkiv.
- Välj basgren: När du delegerar uppgifter till Copilot kodningsagenten kan du välja en specifik basgren. Detta gör att agenten kan skapa en ny gren baserat på din valda gren i stället för standardgrenen (vanligtvis "main").
Anpassade agenter fungerar på en lagringsplats, men de styr inte grenbeteendet direkt. Grenbaserat omfång bestäms av systemet som kör agenten.
Så här fungerar det
När den används med en molnagent:
- Systemet skapar automatiskt en gren
- Tillämpar ändringar
- Öppnar en pull-förfrågan
När det används i arbetsflöden (CI):
- Arbetsflödet avgör grenen
- Agenten körs inom den grenkontexten
Vad anpassade agenter styr
Anpassade agenter definierar:
- Vilka filer de fokuserar på (applyTo)
- Vilka åtgärder de kan utföra (verktyg)
- Så här fungerar de (instruktioner)
Men de definierar inte:
- Skapa gren
- Beteende för pull-begäranden
- Körningsisolering
Grenbaserad räckvidd tillämpas alltid av körningskontexten, inte av den egna anpassade agenten.
Aktivera en agent för att utföra autonoma åtgärder, inklusive att skapa grenar och pull-begäranden
Agenter kan utföra autonoma åtgärder på en lagringsplats när de har aktiverats och fått en uppgift.
Steps:
Aktivera agenten för lagringsplatsen.
- Gå till Inställningar → Copilot → Molnagent
- Aktivera agenten, välj lagringsplatsen
Tilldela en uppgift till agenten.
- Från ett ärende, Copilot Chat eller agentgränssnittet
- Exempel: åtgärda en bugg, implementera en funktion
Tillåt agenten att utföra uppgiften.
Agenten kommer att:
- Skapa en gren
- Att göra kodändringar
- Checka in och skicka uppdateringar
Granska och slutför.
När du är nöjd med kodändringarna och resultaten utlöser du en pull-begäran. Du kan begära ändringar i pull-begäran eller gå vidare och sammanfoga.
Agenten fungerar självständigt på lagringsplatsen genom att skapa grenar, ändra kod och öppna pull-begäranden, samtidigt som den körs inom ett kontrollerat och granskningsbart arbetsflöde.
Arbetsflödesgränser
Exekvering sker i arbetsflöden som drivs av GitHub Actions. Varje arbetsflöde definierar vad som utlöser körning, vilka steg som utförs och vilken miljö koden körs i. Arbetsflöden fungerar som kontrollerade exekveringsbehållare. De ser till att aktiviteter körs i en ren miljö, att körningen kan upprepas och att loggar och resultat registreras. Arbetsflöden är också hur agentbeteendet körs i CI-miljöer.
Behörighetsgränser
Åtkomsträttigheter definierar vad en agent kan göra i sin exekveringskontext.
Arbetsflöden tilldelas behörigheter via token, till exempel GITHUB_TOKEN.
Dessa behörigheter kan tillåta eller begränsa:
- Läsa innehållet i lagringsplatsen
- Skriva kod
- Skapa pull-begäranden
- Åtkomst till hemligheter
- Utlösa arbetsflöden
Behörigheter bör alltid definieras och minimeras uttryckligen.
Skyddsräcken i GitHub agentiska arbetsflöden
GitHub Agentic Workflows är utformade med försvar i flera lager. Viktiga kontroller är:
- Skrivskyddade token som standard så att agenten kan inspektera lagringsplatsens tillstånd utan att ändra den direkt
- Säkra utdata som gör att agenten kan föreslå åtgärder medan ett separat gated-steg avgör vad som är tillåtet
- Inga hemligheter i agentprocessen, som håller känsliga autentiseringsuppgifter borta från runtime-miljön som används av kodagenten.
- Körning i sandlåda och containeriserad miljö
- Nätverksisolering och tillåten utgående åtkomst
- Hotidentifiering som söker igenom föreslagna utdata innan någon skrivåtgärd tillämpas
Den här modellen hjälper till att minska riskerna med överprivilegierade agenter, snabbinmatning och oavsiktliga ändringar av lagringsplatsen.
Varför gränser spelar roll
Körningskontext är det som gör agentsystem säkra.
Genom att kombinera:
- Lagringsplatsomfång
- Grenisolering
- Arbetsflödesexekvering
- Behörighetskontroll
GitHub ser till att agenter fungerar inom tydliga och verkställbara gränser.
Detta förhindrar:
- Okontrollerade ändringar i produktionskoden
- Åtkomst till oavsiktliga resurser
- Osäker eller ej granskad exekvering
Hur agenter anropas via arbetsflöden
Om du vill köra agentdrivna uppgifter som en del av CI anropar du dem i ett arbetsflöde. I den här konfigurationen blir arbetsflödet exekveringsgränsen och agenten körs inom exekveraren med definierade steg och behörigheter.
Steps:
Skapa eller öppna en arbetsflödesfil på lagringsplatsen:
.github/workflows/agent-task.ymlDefiniera när arbetsflödet ska köras:
on: workflow_dispatch: schedule: - cron: '0 9 * * *'Du kan också använda händelser som push eller pull request beroende på ditt användningsfall.
Ange arbetsflödesbehörigheter:
permissions: contents: readJustera behörigheter baserat på vad arbetsflödet behöver göra.
Definiera ett jobb och en löpare:
jobs: agent-task: runs-on: ubuntu-latestKolla in lagringsplatsen:
uses: actions/checkout@v4Konfigurera Node.js:
uses: actions/setup-node@v4 with: node-version: '18'Ange autentisering:
env: COPILOT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Kör agentuppgiften:
run: | npx @github/copilot-cli -p "Summarize recent changes in this repository" --no-ask-user (Optional)Använd en anpassad agent:
run: | npx @github/copilot-cli --agent security-reviewer -p "Review this code for vulnerabilities" --no-ask-user
Arbetsflödet fungerar som en kontrollerad körningsväg för agenten. Uppgiften körs på en definierad löpare, med en definierad utlösare, i en definierad lagringsplatskontext och med endast de behörigheter som beviljats arbetsflödet.
Grenomfång och arbetsflödeskörning
Arbetsflöden körs mot en specifik gren.
Eftersom agenter gör ändringar på en branch:
- Arbetsflödeskörningen är begränsad till den specifika grenen
- Ändringar isoleras från standardgrenen
- Validering sker före sammanslagning
Detta säkerställer att agentaktiviteten förblir inom ett kontrollerat exekveringsomfång.
Viktig insikt
Körningskontext definierar var agenter fungerar. Gränser som lagringsplatsomfång, grenisolering, arbetsflöden och behörigheter säkerställer att agentåtgärder förblir kontrollerade, förutsägbara och säkra.
Därefter får du lära dig hur du utformar säkra exekveringsvägar, inklusive återförsök, återgångar och eskaleringsmekanismer.