JOTO
Contact us
← AI 智库
Dify

Dify 1.17.0 来了:Skill 管理、工作流变量复用,Agent 这次真能自己干活了

2026 年 9 月 6 日

Dify 1.17.0 版本聚焦 Agent 工程化落地,核心更新包括 E2B 云沙箱支持、Home Snapshot 环境固化、Workspace 级 Skill 版本管理、上下文自动压缩;工作流新增 LLM 变量复用与 Loop/Iteration 中的人工介入能力;统一链路追踪支持 Phoenix/LangSmith;安全加固涵盖 Cloudflare Turnstile、Azure Key Vault 集成及 SSRF 防护。

Dify 1.17.0 更新概览图
Dify 1.17.0 更新概览图

Agent 运行时:从"能跑"到"能打"

这是 1.17 最核心的一块,四个功能组合在一起,Agent 的工程化程度直接上了一个台阶。

E2B 云沙箱:代码执行不用再自己维护沙箱了

以前 Dify Agent 的代码/Shell 执行只能跑在本地沙箱里,自部署用户得自己管沙箱容器的资源、安全和隔离。现在新增了 E2B 云端沙箱后端,通过环境变量 DIFY_AGENT_RUNTIME_BACKEND 切换。

几个实际变化:

  • 新增了 docker-compose.e2b.yaml,E2B 技术栈一键拉起
  • E2B 流量走认证,模板在发版时自动同步
  • 配套加了一堆超时和连接池参数(DIFY_AGENT_E2B_ACTIVE_TIMEOUT_SECONDSDIFY_AGENT_OUTBOUND_HTTP_*),可以精细控制沙箱行为

什么场景有用?

  • 不想自己维护沙箱基础设施的团队,直接用 E2B 云端跑代码
  • 需要更强隔离性的多租户场景,云沙箱天然比本地容器安全边界更清晰
  • CI/测试环境临时跑 Agent,不用长期占着本地资源

Home Snapshot:发布即固化,Agent 每次从同一状态启动

这个功能听起来不起眼,但解决了一个很烦的问题——Agent 运行环境的不确定性。

简单说:当你发布(build)一个 Agent 时,系统会把沙箱 home 目录打个快照——装好的依赖、准备好的文件、工作状态全部冻结。之后这个已发布 Agent 的每次运行,都会从这个快照恢复 home 目录。

这意味着:

  • Agent 在构建时 pip install 了什么包,线上跑的时候一定还在,不会因为沙箱重建就丢
  • 准备好的配置文件、数据文件不需要每次运行重新下载
  • 本地调试通过的环境状态,跟线上完全一致

对做生产级 Agent 的人来说,这才叫可复现。之前那种"我本地好好的,线上怎么挂了"的问题,少了一大半。

Workspace 级 Skill 管理:Agent 能力终于有了版本管理

Skill 不是新概念,但 1.17 把它做成了工作空间级的一等公民:

  • 完整的 draft → publish → version 生命周期
  • 新增 Web UI:Skill 列表页、Builder 面板、文件编辑器
  • Skill 是带代码和工具定义的可复用、可版本化能力包,Agent 可以自动发现和调用

这跟 Dify 之前的工具体系最大的区别是:Skill 有版本,能灰度,能在工作空间内共享。你不再需要把同一段工具逻辑复制到每个 Agent 里,改一次,所有引用的 Agent 都能用上新版本。

配套新增了 UPLOAD_SKILL_FILE_SIZE_LIMIT 环境变量控制上传大小,数据库也加了 add_workspace_skill_management 迁移。

上下文自动压缩:长对话不再爆窗口

跑过长对话 Agent 的都懂,聊到一半突然报 context length exceeded 有多崩溃。1.17 加了上下文感知的历史压缩:

  • 自动获取当前模型的有效上下文窗口
  • 分层压缩:先清旧的工具调用结果(这些最占 token 且复用价值低),再对更早的历史做摘要
  • 最近的对话上下文完整保留,不影响当前轮次的连贯性

这是个"开了就不用管"的功能,不需要你手动配置压缩策略,系统根据模型自动判断。属于典型的"没什么存在感但少了它不行"。

工作流:LLM 节点变量复用 + 循环里的人审

可复用 LLM 环境变量

这个功能非常实用,属于"早该有了"系列。

之前如果你在一个工作流里有 10 个 LLM 节点,想把模型从 GPT-4o 换到 Claude,就得逐个节点点进去改。现在可以定义一个共享的 LLM 配置变量(比如 for_summarizefor_research),把 provider/model/mode/参数打包,然后在任意 LLM 节点里引用。

好处很直接:

  • 统一换模型:改一个地方,所有引用节点同步更新
  • DSL 导入导出不丢引用:跟 snippet、RAG 管道、协作编辑都兼容
  • 环境区分:开发和生产可以用不同的模型配置,切换不用改工作流

Loop / Iteration 里支持 Human Input

1.13 引入的 Human-in-the-Loop 一直只能在工作流主线上用,循环节点里不支持。1.17 补上了:

  • HITL 表单可以放在 Loop 和 Iteration 节点内部
  • 暂停/恢复在页面刷新后也能正确恢复(debug 和已安装应用都支持)

这打开了不少实际场景:

  • 批量审核:Iteration 遍历一批待审内容,每一条都让人确认通过/驳回
  • 循环审批流:Loop 里每轮生成结果后人审,不满意就继续迭代
  • 数据标注:循环处理数据,每条都让人校验标注质量

另外,工作流和应用的最大执行时间从 1200 秒提到了 3600 秒(一个小时),长任务不用再担心被超时掐断。

统一链路追踪:终于不用接好几套观测系统了

如果你同时用 Phoenix 和 LangSmith,或者在多个环境用不同的 tracing 后端,1.17 的统一追踪会让你舒服很多。

核心机制:

  • 新增 OPS_TRACE_UNIFIED_ENABLED 开关(默认关闭,完全向后兼容)
  • Core 层统一组装完整的父子 span 树——工作流、chatflow、消息、节点、循环、迭代、嵌套工作流全部串起来
  • 传输层只做轻量 adapter,首批支持 Phoenix 和 LangSmith
  • 新增 GenAI span,能看到 LLM 的 TTFT(首 token 延迟)、Agent ReAct 步骤、工具调用、失败的 LLM 节点

对生产环境来说,这意味着你可以在一个地方看到完整的请求链路,不用在多个观测系统之间跳来跳去。TTFT 这种指标对排查"为什么这个 Agent 这么慢"特别有用。

安全与企业级能力:企业自部署必看

1.17 在安全上花了不少功夫,挑几个跟自部署相关的:

  • Cloudflare Turnstile:登录和邮箱验证码登录支持人机验证,防暴力破解和接口滥用
  • 邮箱验证码加固:新增尝试次数限制(EMAIL_CODE_LOGIN_MAX_ATTEMPTS)和 token 过期时间(EMAIL_CODE_LOGIN_TOKEN_EXPIRY_MINUTES
  • Azure Key Vault / 可插拔 KMS:加密密钥可以交给 Azure Key Vault 管理,支持密钥轮换,向"密钥不受应用控制"迈出一步
  • 权限收敛:dataset、document、RAG、conversation、workspace credential、OAuth client 等资源统一绑定 owner 和 app scope,修了几个越权路径
  • SSRF 加固:出站 HTTP 连接阶段加了 5 秒超时,Agent 下载和运行超时都可配置

如果你是企业自部署,这些更新建议认真过一遍,尤其是权限收敛那块。

其他值得关注的更新

快速过一下:

  • TiDB Vector 全文/混合检索TIDB_VECTOR_ENABLE_FULLTEXT_SEARCH 开启后,TiDB 向量库支持多语言全文索引 + 向量混合检索
  • 多模态文件处理改进:LLM 节点和 Agent 可以直接把图片文件传给多模态模型;非视觉附件不再被静默丢弃
  • ⌘K / Ctrl+K 全局跳转:命令面板新增 Agent 和 Skill 搜索,图标命令系统全量重构
  • ODT 文档解析:支持 OpenDocument Text 格式
  • 旧对话自动清理ENABLE_CONVERSATION_CLEANUP_TASK 控制自动清理,防止数据无限增长
  • Marketplace 内嵌:插件市场直接嵌入集成分类页,找工具更方便
  • 工作流生成器偏好已安装工具:AI 生成工作流时优先推荐你已装已配的工具

升级注意事项

这次更新有几个 breaking change,升级前务必看一眼:

  1. EDITION 改名为 DEPLOYMENT_EDITION——如果你在 .env 里设了这个变量,必须改
  2. ENTERPRISE_ENABLED 被移除——企业版开关统一了
  3. AGENT_BACKEND_RUN_TIMEOUT_SECONDS 改名——换成 DIFY_AGENT_RUN_TIMEOUT_SECONDS
  4. 新增数据库迁移——flask db upgrade 必须跑,其中 add_conversation_cleanup_index 在 conversations 表大的时候可能比较慢
  5. Docker Compose 配置变了——新增 docker-compose.e2b.yaml,如果你改过 compose 文件,重新合并时小心
  6. 默认执行时间翻倍——APP_MAX_EXECUTION_TIMEWORKFLOW_MAX_EXECUTION_TIME 从 1200 秒改到 3600 秒,注意资源占用

升级步骤官方给了标准流程:备份 compose 和 env → git pulldocker compose down → 备份 volumes → 改环境变量 → docker compose up -d。没什么花活,按步骤来就行。

写在最后

Dify 从 1.0 到 1.17,演进路线其实很清晰:早期解决"怎么搭 AI 应用",后来解决"怎么让工作流更灵活",现在开始啃"怎么让 Agent 真正可靠地跑在生产环境"。

E2B 沙箱 + Home Snapshot + Skill 版本管理 + 上下文压缩这一套组合拳,打的就是 Agent 工程化最硬的骨头——环境一致性、能力复用、稳定性。再加上统一链路追踪和安全加固,1.17 更像是一个"让你敢把 Agent 放上线"的版本。

如果你还在 1.16.x,建议先在测试环境跑一轮,确认环境变量和迁移没问题后再上生产。有什么踩坑经验,评论区聊聊。

JOTO 企业落地观察

  • 对企业部署意味着:Agent 运行时能力升级大幅降低生产环境运维复杂度。E2B 云沙箱使代码执行脱离本地容器管理,Home Snapshot 固化环境状态,二者共同缓解了“本地能跑、线上失效”的典型交付风险,尤其利于缺乏专职 Infra 团队的中型企业快速上线。
  • 这类系统的取舍在于:Skill 的 Workspace 级版本管理虽提升了能力复用效率,但也要求团队建立明确的 Skill 发布规范与灰度流程。若缺乏配套的权限隔离与变更评审机制,版本混用可能导致跨业务线 Agent 行为不可控,需在工程治理层面同步补位。
  • 对 RAG 知识工程的影响是间接但关键的:统一链路追踪新增的 GenAI span(含 TTFT、工具调用、失败节点)使 RAG 检索-重排-生成全链路可观测。当知识召回效果不佳时,团队可精准定位是 Embedding 延迟、向量库响应慢,还是 LLM 对检索结果理解偏差,而非笼统归因于‘RAG 不好用’。
  • AI 安全治理需关注权限收敛与密钥解耦的实际落地效果。Azure Key Vault 集成实现了密钥生命周期与应用解耦,但企业仍需验证其是否覆盖全部敏感凭证(如 RAG 数据源连接凭据、外部 API Token),并确保权限收敛后的 owner/app scope 绑定策略能匹配真实组织架构与最小权限原则。

立即咨询 JOTO

JOTO 提供覆盖企业智能体规划与搭建、AI 平台私有化部署、RAG 知识工程、AI 安全治理、FDE 驻场共创及持续运营优化的全周期 AI 落地服务,帮助企业把验证中的 AI 能力转化为安全、可控、可持续迭代的生产力。 联系 JOTO 获取 AI 落地咨询

想把这些做法用到你的业务里?

留下你的场景和痛点,我们帮你判断从哪一步开始。

联系我们

相关文章

Dify
Dify

企业数字化转型不是上云或买AI,而是重构决策链:来自Dify+RAG落地一线的12个真实教训

Contact Us

Start your enterprise AI rollout

Tell us your industry, team, and current pain points. We'll get back to you within one business day to help you decide what to tackle first, what data to prepare, and which platform fits.

WeChat
Scan to add us for a 1:1 chat
JOTO WeChat consultation QR code

Tell us what you need

Once we receive your details, we'll be in touch within one business day.