n8n-validation-expert

n8n-validation-expert

热门

解释验证错误并指导修复。当遇到验证错误、验证警告、误报、操作符结构问题,或需要帮助理解验证结果时使用。也可在询问验证配置文件、错误类型、验证循环过程或自动修复功能时使用。每当 validate_node 或 validate_workflow 调用返回错误或警告时,请咨询此技能——它知道哪些警告是误报,哪些错误需要真正修复。

5825Star
981Fork
更新于 2026/7/16
SKILL.md
只读
名称
n8n-validation-expert
描述

解释验证错误并指导修复。当遇到验证错误、验证警告、误报、操作符结构问题,或需要帮助理解验证结果时使用。也可在询问验证配置文件、错误类型、验证循环过程或自动修复功能时使用。每当 validate_node 或 validate_workflow 调用返回错误或警告时,请咨询此技能——它知道哪些警告是误报,哪些错误需要真正修复。

n8n 验证专家

解释和修复 n8n 验证错误的专家指南。


验证理念

尽早验证,经常验证

验证通常是迭代的:

  • 预期验证反馈循环
  • 通常需要 2-3 次验证→修复循环
  • 平均:23 秒思考错误,58 秒修复错误

关键洞察:验证是一个迭代过程,而非一次性操作!


错误严重级别

1. 错误(必须修复)

阻止工作流执行 - 必须在激活前解决

类型

  • missing_required - 未提供必填字段
  • invalid_value - 值与允许的选项不匹配
  • type_mismatch - 数据类型错误(字符串而非数字)
  • invalid_reference - 引用的节点不存在
  • invalid_expression - 表达式语法错误

示例

{
  "type": "missing_required",
  "property": "channel",
  "message": "频道名称是必填项",
  "fix": "提供一个频道名称(小写,无空格,1-80 个字符)"
}

2. 警告(建议修复)

不阻止执行 - 工作流可以激活,但可能存在问题

类型

  • best_practice - 推荐但非必需——仅在 ai-friendly / strict 下出现
  • deprecated - 使用旧 API/功能——在每个配置文件下都出现
  • security - 硬编码密钥、未认证的 webhook——在每个配置文件下都出现
  • performance - 潜在性能问题——建议性,ai-friendly / strict

示例(最佳实践——在 ai-friendly / strict 下出现):

{
  "type": "warning",
  "nodeName": "Slack",
  "message": "Slack API 可能存在速率限制和瞬时故障"
}

3. 建议(可选)

锦上添花 - 可以改进工作流的优化

类型

  • optimization - 可以更高效
  • alternative - 实现相同结果的更好方法

验证循环

来自遥测数据的模式

7,841 次出现此模式:

1. 配置节点
   ↓
2. validate_node(23 秒思考错误)
   ↓
3. 仔细阅读错误消息
   ↓
4. 修复错误
   ↓
5. 再次 validate_node(58 秒修复)
   ↓
6. 重复直到有效(通常 2-3 次迭代)

示例

// 迭代 1
let config = {
  resource: "channel",
  operation: "create"
};

const result1 = validate_node({
  nodeType: "nodes-base.slack",
  config,
  profile: "runtime"
});
// → 错误:缺少 "name"

// ⏱️  23 秒思考...

// 迭代 2
config.name = "general";

const result2 = validate_node({
  nodeType: "nodes-base.slack",
  config,
  profile: "runtime"
});
// → 错误:缺少 "text"

// ⏱️  58 秒修复...

// 迭代 3
config.text = "Hello!";

const result3 = validate_node({
  nodeType: "nodes-base.slack",
  config,
  profile: "runtime"
});
// → 有效!✅

这是正常的! 不要因多次迭代而气馁。


验证配置文件

四个配置文件是累积的(n8n-mcp ≥ 2.63.0):每个配置文件都会显示比前一个更多的内容。分界线是最佳实践建议——minimalruntime 不显示它们;ai-friendlystrict 会添加它们。错误在所有配置文件中相同,除了 minimal 跳过一些配置级检查(例如对显式 operation 的枚举验证)。安全性和弃用警告在每个配置文件下都会显示。

minimal

何时使用:在连接工作流时进行快速结构检查。

显示:会阻止执行的硬错误(缺少必填字段、空代码、断开的连接)。跳过枚举检查和所有建议。

最快且最宽松。

runtime(推荐默认)

何时使用:在构建过程中进行持续验证;日常使用的配置文件。

显示:错误(必填字段、值类型、允许的值、依赖项、断开的引用)以及安全性和弃用警告。不包含最佳实践建议。

平衡——捕获所有会破坏工作流的问题,对风格保持沉默。

ai-friendly

何时使用:在部署前希望获得最佳实践建议。

显示runtime 的所有内容,加上最佳实践建议——每个节点的“无错误处理”建议、“webhook 应始终发送响应”、速率限制说明、过时的 typeVersion 建议、cachedResultName 和长链提示。

注意ai-friendlyruntime 更严格,而非更宽松。(旧文档描述它减少了误报——那仅在配置文件门控损坏时成立;现已修复。)

strict

何时使用:强化生产关键工作流。

显示ai-friendly 的所有内容,加上剩余属性检查(“属性 'X' 不会被使用——在当前设置下不可见”)。

最大程度检查。 随着误报在源头被修复,其警告是需要权衡的建议,而非需要对抗的噪音。


常见错误类型

五种核心错误类型,按频率大致排序:

  • missing_required — 未提供必填字段。使用 get_node 查看必填字段,然后添加。
  • invalid_value — 值与允许的选项不匹配(枚举区分大小写)。检查错误的允许列表或 get_node
  • type_mismatch — 数据类型错误(字符串 "100" 与数字 100)。转换为预期类型。
  • invalid_expression — 表达式语法错误(缺少 {{}}、拼写错误)。请参阅 n8n 表达式语法技能。
  • invalid_reference — 引用的节点不存在(已重命名、删除或拼写错误)。修复名称或使用 cleanStaleConnections

第六类,patchNodeField 错误(未找到、模糊匹配、无效/不安全的正则表达式),在 n8n_update_partial_workflow 期间 patchNodeField 操作失败时出现——它设计上很严格,会报错而不是静默继续。

上述每种类型都有工作示例(错误配置→修复),以及 patchNodeField 错误案例及其修复,详见 ERROR_CATALOG.md


自动清理系统

在任何工作流更新时自动规范化常见的操作符结构——n8n_create_workflown8n_update_partial_workflow 或任何保存操作。请信任它;不要手动修复这些。

保存时规范化的内容

  • 二元操作符(equals、notEquals、contains、notContains、greaterThan、lessThan、startsWith、endsWith)——移除多余的 singleValue 属性。
  • 一元操作符(isEmpty、isNotEmpty、true、false)——添加 singleValue: true
  • IF/Switch 元数据——为 IF v2.2+ 和 Switch v3.2+ 填充 conditions.options

验证不再对这些形状报错(n8n-mcp ≥ 2.63.0)。n8n 从操作符名称派生一元性,并默认 conditions.options 子字段,因此 validate_node / validate_workflow 接受条件,无论 singleValue 和选项元数据是否存在——清理器仅在保存时整理规范形式。(旧服务器错误地对未规范化的形状报错;如果看到这种情况,请升级。)仍然真正错误的情况:v2 节点上的 v1 形状的 conditions 对象、没有条件的空过滤器,以及 v2 结构中的旧版 v1 操作符名称(例如 smaller)。

清理器无法修复的内容(手动处理):连接到不存在节点的断开的连接(使用 cleanStaleConnections)、分支计数不匹配(添加/删除连接或规则),以及矛盾的损坏状态(可能需要手动数据库干预)。

前后示例和完整的无法修复细节见 ERROR_CATALOG.md(自动清理部分)。


误报

验证器重写(n8n-mcp ≥ 2.63.0)移除了经典的误报——表达式中的模板字面量、可选链、省略操作默认值、Webhook → Respond-to-Webhook 模式、IF/Filter 旧版形状等不再触发。没有固定的“已知误报忽略列表”。

剩下的最佳实践建议(仅在 ai-friendly / strict 下显示)标记了真实的权衡,但在你的情况下可能是可接受的。并非每条建议都需要修复——许多取决于上下文。常见的建议以及何时可接受与值得修复:

  • "...无错误处理" — 对于开发/测试和非关键通知可以接受;对于处理重要数据的生产环境需要修复。(绝不是硬错误——风格不会阻止执行。)
  • "无重试逻辑" — 对于幂等操作、自带重试的 API、手动触发器可以接受;对于不稳定的外部服务和生产自动化需要修复。
  • "...速率限制和瞬时故障" — 对于内部/低流量/服务端限制的 API 可以接受;对于公共、高流量 API 需要修复。
  • "无界查询" — 对于小型已知数据集、聚合、开发/测试可以接受;对于大型表的生产查询需要修复。

相比之下,安全性和弃用警告在每个配置文件下都会显示,应视为真实问题。

完整的逐案例指导、验证器不再标记的内容列表、配置文件策略、“我应该修复这个吗?”决策框架,以及如何记录已接受建议,详见 FALSE_POSITIVES.md


验证结果结构

完整响应

{
  "valid": false,
  "errors": [
    {
      "type": "missing_required",
      "property": "channel",
      "message": "频道名称是必填项",
      "fix": "提供一个频道名称(小写,无空格)"
    }
  ],
  "warnings": [
    {
      "type": "best_practice",
      "property": "errorHandling",
      "message": "Slack API 可能存在速率限制",
      "suggestion": "添加 onError: 'continueRegularOutput'"
    }
  ],
  "suggestions": [
    {
      "type": "optimization",
      "message": "考虑对多条消息使用批量操作"
    }
  ],
  "summary": {
    "hasErrors": true,
    "errorCount": 1,
    "warningCount": 1,
    "suggestionCount": 1
  }
}

如何阅读

  1. 首先检查 validtrue 表示配置有效;false 表示存在需要在部署前修复的错误。
  2. 首先修复 errors — 每个错误都带有 propertymessagefix。这些必须解决。
  3. 审查 warnings — 每个警告都有 messagesuggestion;根据具体情况决定是否处理(参见上面的误报)。
  4. 考虑 suggestions — 可选的改进,非必需。

工作流验证

validate_workflow(结构)

验证整个工作流,而不仅仅是单个节点

检查项

  1. 节点配置 - 每个节点有效
  2. 连接 - 无断开的引用
  3. 表达式 - 语法和引用有效
  4. 流程 - 逻辑工作流结构

示例

validate_workflow({
  workflow: {
    nodes: [...],
    connections: {...}
  },
  options: {
    validateNodes: true,
    validateConnections: true,
    validateExpressions: true,
    profile: "runtime"
  }
})

常见工作流错误

1. 断开的连接
{
  "error": "从 'Transform' 到 'NonExistent' 的连接 - 目标节点未找到"
}

修复:移除过时的连接或创建缺失的节点

2. 循环(警告,非错误)
{
  "warning": "工作流包含循环:节点 A → 节点 B → 节点 A"
}

循环是一个警告,而非硬错误(n8n-mcp ≥ 2.63.0)——运行时控制的循环(错误重试、数据驱动分页、反馈给路由器的节点)会执行完成,是合法的。仅当循环是无意的时才修复:确保循环有真正的退出条件(条件节点、错误输出或有界计数器),以免无限循环。

3. 多个起始节点
{
  "warning": "找到多个触发器节点 - 只有一个会执行"
}

修复:移除多余的触发器或拆分为单独的工作流

4. 未连接的节点
{
  "warning": "节点 'Transform' 未连接到工作流流程"
}

修复:连接节点,如果未使用则移除


恢复策略

策略 1:重新开始

何时使用:配置严重损坏

步骤

  1. get_node 记录必填字段
  2. 创建最小的有效配置
  3. 逐步添加功能
  4. 每次添加后验证

策略 2:二分查找

何时使用:工作流验证通过但执行不正确

步骤

  1. 移除一半节点
  2. 验证并测试
  3. 如果工作正常:问题在移除的节点中
  4. 如果失败:问题在剩余的节点中
  5. 重复直到问题隔离

策略 3:清理过时连接

何时使用:出现“节点未找到”错误

步骤

n8n_update_partial_workflow({
  id: "workflow-id",
  operations: [{
    type: "cleanStaleConnections"
  }]
})

策略 4:使用自动修复

何时使用:验证错误可以自动解决

步骤

// 预览修复(默认 - 不应用)
n8n_autofix_workflow({
  id: "workflow-id",
  applyFixes: false,
  confidenceThreshold: "medium"  // high, medium, low
})

// 审查修复,然后应用
n8n_autofix_workflow({
  id: "workflow-id",
  applyFixes: true
})

自动修复能力

n8n_autofix_workflow 工具可以修复以下问题类型:

  1. expression-format - 表达式中缺少 = 前缀(例如,{{ $json.field }}={{ $json.field }}
  2. typeversion-correction - 降级具有不受支持的 typeVersion 的节点
  3. error-output-config - 移除冲突的 onError 设置
  4. node-type-correction - 使用相似度匹配修复未知节点类型(90%+ 置信度)
  5. webhook-missing-path - 为缺少路径配置的 webhook 节点生成 UUID
  6. typeversion-upgrade - 智能升级到最新节点版本并自动迁移
  7. version-migration - 针对需要手动步骤的复杂破坏性变更的指导

置信度级别high(90%+,安全自动应用)、medium(70-89%,建议审查)、low(<70%,需要手动审查)

// 预览所有修复
n8n_autofix_workflow({id: "workflow-id"})

// 仅应用高置信度修复
n8n_autofix_workflow({
  id: "workflow-id",
  applyFixes: true,
  confidenceThreshold: "high"
})

// 针对特定修复类型
n8n_autofix_workflow({
  id: "workflow-id",
  fixTypes: ["expression-format", "typeversion-upgrade"],
  applyFixes: true
})

更新后指导:对于版本升级,请检查响应中的 postUpdateGuidance 字段,获取逐步迁移说明。


最佳实践

✅ 应该做

  • 每次重大更改后验证
  • 完整阅读错误消息
  • 迭代修复错误(一次一个)
  • 部署前使用 runtime 配置文件
  • 在假设成功前检查 valid 字段
  • 信任操作符问题的自动清理
  • 对要求不清楚时使用 get_node
  • 记录你接受的误报

❌ 不应该做

  • 在激活前跳过验证
  • 试图一次性修复所有错误
  • 忽略错误消息
  • 在开发期间使用 strict 配置文件(太嘈杂)
  • 假设验证通过(始终检查结果)
  • 手动修复自动清理问题
  • 部署未解决的错误
  • 忽略所有警告(有些很重要!)

审查现有工作流

在构建过程中验证(上面的循环)用于捕获你自己进行中的工作中的模式和形状错误。审查现有工作流——你自己的或别人交给你的——是另一项工作:工作流已经通过 validate_workflow 检查,你在寻找验证看不到的问题(静默连接错误、易注入的查询、丢弃项目的 Switch、Set/Code 反模式、缺失的错误路径)。为此,使用 n8n_get_workflow 拉取工作流,然后浏览 REVIEW_CHECKLIST.md——一个按严重级别分层的审计(必须修复 / 建议修复 / 锦上添花),其中每个项目都指向修复的规范技能。同时运行 n8n_audit_instance 以发现整个实例中的硬编码密钥和未认证的 webhook。


详细指南

有关全面的错误目录、误报和工作流审查:


总结

关键点

  1. 验证是迭代的(平均 2-3 个循环,23 秒 + 58 秒)
  2. 错误必须修复,警告是可选的
  3. 自动清理在保存时规范化操作符结构;验证不再对原始形状报错
  4. 默认使用 runtime 配置文件;升级到 ai-friendly/strict 以获取最佳实践建议
  5. 经典误报已修复(≥ 2.63.0)——剩余的警告是建议或安全/弃用通知,而非验证器错误
  6. 阅读错误消息 - 它们包含修复指导

验证过程

  1. 验证 → 阅读错误 → 修复 → 再次验证
  2. 重复直到有效(通常 2-3 次迭代)
  3. 审查警告并决定是否可接受
  4. 自信部署

相关技能和工具

  • n8n MCP 工具专家 - 正确使用验证工具
  • n8n 表达式语法 - 修复表达式错误
  • n8n 节点配置 - 了解必填字段
  • n8n_audit_instance - 主动安全验证(硬编码密钥、未认证的 webhook、缺失错误处理、数据保留)