Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

自动化:编程使用与 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 权限)以及相关安全注意事项,以官方原文为准。