进阶 📋 7 个步骤 第 424 / 470 篇

n8n 2.39.0 自托管升级实操:先补两个安全漏洞,再打开 Instance AI 记忆

n8n 2.39.0 自托管升级全流程:版本与漏洞对照、备份清单、升级与冒烟检查,以及 Instance AI 持久记忆、子代理沙箱共享与 source control API 三项新能力实操。

2026.09.14· 27 分钟阅读· 约 2232 字· 🔁 n8n / 🛡️ 安全补丁

2026 年 9 月 8 日,n8n 发布了 2.39.0(预发布)。这个版本值得单独写一篇教程,原因有两个:一是它顺手修掉了两个 HIGH 级安全漏洞,自托管用户应当尽快升;二是它给 Instance AI 补上了持久对话记忆,并让后台子智能体可以继承父智能体的工作区沙箱——这两条直接改变你能搭出什么样的工作流。下面按「先保命、再解锁新能力」的顺序走。

🎯 适合人群:自己跑 n8n 的运维/自动化开发者。默认你用的是 Docker / Docker Compose 自托管,能登服务器、能改 compose 文件。n8n Cloud 用户不用管升级,但新特性部分同样适用。

先理解:这个版本改了什么

把 2.39.0 的变更按「你该关心什么」重新排一下,比逐条读 release notes 有用:

变更实质影响优先级
修复 CVE-2026-86076(表达式沙箱逃逸)表达式编译器的清洗逻辑可被绕过,进而触达 Function 构造器,导致后端代码执行与编辑器预览中的 JS 执行高
修复 CVE-2026-86082(模型搜索端点域名限制缺失)OpenAI Chat Model 节点的模型下拉会绕过凭据的允许域名限制,把 API Key 发到任意主机(SSRF)高
Instance AI 持久对话记忆助手可以检索自己此前的会话、浏览整个工作区目录,不必每次从零解释中高
子智能体继承父智能体沙箱父 Agent 布置好的工作区状态,后台子智能体可直接沿用,不用再插节点传数据中高
公共 API 新增 source control 三端点push / pull / 状态查询,外部 CI 可在不开编辑器的情况下做 GitOps中
Anthropic 相关可靠性修复Agent 线程不再因单次运行报错永久损坏;错误在编辑器里保持可见中

Step 1:先判断你有没有暴露在漏洞下

1 对版本号,别猜

两个漏洞的修复版本是同一组:1.123.76、2.37.7、2.38.2。也就是说,只要你的版本低于这三条线中的对应分支,就属于受影响范围。

# 查当前版本(Docker 部署)
docker exec -it n8n n8n --version

# 或在宿主机上(npm / pnpm 安装)
n8n --version

# 看 compose 里锁的是哪个镜像 tag
grep -n "image:" docker-compose.yml

2.39.0 是预发布(pre-release)。如果你跑的是生产环境,稳妥做法是先把两个安全补丁所在的稳定版本线(2.38.2 / 2.37.7 / 1.123.76)升级到位,再评估是否跟进 2.39.0 的新特性。两件事别混在一次变更里做——出问题时你分不清是补丁还是新特性造成的。

Step 2:升级前的备份清单

2 三样东西必须先落盘
1. 数据库备份
   docker exec -t n8n-db pg_dump -U n8n n8n > n8n_backup_$(date +%Y%m%d).sql

2. 数据卷备份(包含加密密钥,丢了凭据全废)
   docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine \
     tar czf /backup/n8n_data_$(date +%Y%m%d).tar.gz -C /data .

3. 记录当前镜像 tag 与 compose 文件
   cp docker-compose.yml docker-compose.yml.bak
💡 第 2 步里的加密密钥最容易被忽略。n8n 用它加密所有已保存的凭据,卷丢了即使数据库还在,所有连接也解不开,只能一条条重填。

Step 3:执行升级

3 拉新镜像并重启
# 改 docker-compose.yml 里的镜像 tag
#   image: docker.n8n.io/n8nio/n8n:2.39.0

docker compose pull
docker compose up -d
docker compose logs -f n8n   # 观察迁移日志,等出现 "Editor is now accessible"

如果你的工作流用了 LDAP 节点,这个版本要优先升。2.39.0 给 LDAP 节点的 Custom Filter 字段加上了表达式输出转义,此前该字段存在注入路径。这类修复越早到位越好,因为它不需要你改任何配置。

Step 4:升级后的五分钟冒烟检查

4 六项逐个过一遍
□ 能登录编辑器,工作流列表完整
□ 打开一个复杂工作流,节点没有变成红色报错
□ 手动跑一个含表达式的工作流(重点验 Set / Code 节点)
□ 触发一个定时工作流,确认调度器正常
□ 调一次 AI 节点(OpenAI / Anthropic),确认凭据可用
□ 用到 Qdrant 的话,跑一次向量检索
   本版更新了 Qdrant 客户端并移除 undici v6 依赖,
   目的是恢复 Node 26 运行时下的 AI 请求兼容性
💡 本版还修了 Anthropic Chat Model 节点的两个问题:正确向供应商发送 disabled thinking,以及正确解析 content-block 输出。如果你之前遇到「Claude 节点返回空内容」,升完值得重测一次。

Step 5:打开 Instance AI 的持久记忆

5 让助手记住上一次是怎么说的

此前 Instance AI 的会话上下文在编辑器标签页关闭时就没了。2.39.0 给它补上两项能力:

1. 会话搜索
   助手能检索自己此前的会话,处理「以前见过的」工作流时
   可以直接取回上下文,不用你重新解释凭据布局与失败历史。

2. 工作区文件夹浏览
   助手的视野从「当前打开的工作流」扩展到整个工作区目录。

同一版本还新增了一个可选的并发上限,用来控制单个实例上同时运行多少个 Instance AI 任务,以及一个针对 AI 活动的分析报告模块。前者在多人都用助手时特别必要——否则一次误操作就能把实例打满。

工作区文件夹浏览是有代价的。助手的可读范围扩大后,工作区里任何明文存放的密钥、测试数据、客户样本都会进入它的可读面。上线前先做一遍清理:把不该被读到的文件移出工作区,或确认它们本身不含敏感信息。

Step 6:用子智能体沙箱共享改造父子工作流

6 少插几个传数据的节点

这是本版对「链式 Agent」工作流影响最大的改动。此前每个子智能体跑在各自隔离的上下文里,父 Agent 想把自己的工作区状态交给子 Agent,只能靠节点显式传递。现在后台子智能体继承父 Agent 的工作区沙箱:

改造前:
  父 Agent ──(写文件)──> 传递节点 ──(读文件)──> 子 Agent

改造后:
  父 Agent ──(布置工作区状态一次)──> 子 Agent 直接沿用

判断标准:如果你的父子工作流里,有一半节点只是为了
「把父级的中间结果喂给子级」,那就是这次改造的候选对象。

共享沙箱意味着共享状态,也就意味着共享风险。子智能体现在能直接改到父级看到的工作区。请为写操作设置明确边界:给子 Agent 只读或限定目录的权限,并在关键步骤后加一个校验节点,否则一次失败的子任务会污染整个工作流的状态。

Step 7:用 source control API 做 GitOps

7 让 CI 能在不开编辑器的情况下推拉工作流

公共 API 新增了三个 source control 端点:把项目 push 到 Git、从 Git pull、查询当前 source control 状态。编辑器侧也新增了一个 UI 控件,用来选择「哪些工作流变更要提升(promote)」。两者对应的是同一组操作。

典型 GitOps 闭环:
1. 开发者在 n8n 里改工作流
2. CI 通过 API 调「状态查询」,判断有无待提升变更
3. 通过 API 调「push」,把变更推到 Git 仓库
4. 代码评审 + 合并
5. 目标环境通过 API 调「pull」,把变更拉下来

这样外部流水线不必再人工打开 n8n 编辑器,
此前那个手工步骤正是 GitOps 断链的地方。
💡 顺带一提:本版还移除了 Code 节点里的「Ask AI」标签,AI 助手统一收口到 Instance AI。如果你有团队文档教大家在 Code 节点里用 AI,记得同步更新。另外 Databricks Chat Model 子节点已作为隐藏(特性开关)选项出现,正式可用后会成为 Databricks 托管模型进入 n8n 工作流的原生路径。

常见问题速查

你遇到的现象大概率原因 & 解决
升级后登录不进编辑器检查数据卷是否挂对;加密密钥缺失会导致凭据解密失败
Agent 线程跑一次报错后就废了这是 2.39.0 之前的已知问题,升级后错误会保持可见且线程可恢复
Claude 节点返回空内容本版修复了 content-block 解析,升级后重测
Node 26 下 AI 请求失败本版移除 undici v6 依赖并更新 Qdrant 客户端,升级即可
多人用助手时实例变慢打开 Instance AI 的并发上限,限制同时运行数
← 返回教程中心