关于 n8n-architect
面向 n8n-as-code 工作的技能,指导通过 n8nac 配置环境、编写和校验工作流,并与 n8n 同步。它还规定本地实例和隧道的使用流程及安全边界。
主要功能
- 01工作区与环境就绪检查
- 02管理本地实例与隧道
- 03工作流编写、校验与测试
- 04工作流拉取、推送与冲突处理
- 05按节点架构查询参数
适用场景
- 01配置远程或托管本地 n8n 环境
- 02创建并校验工作流
- 03同步工作流文件与实例
- 04排查同步冲突或节点参数
MCP 相关
README 提到 n8n-as-code MCP 服务是 n8nac 工具的客户端适配器;原生 n8n MCP 则连接到单独的实时 n8n 实例。两者可辅助工作流,但不能替代 n8nac 与其同步流程。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ etiennelescot/ n8n-as-code --skill n8n-architect安装后在 Claude Code 中输入/n8n-architect确认已加载。
详细介绍
n8n 架构师
所有 n8n-as-code 工作都使用此技能:工作区就绪检查、环境管理、本地托管实例、隧道、工作流编写、验证、同步、推送和拉取。
优先使用 npx --yes n8nac 作为主要接口。仅在 n8n-manager 明确提供相关命令时,才使用 npx --yes @n8n-as-code/n8n-manager 执行本地托管运行时生命周期管理、隧道和工作流展示命令。
上下文根目录协议
- 将当前上下文根目录视为包含
n8nac-config.json、AGENTS.md、.agents/skills和已配置workflowsPath的目录。 - 生成的上下文根目录提示:未嵌入。使用启动 shell 时所在的目录,或用户明确指定的工作区路径。
- 进行任何 n8n 工作之前,先从上下文根目录运行
npx --yes n8nac update-ai,然后读取AGENTS.md。update-ai旨在创建或刷新 n8n-as-code 区块,同时不破坏现有的用户或 Agent 指令。 - 使用
AGENTS.md中列出的确切n8nac command和n8n-manager command。这些上下文根目录命令优先于本技能中的通用示例。 - 除非用户明确指定其他上下文根目录,否则所有
npx --yes n8nac env ...、npx --yes n8nac workspace ...、npx --yes n8nac list、pull、push、validate、test和update-ai命令都必须从上下文根目录运行。 AGENTS.md仅用于引导初始化,不是配置事实来源。- 不要根据
AGENTS.md推断环境、项目或workflowsPath。 - 进行 n8n 工作之前,先从后端解析有效上下文:
npx --yes n8nac env status --json
- 使用返回的
workflowsPath存放工作流文件。这是当前环境配置的工作流目录。 - 不要根据环境名称或 ID、
instanceIdentifier、instanceUserIdentifier、projectId、projectName或旧版同步字段重新构造workflowsPath。 - 绝不要手动写入
n8nac-config.json、~/.n8n-manager或 n8n-manager 密钥文件。
工作区就绪状态
进行工作流相关工作之前,先通过后端解析有效环境:
npx --yes n8nac env status --json
- 将
env status --json视为有效工作区就绪状态的事实来源。 - 不要根据原始文件、生成的 Agent 文档或目录名称推断就绪状态。
- 首次使用时,如果工作区
.env中含有N8N_HOST(以及N8N_API_KEY、N8N_NATIVE_MCP_URL、N8N_NATIVE_MCP_TOKEN中的任意项),则会配置default环境:此时env status --json会直接解析成功,无需运行env add、env auth set、env use或native-mcp configure。 - 如果
env status --json因工作区尚未配置而失败,请使用env add、env auth set和env use创建或选择一个 V4 工作区环境。 - 本地托管实例仍是机器级的运行时资源。
- 工作区环境仍限定于工作区范围内,并通过
npx --yes n8nac env ...管理。
初始化顺序
cd到上下文根目录。- 运行
npx --yes n8nac update-ai,然后读取AGENTS.md。 - 运行
npx --yes n8nac env status --json。如果解析结果为accessStatus: "ready",则工作区已就绪——跳过第 4-9 步。如果解析结果为missing-api-key或invalid-api-key,则仅表示缺少凭据:转到第 7 步。 - 如果上下文根目录尚未就绪,请使用
npx --yes @n8n-as-code/n8n-manager instance list检查本地托管实例。 - 在适用时,复用现有环境或本地托管实例。
- 如果没有合适的环境,请停止并询问用户是否要连接远程 n8n URL,或创建/复用本地托管 n8n 实例。默认不要创建基础设施。如果用户选择本地托管实例,请另外询问他们是否需要公共隧道。
- 仅当明确选择远程 n8n 环境时,才询问主机地址/API 密钥。
- 使用以下命令配置环境:
npx --yes n8nac env add <name> --base-url <url> --workflows-path workflows/<name>
npx --yes n8nac env auth set <name> --api-key-stdin
npx --yes n8nac env use <name>
对于本地托管实例:
npx --yes n8nac env add Local --managed-instance <id> --workflows-path workflows/local
npx --yes n8nac env use Local
- 更改环境后,如果 facade 未自动执行,请运行
npx --yes n8nac update-ai。
环境
使用 npx --yes n8nac env ... 管理工作区环境、远程 URL、当前活动环境、API 密钥绑定、项目和工作流路径。
npx --yes n8nac env status --json
npx --yes n8nac env list
npx --yes n8nac env add <name> --base-url <url> --workflows-path workflows/<name>
npx --yes n8nac env auth set <name> --api-key-stdin
npx --yes n8nac env use <name>
- API 密钥优先使用
--api-key-stdin。 - 创建并固定默认环境时,优先使用
env add --pin,在一个流程中完成,而不是另外运行env use。 - 不要在 shell 参数中直接传递密钥。
env auth set会将密钥绑定到一个环境,因此多个环境可以共用一个基础 URL,每个环境各用一个密钥。每个环境运行一次;如果环境使用自己的密钥,env status --json中的apiKeySource为workspace-environment。- 如果用户需要的是托管式本地 Docker 实例,不要询问主机地址或 API 密钥。
- 不要向用户显示 API 密钥或凭据密钥值。
- 如果不熟悉某个命令或标志,请运行
npx --yes n8nac env --help或npx --yes n8nac env <subcommand> --help。
使用 npx --yes n8nac env ... 将托管式本地实例连接到工作区:
npx --yes n8nac env add Local --managed-instance <id> --workflows-path workflows/local
npx --yes n8nac env use Local
托管式本地运行时
仅在管理本地托管实例的生命周期、隧道,以及属于本地运行时层的工作流展示命令时,使用 npx --yes @n8n-as-code/n8n-manager。
更改本地机器状态前,先检查现有的托管实例:
npx --yes @n8n-as-code/n8n-manager instance list
npx --yes @n8n-as-code/n8n-manager instance --help
npx --yes @n8n-as-code/n8n-manager config get
不要臆造 n8n-manager 子命令。不确定时,运行 npx --yes @n8n-as-code/n8n-manager <subcommand> --help。
如果尚未配置上下文根目录,且没有合适的现有实例,请停止并询问用户如何选择。默认情况下不要创建基础设施。
清楚地列出以下选项:
- 如果有可用的现有托管式本地实例,则使用该实例;
- 创建新的托管式本地 n8n 实例;
- 通过
npx --yes n8nac env将远程 n8n URL 配置为工作区环境。
如果用户选择托管式本地 Docker 实例,请单独询问是否需要隧道:
- 不使用公共隧道:仅运行本地 n8n,适用于常规 UI/API 工作流操作;
- 使用公共隧道:通过公共 URL 暴露实例,适用于 Webhook/表单/聊天触发器和远程回调。
除非用户明确要求公共访问、测试 Webhook,或批准使用隧道,否则不要启用、刷新或启动公共隧道。如果不需要公共访问,请在不使用 --tunnel 的情况下创建/启动托管实例。
只有在用户明确选择相应选项后,才能运行以下命令。
不使用公共隧道的托管式本地实例:
npx --yes @n8n-as-code/n8n-manager instance create
npx --yes @n8n-as-code/n8n-manager instance start <id>
npx --yes @n8n-as-code/n8n-manager instance list
使用公共隧道的托管式本地实例:
npx --yes @n8n-as-code/n8n-manager instance create
npx --yes @n8n-as-code/n8n-manager instance start <id>
npx --yes @n8n-as-code/n8n-manager tunnel start <id>
实例和隧道操作针对各个托管式本地实例分别进行:
npx --yes @n8n-as-code/n8n-manager instance start <id>
npx --yes @n8n-as-code/n8n-manager instance stop <id>
npx --yes @n8n-as-code/n8n-manager instance remove <id>
npx --yes @n8n-as-code/n8n-manager tunnel start <id>
npx --yes @n8n-as-code/n8n-manager tunnel stop <id>
- 除非用户明确要求进行破坏性删除,否则不要删除本地实例数据。
- 如果 Docker 不可用或守护进程已停止,请报告后端诊断信息并停止。不要循环重试。
- 如果命令反复失败,最多尝试两次,然后停止并说明后端诊断信息。
同步规范
- 读取或修改现有工作流前,先拉取。
- 每次修改后都要推送。
- 使用
list查看工作流 ID、文件路径和同步状态。
npx --yes n8nac list
npx --yes n8nac pull <workflowId>
npx --yes n8nac push <path-to-workflow.workflow.ts> --verify
push需要完整的工作流文件路径,可以是绝对路径,也可以相对于上下文根目录。不要只传文件名。- 在 n8n 2.x 上,推送已发布的工作流也会将其发布到生产环境——API 会在更新时重新发布。将每次对已发布工作流的推送都视为部署。如果用户想先在 n8n 中检查更改,请使用
push --draft:它会重新固定之前发布的版本,让生产环境继续运行当前版本。 - 对于新工作流,请在
env status --json返回的workflowsPath中创建文件,然后使用npx --yes n8nac list --local确认。 - 如果
push或pull报告冲突,请使用明确的冲突解决命令。不要盲目覆盖远程更改。 pull和冲突解决操作一次只针对一个工作流 ID。list是可一次检查所有工作流的轻量级命令。- 如果跳过
pull,之后的push可能会因远程内容已更改而被乐观并发控制拒绝。
冲突处理
如果 push 或 pull 报告冲突,请停止操作并检查冲突。选择预期方向后,再使用明确的冲突解决命令:
npx --yes n8nac resolve <workflowId> --mode keep-current
npx --yes n8nac resolve <workflowId> --mode keep-incoming
keep-current会强制推送本地版本。keep-incoming会强制拉取远程版本。- 切勿在不提示的情况下强制推送并覆盖远程更改。
先查架构再操作
切勿猜测 n8n 节点参数。
npx --yes n8nac skills examples search "<workflow pattern>"
npx --yes n8nac skills search "<node or capability>"
npx --yes n8nac skills node-info <nodeName>
npx --yes n8nac skills validate <workflow.workflow.ts>
- 批量查询节点:使用
npx --yes n8nac skills node-info <node1> <node2> ... --compact在一条命令中查询多个节点,以便在快速且节省令牌的操作中检查必要属性、必填参数和有效选项。 - 使用
node-info返回的准确节点type和有效的typeVersion值。 - 使用架构输出中的准确资源、操作、选项和参数名称。
resourceLocator类型的参数必须采用{ __rl: true, value: '...', mode: 'list' | 'id' | 'url' }结构。- 不要臆造参数、操作、凭据类型或 CLI 标志。
- 即使示例或记忆与架构输出不一致,也要将架构输出视为绝对依据。
- 优先使用架构输出返回的最高有效
typeVersion。 - 对于 Switch/If 规则、Wait 表单字段或嵌套选项等固定集合,写入值前请先阅读完整的
node-info输出。
可选的原生 n8n MCP 辅助功能
n8n-as-code MCP 服务是 N8NAC 工具的客户端适配器。原生 n8n MCP 服务是单独的实时 n8n 实例端点。原生 n8n MCP 可以在原生知识、实时状态和运行时执行方面辅助此工作流,但不能替代 npx --yes n8nac、内置知识、.workflow.ts、Git 或同步规范。
请按以下路由策略操作:
- 默认使用本地
npx --yes n8nac进行代码优先的工作流编写、验证、拉取、推送、凭据管理、执行历史查看和展示。将npx --yes n8nac skills用作内置离线知识的默认来源。 - 原生 MCP 辅助功能按 n8n-as-code 环境配置。创建或更新环境时,提供使用
npx --yes n8nac native-mcp configure <environment> --token-stdin进行配置的选项;不要要求用户为 Claude Code 或 VS Code Workbench 手动配置单独的 MCP 服务。 - 如果已配置原生 MCP 辅助功能,可在与 n8n-as-code 相辅相成的场景中使用它:只读实时发现、服务端验证、原生 SDK/参考知识、实时节点定义、不含密钥的凭据元数据、执行检查、项目、文件夹,以及受支持时的明确运行时执行/测试策略。
- 依赖原生工具之前,先使用
npx --yes n8nac native-mcp status --include-tools --json检查原生功能是否可用。 - 对于用户关于当前/实时 n8n 实例、现有远程工作流、此实例中可用的节点、凭据元数据、项目、文件夹、执行记录、偏差或重复项发现的请求,在检查状态后优先使用原生 MCP 只读工具。当原生 MCP 只读工具可用时,不要将本地
npx --yes n8nac list、fetch、verify或内置skills作为获取这些实时审计事实的主要来源。 - 除非 MCP 传输已通过身份验证,且已明确设置
N8NAC_NATIVE_MCP_ALLOW_REMOTE=1,否则不要通过非回环 HTTP/SSE 传输暴露原生 MCP 辅助功能。 - 除非用户明确需要执行负载数据,且已设置
N8NAC_NATIVE_MCP_ALLOW_EXECUTION_DATA=1,否则不要使用includeData=true请求完整的实时执行负载。 - 如果执行策略是测试真实的 webhook、chat 或 form 触发器契约,优先使用
npx --yes n8nac test。 - 仅当生成的执行策略明确要求使用原生运行时执行,且它比
npx --yes n8nac test更合适时,才优先使用原生运行时执行,例如按工作流 ID 执行、测试非 webhook 工作流、准备原生固定数据测试,或直接进行执行诊断。 - 将原生执行/测试视为会产生副作用的运行时操作,与
npx --yes n8nac test一样;不要仅仅因为存在此工具就运行它。 - 除非用户明确请求直接原生 MCP 模式,且该工具受权限控制,否则不要使用原生 MCP 创建、更新、发布、取消发布、归档或破坏性数据表工具。
- 如果通过原生 MCP 直接模式创建或更改了工作流,请立即使用
npx --yes n8nac pull <workflowId>将其拉回,以确保.workflow.ts文件和 Git 仍是事实来源。 - 如果原生 MCP 验证与本地验证结果不一致,请停止操作并报告差异,不要强行推送或直接更新。
- 切勿将原生 MCP 令牌放入项目文件、生成的文档、命令参数或回复中。
用例路由示例:
- 工作流的编写、编辑、拉取、推送、同步、凭据管理和持久化变更:使用本地
npx --yes n8nac命令和.workflow.ts文件。 - 离线节点知识、示例、文档和以架构为先的编写:优先使用本地
npx --yes n8nac skills命令。 - 实时工作流发现、漂移调查、项目、文件夹、凭据元数据、重复项发现和执行检查:已配置时优先使用原生 MCP 只读工具,因为用户询问的是当前实例状态。
- 已连接版本的节点定义或服务端验证:当用户询问此实例中有哪些内容,或需要针对已连接的 n8n 版本进行验证时,优先使用原生 MCP 只读工具。如果无需实时实例状态,则使用内置知识进行离线编写。
- 运行时执行:对于真实的 webhook、聊天或表单触发器契约,优先使用
npx --yes n8nac test;仅在明确要求按工作流 ID 执行、进行非 webhook 测试、准备原生固定数据或直接诊断执行问题时,才优先使用原生运行时执行。 - 直接创建、更新、发布、取消发布、归档原生工作流或执行破坏性操作:不要将其作为自动操作路径;必须获得明确的直接原生操作请求,并制定回同步计划。
不要将存在任何 MCP 服务视为可以调用原生 n8n MCP 工具的许可。只有在生成的执行或调查策略需要本地 N8NAC 同样无法提供的实时 n8n 功能时,才使用原生 n8n MCP。
原生 MCP 辅助是知识、实时状态和运行时增强的补充路径,而不是主要的编写或同步路径。
知识命令
如果你的运行时提供 n8n-as-code MCP 工具(search_n8n_knowledge、get_n8n_node_info、
search_n8n_workflow_examples、validate_n8n_workflow),请优先使用它们,而非以下命令。
它们通过常驻进程提供答案,该进程只解析一次本体,因此首次调用后的每次调用几乎不产生开销;而每条 shell 命令都需要重新启动进程。
否则,请使用以下命令,而不要猜测:
npx --yes n8nac skills search "<node or capability>"
npx --yes n8nac skills node-info <nodeName>
npx --yes n8nac skills node-schema <nodeName>
npx --yes n8nac skills docs "<topic>"
npx --yes n8nac skills guides "<topic>"
npx --yes n8nac skills examples search "<workflow pattern>"
npx --yes n8nac skills examples info <id>
npx --yes n8nac skills examples download <id>
- 在
search、node-info和node-schema中优先使用--compact:架构相同,输出有界(必需参数 + 代码片段 + 门控标志)。 - 优先使用一次
batch --compact,而不是分 N 次单独查询:一个进程只解析一次本体。传入--calls '<json>'、--calls-file <path>(文件可避免 shell 引号转义),或通过标准输入传入 JSON。--compact适用于search、node-info、node-schema;examples-search和examples-info始终返回完整工作流数据。示例:npx --yes n8nac skills batch --compact --calls '[{"cmd":"search","query":"gmail"},{"cmd":"node-info","name":"gmailTool"}]'。 - 一次查询多个节点时,
node-info和node-schema也支持直接接收多个名称:npx --yes n8nac skills node-info <node1> <node2> ... --compact。 - 当用户询问常见自动化模式时,从
examples search开始。 - 只有在不知道如何连接某项内容、工作流异常复杂,或用户明确提出要求时,才获取社区示例。每次下载都需要完整的往返操作:对于常规任务,本地知识(
search、node-info、batch)速度更快,且更具权威性。其他情况下跳过示例。 - 使用示例来了解模式,不要将其作为当前节点架构的权威依据。
- 如果不熟悉某条命令或标志,请运行
npx --yes n8nac <subcommand> --help;不要自行编造标志。
工作流编写规则
- 使用
@n8n-as-code/transformer中的 TypeScript 装饰器。 - 常规节点通过
source.out(0).to(target.in(0))连接。 - AI 子节点通过
.uses()连接,绝不要使用.out().to()。 ai_tool和ai_document连接是数组:ai_tool: [this.Tool.output]。- 其他 AI 连接类型是单个引用,例如
ai_languageModel: this.Model.output。 - 如果节点公开了多个相同类型的输入,也可以传入数组,其中位置就是输入索引:
ai_languageModel: [this.Model.output, this.FallbackModel.output](备用模型、Model Selector)。 - 声明
.uses()连接前,请先查看node-info,确认是否有依赖连接的布尔标志。
每个 .workflow.ts 文件都以 <workflow-map> 块开头。先阅读该映射,找到所需的属性名,然后只阅读相关的类部分。
最精简的工作流结构
import { workflow, node, links } from '@n8n-as-code/transformer';
@workflow({
name: 'Workflow Name',
active: false
})
export class MyWorkflow {
@node({
name: 'Descriptive Name',
type: '/* exact type from node-info */',
version: 4,
position: [250, 300]
})
MyNode = {
/* parameters from node-info */
};
@node({
name: 'Next Node',
type: '/* exact type from node-info */',
version: 3,
position: [520, 300]
})
NextNode = {};
@links()
defineRouting() {
this.MyNode.out(0).to(this.NextNode.in(0));
}
}
表达式语法
- 优先使用现代表达式:
{{ $json.fieldName }}。 - 必要时使用特定节点表达式:
{{ $('Node Name').item.json.field }}。 - 除非你是在保留现有工作流且有充分理由,否则避免使用旧版
$node["Name"].json.field。 - 在 Switch/If 比较中,
value1是要计算的表达式,value2是字面比较值。
节点命名
- 使用描述性名称,例如
Get Customers、Send Slack Alert或Normalize Payload。 - 如果有更具体的名称,请避免使用
Node1、HTTP Request或Code这类名称。 - 连接引用必须与 TypeScript 类中的节点属性名完全一致。
高效读取工作流文件
加载大型工作流文件前,请先将 <workflow-map> 块用作索引。
// <workflow-map>
// Workflow : My Workflow
// Nodes : 12 | Connections: 14
//
// NODE INDEX
// Property name Node type (short) Flags
// ScheduleTrigger scheduleTrigger
// AgentGenerateApplication agent [AI] [creds]
// OpenaiChatModel lmChatOpenAi [creds] [ai_languageModel]
// Memory memoryBufferWindow [ai_memory]
// GithubCheckBranchRef httpRequest [onError->out(1)]
//
// ROUTING MAP
// ScheduleTrigger
// -> Configuration
// -> BuildProfileSources -> LoopOverProfileSources
//
// AI CONNECTIONS
// AgentGenerateApplication.uses({ ai_languageModel: OpenaiChatModel, ai_memory: Memory })
// </workflow-map>
导航规则:
- 先阅读
<workflow-map>。 - 找到所需的属性名。
- 在文件中搜索该属性。
- 仅阅读相关节点或路由部分,除非需要更广泛的上下文。
AI 和 LangChain 节点规则
AI 子节点不是常规数据流节点。
@links()
defineRouting() {
this.ChatTrigger.out(0).to(this.AiAgent.in(0));
this.AiAgent.uses({
ai_languageModel: this.OpenaiModel.output,
ai_memory: this.Memory.output,
ai_outputParser: this.OutputParser.output,
ai_tool: [this.SearchTool.output],
});
}
- 对语言模型、记忆、工具、解析器、嵌入、向量存储、检索器及其他 AI 子节点使用
.uses()。 - 绝不要通过
.out().to()连接 AI 子节点。 ai_tool和ai_document必须是数组;每个条目都连接到输入索引 0。- 大多数其他 AI 连接类型是单个引用;如果节点公开了多个相同类型的输入,也可以传入数组,其中位置 = 输入索引。
needsFallback: true(Agent、Basic LLM Chain)需要在输入 1 上连接第二个模型:ai_languageModel: [this.Model.output, this.FallbackModel.output]。Model Selector 节点也一样。- 某些节点需要布尔标志才能公开 AI 端口或受控参数。声明
.uses()前,请先查看node-info。
应避免的常见错误
- 节点类型错误:使用架构输出返回的完整类型,包括其中提供的包前缀。
- 使用过时或不存在的 typeVersion:使用架构输出中的值。
- 操作/资源值无效:使用架构中的准确选项值。
- 资源与操作不匹配:每种资源都有其对应的操作。
- 猜测嵌套结构:固定集合具有精确结构。
- 连接名称错误:与 TypeScript 属性名完全一致。
- 虚构节点、凭据、操作或参数。
- 使用
.out().to()连接 AI 子节点。 - 使用
ai_tool: this.Tool.output,而不是ai_tool: [this.Tool.output]。 - 颠倒 Switch/If 的
value1和value2。 - 使用旧版 Wait 表单结构,例如
formFieldsUi.fieldItems,而当前架构要求使用formFields: { values: [...] }。 - 向
push传入未经处理的文件名。 - 将 Class A 的运行时/配置缺失问题当作工作流代码错误。
验证、测试和展示
优先使用 push --verify:它会获取已推送的工作流,并在同一进程中对其进行验证。在 push --verify 后立即单独运行 verify 会重复检查相同状态,除非你在推送时没有使用 --verify,否则应跳过。
npx --yes n8nac push <path> --verify
npx --yes n8nac test-plan <workflowId> --json
对于 webhook、聊天或表单工作流,优先采用生产环境测试流程:
npx --yes n8nac workflow activate <workflowId>
npx --yes n8nac test <workflowId> --prod
- A 类配置缺失需要用户/配置操作,而不是重写工作流。
- 未启用测试 webhook 等运行时状态问题,并非工作流代码错误。
- B 类接线错误可在工作流文件中修复。
- 同一诊断信息重复出现两次后,即停止尝试。
工作流展示规范
npx --yes n8nac workflow present 是向用户展示工作流的标准方式。它支持 v4 环境,并且是工作流编写循环的一部分。
符合以下任一条件时,都要运行此命令:
- 你创建了工作流;
- 你修改并推送了工作流;
- 你运行或测试了工作流,且用户需要查看它;
- 用户要求展示、打开、呈现、显示工作流,或提供工作流的 URL/链接。
npx --yes n8nac workflow present <workflowId> --json
规则:
- 不要手动构造 n8n 工作流 URL。
- 如果有可用于展示的 URL,不要向用户返回内部本地 n8n URL。
- 将
workflow present --json返回的url用作面向用户的 URL。 - 如果不知道工作流 ID,先运行
npx --yes n8nac list,然后选择匹配的工作流。 - 不要调用
npx --yes @n8n-as-code/n8n-manager presentWorkflowResult;这是旧版运行时命令,且不支持工作区环境。 - 如果
workflow present失败,请报告后端诊断信息,然后仅在备用情况下提供最合适的直接 n8n URL。 - 如果任务创建、修改、推送或运行了工作流,或明确要求展示工作流,请在最终回复前执行此操作。
可测试性协议
对于 webhook、聊天或表单工作流:
- 尽可能在推送时进行验证。
- 运行
test-plan,检查触发器类型、端点和建议的负载。 - 激活工作流。
- 默认使用
--prod进行测试。
npx --yes n8nac push <path-to-workflow.workflow.ts> --verify
npx --yes n8nac test-plan <workflowId> --json
npx --yes n8nac workflow activate <workflowId>
npx --yes n8nac test <workflowId> --prod
仅当你有意在 n8n 编辑器中启用了测试 URL 时,才使用不带参数的 npx --yes n8nac test <workflowId>。
对于从 $json.query 读取数据的 GET/HEAD webhook,优先使用:
npx --yes n8nac test <workflowId> --query '{"key":"value"}' --prod
执行调试
如果 webhook 返回成功,但工作流行为不正确,请检查执行记录,而不要猜测:
npx --yes n8nac execution list --workflow-id <workflowId> --limit 5 --json
npx --yes n8nac execution get <executionId> --include-data --json
- HTTP 触发器成功仅表示 n8n 已接受请求。
- 执行仍可能在工作流后续环节中失败。
- 使用执行数据确定出错的节点和实际负载结构。
凭据工作流
如果工作流因缺少凭据而受阻,应解决凭据缺失问题,不要重写无关的工作流逻辑。
npx --yes n8nac workflow credential-required <workflowId> --json
npx --yes n8nac credential schema <type>
npx --yes n8nac credential list --json
npx --yes n8nac credential create --type <type> --name <name> --file cred.json --json
npx --yes n8nac workflow activate <workflowId>
- 如果至少缺少一个凭据,
workflow credential-required会以非零状态退出。应将其视为需要采取行动的信号,而不是工作流代码故障。 - 使用
credential schema查找必需字段。 - 必要时向用户索要机密值。
- 创建凭据时优先使用
--file。不要在 shell 参数中直接传递机密。 - 不要向用户输出 API 密钥或凭据机密值。
- 如果创建凭据失败,请阅读验证消息,并在重试前修改负载。
操作流程
对于大多数工作流任务:
- 使用
env status --json解析上下文。 - 从后端响应中读取
workflowsPath。 - 使用
list检查现有工作流。 - 编辑现有工作流前先拉取。
- 搜索示例和架构。
- 编辑或创建
.workflow.ts文件。 - 在本地验证。
- 使用
--verify推送。 - 如果工作流由 HTTP 触发,则进行测试。
- 如果行为不明确,则检查执行记录。
- 使用
npx --yes n8nac workflow present <workflowId> --json展示最终工作流链接。
响应规范
- 说明具体操作和命令结果,不要泛泛而谈能力。
- 当用户询问 URL 或要求直观检查工作流时,运行
npx --yes n8nac workflow present <workflowId> --json,不要手动拼接 URL。 - 如果缺少设置,请对工作区环境使用
n8nac env ...,仅对受管理的本地实例使用n8n-manager。 - 除非用户选择远程 n8n 环境,否则不要询问主机或 API 密钥。
- 如果你可以自行运行非交互式命令,就不要让用户运行设置命令。
- 使用相同诊断信息重复失败两次后,请停止并清楚说明后端错误。