Skip to content
FunCoding

Search

Search docs, Skills and MCP

非交互执行与输出

使用提示、附件、工具过滤和 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=jsonJSONL,每行一个 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 命令通用。