非交互执行与输出
使用提示、附件、工具过滤和 JSONL 输出构建可控的脚本步骤。
This page has not been translated into English yet. The original Chinese version is shown below.
非交互模式使用 copilot -p PROMPT 执行任务并退出,也支持把提示通过标准输入传入。它不能显示交互式批准对话框,未预先允许的操作会自动拒绝。因此,认证成功与任务拥有必要权限需要分别检查。
输入与行为
copilot -p 'Explain this file: ./complex.ts' -s --no-ask-user--no-ask-user 阻止提出澄清问题,不授予工具权限。--attachment=PATH 可重复添加图片或原生文档附件,仅适用于非交互模式;模型仍需支持相应输入。
同时给 -p 和 stdin 时,stdin 提示被忽略。向程序传动态文本时应正确引用,不把用户内容当作 Shell 代码拼接。
常用选项
| 选项 | 用途 |
|---|---|
-s | 只保留智能体回复,省略统计与装饰 |
--output-format=json | JSONL,每行一个 JSON 对象;默认格式是 text |
--model=MODEL | 指定模型 |
--agent=AGENT | 选择已有 custom agent |
--add-dir=DIRECTORY | 增加可访问目录,可重复 |
--allow-tool=TOOL | 预先批准工具类别或具体模式 |
--available-tools=TOOL | 限制模型能选择的工具集合 |
--excluded-tools=TOOL | 从可见集合排除工具 |
--allow-url=URL、--deny-url=URL | 允许或拒绝 URL,拒绝优先 |
多个工具或 URL 使用加引号的逗号分隔列表。--available-tools 与 --excluded-tools 同时出现时,按可用工具允许列表处理;批准权限不能恢复已从可用集合移除的工具。
权限模式的细节
--allow-tool='shell(git:*)' 包括所有 Git 子命令,不只是读取;需要更小范围时使用具体命令。write(README.md) 可匹配以 /README.md 结尾的路径,不保证只限定根目录同名文件。
官方示例中的 URL 模式支持 HTTPS 主机、带协议端口的地址、主机前缀通配子域和路径末尾通配。例如 url(https://*.github.com) 与 url(https://docs.github.com/copilot/*)。不要将这种有限通配语法推广到任意工具参数。
模型选择优先级
使用 custom agent 时,其定义中的模型优先;之后依次是 --model、COPILOT_MODEL、用户配置 model、CLI 默认模型。仅设置启动参数不保证覆盖 custom agent 中固定的模型。
用 /model 查看当前可用模型 ID,选择会保存到个人设置。自动化需要固定 CLI 版本时,可设置 COPILOT_AUTO_UPDATE=false 关闭自动更新;安装版本也应按工作流要求固定。
日志与导出
--secret-env-vars 接受需要在输出中脱敏的环境变量名,多个用逗号分隔。官方默认脱敏 GITHUB_TOKEN 和 COPILOT_GITHUB_TOKEN;其他秘密需要明确配置,且不应把脱敏当作允许任意输出敏感数据的保证。
--share=PATH 导出完整会话 Markdown,默认路径为 ./copilot-session-<ID>.md;--share-gist 发布 secret gist。会话记录可能包含工具输出和敏感上下文,导出不是普通最终回答的同义词。EMU 和数据驻留实例不支持 gist。
结果检查
JSON 格式是逐行事件流,不是一个完整 JSON 文档。脚本应按实际输出协议解析,保留错误输出,并验证任务应生成的文件或测试结果。动态工作流的专门结果记录与退出码见workflow run,不要把那些退出码推定为所有 -p 命令通用。