Skip to main content
Skip to content

Repositorykonfiguration für die GitHub-App Copilot

Definieren Sie repositoryspezifische Anweisungen, Skripts und Automatisierungsverhalten für das GitHub Copilot app.

Wer kann dieses Feature verwenden?

Das GitHub Copilot app ist für alle Copilot-Pläne verfügbar.
Laden Sie die GitHub Copilot app herunter

Verwenden Sie .github/github-app.yml in Ihrem Repository, um zu definieren, wie sich GitHub Copilot app für dieses Projekt verhalten soll.

Sie können diese Projekteinstellungen auch in der App-UI bearbeiten. Falls .github/github-app.yml bereits vorhanden, werden UI-Änderungen in diese Datei zurückgeschrieben. Wenn sie noch nicht vorhanden ist, können Sie sie aus den aktuellen Projekteinstellungen in der App erstellen.

Informationen zum Speicherort der Konfigurationsdatei

Erstellen Sie die Datei unter:

Text
.github/github-app.yml

Die App unterstützt auch den Legacydateinamen .github/copilot-desktop.yml aus Gründen der Abwärtskompatibilität.

Informationen zu UI-basierten Anpassungsschritten finden Sie unter Anpassen der GitHub-App Copilot.

Konfiguration überprüfen und vertrauen

Wenn die App eine Konfiguration aus dem Repository erkennt, wendet sie keine Repositoryanweisungen, Skripts oder andere Einstellungen aus der Datei an, bis Sie die Konfiguration überprüfen und akzeptieren. Dadurch sind Sie davor geschützt, Befehle auszuführen oder Einstellungen anzuwenden, die von einem anderen Mitwirkenden hinzugefügt wurden. Konfigurationen, die Sie über die App-UI erstellen oder aktualisieren, werden automatisch als vertrauenswürdig eingestuft.

Warnung

Bevor Sie eine Repositorykonfiguration akzeptieren, überprüfen Sie alle konfigurierten Befehle und die Abhängigkeiten, die dadurch ausgeführt werden. Skripts und ihre untergeordneten Prozesse erhalten die GitHub weiter unten in diesem Artikel beschriebenen Anmeldeinformationen, sodass sie niemals so konfiguriert werden, dass diese Umgebungsvariablen protokolliert oder beibehalten werden.

Wenn sich die Datei außerhalb der App ändert, einschließlich Änderungen an Leerzeichen oder Kommentaren, müssen Sie die aktualisierte Konfiguration überprüfen und akzeptieren, bevor die App sie anwendet. Bis Sie die aktuelle Version akzeptieren, verwendet die App weiterhin die Projekteinstellungen, die zuvor in der App konfiguriert wurden.

Beispielkonfiguration

YAML
instructions: |
  Use bun instead of npm.

scripts:
  - name: Setup
    command: bun install
    triggers:
      - session.create
  - name: Run
    command: bun run dev
  - name: Archive cleanup
    command: rm -rf node_modules
    triggers:
      - session.archive

server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true

automation:
  auto_issue_session: true
  remote_control: false

Anweisungen und Skripte konfigurieren

instructions

Verwenden Sie instructions, um repositoryspezifische Anleitungen zur Systemaufforderung für Sitzungen im Projekt hinzuzufügen. Wenn Sie auch globale Anweisungen in der App konfigurieren, werden zuerst die globalen Anweisungen angewendet, gefolgt von den Projektanweisungen.

scripts

Verwenden Sie scripts, um Befehle zu definieren, die in der App angezeigt werden und manuell oder durch bestimmte Trigger ausgeführt werden können.

Jedes Skriptelement unterstützt Folgendes:

  • name (string): Anzeigename in der Benutzeroberfläche.
  • command (string): Auszuführender Befehl.
  • triggers (string[], optional): Ereignisse, die das Skript automatisch starten.

Skripts ohne triggers sind manuell.

Triggerwerte

Verwenden Sie kanonische Triggerwerte in Ihrer Datei:

  • session.create
  • session.archive

Die App akzeptiert auch diese Legacyalias beim Analysieren vorhandener Dateien:

  • workspace.create (Alias für session.create)
  • workspace.archive (Alias für session.archive)

Wenn ein ausgelöstes Skript ausgeführt wird, wird COPILOT_SCRIPT_TRIGGER auf den kanonischen Wert festgelegt:

  • session.create
  • session.archive

Konfigurieren der Servererkennung und des Browserverhaltens

server_ready_pattern

server_ready_pattern ist ein regulärer Ausdruck, der verwendet wird, um zu erkennen, wann ein Run-Skript einen Server gestartet hat.

Muster verwenden die Syntax, die von Rusts regex Crate unterstützt wird. Ausführliche Informationen zur Syntax finden Sie unter Syntax in der Crate-Dokumentation. Wenn das Muster ungültig ist, verwendet die App ihr Standardservererkennungsmuster.

Verwenden Sie eine erste Erfassungsgruppe für die erkannte URL oder den erkannten Port. Die App liest die Capture-Gruppe 1:

  • Wenn es sich bei der Aufnahme um eine URL (http://... oder https://...) handelt, wird die URL verwendet.
  • Wenn die Aufnahme nur eine Portnummer ist (z. B 3000. ), konvertiert die App sie in http://localhost:3000.

auto_open_in_browser

Wenn auto_open_in_browser auf true gesetzt ist, öffnet die App die erkannte Ausführungs-URL im integrierten Browser. Wenn dieses Feld nicht angegeben wird, lautet trueder effektive Standardwert .

Automatisierungsverhalten konfigurieren

Legen Sie Automatisierungsoptionen unter automation fest:

  • automation.auto_issue_session (boolean) steuert, ob die App automatisch eine Sitzung mit Problemkontext startet. Wenn nicht angegeben, lautet trueder effektive Standardwert .
  • automation.remote_control (boolean) steuert, ob über die GitHub Weboberfläche oder über GitHub Mobile auf Sitzungen zugegriffen werden kann. Wenn nicht angegeben, lautet falseder effektive Standardwert .

Wenn Ihre Copilot Lizenz von einer Organisation stammt, muss die entsprechende Richtlinie „Lokale Sitzungen in der Cloud speichern“ auf „Anzeigen und steuern“ festgelegt werden, damit die Remotesteuerung verfügbar ist. Unternehmensverwaltete remoteControl Einstellungen können die Remotesteuerung weiter einschränken, auch wenn automation.remote_control``true ist. Weitere Informationen findest du unter Remotesteuerung von GitHub Copilot CLI Sitzungen und Unternehmensverwaltete Einstellungen.

Umgebungsvariablen zur Laufzeit für Skripte

Skripts werden mit diesen von der App bereitgestellten Umgebungsvariablen ausgeführt:

VariableDescription
COPILOT_WORKSPACE_NAMEName des aktuellen Arbeitsbereichs.
COPILOT_WORKSPACE_PATHAbsoluter Pfad zum Arbeitsbereich.
COPILOT_ROOT_PATHAbsoluter Pfad zum Checkout des Stammverzeichnisses des Projekts.
COPILOT_DEFAULT_BRANCHProjekt-Standard-Branch.
COPILOT_PORTApp WebSocket-Port für den aktuellen Arbeitsbereichskontext.
COPILOT_SCRIPT_TRIGGERTrigger, der das Skript gestartet hat (nur für ausgelöste Skripts festgelegt).
GH_TOKENToken für das ausgewählte GitHub Konto.
GH_HOSTHost für das ausgewählte GitHub Konto.
COPILOT_GH_ACCOUNT_*Host- und kontospezifische Token für jedes angemeldete Konto, einschließlich des ausgewählten Kontos.

Für jede COPILOT_GH_ACCOUNT_* Variable schreibt die App den Host und die Anmeldung in Kleinbuchstaben, lässt ASCII-Buchstaben und Ziffern unverändert und ersetzt jedes andere UTF-8-Byte durch seinen Hexadezimalwert in Großbuchstaben, umgeben von Unterstrichen. Der Variablename verwendet das Format COPILOT_GH_ACCOUNT_<HOST>_<LOGIN>. Das Token für alice auf github.com lautet beispielsweise COPILOT_GH_ACCOUNT_github_2E_com_alice, und das Token für user auf ghe-example.com lautet COPILOT_GH_ACCOUNT_ghe_2D_example_2E_com_user.

Legacykompatibilität

Aus Gründen der Abwärtskompatibilität kann die App weiterhin die ältere objektbasierte scripts Form analysieren:

YAML
scripts:
  setup: bun install
  run: bun run dev
  archive: rm -rf node_modules

In diesem Legacy-Shape:

  • setup ist einem Skript mit dem Create-Trigger zugeordnet.
  • archive wird einem Skript mit dem Archiv-Trigger zugeordnet.
  • run verweist auf manuelle Skripteinträge und kann entweder eine einzelne Befehlszeichenfolge oder eine Liste von { name, command }-Objekten sein.