本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。每项应用操作对应一条命令,且都接受 全局标志。
difyctl get app列出应用describe app显示单个应用的详情和输入run app调用单个应用resume app继续一个 因人工介入而暂停 的工作流export studio-app/import studio-app将应用导出/导入为 DSL 文件
列出应用
参数
[app-id]:可选。要显示的单个应用的 ID。省略则列出工作空间中的所有应用。
标志
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--name <substring> | string | 无 | 仅保留名称包含该文本的应用。 |
--mode <mode> | string | 无 | 按应用类型筛选,以其 API mode 命名:chat(聊天助手)、advanced-chat(对话流)、agent-chat(Agent)、workflow(工作流)、completion(文本生成应用)。 |
--page <n> | integer | 1 | 页码。 |
--limit <n> | integer | 20 | 每页数量,1 到 200。该标志优先,其次是 DIFY_LIMIT。 |
-o <format> | string | 无 | 输出格式:json、yaml、name 或 wide。省略该标志则输出默认表格。 |
示例
列出工作空间中的应用:输出
| 格式 | stdout 内容 |
|---|---|
| 默认 | 一个对齐的表格。MODE 列是每个应用的 API mode 名称(其与应用类型的对应关系参见 --mode)。 |
-o wide | 表格外加一列 WORKSPACE。 |
-o json、-o yaml | 应用的 data 数组,以及分页字段 page(当前页)、limit(每页数量)、total(匹配的应用数)和 has_more(是否还有更多页)。 |
-o name | 应用 ID,每行一个。 |
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功 |
1 | 网络或服务器错误 |
2 | 用法错误,例如 --limit 超出 1 到 200 的范围 |
4 | 认证失败 |
7 | 触发限流(HTTP 429) |
查看应用
describe app 正是用来回答它们的:这是什么类型的应用、它的 API 是否已启用、它需要哪些输入。
参数
<app-id>:必填。要查看的应用的 ID。
标志
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--refresh | boolean | false | 绕过本地的应用信息缓存,获取最新详情。在应用重新发布后使用。 |
-o <format> | string | text | 输出格式:json、yaml 或 text。 |
示例
运行前先查看应用:--inputs:
输出
| 格式 | stdout 内容 |
|---|---|
默认(text) | 一个对齐的字段块,随后是应用的参数(含用户输入表单)。 |
-o json、-o yaml | 三个顶层键:info、parameters 和 input_schema(详见下文)。 |
Description: 行,应用为 agentic 时会出现 Agent: true 行。
在 -o json 下,这三个键分别是:
info:上方展示的元数据字段,从Name到Service APIparameters:上方展示的参数块input_schema:应用输入的规范化列表,也就是jq '.input_schema'示例所读取的字段
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功 |
1 | 网络或服务器错误,包括应用未找到 |
2 | 用法错误,包括 <app-id> 不是 UUID |
4 | 认证失败 |
7 | 触发限流(HTTP 429) |
运行应用
run app 是一条适用于所有应用类型的命令。CLI 会读取应用的类型,并分发到对应的端点。不同之处只在于输入的传递方式和响应的形态:
- 聊天助手、对话流、Agent:接收一条位置参数形式的消息,将回复打印到 stdout,并将一条会话提示打印到 stderr。
- 文本生成应用:接收一条位置参数形式的消息,将续写结果打印到 stdout。没有会话状态,也没有提示。
- 工作流:通过
--inputs接收一个 JSON 对象,并将其输出打印到 stdout。输出为单个字符串的工作流会原样打印该字符串,其余情况则打印为紧凑 JSON。
参数
<app-id>:必填。要运行的应用的 ID,来自get app。[message]:用户消息,适用于聊天助手、对话流、Agent 和文本生成应用。工作流应用会拒绝位置参数形式的消息,因此请用--inputs传入其输入。
标志
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--inputs <json> | string | 无 | 以单个 JSON 对象形式提供的输入变量,例如 --inputs '{"topic":"Q3"}'。工作流应用必填。与 --inputs-file 互斥。 |
--inputs-file <path> | string | 无 | 改为从 JSON 文件读取输入对象。 |
--file <key=value> | string,可重复 | 无 | 具名文件输入。key=@path 上传本地文件。key=https://… 传入远程 URL 而不上传。key 即输入变量名。 |
--conversation <id> | string | 无 | 继续一个已有会话。该 ID 来自上一次运行的 stderr 提示或 JSON 响应。 |
--workflow-id <id> | string | 无 | 将本次运行固定到某个已发布的工作流版本。仅适用于工作流和对话流应用。 |
--stream | boolean | false | 在生成过程中实时打印输出,而非在结束时一次性打印。 |
--think | boolean | false | 当模型暴露其思考过程时,将其打印到 stderr。不加该标志时,<think> 块会被静默剥离。 |
--retry-on-limit | boolean | false | 遇到 429 限流时,等待并重试本次运行,而非以退出码 7 失败。默认关闭,因为运行不具备幂等性。 |
-o <format> | string | text | 输出格式:json、yaml 或 text。 |
示例
向聊天助手、对话流、Agent 或文本生成应用发送一条消息:输出
| 格式 | stdout 内容 |
|---|---|
默认(text) | 回复(聊天助手、对话流、Agent、文本生成应用)或工作流的输出,以纯文本形式呈现。 |
-o json、-o yaml | 完整的服务器载荷,对话类应用还包含 answer 和 conversation_id;当模型产生推理内容时,还会在 metadata.reasoning 下按节点给出。 |
--stream 后,输出会随服务器的生成而逐步打印。如果应用刚刚重新发布、运行以 HTTP 422 失败,CLI 会清除其应用元数据缓存,并提示再次运行该命令。
错误输出到 stderr。在 -o json 下,它们以带有稳定 code 字段的结构化 JSON 对象形式返回。错误的结构参见 输出格式与退出码。
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功,包括 因人工介入而暂停 的工作流 |
1 | 网络或服务器错误,包括应用未找到 |
2 | 用法错误:--inputs JSON 无效,或向工作流应用传入了位置参数形式的消息 |
4 | 认证失败 |
7 | 触发限流(HTTP 429) |
工作流暂停时
工作流应用可包含人工介入步骤。当运行到达这一步时,它会暂停而非结束:命令 退出码为 0(暂停不算失败),将暂停信息打印到 stdout,并将一条可直接运行的恢复命令打印到 stderr:-o json 后,stdout 改为将暂停信息作为一个 JSON 对象输出:
-o json 运行工作流,并检查 stdout 中是否有 "status": "paused"。三个字段决定如何恢复:form_token、workflow_run_id,以及(当表单提供不止一个操作时)操作的 id。表单会在 expiration_time(Unix 纪元秒)过期。
当工作流通过电子邮件或其他外部渠道下发其表单时,form_token 为 null,该运行无法从 CLI 恢复。
恢复已暂停的工作流
resume app 提交一个已暂停工作流正在等待的表单,随后附加到该运行并打印其输出,方式与 run app 完全一致。
参数
<app-id>:必填。来自暂停载荷的app_id。<form-token>:必填。来自暂停载荷的form_token。Token 仅可使用一次,因此用已消费的 token 恢复会返回错误。
标志
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--workflow-run-id <id> | string | 必填 | 来自暂停载荷的 workflow_run_id。 |
--action <id> | string | 自动选择 | 要执行哪个表单操作,由暂停载荷 actions 中的 id 指定。表单恰好只有一个操作时可选,有多个操作时必填。 |
--inputs <json> | string | 无 | 以单个 JSON 对象形式提供的表单输入值,以每个输入的 output_variable_name 为键。与 --inputs-file 互斥。 |
--inputs-file <path> | string | 无 | 改为从 JSON 文件读取表单值。 |
--with-history | boolean | false | 在附加到实时流之前,回放已执行节点的输出。 |
--stream | boolean | false | 在生成过程中实时打印输出,而非在结束时一次性打印。 |
--think | boolean | false | 当模型暴露其思考过程时,将其打印到 stderr。不加该标志时,<think> 块会被静默剥离。 |
-o <format> | string | text | 输出格式:json、yaml 或 text。 |
示例
批准一个单操作表单,并提供其输入值:输出
| 格式 | stdout 内容 |
|---|---|
默认(text) | 运行完成时工作流的输出。stderr 确认提交和完成。 |
-o json、-o yaml | 运行结果作为单个文档,与 run app 一样(若再次暂停,则为暂停载荷)。 |
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功,包括运行在后续节点再次暂停 |
1 | 错误,包括 token 已被消费,或在有多个操作的表单上省略了 --action |
2 | 用法错误 |
4 | 认证失败 |
7 | 触发限流(HTTP 429) |
导出应用
export studio-app 将应用的完整定义写为一个 DSL YAML 文档,用于版本管理、备份,或 导入 到别处。
对于工作流和对话流应用,导出返回的是当前草稿,而非 run app 所执行的已发布版本。改用 --workflow-id 可导出指定的已发布版本。聊天助手、Agent 和文本生成应用导出的是已发布版本。
参数
<app-id>:必填。要导出的应用的 ID,来自get app。
标志
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
-o, --output <path> | string | 无 | 将 DSL 写入该文件,而非 stdout。在本命令中,-o 是输出文件路径,而非输出格式选择器。 |
--include-secret | boolean | false | 在导出的 DSL 中包含加密的密文值。 |
--workflow-id <id> | string | 无 | 按 ID 导出指定的已发布工作流版本,而非默认的草稿。仅适用于工作流和对话流应用。 |
示例
将应用的 DSL 打印到 stdout:输出
DSL YAML 文档打印到 stdout:一个kind: app 头部、一个 version 字段,以及完整的应用定义。加上 --output 后,相同内容会写入文件,并由 stderr 确认:
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功 |
1 | 网络或服务器错误,包括应用未找到 |
2 | 用法错误,包括缺少 <app-id> |
4 | 认证失败 |
7 | 触发限流(HTTP 429) |
导入应用
import studio-app 从一个 DSL YAML 文档创建应用,或用 --app-id 覆盖一个已有应用。对于工作流和对话流应用,它会将定义写入应用的草稿。run app 使用的是已发布版本,因此导入后请在 Dify 中发布应用,更改才会生效。
标志
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
-f, --from-file <path> | string | 无 | 从本地文件导入 DSL。--from-file 和 --from-url 必须且只能提供其一。 |
--from-url <url> | string | 无 | 从 HTTP(S) URL 导入 DSL。 |
--name <name> | string | 取自 DSL | 覆盖应用名称。 |
--description <text> | string | 取自 DSL | 覆盖应用描述。 |
--app-id <id> | string | 无 | 覆盖一个已有应用,而非创建新应用。仅适用于工作流和对话流应用。 |
--icon-type <type> | string | 取自 DSL | 覆盖图标类型。 |
--icon <icon> | string | 取自 DSL | 覆盖图标。 |
--icon-background <color> | string | 取自 DSL | 覆盖图标背景色。 |
示例
从本地 DSL 文件导入应用:输出
所有状态行都输出到 stderr;stdout 保持为空。成功时,stderr 报告新应用的 ID:Missing plugin dependencies 下列出它们。使用该应用前请先安装它们。
退出码
| 退出码 | 含义 |
|---|---|
0 | 成功,包括带警告的导入 |
1 | 错误,包括缺少或冲突的 --from-file/--from-url,或导入失败 |
2 | 用法错误,包括 --from-file 路径不存在 |
4 | 认证失败 |
7 | 触发限流(HTTP 429) |