Einführung
Du kannst einen Prompt direkt an Copilot CLI in einem einzigen Befehl übergeben, ohne eine interaktive Sitzung zu starten. Dies bietet die Möglichkeit, Copilot direkt vom Terminal aus zu verwenden, aber auch das CLI programmgesteuert in Skripten, CI/CD Pipelines und Automatisierungsworkflows einzusetzen.
Um Copilot CLI programmgesteuert zu verwenden, kannst du eine der folgenden Möglichkeiten nutzen.
-
Verwenden Sie den
copilotBefehl mit der-poder--promptBefehlszeilenoption, gefolgt von Ihrer Eingabeaufforderung.Shell copilot -p "Explain this file: ./complex.ts"
copilot -p "Explain this file: ./complex.ts" -
Leiten Sie eine Eingabeaufforderung an den
copilot-Befehl weiter:Shell echo "Explain this file: ./complex.ts" | copilot
echo "Explain this file: ./complex.ts" | copilotHinweis
Piped Input wird ignoriert, wenn du auch einen Prompt mit der Option
-poder--promptangibst.
Tipps zur programmgesteuerten Verwendung von Copilot CLI
-
**Geben Sie präzise Eingabeaufforderungen an –** klare, eindeutige Anweisungen liefern bessere Ergebnisse als vage Anfragen. Je mehr Kontext du angibst – Dateinamen, Funktionsnamen, die genaue Änderung – umso weniger muss Copilot raten. -
**Schreibe Prompts sorgfältig in Anführungszeichen** – verwende einfache Anführungszeichen um deinen Prompt herum, wenn du die Interpretation von Sonderzeichen durch die Shell vermeiden willst. -
**Gewähre immer nur minimale Berechtigungen** – verwende die Befehlszeilenoptionen `--allow-tool=[TOOLS...]` und `--allow-url=[URLs...]`, um Copilot die Berechtigung zu erteilen, nur die Tools und Zugriffe zu verwenden, die zum Abschließen der Aufgabe notwendig sind. Vermeiden Sie die Verwendung von allzu großzügigen Optionen (z. B. `--allow-all`), es sei denn, Sie arbeiten in einer Sandbox-Umgebung. - Beim Erfassen der Ausgabe wird
-s(still) verwendet. Dadurch werden Sitzungsmetadaten unterdrückt, sodass Sie sauberen Text erhalten. -
**Verwenden `--no-ask-user`** um zu verhindern, dass der Agent versucht, Klarstellungsfragen zu stellen. -
**Legen Sie ein Modell explizit** mit `--model` fest, um ein konsistentes Verhalten über alle Umgebungen hinweg zu gewährleisten.
Unter GitHub Copilot CLI Programmreferenz finden Sie Optionen, die bei der programmatisch betriebenen Ausführung von Copilot CLI besonders nützlich sind.
CI/CD-Integration
Ein häufiger Anwendungsfall für das programmgesteuerte Ausführen von Copilot CLI ist die Einbindung eines CLI-Befehls in einen CI/CD Workflow-Schritt.
Dieser Auszug aus einem GitHub Actions Workflow zeigt ein einfaches Beispiel für das Ausführen eines Copilot CLI -Befehls.
# Workflow step using Copilot CLI
- name: Generate test coverage report
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
run: |
copilot -p "Run the test suite and produce a coverage summary" \
-s --allow-tool='shell(npm:*), write' --no-ask-user
Weitere Informationen findest du unter Automatisieren von Aufgaben mit Copilot CLI und GitHub Actions.
Beispiele für die programmgesteuerte Verwendung
Generieren einer Commit-Nachricht
copilot -p 'Write a commit message in plain text for the staged changes' -s \ --allow-tool='shell(git:*)'
copilot -p 'Write a commit message in plain text for the staged changes' -s \
--allow-tool='shell(git:*)'
Zusammenfassen einer Datei
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s
Schreiben von Tests für ein Modul
copilot -p 'Write unit tests for src/utils/validators.ts' \ --allow-tool='write, shell(npm:*), shell(npx:*)'
copilot -p 'Write unit tests for src/utils/validators.ts' \
--allow-tool='write, shell(npm:*), shell(npx:*)'
Beheben von Lintfehlern
copilot -p 'Fix all ESLint errors in this project' \ --allow-tool='write, shell(npm:*), shell(npx:*), shell(git:*)'
copilot -p 'Fix all ESLint errors in this project' \
--allow-tool='write, shell(npm:*), shell(npx:*), shell(git:*)'
Erklärung eines diff
copilot -p 'Explain the changes in the latest commit on this branch and flag any potential issues' -s
copilot -p 'Explain the changes in the latest commit on this branch and flag any potential issues' -s
Code-Review eines Branches
Verwende den Schrägstrichbefehl /review, damit der integrierte code-review-Agent die Code-Änderungen in der aktuellen Verzweigung überprüft.
copilot -p '/review the changes on this branch compared to main. Focus on bugs and security issues.' \ -s --allow-tool='shell(git:*)'
copilot -p '/review the changes on this branch compared to main. Focus on bugs and security issues.' \
-s --allow-tool='shell(git:*)'
Dokumentation generieren
copilot -p 'Generate JSDoc comments for all exported functions in src/api/' \ --allow-tool=write
copilot -p 'Generate JSDoc comments for all exported functions in src/api/' \
--allow-tool=write
Exportieren einer Sitzung
Speichern Sie das vollständige Sitzungstranskript in einer Markdown-Datei im lokalen Dateisystem.
copilot -p "Audit this project's dependencies for vulnerabilities" \ --allow-tool='shell(npm:*), shell(npx:*)' \ --share='./audit-report.md'
copilot -p "Audit this project's dependencies for vulnerabilities" \
--allow-tool='shell(npm:*), shell(npx:*)' \
--share='./audit-report.md'
Speichere das Transkript der Sitzung in einer Gist auf GitHub.com, um es für andere freizugeben.
copilot -p 'Summarize the architecture of this project' --share-gist
copilot -p 'Summarize the architecture of this project' --share-gist
Hinweis
Gists sind nicht für Enterprise Managed Users verfügbar, oder wenn du GitHub Enterprise Cloud mit Datenresidenz (*.ghe.com) verwendest.
Shell-Skript-Muster
Erfasse die Ausgabe von Copilot in einer Variablen
result=$(copilot -p 'What version of Node.js does this project require? \ Give the number only. No other text.' -s) echo "Required Node version: $result"
result=$(copilot -p 'What version of Node.js does this project require? \
Give the number only. No other text.' -s)
echo "Required Node version: $result"
Verwendung in einer Bedingung
if copilot -p 'Does this project have any TypeScript errors? Reply only YES or NO.' -s \ | grep -qi "no"; then echo "No type errors found." else echo "Type errors detected." fi
if copilot -p 'Does this project have any TypeScript errors? Reply only YES or NO.' -s \
| grep -qi "no"; then
echo "No type errors found."
else
echo "Type errors detected."
fi
Verarbeiten mehrerer Dateien
for file in src/api/*.ts; do echo "--- Reviewing $file ---" | tee -a review-results.md copilot -p "Review $file for error handling issues" -s --allow-all-tools | tee -a review-results.md done
for file in src/api/*.ts; do
echo "--- Reviewing $file ---" | tee -a review-results.md
copilot -p "Review $file for error handling issues" -s --allow-all-tools | tee -a review-results.md
done
Weiterführende Lektüre
-
[AUTOTITLE](/copilot/how-tos/copilot-cli) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-programmatic-reference) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options)