Appearance
Copilot CLI 的 -p 参数让你在不打开交互界面的情况下直接执行 AI 任务,适合嵌入 Shell 脚本或批量自动化。一行命令、一个脚本,就能把 AI 能力集成到任何工作流中。
GitHub Copilot CLI 脚本化快速入门:在脚本中调用 AI
最简单的用法
直接在终端跑一个 AI 任务,不打开交互界面:
bash
copilot -p "总结这个文件的功能:./README.md"-p 参数让 Copilot CLI 跳过交互界面,直接执行任务并输出结果。
在 Shell 脚本中使用
示例:扫描大文件并用 AI 生成描述报告
bash
#!/bin/bash
# 找出所有超过 10MB 的文件,用 Copilot CLI 生成描述,汇总发送邮件
EMAIL_TO="team@example.com"
SUBJECT="大文件清单"
BODY=""
while IFS= read -r -d '' file; do
size=$(du -h "$file" | cut -f1)
# 调用 Copilot CLI 对每个文件生成简短描述
description=$(copilot -p "用一句话描述这个文件的用途:$file" -s 2>/dev/null)
BODY+="文件:$file"$'\n'"大小:$size"$'\n'"描述:$description"$'\n\n'
done < <(find . -type f -size +10M -print0)
if [ -z "$BODY" ]; then
echo "未找到超过 10MB 的文件。"
exit 0
fi
echo -e "To: $EMAIL_TO\nSubject: $SUBJECT\n\n$BODY" | sendmail "$EMAIL_TO"
echo "邮件已发送到 $EMAIL_TO"运行方式:
bash
chmod +x scan_large_files.sh
./scan_large_files.sh常用参数组合
bash
# 基础:无交互执行
copilot -p "你的任务描述"
# 静默模式(只输出最终结果,不显示过程)
copilot -p "你的任务描述" -s
# 预授权工具(避免运行中断等待确认)
copilot -p "分析 git 历史" --allow-tool='shell(git:*)' --no-ask-user
# 允许读写文件
copilot -p "生成报告到 report.md" --allow-tool=read --allow-tool=write --no-ask-user捕获输出
Copilot CLI 的输出写到标准输出,可以用常规 Shell 方式捕获:
bash
# 赋值给变量
result=$(copilot -p "分析这段代码的复杂度" -s)
echo "分析结果:$result"
# 写入文件
copilot -p "生成项目摘要" -s > project-summary.md
# 追加到文件
copilot -p "今日变更摘要" -s >> changelog.md定时任务(cron)
bash
# 每天早上 9 点自动生成昨日提交摘要
0 9 * * * cd /your/project && copilot -p "生成昨天的 git 提交摘要" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user > /tmp/daily-summary.md常见问题
Q: 脚本运行时 Copilot CLI 提示需要登录怎么办?
A: 脚本环境中使用 COPILOT_GITHUB_TOKEN 环境变量认证:
bash
export COPILOT_GITHUB_TOKEN="your-token-here"
copilot -p "你的任务"在 CI/CD 环境中把 token 存到 secrets 而不是明文写在脚本里。
Q: -s 参数是什么意思?
A: -s 是静默模式(silent),只输出最终结果,过滤掉 Copilot 的过程输出(思考步骤、工具调用日志等)。在脚本中捕获输出时推荐加上 -s,否则变量里会混入大量中间信息。
Q: 如何控制 Copilot 最多消耗多少轮次?
A: 用 --max-autopilot-continues N 限制最大自动继续轮次,防止单个任务消耗过多 AI Credits:
bash
copilot -p "修复所有 lint 错误" --autopilot --yolo --max-autopilot-continues 5 --no-ask-user