【免费下载链接】rocketride-serverHigh-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.项目地址https://gitcode.com/gh_mirrors/ro/rocketride-server点击查看免费下载本篇指南讲解 RocketRide 开源仓库中节点文档的强制规范schema——每个位于nodes/src/nodes/node/的节点目录都必须包含一个遵循该规范的README.md其文档形状由节点的services*.json元数据决定而非作者的主观判断。读完本文你将掌握三档章节分层CORE / CONDITIONAL / OPTIONAL、固定的章节顺序、手写区域与生成区域的划分以及如何用 scripts/validate-node-readme.py 对单个节点或全量节点语料做确定性校验让文档与元数据永不漂移。为什么需要一份 README SchemaRocketRide 仓库中已有超过 130 个节点目录以nodes/src/nodes/为根的 142 份 README每个节点既是流水线pipeline中的可拖拽组件也可能被注册为 Agent 工具。若每份文档靠作者自由发挥就会出现章节缺失、表格字段与配置面板对不上、旧模型列表过期、文档描述的连接名与services*.json声明不一致等问题。该 schema 的核心原则是单一事实来源文档的必需形状由节点的services*.json决定。invoke键、lanes键、classType中的tool、capabilities中的gpu/nosaas等标记逐一映射到 README 中某个章节的必须出现或禁止出现。校验命令随时可运行python3 scripts/validate-node-readme.py nodes/src/nodes/node全量校验则由./builder docs:validatedocs:test的一部分属于阻断性检查在 CI 上执行见 docs/development/ci-gates.md 与 docs/README.md。两种区域手写区域与生成区域一份节点 README 由两个区域组成手写区域hand-written region标题、摘要以及下面将要介绍的 0–12 号章节全部由人维护必须遵守本文档的章节规则。生成区域generated region被!-- ROCKETRIDE:GENERATED:PARAMS START --与!-- ROCKETRIDE:GENERATED:PARAMS END --两个 HTML 注释包裹的块内含## Schema、## Dependencies、## Source三节由nodes:docs-generate任务维护见 AGENTS.md。生成区域永远位于文件末尾、永远禁止手改并且不受本文档章节规则的约束。因为生成的## Schema表就是字段参考手册每个字段一行、机器持有、不可能漂移所以手写区域绝不重复字段表——手写的配置内容只讲生成器无法知道的东西用法指导、取值技巧、字段间相互作用。以 db_postgres/README.md 为例其文件末尾就是由生成器产出的## Schema含postgresdb.host、postgresdb.max_attempts等字段、类型、描述、默认值、## Dependenciespsycopg2-binary 2.9.12与## Source。三档分层CORE / CONDITIONAL / OPTIONAL层级含义CORE每份节点 README 必须出现无例外。CONDITIONAL当services*.json声明了触发事实时必须出现未声明时禁止出现。一个条件章节在未触发时出现说明 README 与元数据互相矛盾——修哪个都行但必须修复其一。OPTIONAL永不强制。若出现必须待在固定的槽位并遵守其规则。固定顺序与 0–12 号章节全解章节顺序固定。在手写区域内除本文定义的章节外不允许出现任何其他##标题——任何节点特有的内容一律放到## Notes之下。完整清单对应校验器中的CANONICAL_ORDER见 scripts/validate-node-readme.py序号章节层级触发条件 / 备注0标题 摘要COREH1 目录名首段 1–2 句简介1## About VendorOPTIONAL包装第三方服务时使用≤80 词2## What it doesCORE2–5 句3## ConnectionsCONDITIONALinvoke对象非空4## LanesCONDITIONALlanes对象非空5## As a toolCONDITIONALtool ∈ classType6## ProfilesCONDITIONALpreconfig.profiles中除custom外 ≥2 个7## ConfigurationCORE含复杂字段的###小节8## AuthenticationOPTIONAL凭据设置9## RequirementsCONDITIONALgpu ∈ capabilities10## LimitationsCONDITIONALnosaas/noremote/security/filesystem任一 ∈ capabilities11## NotesOPTIONAL唯一的自由格式章节12## Upstream docsOPTIONAL存在About时强制0. 标题 摘要 — CORE# db_postgres A RocketRide database node that answers natural-language questions against PostgreSQL — as a pipeline node via lanes or as an agent tool.H1 必须等于节点目录名校验器检查H1 equals directory name。第一段是一两句的摘要用平实的语言说明这是什么节点、什么时候选它供用户在 100 节点中做选择不允许营销辞藻。1.## About Vendor— OPTIONAL为包装第三方服务或产品的节点准备的背景介绍2–4 句、≤80 词向从未听说过该公司的读者说明这家公司/产品是什么、以什么著称。永恒文本规则Timeless-prose rule不写模型名、版本、价格、速率限制等会随厂商节奏变化的内容——那些属于## Profiles或生成的## Schema。它必须是摘要之后的第一个章节若存在则## Upstream docs也必须在场。真实范例见 cloud_tts/README.md 的## About OpenAI, ElevenLabs, and Rime。2.## What it does— CORE2–5 句散文讲清楚节点在流水线内部做什么、扮演哪些角色lanes、agent tool、两者皆是、以及在同类节点中何时该选它。只从 RocketRide 的视角写——厂商背景归## About。搁置## Example pipelines注意## Example pipelines目前在 schema 中处于PARKED搁置状态——校验器仍在原槽位容忍它但已不再要求见 scripts/validate-node-readme.py 与校验器中的 parked 注释块。恢复方式已在文档中说明取消注释、重排后续章节编号、并同步启用 scripts/validate-node-readme.py 中被搁置的 bundle 检查。该章节的设计意图值得了解。首个示例是随节点发布的示例一个提交在节点目录里、可直接运行的小型流水线读者在画布上看到节点、直接下载.pipe文件而不必从文字重新搭建。配套文件example.pipe—— 包含该节点的最小可运行流水线example.png—— 同一流水线的画布截图章节模板形状如下## Example pipelines **Summarize scanned documents** webhook → ocr → summarization → response div aligncenter [](https://link.gitcode.com/i/bbf8c0f0ece7657355b23c07c36de760) [](example.pipe) /div Scanned PDFs arrive over a webhook, OCR turns them into text, and the summarization node condenses each one.关键规则即使当前搁置恢复时依然适用流程行、截图、.pipe必须描述同一条流水线截图展示的是画布上已连线的节点绝不孤立悬浮alt 文本必须点名节点。用裸相对名引用文件example.png、example.pipe不要手写绝对 URL——文档构建会把它改写成仓库 URLGitHub 原生解析IDE 里*.pipe还有扩展注册的自定义编辑器点击直接打开到画布。div内部的空行是承重结构空行结束 HTML 块图片与徽章按 markdown 解析同时外层 div 仍负责居中。若改写成裸img/a标签GitHub 能渲染但 VS Code / Cursor 的 markdown 预览只改写 markdown 语法图片的相对路径会渲染成空白。下载按钮是 shields.io 徽章格式固定为stylefor-the-badge、品牌色41b6e6。要么两块都引用要么都不引用嵌入截图就必须带下载徽章反之亦然被引用的文件必须真实存在。只提交文件而不引用是允许的也是分阶段搭建 bundle 的正常方式先落example.pipe截图后再同时加上example.png和两个引用——在此之前节点只会收到校验器警告而非失败新节点则要求一次性交付完整 bundle。后续示例沿用标题 → 流程 → 散文的格式无需附带文件。示例必须是真实、可运行、引用真实存在节点的形状禁止虚构节点名。当前仓库中 db_postgres 仍保留了该章节的完整形态含example.pipe与example.png可作为恢复该规范时的参照模板3.## Connections— CONDITIONAL触发条件某个 service 条目声明了invoke对象。表格为ConnectionRequiredDescriptioninvoke中的每个键恰好一行。min ≥ 1时 Required 填 yes。连接名必须与invoke的键完全一致校验器检查Connections rows match invoke keys。真实范例db_postgres 的 services.json 声明invoke: { llm: { min: 1 } }README 的 Connections 表就恰好有一行llm | yes | LLM used to generate SQL from natural language。4.## Lanes— CONDITIONAL触发条件某个 service 条目声明了非空lanes对象。表格为Lane inLane outDescriptionlanes声明的每个 in→out 对一行一个输入有多个输出就每输出一行输入无输出则填—。Lane 名必须与services*.json完全一致。真实范例db_postgres 声明lanes: { answers: [], questions: [table, text, answers] }README 就列出了questions → table / text / answers三行以及answers → —一行。5.## As a tool— CONDITIONAL触发条件tool ∈ classType。描述当节点作为工具接入 Agent 时Agent 会看到什么工具服务器名 每个暴露函数一行。FunctionDescription参数与返回值不明显时在表格下方补充说明。这是面向 Agent 的契约是全文件准确率要求最高的小节。真实范例db_postgres 的 classType 含toolREADME 列出get_data、get_schema、refresh_schema、get_sql、dialect五个常开函数及execute、begin、commit、rollback四个由allow_execute门控的裸 SQL 函数并详述了每个函数的输入输出契约如begin返回{session_id: id}。6.## Profiles— CONDITIONAL触发条件preconfig.profiles中除custom外包含 ≥2 个条目。每个已声明的 profile 恰好出现一次。Profile 单元格的身份规则要么用声明的键写成代码gpt-5-5要么用声明的title原样重现。一个单元格可以两者兼带Profile 1 (profile-1)。其他任何形式——元数据未声明的显示名、缩写、改过大小写的 title——都是未知行会校验失败因为读者无法把它映射回配置面板上的内容。同一节点内二选一并统一使用custom永远写作custom。若元数据里的title在表格里读起来别扭应改正元数据而不是在此改写。默认 profile引导句必须点名声明的默认 profiletitle 加粗并给出键Default: **Profile 1** (profile-1).默认行在 profile 名后标记**(default)**。校验器接受(default)周围的任意 markdown 装饰兼容旧页面但加粗是新写法。语义列校验Profile之后的列名可按厂商调整但只要出现Model/Model ID、Context/Context tokens或Output/Output tokens中的任一列其值必须与 profile 元数据中的model、modelTotalTokens、modelOutputTokens一致忽略 markdown 装饰与千分位逗号。两种布局普通布局合并后的classType不含llm或合并元数据声明的 profile ≤6 个——使用一张普通表格禁止details块。大 LLM 布局合并classType含llm且合并元数据声明 6 个 profile——使用两张表一张可见表含至多六个去重 profile六是上限不是配额。声明的默认放最前然后按两个最新可识别发布组release group的 profile新组在前。两个组耗尽或表格达到六行即停为了凑六行硬塞旧模型违背折叠的初衷。对于同时代理多家厂商目录的节点llm_bedrock、llm_ollama、llm_gmi_cloud发布组按厂商分别读取展示读者可能正在比较的每家厂商的最新组绝不允许同一厂商的较新世代被折叠而较旧世代可见。一个原生details块内放剩余全部 profile。custom与标记deprecated的 profile 必须在这里。精确模板形状Profile之后各列可调整但两张表必须同列## Profiles Default: **GPT-5.2** (openai-5-2). | Profile | Model | Context | Output | | ------- | ----- | ------- | ------ | | openai-5-2 **(default)** | gpt-5.2 | 400,000 | 128,000 | | gpt-5-6-sol | gpt-5.6-sol | 1,050,000 | 128,000 | | gpt-5-6-terra | gpt-5.6-terra | 1,050,000 | 128,000 | | gpt-5-6-luna | gpt-5.6-luna | 1,050,000 | 128,000 | | gpt-5-5 | gpt-5.5 | 1,050,000 | 128,000 | details summarystrongView 2 more models/strong/summary | Profile | Model | Context | Output | | ------- | ----- | ------- | ------ | | openai-5-4 | gpt-5.4 | 400,000 | 128,000 | | custom | _(user-specified)_ | editable | editable | /details折叠表 summary 文本必须恰好是View N more modelsN为折叠表行数。/summary之后、/details之前的空行都是 CommonMark 渲染器解析嵌套表格所必需的。大布局的默认 profile 不能是custom或 deprecated默认必须可见而这两类必须折叠——应修正不一致的元数据而不是改文档中的默认。多服务目录的 profile 计数与行数对等使用所有带 protocol 的services*.json条目的合并 profile可按需加###服务标签但合并 profile 集对整个目录只校验一次。每个带 protocol 的服务保留自己的默认第二次注册对引擎而言是另一个节点——品牌预设llm_openai_api的 Nebius 服务、第二家厂商cloud_tts的 OpenAI 与 ElevenLabs、或第二个后端store_elasticsearch的 Elasticsearch 与 OpenSearch——所以它的preconfig.default是该服务的属性而非对主服务的竞争性主张。合并表中要标记每一个服务的默认行并在引导句逐个点名Primary default: **Primary A** (primary-a). Secondary default: **Secondary A** (secondary-a).用一句话说明每个默认属于哪个注册两个无解释的**(default)**标记读起来像矛盾。大布局中主服务的默认仍领衔可见表且任何服务的默认都不得被折叠。发布新旧判断属于审查范畴服务元数据没有可靠的发布日期或新的优先顺序因此确定性校验器不推断可见发布组是否最新。真实范例单服务大 LLM 布局见 llm_openai/README.md可见表 5 行 折叠表 View 80 more models多服务各自默认见 cloud_tts/README.mdOpenAI、ElevenLabs、Rime 三个服务、三个默认合并一张表。7.## Configuration— CORE配置面板的使用指导。生成的## Schema表已列出每个字段不要重复。本节包含一段短文讲如何配置这个节点profile 给了你什么、大多数用户可忽略什么。每个复杂字段一个###小节以字段的 title 命名覆盖字段控制什么、合法取值与默认值给你什么、何时及为何修改、与其他字段的相互作用、适用处给一个具体好值示例。字段在以下任一情况即为复杂行为不能从名字看出、与其他字段相互作用、错误取值会静默或昂贵地失败、或取值需要技巧prompt、描述、连接串。只在一起才有意义的字段可共享一个分组小节。多服务目录超过一个带protocol的services*.json## Connections与## Configuration内容按###-每服务拆分主服务在前。例外当各服务是同一实现、接线完全相同的预设如品牌变体时只写一次把预设差异放在## Notes下描述。校验器还会做层二兜底对带客观复杂度信号的字段textarea控件或大型枚举见 scripts/validate-node-readme.py 的complex_fields发出WARN——若它缺少## Configuration下的###小节。真实范例db_postgres 的## Configuration用三个###小节讲透Database description全节点杠杆最高的字段、Max validation attempts默认 5与Allow direct query execution默认关。8.## Authentication— OPTIONAL凭据设置节点需要哪个 key/token、必需的作用域、从哪获取、期望格式。指令保持结构性作用域、格式避免复制会过时的厂商 UI 教程。9.## Requirements— CONDITIONAL触发条件gpu ∈ capabilities。硬件/运行时要求GPU、VRAM、本地模型下载、CPU 回退行为。10.## Limitations— CONDITIONAL触发条件nosaas、noremote、security、filesystem任一 ∈ capabilities。用平实语言说明节点能/不能在哪里运行以及任何安全相关行为文件系统访问、网络访问、SaaS 排除。真实范例db_postgres 声明noremoteREADME 即写明仅运行在本地引擎主机、不可远程执行。11.## Notes— OPTIONAL唯一的自由格式章节。放任何真正节点特有的内容故障排查、兼容性怪癖、算法细节、测试说明。用###小节。不得重复结构化章节已拥有的内容。12.## Upstream docs— OPTIONAL存在About时强制其余情况允许。指向厂商或底层库文档的列表。是手写区域的最后一个章节其后紧跟生成区域。真实范例见 cloud_tts/README.md 的## Upstream docs。校验器原理剖析scripts/validate-node-readme.py 是一个确定性、无 LLM的校验器。对每个节点目录解析并合并services*.jsonJSONC支持//注释与尾逗号见strip_jsonc不带protocol的条目是共享字段片段被忽略如nodes/src/nodes/core/下的services.common.*.json。依据声明的触发条件计算必需/禁止章节required_sectionsinvoke → Connections、lanes → Lanes、tool → As a tool、≥2 真实 profiles → Profiles、gpu → Requirements、四项限制能力 → Limitations。检查手写区域的标题、章节存在性、顺序与表格键对齐合并后的服务元数据ROCKETRIDE:GENERATED:PARAMS区域豁免只检查其在末尾。合并逻辑load_services把多个 protocol 条目的classType、capabilities、lanes、invoke、fields求并集收集每个服务自己的默认到_defaults按文件顺序主服务在前并注释说明第二次注册对引擎是独立节点见 scripts/validate-node-readme.py。完整检查清单对应校验器与 tests/test_validate_node_readme.py 中逐项命名的测试H1 等于目录名其后紧跟摘要段落必需章节在场条件章节未触发时缺席章节顺序正确手写区域无未知##标题表格对等每个invoke键必须出现在 Connections每个声明的 lane 出现在 Lanes多出的行不报跨合并服务的 Profiles 精确对等每个声明的 profile 出现一次对缺失、重复、未知行分别失败每个带 protocol 服务的声明默认出现在引导句键 加粗 title且在其行上标记无其他行被标记大 LLM 列表主服务默认是首个可见行且任何服务默认不折叠普通 profile 章节一张表无details大 LLM 章节一张可见表 一张折叠表、可见行至多六行、custom/deprecated 行折叠大布局 summary 使用精确隐藏行数嵌套表周围有必需空行出现语义列时渲染的模型标识符与上下文/输出 token 值与声明的 profile 元数据匹配忽略 markdown 装饰与千分位逗号生成区域在场时位于末尾且形状未被修改## About≤80 词、是第一个章节、且有## Upstream docs对带textarea控件或大型枚举的字段若缺少## Configuration下的###小节则发出警告测试套件 tests/test_validate_node_readme.py 用临时目录构造 fixture 节点services.jsonREADME.md逐项断言这些检查大 LLM 必须用detailstest_large_llm_requires_details、六行可见上限test_large_llm_rejects_more_than_six_visible_rows、默认必须可见且居首test_large_llm_requires_default_in_visible_table_and_intro、模型标识符/上下文/输出 token 与 preconfig 匹配test_profiles_reject_mismatched_*、多服务每服务一个默认test_multi_service_accepts_one_default_per_service等。有趣的是校验器会折叠空白比较 profile title_collapse_ws因为配置面板下拉框里的 title 是故意填充对齐的Text Small - ...而 README 应按普通句子书写——这个测试test_profile_titles_match_with_dropdown_padding_collapsed很好地体现了元数据对齐面板、文档对齐读者的分工。校验器检查结构不检查真相一个反复强调的边界校验器检查结构不检查内容是否属实。散文是否准确描述了代码属于审查范畴——PR 上的 CodeRabbit加上发布时的文档审查release documentation pass。这解释了 schema 设计中的一处精妙分工## Profiles的语义列Model/Context/Output虽然也是内容但因为它与元数据存在可确定性比较的事实model、modelTotalTokens、modelOutputTokens校验器敢于强校验而## What it does的描述是否真实反映代码行为这类无法机械判定的真相则留给人和 CodeRabbit。常见错误与修复路径基于校验器的失败模式与测试用例可以总结出高频错误及对应修法失败模式含义修复section Profiles forbiddenservices*.json未声明触发事实但 README 写了该章节修正 README 或元数据使其一致unknown heading ## xxx手写区域出现 schema 之外的##标题移动到## Notes下的###Connections rows match invoke keysConnections 表缺invoke声明的键按invoke键补行Profiles unknown rowsProfile 单元格用了元数据未声明的显示名/缩写/改写 title改用声明键code或原样 titleProfiles default is marked标记的默认与_defaults不一致每个服务默认恰好标记一次Profiles hidden row countView N more models的 N 与折叠表行数不符修正 summary 计数Profiles details blank lines/summary后或/details前缺空行补齐空行Profiles visible row count大 LLM 可见表超过六行超出的移入detailsProfiles model matches preconfigModel 列值与 profile 元数据不符对齐元数据千分位与装饰会被忽略Profiles default metadata is compatible with large layout大布局默认是custom或 deprecated修正元数据中的默认WARN:complex field has a detail subsectiontextarea/大枚举字段缺###小节在## Configuration下补###接入 CI全量校验单节点校验用python3 scripts/validate-node-readme.py nodes/src/nodes/node全量校验整个语料用./builder docs:validate它是docs:test的一部分属于阻断性门禁CI 在 Docs site build 任务中执行见 docs/development/ci-gates.md 与 AGENTS.md 中的任务矩阵。全量模式下校验器对每个节点输出ok node: PASS (N passed)或x node: FAIL任何 FAIL 都会以非零退出码收尾并提示 schema 文档路径。对不适用的检查项输出 SKIPPED 而非 FAILED。结语这份 schema 把文档与代码漂移这一开源项目最头疼的问题之一变成了一个确定性、可自动化的门禁services*.json是唯一事实来源README 的形状由它派生scripts/validate-node-readme.py 把章节存在性、顺序、表格对等、Profile 对等、默认标记、语义列一致性全部机器化而把描述是否真实交给 CodeRabbit 与发布审查。三层分级CORE / CONDITIONAL / OPTIONAL加上固定顺序与双区域划分让 100 个节点的文档在结构上完全同构——读者在一份 README 中形成的心智模型可以无缝迁移到任何其他节点新节点作者照着 db_postgres、cloud_tts 这类范例动笔再跑一遍校验器就能交付结构合规、元数据对齐的文档。赞分享【免费下载链接】rocketride-serverHigh-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.项目地址https://gitcode.com/gh_mirrors/ro/rocketride-server点击查看免费下载相关推荐RocketRide 节点文档工程化指南README Schema、services.json 契约与自动化校验RocketRide 节点文档工程化指南README Schema、services.json 契约与自动化校验 RocketRide 的节点体系庞大 noRocketRide 节点服务定义services.json一份文件完成注册、连接与画布配置渲染RocketRide 节点服务定义services.json一份文件完成注册、连接与画布配置渲染 节点是 RocketRide 流水线的最小构建单元而每RocketRide extract_data 节点实战用 LLM 从文本、表格与文档中抽取结构化表格数据RocketRide extract_data 节点实战用 LLM 从文本、表格与文档中抽取结构化表格数据 RocketRide 的 extract_data创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考