Files
Riskey 17ce877aa5 Release/1.16.0 (#848)
* docs: add New Agent user guide and node tab

* docs: add ENABLE_AGENT_V2 to environment variable reference

* translate: add zh and ja New Agent documentation

* docs: add New Agent navigation groups

* feat: add limits and quotas rule to style guide

* docs: add skill and file upload limits to New Agent guide

* fix: redirect new-agent doc paths from UI links to self-host pages

* docs: add task examples and refine New Agent pages

* docs: update New Agent data security notice per legal

* docs: extend security notice coverage and build note explanation

Surface the legal data security Warning on the Build page and New Agent node tab (en/zh/ja), and explain the build note as the agent's memory across build chats with an example.

* docs: refine New Agent guidance and cross-link from classic Agent

Model note gains the older-model sandbox symptom; node opener differentiates from the classic node; Build page restructured (review bullets, Info callout, section links) with zh/ja synced; classic Agent app page (self-host) gains a New Agent Tip.

* docs: document memory, permissions, and sandbox facts for New Agent

Verified additions: per-conversation memory bounded by the model's context window; Editor-tier permissions for creating and managing agents; unrestricted sandbox network access; version restore excludes the sandbox environment; build note deletion and regeneration behavior.

* docs: rename Roster to Agent page across New Agent docs

The UI removed the Roster concept; the nav entry is now Agent. Updated pages, node tab titles, image alt text, and the ENABLE_AGENT_V2 reference entry in en/zh/ja. Agent Console button labels are unchanged in the UI and stay verbatim.

* docs: add files vs knowledge guidance and restructure page openers

Decision aid for uploading as Files vs connecting a knowledge base (read-in-full vs search), knowledge opener gains relevance and workspace-asset framing, overview and build intros restructured.

* docs: update docker compose container list and add tool prerequisites (#843)

* docs: update docker compose container list and add tool prerequisites

- Add api_websocket and init_permissions to the started-container list per the current compose defaults
- Remove outdated sample outputs for docker compose up and docker compose ps
- Add a callout noting the clone command requires git, curl, and jq, with recovery guidance on command not found errors
- Mirror all changes to zh and ja

* docs: note expected exited status for init_permissions container

* fix: align tools page tab titles across languages and fix anchors

Shorten the Swagger and Workflow tab titles ("Swagger API as Tool" ->
"Swagger API", "Workflow as Tool" -> "Workflow") in en, zh, and ja so all
three languages generate the same tab anchors. Update the inbound links in
output.mdx that pointed at the old Workflow-tab anchor (#workflow-as-tool,
#工作流作为工具, #ワークフローをツールとして利用) to #workflow.

* feat: consolidate and restructure the API reference (Phase 1) (#846)

* docs: correct HITL API integration flow and sync translations

- Fix the claim that the resume endpoint differs per app type (same
  endpoint; only the entry endpoint differs)
- Tie workflow_run_id guidance to the human_input_required event
  (chatflow message chunks don't carry it)
- Require the same user when resuming the event stream (mismatch
  returns 404); add include_state_snapshot and continue_on_pause
  guidance
- Note at the capture step that a null form_token means Email delivery
- Soften the upload-time validation claim to file size limits
- Split long paragraphs; align zh endpoint name with the reference page

* fix: correct API references against verified backend behavior

Audit of the Service API specs against dify hotfix/1.15.0-fix.1, with
every change code-verified and the serious items adversarially
confirmed. Applies to en/zh/ja.

- Add curl samples for GET endpoints with required query params
  (Mintlify omits query params from generated snippets)
- Document 401 once in every spec's auth scheme description
- Correct wrong facts: workflow run detail returns inputs as a JSON
  string; DELETE /conversations requires a JSON body; audio-to-text
  accepts audio/{mp3,m4a,wav,amr,mpga} by MIME type; workflow log
  created_by_account filters by email; triggered_from values are
  app-run/webhook/schedule/plugin; stop endpoints' user semantics
  differ per app type
- Remove unreachable docs: phantom text_replace SSE event, annotation
  403, file preview endpoint in the workflow spec, invented
  score_threshold bounds
- Make upload user optional (DEFAULT-USER fallback), fix upload
  response example, add missing invalid_param error
- Declare text_to_speech.autoPlay in parameters responses (prose
  values, no response-field enums)

* fix: complete API reference audit for knowledge and completion specs

* feat: add API spec consolidation pipeline

Phase-1 of the API docs consolidation: tooling that merges the five per-app-type Service API specs into one openapi_service.json per language, with every divergence resolved explicitly in resolutions.json and rendering-preserving namespacing for mode-scoped schema families. Includes the audit lint and parity checks (lint taught the new language-prefixed href scheme), hand-merged mode-aware SSE documentation for POST /chat-messages in en/zh/ja, and the New Agent (Beta) virtual nav group with code-verified mode notes.

* feat: consolidate API reference into one spec per language

Emit {en,zh,ja}/api-reference/openapi_service.json (82 ops, 130 components) from the audit-fixed per-app-type specs; wire docs.json to them with explicit per-app-type endpoint lists, x-mint.href URLs (/{lang}/api-reference/{tag}/{summary} with shared English slugs for in-place language switching), 265 redirects covering the legacy en and CJK URLs, per-app-type overview pages including New Agent (Beta), and rewritten legacy API links in 21 MDX bodies. The old five specs per language stay as pipeline input; they are no longer rendered.

* fix: remove dead conversation_completed error from chat specs

ConversationCompletedError is never raised anywhere at the verified 1.15.0 ref (7a4252b3de): controllers catch it, but no service code raises it, so the documented 400 conversation_completed can never fire. Remove the bullet and example from the chat and chatflow /chat-messages docs in en/zh/ja. Found and adversarially confirmed during the New Agent (PR #836) verification; filed on the upstream bug list.

* feat: add membership matrix and restructure nav config

* feat: rename resource tags and update all references

* feat: stamp per-operation availability lines

* feat: wire three-group API navigation

* feat: add app-type page coverage lint

* docs: rewrite chatflow overview as app-type API guide

* docs: polish chatflow overview zh and ja wording

* docs: rewrite workflow overview as app-type API guide

* docs: align workflow overview details across languages

* docs: expand new agent overview into app-type API guide

* docs: use task-oriented heading on new agent overview

* docs: rewrite chatbot and agent overview as app-type API guide

* docs: rewrite text generator overview as app-type API guide

* docs: match end user link text to merged spec summary

* docs: rewrite knowledge overview as app-type API guide

* docs: move knowledge api guide into api reference

* docs: localize ui labels on knowledge overview

* docs: refresh pipeline readme for restructure modes

* docs: name app-type pages in the guides sidebar

* feat: rename zh completion messages tag to match resource framing

* docs: prototype endpoints-first layout on chatflow overview

* docs: correct detail accuracy on chatflow overview

* docs: move human input flow guide into api reference

Move the shared HITL API integration walkthrough from its six per-product
copies into {en,zh,ja}/api-reference/guides/human-input-flow as the first
task guide in the API docs. Guides gains an App Types subgroup (expanded
by default) with the flow guide after it; six redirects cover the old
paths; the Human Input node docs and the chatflow overview link to the
new home.

* fix: update spec links to the moved human input guide

* fix: let spec lint accept mdx guide pages under api-reference

* docs: align chatflow zh and ja overviews to endpoints-first layout

* docs: polish chatflow zh and ja mode terms and hitl wording

* docs: align workflow overviews to endpoints-first layout

* docs: document form expiry path in human input flow guide

* docs: align new agent overviews to endpoints-first layout

* docs: align chatbot and agent overviews to endpoints-first layout

* docs: align text generator overviews to endpoints-first layout

* docs: align knowledge overviews to endpoints-first layout

* docs: correct built-in metadata examples and agent heading

* docs: flatten app-type pages directly under guides

* docs: make guide pages self-contained and trim reference detail

* docs: add get started guide and retire developing-with-apis

* docs: update new agent api behavior for latest main

New Agent behavior re-verified against dify origin/main (f3ba2846):
agent_thought events now stream through the Service API carrying the
model's reasoning steps and tool calls; a new agent_not_published 400
fires on Send Chat Message and Get App Parameters; the files claim is
softened to contents-not-processed (raw references now reach the prompt;
runtime confirmation pending). Streaming-only, message_end metadata, and
the endpoint surface are unchanged.

* docs: audit fixes for get started and human input flow guides

* docs: fix em dash spacing and ja sentence length in get started

* docs: move message_end note to the send endpoint line

* docs: update writing guides and API skill for app-type naming

- Glossary and zh/ja translation guides: Workflow and Chatflow app types stay English (Workflow 应用 / Chatflow アプリ); lowercase workflow localizes to 工作流 / ワークフロー.
- formatting-guide: API reference links use the language prefix with English slugs.
- dify-docs-api-reference skill: Spec Structure documents source specs merged into openapi_service.json by the pipeline.

* feat: add operation sidebar titles and simplify API redirects

- merge_specs stamps x-mint.metadata.sidebarTitle per operation so translated summaries show in the sidebar.
- Redirects reduced to a catch-all to the English API home plus three knowledge-base exceptions.
- memberships, strings, and SSE overrides carry app-type labels (Workflow/Chatflow English, New Agent, API Overviews group).

* docs: correct app-type naming and translations across API specs

- English mode enum labels Chatflow and Workflow apps.
- zh/ja app references use Workflow/Chatflow; New Agent is 新 Agent / 新しい Agent.
- ja knowledge tag データセット becomes ナレッジベース; zh 模型提供商 becomes 模型供应商.
- Regenerate merged openapi_service.json with per-operation sidebar titles.

* docs: add streaming, errors, and end-user identity API guides

- Consume Streaming Responses: response modes, SSE parsing, event dispatch, and reconnect.
- Handle Errors and Rate Limits: the error envelope, status classes, and retry guidance.
- End User Identity: what the user field scopes and why it stays consistent.
- English source with zh and ja translations.

* docs: reconcile API guides and apply app-type naming

- Reader-test fixes and content audit on get-started and the app-type overview pages.
- zh/ja reconciled to the English source.
- Workflow/Chatflow and New Agent naming applied in prose.

* feat: wire API nav and redirects for consolidated guides

- Rename the guides group to API Overviews and register the new guide pages.
- Redirects: catch-all to the English API home plus three product-embedded knowledge-base links to the Knowledge guide.

* fix: normalize zh model-provider term to 模型供应商

Aligns the POSITION_PROVIDER_* descriptions with the canonical glossary term.

* docs: use Info callouts for guide forward-link notes

Wrap the authentication, base URL, and `user` field forward-reference in each app-type guide (agent, chat, chatflow, completion, workflow; en/zh/ja) in an `<Info>` callout.

* refactor: remove one-time analyze mode and verification compose

- Drop the `analyze` mode (design-time spec-overlap analysis) and its helpers; the merge is stable and nothing invokes it.
- Delete `compose.swagger.yml`, the throwaway local code-vs-spec verification stack (flagged in review for inline credentials).
- README: drop the analyze entry and correct the redirect description.

* fix: correct Chatflow naming and reasoning wording in SSE overrides

- Use "Chatflow" (English) for the app type in the `/chat-messages` SSE tables instead of 对话流/チャットフロー, and fix the legacy zh chatflow "对话流工作流" description. Standalone table cells were missed by the earlier app-type rename.
- Describe `reasoning_chunk` as "reasoning content" in en/ja (matching the `reasoning` field and the zh wording) instead of "chain-of-thought".

* docs: refine API guide wording and simplify the human-input example

* docs: standardize Workflow and Chatflow app-type capitalization

Capitalize Chatflow and Workflow when they name an app type; keep "workflow" lowercase for the general engine, graph, or run sense.

* fix: use 供应商 for model provider in the zh Knowledge spec

* fix: rename the Knowledge API nav group to "Knowledge APIs"

* fix: un-deprecate Update Document by Text in the Knowledge spec

* translate: un-deprecate Update Document by Text in zh/ja specs

Mirror the en fix (6802d5eb) into the zh and ja Knowledge specs, source and merged: drop the deprecated flag and the leading Deprecated notice from the update-by-text operation. It is the canonical text-update route; only Update Document by File stays deprecated.

* fix: repoint tools node links to the Classic Agent tab anchor

The Tool Configuration heading is now nested inside the Classic Agent tab, so #tool-configuration no longer resolves. Point the three Tools-page links (en/zh/ja) at the tab-title anchor instead.

* fix: correct broken bold and dropped text in ja/zh Agent node

Pre-existing classic-content translation flaws surfaced in review: the ja ReAct bold cycle was mangled and missing Thought; the zh Memory sentence had dropped text.

* docs: document New Agent deployment and 1.16.0-rc1 availability

Retire the sandbox-container placeholder. The availability Notes, the node-page Note, and a new environments "New Agent (Beta)" section now point to the Dify 1.16.0-rc1 release, note it's on by default on Docker Compose, and call out DIFY_AGENT_SERVER_SECRET_KEY as the one value to set. Also aligns the ja data-security Warning with the zh single-tenant wording. en/zh/ja.

* fix: relink publish API Integration card to the API reference (#847)

* docs: standardize workflow casing in key-concepts and environments

* translate: apply Workflow/Chatflow app-type naming to zh/ja docs

* translate: sync API-guide copy-edits to zh/ja

* fix: correct New Agent API guide against the current runtime

Verified against feat/agent-v2: the reply streams as agent_message events (not message), list-message agent_thoughts carries the turn's reasoning steps (not empty), uploaded files are surfaced to the agent as downloadable references (not ignored), and /meta tool_icons is empty for New Agent apps. Adds the 1.16.0-rc1 availability pointer to the beta note. en/zh/ja.

* docs: use Tip for New Agent availability callouts and tidy API guides

Switch the New Agent availability callouts (overview, build, node) from Note/Info to Tip; the node callout gains the on-by-default sentence. Tighten the API guide beta Info and restructure the get-started API-key section into bullets. zh/ja synced to the en edits.

* fix: point home page API Reference card at the new API guide

* fix: rename Agent nav references to Agents to match the UI

The main-nav item and its page are now labeled Agents (plural), rendered as a literal in routes.ts and roster/page.tsx. Update the bolded nav/page references across the New Agent guide, node page, and environment reference. en/zh/ja.

* fix: add one-hop developing-with-apis redirects for all URL forms

* fix: document both New Agent reply events in the streaming contract

The New Agent guide said replies stream as agent_message; the Send Chat Message SSE reference and the streaming guide said message. Verified against dify feat/agent-v2 (agent_app/app_runner.py and its unit tests): both fire — the reply streams incrementally as agent_message deltas, then the turn closes with a single message event carrying the complete answer, then message_end, with agent_thought alongside throughout. Document the full sequence on all three surfaces and tell clients to treat the closing message as the final answer rather than appending it. en/zh/ja; merged specs regenerated via the API pipeline (build + wire, coverage clean).

* fix: update New Agent env docs for the bundled development secret key (#849) (#850)

* fix: update New Agent secret key docs for the bundled development default

feat/agent-v2 now ships a valid development key for DIFY_AGENT_SERVER_SECRET_KEY in .env.example and the Compose fallback, so the backend starts out of the box; the old claim that an invalid placeholder blocks startup no longer holds. Reframe the entry around replacing the publicly known key before production, scope the startup failure to malformed values, and soften the guide callouts from a start prerequisite to production hardening. Replace the stale remaining-variables sentence with a table covering all 11 DIFY_AGENT_* plumbing vars, defaults verified against feat/agent-v2. en/zh/ja.

* chore: cover secret-value false positives in the env-var verifier

Add DIFY_AGENT_SERVER_SECRET_KEY to the ignored-vars false-positives bucket (docs describe the pre-filled development key instead of reproducing it) and refresh the stale ENABLE_AGENT_V2 entry, now superseded by NEXT_PUBLIC_ENABLE_AGENT_V2 and removed from .env.example on feat/agent-v2. Fix the verifier so the ignore list also applies to the default-mismatch check, which previously bypassed it.

(cherry picked from commit 63b392da48)

* fix: hedge the Dify Cloud edge-proxy timeout claim in the streaming guide (#851) (#852)

(cherry picked from commit c0664dacc5)

* docs: apply the ready-to-use vs custom knowledge rebrand to Cloud docs (#853) (#856)

* docs: apply the ready-to-use vs custom knowledge rebrand to Cloud docs

Cloud 1.15.0 ships the same KB creation redesign as CE 1.15.0: the two create entry points are now Create a ready-to-use knowledge base and Build a custom knowledge base, reached through Knowledge > Create. Mirror the self-host rename (305e3f9f) onto the Cloud knowledge pages in all three languages: nav group labels, page titles, create paths, and name-tied prose, plus the bridge from the custom knowledge base page to the knowledge pipeline. Remove the outdated create-entry screenshot, now unreferenced.

* fix: correct list numbering and blank lines in self-host knowledge pages

Fix leftovers from the self-host knowledge creation rename: the zh integrate-knowledge page had two list items numbered 7, and the zh/ja create-knowledge-pipeline pages kept a double blank line where the screenshot Frame was removed.

* fix: correct grammar and formatting flagged in PR #853 review

Address Copilot review feedback, applying each fix to both the cloud and self-host copies to keep the trees in sync: replace "There're" with "There are", fix "one of the knowledge base created", rewrite the comma splice on the custom knowledge base overview, add the missing space before bold Chinese text, and strip trailing whitespace from the create-entry bullets.

(cherry picked from commit 476c02b9d7)

* feat: finish API reference Phase 1: code audit and readability overhaul (#857) (#858)

* feat: retire the merge pipeline and delete the legacy source specs

openapi_service.json is now the spec of record per language, edited directly. The build/relink modes, resolutions.json, and overrides/ that consolidated the five per-app-type specs are recoverable from git history when Phase 2 rebuilds the spec from the upstream-generated source.

* fix: make parity_check exit nonzero on failures

* docs: document the direct-edit spec workflow in skills and translation guides

* fix: correct the Service API reference against the code-verified audit

Applies the confirmed findings of a full per-operation audit against dify 3c8e0e2113 / graphon 0.6.0: 9 factual errors (availability lines, phantom fields, wrong enum values, inert parameters, wrong error messages), ~33 omitted-error and example-accuracy gaps, the rate_limit_error recharacterization, provider-identifier format documentation, and New Agent availability on the endpoints its Chat Features support (verified end-to-end in code).

* docs: document New Agent's full endpoint surface in the API guides

* translate: propagate the Service API audit fixes to zh and ja

* docs: rewrite Upload File as the readability pilot

Worked example of the API readability standard: contract-first description, facts on the fields (category size limits with env-var link, blacklist rule), real error triggers (415 corrected to its actual cause), template user sentence, source links on sourceable values, and a hand-written multipart cURL sample. Applied to en/zh/ja.

* docs: update spec-conventions for the live link scheme and code samples

* docs: apply the readability standard across the Service API reference

Rewrites all 82 operations to the agreed standard in en/zh/ja: contract-first descriptions, facts on the fields, trigger-led error bullets, template sentences (user, pagination, provider identifiers), source links on sourceable values, guide links instead of inline concept re-explanations, cURL samples where the playground autogen fails (multipart, SSE), a paragraph ceiling everywhere, and restructured streaming narratives (events-by-app-type map; details stay in the event tables). Also folds in two fact corrections surfaced during review: the legacy securitySchemes text and the stale Cloudflare-timeout claim in response_mode, now using the hedged edge-proxy wording.

* docs: codify the readability standard and audit method in the API skill

* fix: apply the audit-verified corrections deferred from the readability pass

Small factual items evidenced in the audit findings that the readability pass could not touch under its fact-freeze: real wire messages (audio 413, type_mismatch number, dynamic run-by-id 404, werkzeug 500/403 strings, annotation 404 punctuation), schema precision (format: uuid, minimum: 1, six missing Get Available Models response fields), and behavioral completeness (document download/zip/delete 404 message variants, tag_ids silent-ignore note, request-scoped batch-metadata lock wording, reasoning_chunk message_id: null, form default key absent not null). Applied to en/zh/ja; parity 0.

* fix: make spec checkers target openapi_service.json explicitly

After the legacy specs were deleted, the openapi_*.json globs in parity_check and lint_specs would silently pass (match nothing, report 0 issues, exit 0) if the spec of record went missing, and would pick up unintended future openapi_*.json files. Both now name openapi_service.json per language and exit 1 when it is absent.

* fix: address Copilot review on pipeline tooling and example titles

Normalizes example summary separators to the dominant "Request Example - Mode" form (the convention doc had drifted, and 4 em-dash outliers existed per language); lint_specs no longer re-reads the spec it already loaded; all spec reads use explicit UTF-8; coverage_matrix and swagger_diff target openapi_service.json explicitly; README and docstring usage resolve DOCS from the git root so the commands work from any directory.

* fix: use context managers for all pipeline file reads

Copilot flagged unclosed handles in the three checkers; applied consistently across all five pipeline scripts (merge_specs and coverage_matrix had the same pattern unflagged).

* fix: report missing spec ops as coverage failures instead of crashing

* fix: print the full relative path in the parity missing-file message

(cherry picked from commit 6aa0ae4661)

* feat: retire the auto-translation pipeline (#854) (#859)

* feat: retire the auto-translation pipeline

* fix: drop the Dify-API translator and align the navigation guideline

* fix: remove unused pipeline-era config and the translation A/B test framework

* fix: retire remaining pipeline references in glossary, env-vars skill, termbase tool

(cherry picked from commit 267089b359)

* fix: converge drifted content between the cloud and self-host trees (#862) (#864)

* fix: converge drifted content between the cloud and self-host trees

Eight pairs had real drift (missed cross-tree syncs, mostly #820's
cleanup never carried to cloud): Introduction-heading removals and
webhook rewording, the 1.15.0 integrations rename, a missing #mcp
anchor, utilize->use, apostrophe and ja terminology/spacing alignment.
After this, every mapped pair differs only in deliberate
audience-specific content.

* fix: plan-gating callouts — add conjunctions, align zh with en, drop audience restatements

(cherry picked from commit 5575764827)

* fix: repair MT-corrupted sentences in the webapp guides (zh/ja) (#866) (#868)

Five passages from the revamp-era MT batch had dropped spans or truncated sentences (workflow-webapp and chatflow-webapp, both audience trees). Each is retranslated from the current en source; everything else in the publish/webapp family verified clean against en.

(cherry picked from commit 51be4e7cae)

* fix: align reverse invocation App signatures with the plugin SDK (#873) (#875)

The Reverse Invocation App page documented App invocation signatures that predate the removal of the top-level `files` argument, so every documented signature, and the Chat example, failed against current Python SDK releases (verified against v0.9.1).

Corrected across the English, Chinese, and Japanese pages: drop the removed `files` argument from the Chat, Workflow, and Completion signatures; add the required `query` argument to Chat and to the Chat example; mark `conversation_id` optional; add the optional `user` argument; and show the `response_mode` defaults (`streaming` for Chat, `blocking` for Workflow and Completion). Signatures now match the SDK runtime definitions.

Closes #872
Closes DC-27

(cherry picked from commit 2975506628)

* docs: rewrite Go to Anything for 1.16.0 (Feature Preview commands, entry points, scopes)

Full rewrite against the GA code: sidebar search button + shortcut as entry points, recents, the @ scopes with @node's pipeline-editor support, and a complete slash-command table including the Feature Preview /create and /refine (with aliases in the Command column). UI-discoverable mechanics deliberately omitted. en/zh/ja.

* docs: wire Snippets and Go to Anything into the self-host nav

Both pages existed without navigation entries. Snippets lands before Workflow Collaboration in the Workflow & Chatflow group; Go to Anything before Shortcut Key. All three language sections.

* docs: update the env reference for 1.16.0

Add NEXT_PUBLIC_ENABLE_FEATURE_PREVIEW (default true, gates /create and /refine), API_WEBSOCKET_WORKER_AMOUNT (completing the websocket group), and the four REDIS_KEEPALIVE* vars (verified against ext_redis.py). The New Agent section drops its rc1 deploy pointer for GA. en/zh/ja; verifier reports 0 mismatches.

* docs: add the Snippets feature guide

Reusable node groups: the three creation paths, editor restrictions, draft/publish model, published-version insertion, and the CE permissions table. Verified against GA code including the #38134 RBAC change (inert on CE). en/zh/ja.

* docs: update difyctl docs for the 1.16.0 version gate and --insecure TLS skip

The four compatibility verdicts with their rendered labels, exit-6 enforcement incl. HTTP 426, the 1-hour compat cache, login-time checking, and --insecure extending to self-signed/invalid TLS certs. Every claim traced to cli/src at the GA ref. en/zh/ja.

* docs: port 1.16.0 feature updates to the affected guides

MCP dynamic request headers with Custom Headers/Timeouts subheadings (tools.mdx, which also gains New Agent apps in its use-tools list), the web app input placeholder (64 chars, chat-style apps), a simplified Doc Extractor PDF line, and the docker compose container list gaining agent_backend and local_sandbox. en/zh/ja.

* docs: retire the rc1 deploy pointers for GA

The New Agent callouts, node page, and API guide told readers to deploy the 1.16.0-rc1 pre-release; at GA the version note is redundant on a versioned release branch. Beta framing stays. en/zh/ja.

* docs: document the workflow-version 403 and speech_to_text_disabled API errors

Sandbox-plan gating of pinned-version execution (dify #38662, #38892) lands as a 403 on Run Workflow by ID and Send Chat Message, with the paid-plan note on the Cloud version-control page (restore/DSL-export gating UI-verified). The audio-to-text 400 replaces the stale invalid_param bullet with speech_to_text_disabled (#38653). en/zh/ja.

* docs: address review feedback after merging main

Name the Normal role explicitly in the snippet permissions note (en, matching zh/ja), and split an over-long ja sentence introduced by the GA trim.

* fix: use the spec's ASCII colon separator in the speech_to_text_disabled bullets

The zh/ja error lists separate code from description with ' : ' throughout; the new bullet used a full-width colon. Copilot review on #848.

* docs: fix a garden-path sentence and mirror the Doc Extractor simplification to Cloud

The MCP custom-headers fallback sentence parsed 'runs' as a verb; rephrased as an explicit conditional. The Cloud doc-extractor copies keep parity with self-host by dropping the pypdfium2 mechanism mention (same implementation both products). Copilot review on #848.

* docs: document SHELLCTL_ENABLE_PATH_ISOLATION for the agent sandbox

* docs: note that discarding a build draft leaves sandbox changes intact

* docs: move the discard caveat into a Note callout

* fix: restore localized Human Input sample strings in zh/ja specs

* chore: drop stale env ignore-list entries superseded by 1.16.0 docs

* docs: state why .env cannot set the sandbox isolation toggle

* docs: document seven new 1.16.0 env vars (agent stream, redaction, new-user defaults, workflow generation)
2026-07-17 19:33:25 +08:00

546 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 应用
description: 从命令行列出、查看、运行、恢复、导出和导入 Dify 应用
---
> 本文档由 AI 自动翻译。如有任何不准确之处,请参考 [英文原版](/en/cli/reference/apps)。
每项应用操作对应一条命令,且都接受 [全局标志](/zh/cli/reference/global-flags)。
- [`difyctl get app`](#列出应用) 列出应用
- [`describe app`](#查看应用) 显示单个应用的详情和输入
- [`run app`](#运行应用) 调用单个应用
- [`resume app`](#恢复已暂停的工作流) 继续一个 [因人工介入而暂停](#工作流暂停时) 的工作流
- [`export studio-app`](#导出应用) / [`import studio-app`](#导入应用) 将应用导出/导入为 DSL 文件
## 列出应用
```text
difyctl get app [app-id] [flags]
```
<Tip>
日常调用方式参见 [常见任务](/zh/cli/common-tasks) 中的 [查找应用](/zh/cli/common-tasks#查找应用)。
</Tip>
### 参数
- `[app-id]`:可选。要显示的单个应用的 ID。省略则列出工作空间中的所有应用。
### 标志
| 标志 | 类型 | 默认值 | 说明 |
|:---|:---|:---|:---|
| `--name <substring>` | string | 无 | 仅保留名称包含该文本的应用。 |
| `--mode <mode>` | string | 无 | 按应用类型筛选,以其 API mode 命名:<ul><li>`chat`(聊天助手)</li><li>`advanced-chat`Chatflow</li><li>`agent-chat`Agent</li><li>`workflow`Workflow</li><li>`completion`(文本生成应用)</li></ul> |
| `--page <n>` | integer | `1` | 页码。 |
| `--limit <n>` | integer | `20` | 每页数量,1 到 200。该标志优先,其次是 [`DIFY_LIMIT`](/zh/cli/reference/environment-variables)。 |
| `--workspace <id>` <Badge color="blue" size="sm">Cloud</Badge> | string | 当前活跃工作空间 | 仅本次调用针对另一个工作空间运行。<br></br><br></br>`difyctl` 如何解析工作空间,参见 [difyctl 如何选择工作空间](/zh/cli/reference/workspaces#difyctl-如何选择工作空间)。 |
| `-A, --all-workspaces` <Badge color="blue" size="sm">Cloud</Badge> | boolean | `false` | 列出你的 token 可见的所有工作空间中的应用。 |
| `-o <format>` | string | 无 | 输出格式:`json`、`yaml`、`name` 或 `wide`。省略该标志则输出默认表格。 |
### 示例
列出工作空间中的应用:
```bash
difyctl get app
```
列出你所属的每个工作空间中的应用:
```bash
difyctl get app -A
```
查找名称包含 「report」 的 Workflow 应用:
```bash
difyctl get app --name report --mode workflow
```
仅打印应用 ID,每行一个,便于 shell 循环:
```bash
difyctl get app -o name
```
### 输出
| 格式 | stdout 内容 |
|:---|:---|
| 默认 | 一个对齐的表格。`MODE` 列是每个应用的 API mode 名称(其与应用类型的对应关系参见 [`--mode`](#列出应用))。 |
| `-o wide` | 表格外加一列 `WORKSPACE`。 |
| `-o json`、`-o yaml` | 应用的 `data` 数组,以及分页字段 `page`(当前页)、`limit`(每页数量)、`total`(匹配的应用数)和 `has_more`(是否还有更多页)。 |
| `-o name` | 应用 ID,每行一个。 |
默认表格:
```text
NAME ID MODE UPDATED
Customer FAQ 0a1b2c3d-4e5f-6789-abcd-ef0123456789 chat 2026-06-08T03:14:27.521839
Daily Report 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b workflow 2026-06-05T22:41:09.812016
```
### 退出码
| 退出码 | 含义 |
|:---|:---|
| `0` | 成功 |
| `1` | 网络或服务器错误 |
| `2` | 用法错误,例如 `--limit` 超出 1 到 200 的范围 |
| `4` | 认证失败 |
| `7` | 触发限流(HTTP 429 |
完整方案参见 [输出格式与退出码](/zh/cli/reference/output-formats-and-exit-codes)。
## 查看应用
```text
difyctl describe app <app-id> [flags]
```
运行一个不熟悉的应用之前,你通常想先弄清几个问题,而 `describe app` 正是用来回答它们的:这是什么类型的应用、它的 API 是否已启用、它需要哪些输入。
### 参数
- `<app-id>`:必填。要查看的应用的 ID。
### 标志
| 标志 | 类型 | 默认值 | 说明 |
|:---|:---|:---|:---|
| `--refresh` | boolean | `false` | 绕过本地的应用信息缓存,获取最新详情。在应用重新发布后使用。 |
| `-o <format>` | string | `text` | 输出格式:`json`、`yaml` 或 `text`。 |
### 示例
运行前先查看应用:
```bash
difyctl describe app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b
```
提取输入 schema,以便以编程方式构造 `--inputs`
```bash
difyctl describe app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b -o json | jq '.input_schema'
```
重新发布应用后再次获取:
```bash
difyctl describe app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --refresh
```
### 输出
| 格式 | stdout 内容 |
|:---|:---|
| 默认(`text`) | 一个对齐的字段块,随后是应用的参数(含用户输入表单)。 |
| `-o json`、`-o yaml` | 三个顶层键:`info`、`parameters` 和 `input_schema`(详见下文)。 |
默认文本视图:
```text
Name: Daily Report
ID: 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b
Mode: workflow
Updated: 2026-06-05T22:41:09.812016
Service API: true
Parameters:
{
"opening_statement": null,
"suggested_questions": [],
"user_input_form": [
{
"text-input": {
"label": "topic",
"variable": "topic",
"required": true,
"default": ""
}
}
],
"file_upload": null,
"system_parameters": {
"file_size_limit": 15,
"image_file_size_limit": 10,
"audio_file_size_limit": 50,
"video_file_size_limit": 100,
"workflow_file_upload_limit": 10
}
}
```
应用有描述时会出现 `Description:` 行,应用为 agentic 时会出现 `Agent: true` 行。
在 `-o json` 下,这三个键分别是:
- `info`:上方展示的元数据字段,从 `Name` 到 `Service API`
- `parameters`:上方展示的参数块
- `input_schema`:应用输入的规范化列表,也就是 `jq '.input_schema'` 示例所读取的字段
### 退出码
| 退出码 | 含义 |
|:---|:---|
| `0` | 成功 |
| `1` | 网络或服务器错误,包括应用未找到 |
| `2` | 用法错误,包括 `<app-id>` 不是 UUID |
| `4` | 认证失败 |
| `7` | 触发限流(HTTP 429 |
## 运行应用
```text
difyctl run app <app-id> [message] [flags]
```
`run app` 是一条适用于所有应用类型的命令。CLI 会读取应用的类型,并分发到对应的端点。不同之处只在于输入的传递方式和响应的形态:
- **聊天助手、Chatflow、Agent**:接收一条位置参数形式的消息,将回复打印到 stdout,并将一条会话提示打印到 stderr。
- **文本生成应用**:接收一条位置参数形式的消息,将续写结果打印到 stdout。没有会话状态,也没有提示。
- **工作流**:通过 `--inputs` 接收一个 JSON 对象,并将其输出打印到 stdout。输出为单个字符串的工作流会原样打印该字符串,其余情况则打印为紧凑 JSON。
### 参数
- `<app-id>`:必填。要运行的应用的 ID,来自 [`get app`](#列出应用)。
- `[message]`:用户消息,适用于聊天助手、Chatflow、Agent 和文本生成应用。Workflow 应用会拒绝位置参数形式的消息,因此请用 `--inputs` 传入其输入。
### 标志
| 标志 | 类型 | 默认值 | 说明 |
|:---|:---|:---|:---|
| `--inputs <json>` | string | 无 | 以单个 JSON 对象形式提供的输入变量,例如 `--inputs '{"topic":"Q3"}'`。Workflow 应用必填。与 `--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 | 无 | 将本次运行固定到某个已发布的工作流版本。仅适用于 Workflow 和 Chatflow 应用。 |
| `--stream` | boolean | `false` | 在生成过程中实时打印输出,而非在结束时一次性打印。 |
| `--think` | boolean | `false` | 当模型暴露其思考过程时,将其打印到 stderr,可以是内联的 `<think>` 块,也可以是独立的推理流。<br></br><br></br>不加该标志时,这些内容会被隐藏。 |
| `--retry-on-limit` | boolean | `false` | 遇到 429 限流时,等待并重试本次运行,而非以退出码 `7` 失败。默认关闭,因为运行不具备幂等性。 |
| `--workspace <id>` <Badge color="blue" size="sm">Cloud</Badge> | string | 当前活跃工作空间 | 仅本次调用针对另一个工作空间运行。<br></br><br></br>`difyctl` 如何解析工作空间,参见 [difyctl 如何选择工作空间](/zh/cli/reference/workspaces#difyctl-如何选择工作空间)。 |
| `-o <format>` | string | `text` | 输出格式:`json`、`yaml` 或 `text`。 |
### 示例
向聊天助手、Chatflow、Agent 或文本生成应用发送一条消息:
```bash
difyctl run app 0a1b2c3d-4e5f-6789-abcd-ef0123456789 "What are your business hours?"
```
以结构化输入运行一个 Workflow 应用:
```bash
difyctl run app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --inputs '{"topic":"quarterly report","audience":"executives"}'
```
为文件类型的输入变量附加一个本地文件:
```bash
difyctl run app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --inputs '{"topic":"contract review"}' --file document=@./contract.pdf
```
继续之前的会话:
```bash
difyctl run app 0a1b2c3d-4e5f-6789-abcd-ef0123456789 "And on weekends?" --conversation 4f7d8c2a-9b1e-4c6d-8a3f-5e2b7c9d0a1f
```
以 JSON 获取原始响应,供脚本和 Agent 使用:
```bash
difyctl run app 0a1b2c3d-4e5f-6789-abcd-ef0123456789 "What are your business hours?" -o json | jq -r '.answer'
```
### 输出
| 格式 | stdout 内容 |
|:---|:---|
| 默认(`text` | 回复(聊天助手、Chatflow、Agent、文本生成应用)或工作流的输出,以纯文本形式呈现。 |
| `-o json`、`-o yaml` | 完整的服务器载荷,对话类应用还包含 `answer` 和 `conversation_id`;当模型产生推理内容时,还会在 `metadata.reasoning` 下给出。 |
响应体输出到 stdout。其余内容(提示、进度、错误)均输出到 stderr,从而保持管道和重定向的整洁。聊天助手、Chatflow 或 Agent 应用回复之后,stderr 会携带会话提示:
```text
hint: continue this conversation with --conversation 4f7d8c2a-9b1e-4c6d-8a3f-5e2b7c9d0a1f
```
加上 `--stream` 后,输出会随服务器的生成而逐步打印。如果应用刚刚重新发布、运行以 HTTP 422 失败,CLI 会清除其应用元数据缓存,并提示再次运行该命令。
错误输出到 stderr。在 `-o json` 下,它们以带有稳定 `code` 字段的结构化 JSON 对象形式返回。错误的结构参见 [输出格式与退出码](/zh/cli/reference/output-formats-and-exit-codes)。
### 退出码
| 退出码 | 含义 |
|:---|:---|
| `0` | 成功,包括 [因人工介入而暂停](#工作流暂停时) 的工作流 |
| `1` | 网络或服务器错误,包括应用未找到 |
| `2` | 用法错误:`--inputs` JSON 无效,或向 Workflow 应用传入了位置参数形式的消息 |
| `4` | 认证失败 |
| `7` | 触发限流(HTTP 429 |
### 工作流暂停时
Workflow 和 Chatflow 应用可包含人工介入步骤。当运行到达这一步时,它会暂停而非结束:命令 **退出码为 0**(暂停不算失败),将暂停信息打印到 stdout,并将一条可直接运行的恢复命令打印到 stderr:
```text
! Workflow paused — input required
Node: Review draft
Message: Approve the report before it is published.
Actions: [approve] Approve [reject] Reject
Inputs: - comment — Reviewer comment
! workflow paused — resume with:
difyctl resume app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b k3J9mQ2xWv8pL5nR7tY4bA --workflow-run-id 8e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b --action approve
```
加上 `-o json` 后,stdout 改为将暂停信息作为一个 JSON 对象输出:
```json
{
"status": "paused",
"app_id": "7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b",
"task_id": "c4a8e2f6-1b3d-4a5c-9e7f-2d8b6c0a4e1f",
"workflow_run_id": "8e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b",
"form_id": "5d9c3b7a-2e4f-4c6d-8b0a-1f3e5d7c9b2a",
"node_id": "1749876543210",
"node_title": "Review draft",
"form_token": "k3J9mQ2xWv8pL5nR7tY4bA",
"form_content": "Approve the report before it is published.",
"inputs": [
{
"output_variable_name": "comment",
"label": "Reviewer comment",
"type": "text-input",
"required": false
}
],
"actions": [
{ "id": "approve", "title": "Approve" },
{ "id": "reject", "title": "Reject" }
],
"display_in_ui": true,
"resolved_default_values": {},
"expiration_time": 1781712000
}
```
对脚本和 Agent 而言:暂停的运行和完成的运行都退出码为 0,因此不要依据退出码分支。请用 `-o json` 运行工作流,并检查 stdout 中是否有 `"status": "paused"`。三个字段决定如何恢复:`form_token`、`workflow_run_id`,以及(当表单提供不止一个操作时)操作的 `id`。表单会在 `expiration_time`Unix 纪元秒)过期。
当工作流通过电子邮件或其他外部渠道下发其表单时,`form_token` 为 `null`,该运行无法从 CLI 恢复。
## 恢复已暂停的工作流
```text
difyctl resume app <app-id> <form-token> --workflow-run-id <id> [flags]
```
`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` 指定。<br></br><br></br>表单恰好只有一个操作时可选,有多个操作时必填。 |
| `--inputs <json>` | string | 无 | 以单个 JSON 对象形式提供的表单输入值,以每个输入的 `output_variable_name` 为键。<br></br><br></br>与 `--inputs-file` 互斥。 |
| `--inputs-file <path>` | string | 无 | 改为从 JSON 文件读取表单值。 |
| `--with-history` | boolean | `false` | 在附加到实时流之前,回放已执行节点的输出。 |
| `--stream` | boolean | `false` | 在生成过程中实时打印输出,而非在结束时一次性打印。 |
| `--think` | boolean | `false` | 当模型暴露其思考过程时,将其打印到 stderr,可以是内联的 `<think>` 块,也可以是独立的推理流。<br></br><br></br>不加该标志时,这些内容会被隐藏。 |
| `-o <format>` | string | `text` | 输出格式:`json`、`yaml` 或 `text`。 |
### 示例
批准一个单操作表单,并提供其输入值:
```bash
difyctl resume app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b k3J9mQ2xWv8pL5nR7tY4bA --workflow-run-id 8e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b --inputs '{"comment":"Looks good"}'
```
当表单提供多个操作时,选择其中一个:
```bash
difyctl resume app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b k3J9mQ2xWv8pL5nR7tY4bA --workflow-run-id 8e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b --action reject --inputs '{"comment":"Numbers need a re-check"}'
```
从文件读取表单值:
```bash
difyctl resume app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b k3J9mQ2xWv8pL5nR7tY4bA --workflow-run-id 8e1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b --inputs-file form.json
```
### 输出
| 格式 | stdout 内容 |
|:---|:---|
| 默认(`text`) | 运行完成时工作流的输出。stderr 确认提交和完成。 |
| `-o json`、`-o yaml` | 运行结果作为单个文档,与 `run app` 一样(若再次暂停,则为暂停载荷)。 |
在默认文本输出下,stderr 确认提交,工作流的输出随运行完成打印到 stdout,stderr 确认完成:
```text
✓ form submitted
workflow execution resumed
✓ workflow finished
```
恢复后的工作流可能在后续的人工介入节点再次暂停。届时你会得到一个新的暂停载荷,并用新 token 再次恢复。
### 退出码
| 退出码 | 含义 |
|:---|:---|
| `0` | 成功,包括运行在后续节点再次暂停 |
| `1` | 错误,包括 token 已被消费,或在有多个操作的表单上省略了 `--action` |
| `2` | 用法错误 |
| `4` | 认证失败 |
| `7` | 触发限流(HTTP 429 |
## 导出应用
```text
difyctl export studio-app <app-id> [flags]
```
`export studio-app` 将应用的完整定义写为一个 DSL YAML 文档,用于版本管理、备份,或 [导入](#导入应用) 到别处。
对于 Workflow 和 Chatflow 应用,导出返回的是当前草稿,而非 `run app` 所执行的已发布版本。改用 `--workflow-id` 可导出指定的已发布版本。聊天助手、Agent 和文本生成应用导出的是已发布版本。
### 参数
- `<app-id>`:必填。要导出的应用的 ID,来自 [`get app`](#列出应用)。
### 标志
| 标志 | 类型 | 默认值 | 说明 |
|:---|:---|:---|:---|
| `-o, --output <path>` | string | 无 | 将 DSL 写入该文件,而非 stdout。<br></br><br></br>在本命令中,`-o` 是输出文件路径,而非输出格式选择器。 |
| `--include-secret` | boolean | `false` | 在导出的 DSL 中包含加密的密文值。 |
| `--workflow-id <id>` | string | 无 | 按 ID 导出指定的已发布工作流版本,而非默认的草稿。<br></br><br></br>仅适用于 Workflow 和 Chatflow 应用。 |
| `--workspace <id>` <Badge color="blue" size="sm">Cloud</Badge> | string | 当前活跃工作空间 | 仅本次调用针对另一个工作空间运行。<br></br><br></br>`difyctl` 如何解析工作空间,参见 [difyctl 如何选择工作空间](/zh/cli/reference/workspaces#difyctl-如何选择工作空间)。 |
### 示例
将应用的 DSL 打印到 stdout
```bash
difyctl export studio-app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b
```
将其写入文件:
```bash
difyctl export studio-app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --output ./daily-report.yaml
```
导出指定的已发布版本:
```bash
difyctl export studio-app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --workflow-id c7e4a1b9-3f82-4d6a-9e15-0b8c2d7f4a63
```
导出时包含密文值:
```bash
difyctl export studio-app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --include-secret
```
### 输出
DSL YAML 文档打印到 stdout:一个 `kind: app` 头部、一个 `version` 字段,以及完整的应用定义。加上 `--output` 后,相同内容会写入文件,并由 stderr 确认:
```text
DSL written to ./daily-report.yaml
```
### 退出码
| 退出码 | 含义 |
|:---|:---|
| `0` | 成功 |
| `1` | 网络或服务器错误,包括应用未找到 |
| `2` | 用法错误,包括缺少 `<app-id>` |
| `4` | 认证失败 |
| `7` | 触发限流(HTTP 429 |
## 导入应用
```text
difyctl import studio-app (--from-file <path> | --from-url <url>) [flags]
```
`import studio-app` 从一个 DSL YAML 文档创建应用,或用 `--app-id` 覆盖一个已有应用。
对于 Workflow 和 Chatflow 应用,它会将定义写入应用的草稿。`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 | 无 | 覆盖一个已有应用,而非创建新应用。<br></br><br></br>仅适用于 Workflow 和 Chatflow 应用。 |
| `--icon-type <type>` | string | 取自 DSL | 覆盖图标类型。 |
| `--icon <icon>` | string | 取自 DSL | 覆盖图标。 |
| `--icon-background <color>` | string | 取自 DSL | 覆盖图标背景色。 |
| `--workspace <id>` <Badge color="blue" size="sm">Cloud</Badge> | string | 当前活跃工作空间 | 仅本次调用导入到另一个工作空间。<br></br><br></br>`difyctl` 如何解析工作空间,参见 [difyctl 如何选择工作空间](/zh/cli/reference/workspaces#difyctl-如何选择工作空间)。 |
### 示例
从本地 DSL 文件导入应用:
```bash
difyctl import studio-app --from-file ./daily-report.yaml
```
以不同的名称导入:
```bash
difyctl import studio-app --from-file ./daily-report.yaml --name "Daily Report (staging)"
```
用更新后的 DSL 覆盖一个已有应用:
```bash
difyctl import studio-app --from-file ./daily-report.yaml --app-id 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b
```
直接从 URL 导入:
```bash
difyctl import studio-app --from-url https://example.com/templates/daily-report.yaml
```
### 输出
所有状态行都输出到 stderr;stdout 保持为空。成功时,stderr 报告新应用的 ID:
```text
Import completed: app 9b4f2c8e-6a1d-4e3f-b7a5-0c8d2e6f4a9b
```
如果 DSL 是为不同的 DSL 版本编写的,CLI 会为你确认,并在 stderr 上标注两个版本。
如果应用依赖工作空间中尚未安装的插件,导入后 stderr 会在 `Missing plugin dependencies` 下列出它们。使用该应用前请先安装它们。
### 退出码
| 退出码 | 含义 |
|:---|:---|
| `0` | 成功,包括带警告的导入 |
| `1` | 错误,包括缺少或冲突的 `--from-file`/`--from-url`,或导入失败 |
| `2` | 用法错误,包括 `--from-file` 路径不存在 |
| `4` | 认证失败 |
| `7` | 触发限流(HTTP 429 |