ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

n8n-nodes-manifest 版本演进全解:从 0.1.0 到 0.2.2 的 n8n 社区节点发布史与源码验证

n8n-nodes-manifest 版本演进全解:从 0.1.0 到 0.2.2 的 n8n 社区节点发布史与源码验证 n8n-nodes-manifest 版本演进全解从 0.1.0 到 0.2.2 的 n8n 社区节点发布史与源码验证【免费下载链接】llm-gatewayConnect Your Agents And Harnesses With Any Provider 项目地址: https://gitcode.com/GitHub_Trending/manifest7/llm-gateway本项目中的n8n-nodes-manifest是将 Manifest 的 OpenAI 兼容模型路由接入 n8n 工作流的官方社区节点包。其 CHANGELOG.md 完整记录了该包从 0.1.0 到 0.2.2 的全部发布条目涵盖归属请求头、SSE 流式解析、AI 节点 SDK 集成以及 n8n 社区节点合规性等关键决策。读完本文你能逐条理解每个版本改了什么、为什么改并对照仓库源码与测试用例验证这些变更的真实落地形态。版本历史总览CHANGELOG.md 按版本倒序记录了 8 次发布与 package.json 中当前的0.2.2版本一致。下表完整继承各条目的原始变更内容版本核心变更0.2.2为本节点发出的 Manifest 请求附加User-Agent: n8n-nodes-manifest、X-Title: n8n、HTTP-Referer: https://n8n.io三个归属头使 Manifest 能把用量归因到该节点本身0.2.1按 n8n 社区节点 linter 要求标记 Manifest 动作节点可被 AI 代理使用为 Manifest Chat Model 改用受支持的Developmentcodex 分类并移除不受支持的子分类元数据移除 n8n 社区节点包中不再允许的依赖覆盖dependency overrides0.2.0新增Manifest Chat Model子节点lmChatManifest基于n8n/ai-node-sdk构建可像普通 Chat Model 节点一样接入 AI Agent 与 Basic LLM Chain 节点模型列表从用户自己的 Manifest 实例加载默认auto由 Manifest 路由破坏性变更Manifest 动作节点不再作为 AI Agent 工具暴露移除usableAsTool——Manifest 是模型路由器而非工具直连动作节点的既有工作流不受影响0.1.4修正 n8n 验证所需的节点 codex 标识符与分类移除不受支持的节点 codex 元数据0.1.3遵守 Manifest 路由配置好的响应模式将流式响应解析为 n8n 工作流输出0.1.2为 n8n Creator Portal 验证在仓库根目录镜像节点源文件0.1.1包含 n8n Creator Portal 仓库检查所需的构建产物0.1.0Manifest 首个 n8n 社区节点以下按版本阶段逐条展开并给出对应源码与测试的证据。0.1.0 → 0.1.2首发与 Creator Portal 合规0.1.0 发布了最初的 Manifest 社区节点包含一个动作节点manifest与一份Manifest API凭据。随后的 0.1.1 和 0.1.2 都不是功能变更而是围绕 n8n Creator Portal 的仓库检查做的结构性调整0.1.1「包含构建产物」对应 package.json 中的files: [dist]确保 npm 包只发布编译后的dist产物并通过n8n.nodes/n8n.credentials字段声明节点与凭据的入口文件如dist/nodes/Manifest/Manifest.node.js。0.1.2「在仓库根目录镜像节点源文件」从当前仓库结构可以确认根目录下确实存在nodes/Manifest/与nodes/LmChatManifest/两个镜像目录与integrations/n8n-nodes-manifest/nodes/下的源文件对应。这一安排被 manifest-node.test.js 中的元数据测试锁定——该测试同时校验../nodes/、../dist/nodes/和../../../nodes/即仓库根目录镜像三处*.node.json的node标识符与分类防止镜像文件漂移。0.1.3尊重路由的响应模式 SSE 流式解析这是动作节点在行为上的最重要一次升级对应 Manifest.node.ts 中的三个导出函数1. 尊重 Manifest 路由配置的响应模式。节点在发送POST /v1/chat/completions与POST /v1/responses请求前会调用withoutRouteManagedStream()见 Manifest.node.ts从Additional Body中剥离stream字段export function withoutRouteManagedStream(body: IDataObject): IDataObject { const requestBody { ...body }; delete requestBody.stream; return requestBody; }这意味着流式与否由 Manifest 侧路由配置决定而不是工作流作者临时指定——避免客户端stream覆盖与路由实际响应格式不一致。测试removes a client stream override without mutating additional fields验证了该函数只删除stream、保留temperature等其余字段且不修改入参对象。2. 将流式响应解析为工作流输出。parseServerSentEvents()把 SSE 文本解析为结构化事件数组parseManifestResponse()则按Content-Type分流text/event-stream走 SSE 解析其余尝试JSON.parse解析失败则原样返回文本。流式输出的最终形态如下与 README 中的示例一致{ responseMode: stream, events: [ { event: message, data: { choices: [{ delta: { content: Hello } }] } }, { event: message, data: [DONE] } ] }解析器处理的细节包括规范化\r\n行尾、按空行切分事件块、支持event:/id:/data:字段、多行data合并、[DONE]终止标记的透传以及 Responses API 的具名事件如response.output_text.delta。manifest-node.test.js 中有四个针对性用例分别覆盖含id与[DONE]的 chat completion 事件流、Responses API 具名事件与多行 data、以及非 JSON 缓冲响应的文本保留。3. 0.1.4codex 元数据修正。对应两个*.node.json文件例如 Manifest.node.json{ node: n8n-nodes-manifest.manifest, nodeVersion: 1.0, codexVersion: 1.0, categories: [Development], resources: { credentialDocumentation: [ ... ], primaryDocumentation: [ ... ] } }元数据测试用一个白名单allowedFieldsalias、categories、codexVersion、node、nodeVersion、resources约束这些文件只能出现受支持的字段正是 0.1.4「移除不受支持的节点 codex 元数据」的自动化守护。0.2.0新增 Manifest Chat Model 子节点含破坏性变更这是该包从「API 动作节点」升级为「AI 模型节点」的分水岭。新增的Manifest Chat Model节点LmChatManifest.node.ts实现了supplyData接口输出AiLanguageModel连接类型因此可以直接插入AI Agent和Basic LLM Chain节点成为任意 Chat Model 节点的即插即用替代。模型列表动态加载。getModels通过凭据向${baseUrl}/v1/models发起 GET 请求拉取模型列表列表首位固定为Auto (Manifest Routing)值为auto并跳过接口返回中与占位项重复的auto条目默认值也是auto即让 Manifest 按路由规则为每个请求挑选合适模型。懒加载 SDK 以兼容旧版 n8n。supplyData中没有在模块顶部导入n8n/ai-node-sdk而是在运行时await import(n8n/ai-node-sdk)并在失败时抛出带更新指引的NodeOperationError。源码注释说明原因该 SDK 是 n8n 运行时自身提供的 peer dependency只有较新的 n8n 版本才内置它懒加载可保证旧版本 n8n 上包内其余部分动作节点、凭据继续可用。这也解释了 README 中「需要内置n8n/ai-node-sdk的 n8n 版本」这一前提限制。参数集Options 集合与默认值取自节点描述定义参数类型默认值取值范围Modeloptions动态加载autoManifest 实例模型列表Temperaturenumber0.70 – 2Top Pnumber10 – 1Frequency Penaltynumber0-2 – 2Presence Penaltynumber0-2 – 2Maximum Number of Tokensnumber-1不限 0 时才会透传给 SDKTimeout (Ms)number360000—Max Retriesnumber2—Use Responses APIbooleanfalse开启后改走 OpenAI Responses API其中maxTokens的处理值得注意只有maxTokens 0才会作为字段传给 SDK-1表示不限制避免把「无限制」哨兵值误传给模型。最终调用形如sdk.supplyModel(this, { type: openai, baseUrl, apiKey, defaultHeaders: MANIFEST_ATTRIBUTION_HEADERS, model, ... })把 Manifest 当作一个 OpenAI 兼容端点注入。破坏性变更动作节点退出工具角色。0.2.0 移除了 Manifest 动作节点的usableAsTool理由是 Manifest 定位是模型路由器而非工具代理接入应改用新的 Chat Model 节点直接调用动作节点的既有工作流不受影响。值得注意的是这个决策在 0.2.1 被部分回调下文详述。0.2.1满足 n8n 社区节点 linter 的三项合规修正0.2.1 的三个条目全部服务于 n8n 社区节点审核重新标记usableAsTool。Manifest.node.ts 中usableAsTool: true当前存在元数据测试第 40 行也断言了manifestDescription.usableAsTool true。即 0.2.0 出于产品定位移除、0.2.1 因 linter 硬性要求恢复。从 CHANGELOG 两条记录的对照可以推断当前版本的定位表述以 0.2.0 为准——动作节点虽在技术上可被 linter 接受为工具但官方推荐的代理接入路径仍是 Manifest Chat Model 节点。改用受支持的Developmentcodex 分类。两个*.node.json文件中的categories: [Development]即为此改动的落地同时移除了节点描述里曾经携带的subcategories等非标准字段——这与 0.1.4 测试中allowedFields白名单约束一脉相承。移除依赖覆盖。从当前 package.json 可以看到n8n/ai-node-sdk与n8n-workflow均以*形式声明在peerDependencies由 n8n 运行时提供包内不再有覆盖 npm 依赖的overrides配置符合社区节点包规范。0.2.2用量归属请求头最新版本为所有发往 Manifest 的请求附加三个归属头统一定义在 attribution.tsexport const MANIFEST_ATTRIBUTION_HEADERS { User-Agent: n8n-nodes-manifest, X-Title: n8n, HTTP-Referer: https://n8n.io, } as const;这三个头在包内有三个注入点覆盖所有出站请求凭据层ManifestApi.credentials.ts 的authenticate与test凭据连接测试对GET /v1/models发起都展开MANIFEST_ATTRIBUTION_HEADERS并叠加Authorization: Bearer API key动作节点层requestManifest()在手动构造Authorization头的同时合并归属头Chat Model 层getModels与sdk.supplyModel的defaultHeaders均携带这些头。测试用例attaches Manifest attribution headers when listing models精确断言发出的请求头与Authorization 三个归属头的组合完全一致防止未来重构中丢失归属能力。Manifest 侧据此在请求详情中将用量归因到 n8n 社区节点本身而不是泛化的匿名流量。如何验证与跟进这些版本测试即回归守护test/manifest-node.test.js 用node:test直接加载dist编译产物覆盖 CHANGELOG 中各版本的关键承诺codex 元数据白名单、流字段剥离、SSE 解析、归属头、响应模式输出形态运行npm run build node --test即可复现见 package.json 的test脚本。发布流程README 的 Release 一节说明该包自 2026 年 5 月起走 n8n 验证社区节点的 npm provenance 发布package.json中的版本号是唯一事实来源由 GitHub Actions 工作流在检测到版本变更后自动发布并推送n8n-nodes-manifest-vversion标签禁止从本地机器发布。因此 CHANGELOG 中每个版本条目都对应一次可追溯的 main 分支合并。适用前提Manifest Chat Model 节点要求 n8n 版本内置n8n/ai-node-sdk2026 年发布的版本动作节点与凭据则无此限制可在较旧 n8n 上工作。从 0.1.0 的单一动作节点到 0.1.3 的流式解析与路由响应模式尊重再到 0.2.0 引入可直插 Agent 的 Chat Model 节点0.2.2 收束为带完整用量归属的成熟形态——这份 CHANGELOG 与其源码、测试共同勾勒出 Manifest 在 n8n 生态中从「能调用」到「能被代理使用、可被归属追踪」的完整演进路径。【免费下载链接】llm-gatewayConnect Your Agents And Harnesses With Any Provider 项目地址: https://gitcode.com/GitHub_Trending/manifest7/llm-gateway创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表