跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

从脚本运行动态工作流

向已定义工作流传入 JSON 参数,解析结果并检查专用退出码。

copilot workflow run WORKFLOW-NAME 用于直接执行已经定义的 dynamic workflow,等待它完成或停止。该入口与自由提示 -p 不同:传入的是工作流接受的参数,并产生专门的运行状态记录。

参数输入

copilot workflow run WORKFLOW-NAME \
  --args @workflow-input.json \
  --silent --output-format json

--args 接受内联 JSON 或 @ 前缀的 JSON 文件路径,不从 stdin 读取参数。应先配置认证和所需工具权限,因为此命令不会显示权限批准提示。

支持 --model、--allow-tool、--allow-url、--add-dir 等共享选项;不支持 -p、-i、--agent、--fleet、--autopilot、--resume、--continue 等提示和会话模式选项。

项目扩展只从可信目录加载,或通过 GITHUB_COPILOT_PROMPT_MODE_EXTENSIONS=true 显式为本次调用允许。该变量允许加载项目代码,不授予工具权限,只应对可信项目启用。

JSONL 结果

--output-format json 在 stdout 输出 JSONL。--silent 可抑制过程事件;结束或停止后的最终记录使用 type: workflow.result。

字段含义
data.name工作流名称
data.run.runId运行 ID
data.run.statuscompleted、halted、paused、cancelled 或 error
data.run.result返回值;使用 result-file 时省略
data.run.pauseInfo、reason、error、failure可用时说明停止原因
data.resultFile只有成功写入结果文件后才存在

启动前错误或中断可能没有最终 JSON 记录。即使 silent,未完成运行的错误和诊断仍写到 stderr。

结果文件

--result-file PATH 只把返回值作为 JSON 写入文件。失败、暂停或中断不会覆盖旧结果文件;成功但无返回值的运行也不会创建结果文件。

因此不能仅根据“文件存在”判断本次成功。最终状态是 completed 也不保证结果文件保存成功,需要同时检查退出码。

专用退出码

退出码含义
0工作流成功完成,若需要写结果也已成功;无返回值时可无文件
1未完成、暂停、限额、取消、失败,或一般命令 / 结果保存错误
2找不到工作流,或参数读取、JSON 解析、输入校验失败
130SIGINT / SIGTERM 中断

这些是 workflow run 的约定,不能直接扩展为普通 Copilot CLI 所有命令的退出码表。

交互式创建、共享、监控和恢复见 Dynamic workflows。CLI 当前需启用实验功能;会话扩展需先放入个人/项目扩展或插件,才能由新终端调用发现。--result-file 的相对路径以启动命令的目录为基准,文件只含返回值,不含进度和运行元数据。