跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

非交互执行与输出

使用提示、附件、工具过滤和 JSONL 输出构建可控的脚本步骤。

非交互模式使用 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 命令通用。