Ausführungskontext und Begrenzungen
Sobald ein Agent Aktionen ausführen und eine Verbindung mit Tools herstellen kann, ist die nächste Frage, wo und wie diese Aktionen ausgeführt werden.
Der Ausführungskontext definiert die Grenzen, innerhalb der ein Agent arbeitet. Dazu gehören das Repository, auf das es zugreifen kann, der Branch, an dem es arbeitet, der Workflow, der seine Aufgaben ausführt, und die Berechtigungen, die ihm gewährt werden.
Ohne einen klar definierten Ausführungskontext wird das Agentverhalten unvorhersehbar und unsicher.
In dieser Lektion lernen Sie Folgendes:
- Was der Ausführungskontext in GitHub bedeutet
- Wie Repository- und Branch-Bereiche Grenzen definieren
- So isolieren Workflows die Ausführung
- So erzwingen Berechtigungen die Kontrolle über Agentaktionen
Was ist der Ausführungskontext?
Der Ausführungskontext ist der Satz von Einschränkungen, die definieren, wo ein Agent arbeitet und auf was er zugreifen kann.
In GitHub umfasst der Ausführungskontext Folgendes:
- Das Repository, in dem der Agent arbeitet
- Die Verzweigung, auf die der Agent abzielt
- Der Workflow, der Aufgaben ausführt
- Die Berechtigungen, die diesem Workflow gewährt werden
In diesem Kontext wird sowohl die Sichtbarkeit als auch die Funktion bestimmt.
Umfang des Repositorys
Agents arbeiten immer innerhalb eines Repositorys. Sie können Code nur innerhalb dieses Repositorys lesen und ändern. Sie interagieren mit Problemen, Pullanforderungen und Workflows, die damit verknüpft sind. Sie haben keinen Zugriff auf andere Repositories, es sei denn, diese wird ihnen explizit erteilt.
Der Repositoryumfang ist die erste Grenze, die das Verhalten des Agenten einschränkt.
Wie der Repository-Bereich konfiguriert wird
Für Agents wie den Copilot Cloud-Agent wird diese Grenze explizit auf Repositoryebene konfiguriert.
Gehen Sie wie folgt vor, um dies zu konfigurieren:
- Öffnen Ihres Repositorys auf GitHub
- Klicken Sie auf "Einstellungen".
- In der Randleiste unter Code & Automatisierung, klicken Sie auf Copilot
- Cloud-Agent auswählen
- Aktivieren und Konfigurieren des Agents für dieses Repository
- Speichern Ihrer Konfiguration
Nach der Konfiguration ist der Agent auf dieses Repository ausgelegt und kann nicht außerhalb dieses Repositorys ausgeführt werden.
Benutzerdefinierter Agentbereich innerhalb eines Repositorys
Benutzerdefinierte Agents arbeiten innerhalb derselben Repositorygrenze, können aber ihren Bereich durch die Konfiguration weiter verfeinern.
Innerhalb einer benutzerdefinierten Agent-Datei (zum Beispiel .github/agents/security-reviewer.agent.md) wird der Bereich mithilfe von Feldern wie:
- applyTo → begrenzt, auf welche Dateien oder Verzeichnisse der Agent sich beschränkt
- Tools → definiert, welche Aktionen der Agent ausführen kann
Beispiel:
applyTo:
- '**/*.js'
- 'src/auth/**' tools:
- read_file
- search_files
So konfigurieren Sie einen benutzerdefinierten Agent:
- Erstellen Sie das Verzeichnis ".github/agents/" in Ihrem Repository.
- Hinzufügen einer Agentdatei mit der Erweiterung ".agent.md"
- Definieren Sie den Bereich mithilfe von applyTo und Tools
- Commit und Pushen der Datei
Dadurch kann sich der Agent nur auf bestimmte Teile des Repositorys konzentrieren und mit eingeschränkten Funktionen arbeiten.
Wie dies in den Ausführungskontext passt
Der Repository-Bereich definiert, wo der Agent operiert, während die benutzerdefinierte Agentenkonfiguration festlegt, auf welche Elemente der Agent innerhalb dieser Grenze zugreifen und was er tun kann.
Gemeinsam erstellen sie mehrschichtige Steuerelemente.
Verzweigungsbasierte Isolation
Agents arbeiten nicht direkt an der Hauptzweigstelle.
Stattdessen:
- Erstellen einer neuen Verzweigung aus der ausgewählten Verzweigung ypu
- Nehmen Sie Änderungen innerhalb dieser Verzweigung vor
- Öffnen einer Pullanforderung für einen Basiszweig
Dadurch werden Änderungen isoliert und sichergestellt, dass alle Änderungen überprüft werden, bevor sie zusammengeführt werden.
Verzweigungsbasierte Isolierung ist ein wichtiger Sicherheitsmechanismus.
Einen Agenten für die Verwendung eines zweigbasierten Bereichs konfigurieren
Führen Sie die folgenden Schritte aus, um einen Copilot Cloud-Agent für den Betrieb mit einem verzweigten Bereich einzurichten:
- Auswählen eines Basiszweigs:
- Zugriff auf die Seite "Agents": Navigieren Sie in Ihrem GitHub Repository zur Seite "Agents".
- Wählen Sie "Base Branch" aus: Wenn Sie Aufgaben an den Copilot Codierungs-Agent delegieren, können Sie eine bestimmte Basisverzweigung auswählen. Dadurch kann der Agent eine neue Verzweigung basierend auf Ihrer ausgewählten Verzweigung anstelle der Standardverzweigung (in der Regel "main") erstellen.
Benutzerdefinierte Agenten arbeiten innerhalb eines Repositorys, steuern jedoch das Verzweigungsverhalten nicht direkt. Branch-basierter Bereich wird vom System bestimmt, das den Agenten ausführt.
So funktioniert es
Bei Verwendung mit einem Cloud-Agent:
- Das System erstellt automatisch eine Verzweigung.
- Wendet Änderungen an
- Öffnet eine Pullanforderung
Bei Verwendung in Workflows (CI):
- Der Workflow bestimmt die Verzweigung.
- Der Agent wird innerhalb dieses Branch-Kontexts ausgeführt.
Was benutzerdefinierte Agents kontrollieren
Benutzerdefinierte Agenten festlegen:
- Auf welche Dateien sie sich konzentrieren (applyTo)
- Welche Aktionen sie ausführen können (Tools)
- Verhalten (Anweisungen)
Aber sie definieren nicht:
- Verzweigungserstellung
- Verhalten der Pull-Anfrage
- Ausführungsisolation
Verzweigungsbasierter Bereich wird immer vom Ausführungskontext erzwungen, nicht vom benutzerdefinierten Agent selbst.
Aktivierung eines Agents zum Ausführen autonomer Aktionen, einschließlich des Erstellens von Verzweigungen und Pull-Anfragen
Agents können autonome Aktionen innerhalb eines Repositorys ausführen, sobald sie aktiviert und einer Aufgabe zugewiesen wurden.
Schritte:
Aktivieren Sie den Agent für das Repository.
- Wechseln sie zu "Einstellungen" → Copilot → Cloud-Agent
- Aktivieren sie den Agent, wählen Sie das Repository aus.
Weisen Sie dem Agent eine Aufgabe zu.
- Aus einem Problem, Copilot Chat oder der Agenten-Schnittstelle
- Beispiel: Beheben eines Fehlers, Implementieren eines Features
Zulassen, dass der Agent die Aufgabe ausführt.
Der Agent führt folgende Aktionen aus:
- Erstelle eine Verzweigung
- Vornehmen von Codeänderungen
- Commit und Push-Updates
Überprüfen und abschließen.
Sobald Sie mit den Codeänderungen und Ergebnissen zufrieden sind, lösen Sie eine Pullanforderung aus. Sie können Änderungen an der Pullanforderung anfordern oder fortfahren und zusammenführen.
Der Agent arbeitet autonom innerhalb des Repositories, indem er Branches erstellt, Code ändert und Pull Requests öffnet, während er dennoch innerhalb eines kontrollierten und überprüfbaren Workflows operiert.
Grenzen des Workflows
Die Ausführung erfolgt in Workflows, die von GitHub Actions unterstützt werden. Jeder Workflow definiert, was die Ausführung auslöst, welche Schritte ausgeführt werden und in welcher Umgebung der Code ausgeführt wird. Workflows dienen als kontrollierte Ausführungscontainer. Sie stellen sicher, dass Aufgaben in einer sauberen Umgebung ausgeführt werden, die Ausführung wiederholbar ist, und Protokolle und Ergebnisse werden erfasst. Workflows sind auch die Ausführung des Agentverhaltens in CI-Umgebungen.
Berechtigungsgrenzen
Berechtigungen definieren, was ein Agent innerhalb des Ausführungskontexts tun kann.
Workflows werden Berechtigungen über Token zugewiesen, z. B. die GITHUB_TOKEN.
Diese Berechtigungen können Folgendes zulassen oder einschränken:
- Lesen von Repositoryinhalten
- Schreiben von Code
- Erstellen von Pullanforderungen
- Zugreifen auf Geheimnisse
- Auslösen von Workflows
Berechtigungen sollten immer explizit definiert und minimiert werden.
Guardrails in GitHub Agentic Workflows
GitHub Agentic Workflows sind mit detaillierter Verteidigung konzipiert. Zu den wichtigsten Steuerelementen gehören:
- Schreibgeschützte Token standardmäßig, sodass der Agent den Repositorystatus prüfen kann, ohne ihn direkt zu ändern
- Sichere Ausgaben, mit denen der Agent Aktionen vorschlagen kann, während ein separater Gated-Schritt entscheidet, was zulässig ist
- Keine Geheimnisse im Agentenprozess: Halten Sie sensible Anmeldeinformationen aus der Laufzeitumgebung des Codierungsagenten heraus.
- Sandkasten- und containerisierte Ausführung
- Netzwerkisolation und zugelassener ausgehender Zugriff
- Bedrohungserkennung, die vorgeschlagene Ausgaben überprüft, bevor eine Schreibaktion ausgeführt wird
Dieses Modell trägt dazu bei, die Risiken von übermäßig berechtigten Agenten, Befehlseinschleusung und unbeabsichtigten Änderungen an Repositories zu reduzieren.
Warum Grenzen wichtig sind
Der Ausführungskontext macht Agentsysteme sicher.
Durch kombinationen:
- Umfang des Repositorys
- Branch-Isolierung
- Ausführung des Workflows
- Berechtigungsverwaltung
GitHub stellt sicher, dass Agents innerhalb klarer, durchsetzbarer Grenzwerte arbeiten.
Dies verhindert Folgendes:
- Unkontrollierte Änderungen am Produktionscode
- Zugriff auf unbeabsichtigte Ressourcen
- Unsichere oder nicht überprüfte Ausführung
Aufruf von Agenten durch Workflows
Um agentgesteuerte Aufgaben als Teil von CI auszuführen, rufen Sie sie innerhalb eines Workflows auf. In diesem Setup wird der Workflow zur Ausführungsgrenze, und der Agent wird innerhalb des Läufers mit definierten Schritten und Berechtigungen ausgeführt.
Schritte:
Erstellen oder Öffnen einer Workflowdatei in Ihrem Repository:
.github/workflows/agent-task.ymlDefinieren, wann der Workflow ausgeführt werden soll:
on: workflow_dispatch: schedule: - cron: '0 9 * * *'Sie können auch Ereignisse wie Push oder pull_request verwenden, je nach Anwendungsfall.
Festlegen von Workflowberechtigungen:
permissions: contents: readPassen Sie Berechtigungen basierend auf den Anforderungen des Workflows an.
Definieren Sie einen Auftrag und einen Runner:
jobs: agent-task: runs-on: ubuntu-latestSehen Sie sich das Repository an:
uses: actions/checkout@v4Einrichten von Node.js:
uses: actions/setup-node@v4 with: node-version: '18'Authentifizierung bereitstellen:
env: COPILOT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Führen Sie die Agent-Aufgabe aus:
run: | npx @github/copilot-cli -p "Summarize recent changes in this repository" --no-ask-user (Optional)Verwenden Sie einen benutzerdefinierten Agent:
run: | npx @github/copilot-cli --agent security-reviewer -p "Review this code for vulnerabilities" --no-ask-user
Der Workflow wird zum kontrollierten Ausführungspfad für den Agent. Die Aufgabe wird auf einem definierten Läufer mit einem definierten Trigger innerhalb eines definierten Repositorykontexts und nur mit den Berechtigungen ausgeführt, die diesem Workflow gewährt wurden.
Branch-Bereich und Workflowausführung
Workflows werden gegen einen spezifischen Branch ausgeführt.
Da Agents Änderungen an einer Verzweigung vornehmen:
- Die Workflowausführung ist auf diese Verzweigung beschränkt.
- Änderungen sind von der Standardverzweigung isoliert.
- Überprüfung erfolgt vor dem Zusammenführen
Dadurch wird sichergestellt, dass die Aktivität des Agents in einem kontrollierten Ausführungsbereich bleibt.
Wichtige Kernpunkte
Der Ausführungskontext definiert, wo Agents arbeiten. Grenzen wie Repositorybereich, Verzweigungsisolation, Workflows und Berechtigungen stellen sicher, dass Agentaktionen kontrolliert, vorhersehbar und sicher bleiben.
Als Nächstes erfahren Sie, wie Sie sichere Ausführungspfade entwerfen, einschließlich Wiederholungsversuche, Rollbacks und Eskalationsmechanismen.