跳转到主要内容
本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版
difyctl 专为脚本化设计:数据写入 stdout,其余内容写入 stderr,-o 全局标志 用于选择输出格式,失败时以可预期的退出码退出。

输出格式

-o <format> 决定命令在 stdout 上如何呈现结果。每个命令支持五种格式中的一部分,具体见其 --help 输出及参考页上的标志表。
格式stdout 输出的内容
json以美观格式打印的 JSON 结果(2 个空格缩进)。Unicode 字符原样显示,空字段显式表示为 null,不会被省略。
yaml与上述相同的数据,以 YAML 形式呈现。
name仅输出资源 ID,每行一个。专为 Shell 循环设计,无需解析。
wide默认表格外加额外的列。例如 get app -o wide 会增加一列 WORKSPACE
text人类可读的文本。describe apprun app 等单资源命令的默认格式。
不带 -o 时,get app 等列表命令打印对齐的文本表格,其他命令打印文本。 JSON 结构是稳定的:get app 等列表命令打印一个 JSON 对象,各行放在数组中,同一命令运行两次返回相同的顶层结构。命令的确切 JSON 结构见其参考页。

输出通道

通道流向此处的内容
stdout数据:表格、JSON 与 YAML 文档、ID、运行输出、导出的 DSL
stderr其余一切:错误、提示、进度旋转图标、✓ form submitted 等状态行,以及 --think 流式输出的推理过程
编写脚本时值得依据的几条规则:
  • 失败时 stdout 保持为空。你无需从捕获的数据中过滤错误文本。
  • 成功时,getdescribe 命令的 stderr 为空;run appresume app 可能在此处打印提示。
  • 进度旋转图标仅在终端中出现,输出到 stderr,并在 -o json-o yaml-o name 下被抑制。
  • 管道输出不携带 ANSI 颜色代码。
  • 若管道的下游提前退出(difyctl get app -o name | head -2),difyctl0 退出,而非因管道中断而失败。

错误

错误输出到 stderr。在默认的人类可读格式下,一条错误是一行 code: message,外加可选的详情行:
not_logged_in: not logged in
hint: run 'difyctl auth login'
涉及 HTTP 请求时,后面会跟上 request: <METHOD> <url>http_status: <n> 行。 当服务器的响应携带 Dify 标准错误体时,首行显示服务器更具体的错误码(not_foundinvalid_param),而非 CLI 的传输层错误码。 随后是逐字段的校验详情,以缩进行的形式列出;当 difyctl 自身没有提示时,则显示服务器给出的提示。 -o json 下,同一条错误会变成 stderr 上的单行 JSON 对象:
{"error":{"code":"not_logged_in","message":"not logged in","hint":"run 'difyctl auth login'"}}
只有 -o json 会切换错误的呈现方式:-o yaml 失败时打印人类可读格式。
字段出现时机含义
code始终稳定的机器可读错误码。据此分支判断,切勿依据 message 文本。
message始终人类可读的描述。
hint已知时最快的修复方式,通常是可直接复制粘贴的命令。
http_statusHTTP 失败时失败请求的状态码。
methodurlHTTP 失败时失败的那个请求。
raw_response仅在 -v服务器原始响应体,bearer token 已脱敏。
serverHTTP 失败且响应为 Dify 标准错误体时服务器自身的错误:codemessagestatus,以及可选的 hintdetails

顶层 code 仍为 CLI 稳定的传输层错误码;server.code 携带服务器更细粒度的原因。
各错误码的含义及修复方法,详见 故障排查

退出码

退出码含义示例
0成功也包括 --helpversion,以及 因等待人工介入而暂停 的工作流运行。
1通用失败网络与服务器错误(network_connectionserver_5xxserver_4xx_other)、未知命令、未知标志,以及无法访问的操作系统钥匙串(keyring_unavailable)。
2用法错误无效的标志值(-o table--limit 0)、缺少参数、非 UUID 的应用或工作空间 ID、并非 JSON 对象的 --inputs
4认证错误not_logged_inauth_expiredtoken_expiredaccess_denied
6版本或兼容性错误unsupported_endpoint,或无法读取的配置文件(config_schema_unsupported)。
7触发限流HTTP 429(rate_limited),与 1 区分开,以便脚本退避后重试。
64兼容性检查未通过version --check-compat:服务器未确认兼容。
对严格脚本而言有一处细节:解析器层面的错误(未知命令、未知标志、标志缺少取值)以 1 退出并附带纯文本消息,而已知标志的无效取值则以 2 退出。

因等待人工介入而暂停的工作流运行退出 0

工作流应用可在运行中途暂停以收集人工输入。这一暂停是成功的结果,而非失败:run appresume app0 退出,并向 stdout 打印暂停负载。 要在脚本或 Agent 中检测暂停,使用 -o json 运行并检查 stdout 中是否有 "status": "paused",不要依据退出码分支判断。 负载结构及恢复协议,参见 Apps 参考页的 工作流暂停时
最后修改于 2026年6月25日