自动化:编程使用与 Actions
用 -p 在脚本、CI/CD 里以编程方式运行 Copilot CLI:提示技巧、最小权限、-s 与 --no-ask-user,GitHub Actions 里的 COPILOT_GITHUB_TOKEN 与示例。
你可以在一条命令里直接给 Copilot 一个提示,而不进入交互会话;这让你可以直接在终端里使用 Copilot,也可以在脚本、CI/CD 流水线和自动化工作流里以编程方式使用 CLI。两种做法:
-
用
copilot命令加-p或--prompt选项,后跟你的提示:copilot -p "Explain this file: ./complex.ts" -
把提示通过管道传给
copilot(如果你同时用-p提供了提示,管道输入会被忽略):echo "Explain this file: ./complex.ts" | copilot
编程使用的建议
- 提供精确的提示:清晰、无歧义的指令比含糊的请求产生更好的结果;你给的上下文越多(文件名、函数名、确切的改动),Copilot 需要猜测的就越少
- 小心引用提示:想避免 shell 解释特殊字符时,用单引号包住提示
- 始终给最小权限:用
--allow-tool=[TOOLS...]和--allow-url=[URLs...]命令行选项只授予完成任务所需的工具和访问权限,避免过于宽松的选项 - 捕获输出时用
-s(静默):抑制会话元数据,得到干净的文本 - 用
--no-ask-user:防止智能体尝试提出澄清问题 - 用
--model明确设置模型:在不同环境间保持一致的行为
CI/CD 集成
编程运行 Copilot 的常见用例是在 CI/CD 工作流步骤里包含 CLI 命令。GitHub Actions 工作流里的一个简单示例(用 COPILOT_GITHUB_TOKEN 提供认证令牌):
- name: Generate test coverage report
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
run: |
copilot -p "Run the test suite and produce a coverage summary" \
-s --allow-tool='shell(npm:*), write' --no-ask-user编程使用示例
# 生成提交信息
copilot -p 'Write a commit message in plain text for the staged changes' -s \
--allow-tool='shell(git:*)'
# 总结一个文件
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s官方「Automating with GitHub Actions」页给出在 Actions 里运行 Copilot CLI 的更多模式,配置 CI 令牌(Fine-grained PAT,需要 Copilot Requests 权限)以及相关安全注意事项,以官方原文为准。