把大模型、向量库、OCR、命名实体识别与一堆外部工具串起来,最现实的问题从来不是「能不能连上」,而是这条链路能不能被别人看懂、被评审、被复用、被回滚。图形化编排工具通常卡在这一步:画布上的连线很难进 Git,改动了什么说不清。RocketRide 的做法是把 IDE 变成 AI 开发环境——你在 VS Code 的画布上拖节点、连线、配置,产物是一份 .pipe 文件,本质是可读的 JSON,能 diff、能评审、能在任何环境跑;执行它的是一个多线程 C++ 运行时,官方把它定位成「应用底下那整套东西的承载层,不只是 Agent」。仓库收录一百多个节点,覆盖十几个大模型提供方、九个向量数据库、OCR、NER、PII 脱敏、分块与嵌入等,节点全部可以用 Python 扩展。本教程六步落地:装扩展并把引擎跑起来、读懂 .pipe 的结构、搭一条带子 Agent 的流水线、运行并看追踪、用命令行批量跑与管理任务、最后把校验与评审接进 CI。
Step 1:装与起:扩展加本地模式,或一条 Docker 命令起引擎
入门路径是在 IDE 的扩展市场里装 RocketRide 扩展,点开后选择本地模式——它会把引擎直接拉进 IDE,不需要额外配置。想把引擎独立跑起来就用容器:拉镜像、建容器、映射端口。也可以什么都不装,直接用云服务,流水线文件一行不改。
# 路线 A:IDE 扩展(VS Code Marketplace / Open VSX 搜 RocketRide)
# 打开扩展 → 选 Local → 直接在画布上跑,无需注册
# 路线 B:容器起引擎(默认端口 5565)
docker pull ghcr.io/rocketride-org/rocketride-engine:latest
docker create --name rocketride-engine -p 5565:5565 ghcr.io/rocketride-org/rocketride-engine:latest
# 路线 C:托管云服务 —— 同一份 .pipe 直接跑,不用自己运维
如果从源码构建,仓库会帮你把 Python 环境、C++ 工具链、Java 与 Tika 以及各节点依赖都准备妥当,不需要你手工装一圈前置。这一点对想贡献节点的人尤其友好。
注意命令行的默认端点不一样:Python 版 CLI 默认连云端地址,TypeScript 版默认连本机 5565。两条工具链装在同一台机器上时,很容易在没意识到的情况下把本地文件发到了云端。跑任何命令前先确认连接端点,或用环境变量显式指定。
Step 2:读懂 .pipe:源节点、控制 lane 与 response 的分工
每条流水线从一个源节点开始:webhook、chat 或 dropper(文件投放),以一个 response 节点结束。中间的节点通过两种 lane 相连:input 是数据流向,control 是依赖关系——控制 lane 带 classType,标明这个节点是作为 llm、memory 还是 tool 被上游使用。理解这两种 lane,是看懂官方示例的关键。
// 官方示例 examples/agent-workflow.pipe(节选,已省略画布坐标)
{
"components": [
{ "id": "chat_1", "provider": "chat",
"config": { "mode": "Source", "type": "chat" } },
{ "id": "agent_rocketride_1", "provider": "agent_rocketride",
"config": { "instructions": ["You are an orchestrator agent. …"], "max_waves": 15 },
"input": [{ "lane": "questions", "from": "chat_1" }] },
{ "id": "llm_openai_1", "provider": "llm_openai",
"config": { "profile": "openai-4o",
"openai-4o": { "apikey": "${ROCKETRIDE_OPENAI_KEY}" } },
"control": [{ "classType": "llm", "from": "agent_rocketride_1" }] },
{ "id": "memory_internal_1", "provider": "memory_internal",
"control": [{ "classType": "memory", "from": "agent_rocketride_1" }] },
{ "id": "tool_http_request_1", "provider": "tool_http_request",
"control": [{ "classType": "tool", "from": "agent_rocketride_1" }] },
{ "id": "response_answers_1", "provider": "response_answers",
"config": { "laneName": "answers" },
"input": [{ "lane": "answers", "from": "agent_rocketride_1" }] }
],
"version": 1
}
密钥不写死在文件里,而是用环境变量占位符引用,运行时注入。这个约定让 .pipe 可以放心进 Git——前提是环境变量本身管好了。
Step 3:搭 Agent 流水线:把子 Agent 当成父 Agent 的一个工具
Agent 节点本质是一个可以反复调用其它节点、直到任务完成才停下的大模型。它的可用能力不是写在提示词里,而是靠控制 lane 挂上去:挂 llm 决定它用哪个模型,挂 memory 决定它有没有记忆,挂 tool 决定它能调什么工具。同一个机制也用来做层级编排——把另一个 Agent 节点以 tool 类型挂到编排者身上,它就变成了父 Agent 手里的一个「子 Agent 工具」。
编排关系(示例中的两块)
agent_rocketride_1 编排者,max_waves = 15
├─ control llm → llm_openai_1 用 OpenAI 的某个 profile
├─ control memory → memory_internal_1 带内部记忆
├─ control tool → tool_http_request_1 能发 HTTP 请求
├─ control tool → tool_python_1 能跑 Python
└─ control tool → agent_rocketride_2 子 Agent,也被当成工具
agent_rocketride_2 研究子 Agent,max_waves = 10
├─ control llm → llm_anthropic_1 换用 Anthropic 的 profile
├─ control memory → memory_internal_2 自己的记忆
└─ control tool → tool_http_request_2 自己的取数工具
两个 Agent 用不同厂商的模型,各自有记忆与工具 —— 混搭是它的常规用法
每个 Agent 节点都有 max_waves,也就是它最多循环多少轮。这是防止跑飞的闸门:研究类任务可以给到十轮以上,简单抽取任务两三轮就够。官方 README 也提到它内置对 CrewAI 与 LangChain 的支持,并能在多次运行之间共享记忆。
max_waves 不是越大越好:轮数上限直接决定最坏情况下的调用成本与耗时。先按任务复杂度给一个保守值,跑几轮真实数据看它实际用掉多少,再往上调。把它当成本控制旋钮,而不是性能开关。
Step 4:跑与看:画布上一键启动,追踪里看 token 与调用树
在画布上点源节点上的运行按钮就能启动,也可以从连接管理器里启动。运行中选中一条流水线,可以看到深入的运行时分析:调用树、token 用量、内存占用与延迟等。这些读数的价值在于让你在扩容与部署之前就找到瓶颈,判断哪个模型、哪个 Agent 或哪个工具更适合当前任务。
运行与观测
1) 画布:点源节点上的 ▶ 按钮
2) 或:从 Connection Manager 直接启动
3) 选中运行中的流水线,查看
- 调用树(trace call tree)
- token 用量
- 内存占用
- 执行延迟
4) 用读数决定:换模型 / 减轮数 / 拆节点
想让链路跑在本地而不出网,本地模式与自建容器都能满足;选择云服务就要接受数据出境。这一点在涉及内部文档时尤其要提前确认。
Step 5:命令行:批量跑文件、查任务、随时叫停
无论装 Python 还是 TypeScript 客户端,都会同时得到 rocketride 命令。启动一条流水线后命令会打印任务令牌并退出,任务继续在引擎上跑;之后可以用同一个令牌往里推文件,也可以列出所有在跑的任务、按令牌停掉某一个。连接相关的选项都能用环境变量预先设好,免得每次敲一长串。
pip install rocketride # 或 npm install rocketride,两者都带 CLI
# 连接参数(也可用同名环境变量)
# --uri ROCKETRIDE_URI Python 默认云端地址 / TS 默认 http://localhost:5565
# --apikey ROCKETRIDE_APIKEY
# --pipeline ROCKETRIDE_PIPELINE
# --token ROCKETRIDE_TOKEN
rocketride start --pipeline ./rag.pipe --threads 8 # 启动,打印任务令牌
rocketride upload --pipeline ./extract.pipe ./invoice.pdf
rocketride upload --pipeline ./extract.pipe ./docs/*.pdf --max-concurrent 4
rocketride list # 列出在跑的任务与其令牌
rocketride stop --token <task-token> # 干净停掉某个任务
启动时的线程数默认是 4,遇到计算密集的节点(OCR、解析、嵌入)可以适当上调。上传的并发默认是 5,一次性推几百个文件时调大它能明显缩短总耗时。
推给云端的数据要先想清楚:上传命令会把本地文件内容送进流水线。若你连的是云端端点,这些文件就离开了本机。涉及内部文档或含个人信息的材料,先确认合规口径,或直接走本地与自建容器路线。
Step 6:当代码管:validate 做门禁,diff 做评审
两条命令撑起「流水线即代码」:validate 把 .pipe 交给引擎做结构检查而不执行,适合部署前自查或作为拉取请求的门禁;diff 则做语义比对,把改动归类为节点、连线与配置字段,并把每次挪动节点带来的坐标噪音折叠成一行。后者完全在本地跑,不连引擎、不需要鉴权,因此很适合放进 CI。
# 结构校验:不执行,只查结构与组件引用
rocketride validate ./rag.pipe
rocketride validate ./pipelines/*.pipe --json # 机器可读报告,接 CI
# 退出码:0 全部通过 / 1 至少一个失败 / 2 用法或连接错误
# 语义 diff:忽略画布坐标噪音,只看节点·连线·配置
rocketride diff old.pipe new.pipe
rocketride diff --git main rag.pipe # 与某个 git 引用比
rocketride diff old.pipe new.pipe --markdown # 生成评审用报告
# 注意:diff 与 otel 两个子命令只随 Python 版 CLI 提供
官方还给了两个现成的 GitHub Action:一个起引擎容器跑 validate,一个在拉取请求里找出所有改动的 .pipe 并与基线做语义 diff,把结果写成一条持续更新的评论。评审者看到的会是「模型从 OpenAI 换到 Anthropic、分块大小 512 改成 1024、检索改走重排」,而不是一屏坐标变动。
validate 的检查范围有限:它只查结构与组件引用——重复 id、未知的 input 或 control lane、指向不存在的 from、没有源节点的 source。提供方是否可用、lane 之间是否兼容属于运行时问题,不会在这一步报出来。所以它应当与一次真实运行配套使用,不能互相替代。
常见问题速查
| 现象 | 原因与处理 |
|---|---|
| 不填密钥能跑吗 | 能,先跑通不含大模型的流水线;加大模型节点时再填一个 key |
| 命令连到了意外的地方 | Python 版默认云端地址,TS 版默认本机 5565;用 --uri 或环境变量显式指定 |
| 界面没有出现 | 视图类问题在 mcp-use 那边常见,这里先确认扩展已装且引擎在跑 |
| 流水线起不来 | 先跑 validate 看结构与引用;它不查提供方与 lane 兼容性 |
| diff 报命令不存在 | diff 与 otel 只随 Python 版 CLI 提供,改用 pip install rocketride |
| git diff 全是坐标变动 | 用 rocketride diff 做语义比对,坐标噪音会被折叠成一行 |
| Agent 跑太久 | 调小 max_waves;它是循环轮数上限,也决定最坏成本 |
| 想换模型厂商 | 改 Agent 节点 control lane 上挂的 llm 节点即可 |
| 子 Agent 怎么接 | 把另一个 agent 节点以 classType 为 tool 的控制线挂到父 Agent 上 |
| 批量处理很多文件 | upload 配 --max-concurrent;start 配 --threads(默认 4) |
| 想看 token 花了多少 | 运行中点开该流水线的追踪视图,看调用树与用量 |
| 要把追踪接进自家监控 | Python 版 CLI 的 otel 子命令走 OTLP,可接 Jaeger、Langfuse 等 |
| 内部文档能上云吗 | 自建容器或本地模式更稳妥;用云端前先过合规 |
| 开源许可与付费 | 引擎整体 MIT,无企业版;云服务是可选的托管形态 |