W13 核心主题:双版本发布周 — v1.13.1 大版本 + v1.13.2 紧急回归修复;1.13.3 里程碑开启;Redis Streams 可靠性升级提上日程;安全持续加固。 日期范围:2026-03-18 — 2026-03-24
📦 版本发布
1. v1.13.1(Latest Stable)— 重大功能版本
来源: github.com/langgenius/…
发布时间: 2026-03-18(估计,"last week" 相对 2026-03-24)
类型: Stable
贡献者: 91 人(含 vincentkoc、fatelei 等);reaction 数 8(🎉7 ❤️4)
安全修复:
- SQL 注入修复:向量存储查询路径改为参数化 SQL(#33229 对应修复已合入)
- HITL 邮件加固:sanitize subject/body + strip CR/LF,防止 SMTP header 注入
- 会话删除 API 强制 ownership 验证
- 插件卸载时清除 provider credentials,减少残余凭据风险
- 企业 API 的无效/过期 license 错误处理增强
新功能/亮点:
- ✅ 新增 Hologres 向量检索 + 全文搜索后端支持
- ✅ 新增数据集文档下载 Service API(批量 ZIP 下载 + 单文件签名 URL)
- ✅ HITL 邮件内容改为 Markdown 渲染(Breaking: 旧邮件模板行为改变)
- ✅ 草稿变量从 App 维度改为 用户维度(Breaking: 历史草稿变量不再可用)
- ✅ Workflow 画布边 context 菜单(可直接删边)
- ✅ 聊天输入框发送键行为可配置(Enter vs Shift+Enter)
- ✅ message-end 流式响应中新增 file payloads
- ✅ 新增额外 Celery 队列
dataset_summary(LLM 摘要生成任务) - ✅ 新增
REDIS_MAX_CONNECTIONS配置项 - ✅
PUBSUB_*配置迁移为EVENT_BUS_*(旧名称已 deprecated) - ✅ 新增
export-app-messagesCLI 命令(导出 JSONL.GZ) - ✅ 新增荷兰语(nl-NL)本地化支持
2. v1.13.2(Latest Stable)— 紧急回归修复
来源: github.com/langgenius/…
发布时间: 2026-03-21(估计,v1.13.1 后几天)
类型: Stable
贡献者: 2 人(fatelei、QuantumGhost);reaction 数 6(👍5 ❤️1)
修复内容:
- 🔥 严重回归:
fetch_prompt_messages中 prompt message 转换逻辑破坏了 LLM 节点和问题分类节点的 LLM-plugin 调用(#33666) - 🔥 Knowledge Retrieval 节点执行失败(enum 不兼容值,#33638)
- Weaviate 客户端清理不当 (#33593)
max_retries硬编码修复 (#33619)CreatorUserRole兼容end-user与end_user两种写法 (#33638)
⚠️ 升级注意:从 v1.13.1 升级到 v1.13.2 只需标准 Docker Compose upgrade 流程,无 Schema migration。
🗓 本周发版节律
| 版本 | 类型 | 日期(估计) | 亮点 |
|---|---|---|---|
| v1.13.1 | Stable | 2026-03-18 | Hologres、文档下载 API、草稿变量用户化、HITL 邮件 Markdown、安全加固 |
| v1.13.2 | Stable | 2026-03-21 | 紧急修复 LLM 节点调用崩溃、Knowledge Retrieval 回归 |
📊 本周共 2 次正式发布(2 stable),发版密度高:主版本上线后 3 天内出紧急补丁,说明 v1.13.1 存在入库时未发现的回归。
🔥 热门话题
3. 🔄【跟进】SQL 注入修复 PR #33229 已合入 v1.13.1
来源: github.com/langgenius/…
时间: 2026-03-18
热度: 安全高优先
摘要: W12 持续追踪的 SQL 注入修复(tidb_vector key 参数残余注入,#33229)已在 v1.13.1 安全更新中确认修复。v1.13.1 Release Note 明确提到"向量存储查询路径改为参数化 SQL"。自托管用户应尽快升级至 v1.13.2(含 v1.13.1 所有安全修复)。
4. 🚀 Redis Streams 从 XREAD 升级到 XREADGROUP(#33884)
来源: github.com/langgenius/…
时间: 2026-03-23(PR opened yesterday)
热度: 25 条评论,milestone 1.13.3
摘要: fatelei 提交 PR #33884,将 Redis Streams 广播频道从 XREAD 全面迁移至 XREADGROUP Consumer Group 模式。动机源自对多订阅者场景(如多标签页并发)的可靠性需求。Copilot Code Review 指出一处关键设计问题:每个订阅者创建独立 consumer group 反而抵消了 group 共享状态的优势。已纳入 1.13.3 里程碑,review 仍在进行。
5. 🚀 App 列表页支持排序与排列(#33998)
来源: github.com/langgenius/…
时间: 2026-03-24(今日 4 小时前 open)
热度: 14 条评论
摘要: bowenliang123 提交 PR #33998,为 App 列表页新增排序(sort)和排列(order)功能,对应 enhancement issue #33997。此功能为自托管用户管理大量 App 时的高频痛点,当前列表页无法排序。PR 仍在 Review 阶段。
6. 🐛 Speed regression: v1.13.1 LLM 节点多处调用崩溃(已修复于 v1.13.2)
来源: github.com/langgenius/…
时间: 2026-03-21
热度: 严重回归;6人 reaction
摘要: v1.13.1 发布后迅速暴露严重回归:fetch_prompt_messages 方法中 prompt message 转换逻辑被意外破坏,导致所有依赖 LLM Plugin 的节点(LLM 节点、问题分类器等)批量失败。Knowledge Retrieval 节点也因 enum 值不兼容同时故障。v1.13.2 在 2 位核心开发者(fatelei + QuantumGhost)协作下快速发布修复。
7. 🔐 IDOR 安全修复:DataSourceOauthBinding 缺乏 tenant_id 检查(#33840)
来源: github.com/langgenius/…
时间: 2026-03-24(已 closed)
热度: 安全漏洞
摘要: xr843 提交 PR #33840,修复 DataSourceOauthBinding 接口中未验证 tenant_id 的越权访问漏洞(IDOR,Insecure Direct Object Reference)。PR 本身已关闭但相关讨论揭示了该安全模式的修复思路。自托管多租户场景用户需关注此类隔离问题。
🚀 新功能 / 合并 PR
8. fix: chunk not display in indexed document(#33942)
来源: github.com/langgenius/…
时间: 2026-03-24(已 merged)
摘要: fatelei 修复索引完成文档中 chunk 预览无法显示的 bug。对应 issue #33941,影响 Knowledge Base 文档预览 UX,本次合并解决。
9. fix: fix omitted app icon_type updates(#33988)
来源: github.com/langgenius/…
时间: 2026-03-24(已 merged)
摘要: QuantumGhost 修复 PUT /console/api/apps 接口未正确保存 icon_type 字段的问题(#33987)。涉及 App 图标配置持久化逻辑,属于 UX 细节修复。
10. fix(rate_limit): flush redis cache when max_active_requests changes(#33830)
来源: github.com/langgenius/…
时间: 2026-03-24(已 merged,30 条评论)
摘要: qwedc001 修复当用户修改 App 的 max_active_requests 配置时,Redis 中残留的旧限流 cache 未刷新的 bug(#33810)。历史 cache 会导致新配置不生效。此 PR 本周讨论活跃(30 条评论),最终合入。
11. refactor(api): type auth service credentials with TypedDict(#33867)
来源: github.com/langgenius/…
时间: 2026-03-24(已 merged)
摘要: bittoby 对 auth service 凭据使用 TypedDict 类型化,提升代码可维护性和类型安全性。属于持续进行的 TypedDict 迁移系列工作的一部分。
12. feat(web): refactor toast usage to new UI Toast API(#34001 merged + #34002 open)
来源: github.com/langgenius/…
时间: 2026-03-24
摘要: lyzno1 推进前端 toast 通知组件系统化迁移,将 plugin 相关、工作流相关及全局 legacy toast 调用迁移至新 UI Toast API。#34001 已合并,#34002(workflow toast 迁移)仍在 review 中。属于 Web 前端统一组件体系建设的重要一步。
13. fix(sdk): patch flatted vulnerability in nodejs client lockfile(#33996)
来源: github.com/langgenius/…
时间: 2026-03-24(已 merged)
摘要: lyzno1 修复 Dify Node.js SDK 客户端 lockfile 中 flatted 依赖的安全漏洞,标签为 dependencies+lgtm。SDK 用户应更新至最新版本。
🐛 活跃 Bug 与问题
14. LLM 节点可配置参数不一致(#34005)
来源: github.com/langgenius/…
时间: 2026-03-24(今日开启)
摘要: moncat2005 报告 LLM 节点中可配置参数存在不一致现象,部分参数在不同场景下行为不同。刚开启,尚无处理进展。
15. iOS 气泡显示但消息文本不可见(#33981)
来源: github.com/langgenius/…
时间: 2026-03-24(11 小时前)
摘要: iPhone 12/13 上聊天 WebApp 中消息气泡容器正常显示但文本内容不可见。为移动端兼容性问题,影响 iOS 用户体验。未分配处理人。
16. Cannot remove userinput.files LEGACY 字段 — Agent 节点故障(#33976)
来源: github.com/langgenius/…
时间: 2026-03-24(12 小时前,3 条评论)
摘要: ally687 报告 Workflow App 中无法移除 userinput.files LEGACY 字段,且此字段导致 Agent 节点持续报错。属于 1.14.0-rc1 引入的新 Agent 运行时遗留兼容问题,cloud 环境复现。
17. 🔄【跟进】access token 退出后仍有效 PR #31794 — 停滞超 8 周
来源: github.com/langgenius/…
时间: 2026-01-31(original PR),本周无更新
摘要: 修复退出登录后 access token 仍有效的安全 PR #31794 本周仍无进展,自 W08 追踪以来已持续停滞超 8 周。该安全问题对自托管部署有实质影响,急需社区关注或维护者介入。
📊 数据概览
| 维度 | 数据 |
|---|---|
| GitHub Open Issues | 370(本周新增约 8-10) |
| GitHub Open PRs | 424(本周新合并约 8+) |
| 版本发布 | 2 次(v1.13.1 stable + v1.13.2 stable) |
| HN 热帖 | 本周无 Dify 专题 |
| Reddit 热帖 | 本周无新帖 |
| 本周核心主题 | 双版本发版、回归修复、Redis Streams 升级、1.13.3 里程碑开启 |
| 当前最新稳定版 | v1.13.2 |
| 在途里程碑 | 1.13.3(含 xreadgroup 迁移、LLM 节点 Headers 等 ) |
Starting: Deep dive items 1, 3, 5 (7/8)
Fetched 3 resources
好,我将对 1、3、5 三条进行深入分析。
深入分析1:v1.13.2 回归根因 — fetch_prompt_messages 究竟改了什么
1. 📋 背景与问题描述
根源 PR:#33400(合入 v1.13.1)
v1.13.1 中,开发团队对 LLM 节点代码进行了重构:将 LLM node 类的 静态方法 fetch_prompt_messages 抽取成模块级函数(module-level function),目的是让其他节点也能复用该逻辑。然而在搬运过程中,一段关键条件判断被悄悄丢掉了:
# 原始逻辑(v1.13.0 中的 LLM node class 内)
# 如果 prompt_message_content 只有 1 条且类型为 TEXT,
# 则将 TextPromptMessageContent 对象 转换为 str
if len(prompt_message_content) == 1 and \
prompt_message_content[0].type == PromptMessageContentType.TEXT:
prompt_message_content = prompt_message_content[0].data # 转成 str
经过 #33400 抽取后,这段转换逻辑没有被保留到新的模块级函数中。
影响链:
fetch_prompt_messages 返回 TextPromptMessageContent 对象
→ LLM Plugin 调用层期望收到 str
→ PluginInvokeError: Unsupported atom data type (TextPromptMessageContent)
→ LLM 节点崩溃 / 问题分类器崩溃
2. 🛠 方案与技术细节
修复 PR:#33666,由 QuantumGhost 提交,fatelei 审核合入
修复策略:在 api/dify_graph/nodes/llm/llm_utils.py 的 fetch_prompt_messages 函数中补回缺失逻辑——恢复单文本内容时将 TextPromptMessageContent 降级为 str 的转换。
同时 QuantumGhost 补充了针对 PromptMessageContent 处理的单元测试(commit 0d80c73),防止类似静默回归再次被引入。
关键代码路径:
api/dify_graph/nodes/llm/llm_utils.py→fetch_prompt_messages()- 触发场景:任何包含 LLM 节点或问题分类器节点的 Workflow/Chatflow
3. ⚙️ 操作过程
| 时间线 | 事件 |
|---|---|
| 2026-03-?? | PR #33400 合入,重构 LLM node 静态方法为模块级函数,丢失 content 转换逻辑 |
| 2026-03-18 | v1.13.1 正式发布,回归随版本推送给所有用户 |
| 2026-03-?? | issue #33598 上报:"An LLM node error occurred regarding TextPromptMessageContent" |
| 2026-03-?? | issue #33640 上报:"LLM node throws PluginInvokeError: Unsupported atom data type" |
| 2026-03-?? | issue #33729 上报:"升级 v1.13.1 后 chatflow LLM 节点无法正常运行" |
| 2026-03-?? | PR #33666 提交并合入 main,同时 cherry-pick 到 1.13.2 分支 |
| 2026-03-21 | v1.13.2 发布,回归修复 |
复现方式:
- 升级至 v1.13.1
- 创建包含 LLM 节点的 Chatflow,系统提示词设为任意文本
- 调用该工作流 → 触发
PluginInvokeError: Unsupported atom data type (TextPromptMessageContent)
4. 💡 核心观点与结论
- 回归类型:重构导致的逻辑丢失(Refactor-induced regression),属于典型的"移动代码时遗漏条件分支"问题
- 影响评估:极高——任何部署了 LLM 节点的 Chatflow/Workflow 在升级 v1.13.1 后直接不可用
- 根本问题:抽取静态方法为独立函数时,缺乏充分的针对不同内容类型的回归测试
- 维护者应对:QuantumGhost 快速响应,补充了测试覆盖,版本周期内完成修复,体现了较强的紧急响应能力
5. 👥 影响人群与范围
- 全体 升级了 v1.13.1 的自托管用户
- 特别是使用了 LLM 节点(含系统提示)、问题分类器节点的 Chatflow/Workflow 场景
- Cloud 用户虽不选版本,也在此期间短暂受影响
6. 📈 当前状态
✅ 已在 v1.13.2 完全修复。建议所有停留在 v1.13.1 的用户立即升级至 v1.13.2。
7. 🔗 资源链接
- 触发回归的 PR:github.com/langgenius/…
- 修复 PR:github.com/langgenius/…
- 用户反馈 issue:github.com/langgenius/…
- 用户反馈 issue:github.com/langgenius/…
- v1.13.2 Release:github.com/langgenius/…
深入分析2:v1.13.1 安全修复全景
1. 📋 背景与问题描述
v1.13.1 是本月安全修复最集中的版本,共涵盖 4 类安全向量,分别针对 SQL 注入、SMTP 邮件头注入、越权访问(IDOR) 和 凭据残留。
2. 🛠 四类安全修复详解
A. SQL 注入 — 向量数据库查询路径(PR #33229)
漏洞路径:document_ids_filter 在 pgvector、tidb_vector、milvus 三个适配器中通过 f-string 直接插值到 SQL/过滤表达式中,若 document_ids_filter 值被攻击者控制,可执行任意 SQL。
修复方式:
| 适配器 | 修复手段 |
|---|---|
pgvector | search_by_vector、search_by_full_text 改为 %s 参数化占位符 |
tidb_vector | delete_by_ids、search_by_vector 改为 SQLAlchemy :named 绑定参数 |
milvus | search_by_vector、search_by_full_text 对 document ID 做输入 sanitize |
未完全修复的残余点:Gemini Code Assist 在 review 期间发现 tidb_vector 的 get_ids_by_metadata_field 方法中,key 参数(JSON 路径)仍然直接内插到 SQL 字符串。alvinttang 已确认需要补充修复,但 PR #33229 截至本周仍为 Open 状态,尚未合入 main。
⚠️ v1.13.1 release notes 声称修复了 SQL 注入,但 PR #33229 本身仍为 open。这意味着实际合入的可能是该 PR 的衍生版本或部分修改,或者 release 指的是更早的 #31946(MyScale)和 #28951(OceanBase)先例修复的延伸。tidb_vector
key参数注入残余风险仍存在。
复现条件:攻击者需能控制传入向量检索的 document ID 值(例如通过 API 调用知识库检索接口)。
B. HITL 邮件头注入 — SMTP Header Injection
漏洞路径:Human-in-the-Loop 节点通过邮件交付审核内容时,邮件 subject 和 body 未经处理直接传入 SMTP 发送逻辑。攻击者可在 subject 中注入 CR/LF(\r\n)字符,在 SMTP 协议层插入额外邮件头,实现邮件伪造。
修复内容(v1.13.1):
- 对 subject 和 body 执行内容 sanitize
- Strip subject 中的 CR/LF 字符,防止 SMTP header injection
- HITL 邮件内容改为 Markdown 渲染(Breaking Change)
攻击场景:仅在 HITL Email Delivery 功能开启的部署中有效;cloud 环境中的 email delivery 依赖 plan 限制。
C. 会话删除越权(IDOR)— Ownership Check
漏洞描述:会话删除 API 未强制验证请求者与会话 owner 的归属关系,可能允许低权限用户删除其他用户的会话数据。
修复:v1.13.1 中强制加入 ownership 验证逻辑。相关 PR #33840(DataSourceOauthBinding IDOR 修复,本周另有一个同类 PR)反映此类越权问题在代码库中存在系统性模式,需持续清查。
D. 插件卸载凭据残留
漏洞描述:卸载插件时,provider credentials(如 API Keys)未被清除,留在数据库中形成"凭据残留"(residual credentials)。
修复:v1.13.1 在插件卸载流程中新增清除 provider credentials 的步骤,减少凭据泄露窗口。
3. ⚙️ 影响范围汇总
| 安全问题 | 影响版本 | 修复版本 | 攻击可达性 |
|---|---|---|---|
| SQL 注入(pgvector/milvus 主要路径) | ≤1.13.0 | 1.13.1 | 中等(需控制 document_ids 参数) |
| tidb_vector key 参数注入(残余) | ≤1.13.1(?) | 未完全修复 | 中等 |
| SMTP 邮件头注入 | ≤1.13.0 | 1.13.1 | 低(需 HITL Email 开启) |
| 会话删除 IDOR | ≤1.13.0 | 1.13.1 | 中等(需多用户部署) |
| 插件凭据残留 | ≤1.13.0 | 1.13.1 | 低(物理访问 DB) |
4. 💡 核心观点与结论
- v1.13.1 是近期安全修复密度最高的版本,自托管用户应尽快升级至 v1.13.2(捆绑了 v1.13.1 所有安全修复)
- SQL 注入修复未完全闭合:tidb_vector
key参数残余风险确认存在,使用 TiDB 向量后端的部署需额外关注 - PR #31794(access token 退出后仍有效)仍未合入,安全漏洞独立于本次修复批次,停滞 8 周问题待解
5. 🔗 资源链接
- SQL 注入修复 PR:github.com/langgenius/…
- v1.13.1 Release Notes:github.com/langgenius/…
- v1.13.2 Release Notes:github.com/langgenius/…
- access token 安全 PR(停滞):github.com/langgenius/…
深入分析3:1.13.3 里程碑展望
1. 📋 背景
1.13.3 里程碑于 2026-03-16/17 由 QuantumGhost 创建,Due Date:2026-03-25(明天)。
当前进度:16% complete,Open 5 项、Closed 1 项。
2. 🛠 当前纳入的 Items
| # | 类型 | 标题 | 状态 | 优先级 |
|---|---|---|---|---|
| #30795 | Enhancement | Enhance non-image files display during agent runs | Open | 中(IthacaDream assigned) |
| #24224 | Bug | Dify reinitializes MCP session per tool call → multi-step tools fail | Open | 高(MCP 稳定性核心问题) |
| #30172 | Enhancement | Add optional "Headers" input to LLM node | Open | 中(scdeng assigned,9 条评论) |
| #33884 | PR | feat: change xread to xreadgroup | Open(review 中) | 中-高(基础设施) |
| #33881 | Enhancement | redis stream use xreadgroup instead of xread | Open | 联动 #33884 |
3. ⚙️ 核心 Items 分析
A. MCP Session 每次工具调用重新初始化(#24224)— 最高优先
这是 MCP 工具生态中影响最广的稳定性问题:每次工具调用都会重新建立 MCP session,导致:
browser_navigate→screenshot等多步操作中途断裂- 有状态的 MCP 工具(需要 session 连续性)完全无法使用
- Issue 开于 2025-08-20,在 1.13.3 被分配优先解决
这与 W12 追踪的 "MCP tool 504 Gateway Timeout" 场景有重叠,均指向 MCP 会话管理的基础设施缺陷。
B. Redis xreadgroup 迁移(#33884 + #33881)— 基础设施升级
技术背景:
- 现有
XREAD是"单播"读取,多个订阅者(如多标签页)可能漏读消息 XREADGROUPConsumer Group 提供可靠的多订阅者消费语义
Copilot 指出的关键设计问题:
每个订阅者创建独立 consumer group,而不是共享组。这违背了 consumer group 的设计初衷——多个消费者应共享同一个 group,由 Redis 分发消息;而独立 group 等于每个订阅者各自独立消费全量消息,丧失了共享状态的优势,且引入了额外的 group 管理开销。
fatelei 已 force-push 更新,但设计问题是否已解决尚待 review 确认。
C. LLM 节点可配置 Headers(#30172)— 功能增强
scdeng 于 2025-12-25 提出,希望在 LLM 节点中添加可选的 HTTP Headers 输入字段,支持在模型请求中自定义 headers(如 X-Custom-Auth、X-Priority 等)。这对接入需要自定义请求头的私有部署模型或企业代理非常有用。已分配给 scdeng,进展中。
4. 💡 核心观点与结论
⚠️ 1.13.3 极有可能 miss due date(明天 2026-03-25)
理由:
- 16% 完成率,5 项 open
- #33884(xreadgroup)仍在 review,Copilot 发现设计问题需要修改
- #24224(MCP session)是复杂基础设施改动,无活跃 PR
实际预测:
- v1.13.3 发布时间可能推迟至下周(2026-03-28 前后)
- 发布内容最可能包含:xreadgroup 迁移(#33884 核心变更)+ 若干小 bug fix
- MCP session # 24224 有可能滑入 next 里程碑
1.13.3 对用户的价值:
- xreadgroup 迁移将改善多标签页并发下的 SSE 可靠性(长期困扰 W12 SSE 断连的底层原因之一)
- LLM node Headers 支持私有/企业模型场景
5. 🔗 资源链接
- 1.13.3 里程碑:github.com/langgenius/…
- xreadgroup PR:github.com/langgenius/…
- MCP session bug:github.com/langgenius/…
- LLM node Headers:github.com/langgenius/…