mcpField
V
validating-flow

validating-flow

github.com/robomotionio测试与质量5120 次安装3 天前更新
代码仓库

关于 validating-flow

Robomotion 技能,用于在运行或提交前按包架构检查 TypeScript 工作流。它会报告结构化错误并检查 Designer 可读性,但连线和业务逻辑仍需人工审查。

主要功能

  1. 01检查节点 ID、类型和属性
  2. 02验证端口与包依赖
  3. 03检查 Flow Designer 可读性
  4. 04按节点报告结构化错误
  5. 05迭代修复并重新验证

适用场景

  1. 01编辑后检查工作流
  2. 02运行前查找架构错误
  3. 03提交前验证工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/robomotionio/agent-skills --skill validating-flow

安装后在 Claude Code 中输入/validating-flow确认已加载。

附带文件config.json

详细介绍

验证 Robomotion 流程

根据 pspec 架构构建并验证流程,包括所有子流程。

适用场景

  • 使用 TypeScript SDK 编写或编辑流程后
  • 运行或提交流程前
  • 迭代过程中进行紧密的“验证后修复”循环

用法

robomotion validate <flow-dir>           # e.g. robomotion validate write-to-clipboard
robomotion validate                       # defaults to main.ts in cwd
robomotion validate path/to/main.ts       # also accepts a file

成功时,以退出码 0 结束,并在 stderr 输出 ✔ <folder> validated——<folder> 是存放 main.ts 的文件夹名称,而不是流程名称——且不输出任何 stdout 内容。可与其他命令无缝组合:

robomotion validate write-to-clipboard/ && robomotion run write-to-clipboard/

失败时,以退出码 1 结束,并在 stderr 输出结构化的逐节点错误。验证时不会写入 Designer 侧文件(*.designer.ts)——需要 JSON 输出或刷新 Designer 文件时,请使用 robomotion build。(与 build 类似,如果某个 subflows/<id>.ts 未被任何 SubFlow 节点引用,它也会将其删除并提示。)

检查内容

  • 节点 ID 为 6 位小写十六进制字符,且不重复
  • 节点类型存在于其所属包的 pspec 中
  • 节点属性名称符合 pspec 架构(可捕获拼写错误、大小写错误或虚构的属性)
  • 端口编号正确(连线接入没有输入端口的节点,或从节点不存在的端口连出)
  • f.addDependency() 的命名空间和版本符合包索引
  • Designer 能读取文件——只导入一次 @robomotion/sdk,节点写在 create 回调内,不使用展开语法或辅助函数,否则会提示“Flow Designer 无法读取该文件”
  • 函数代码便于阅读——会检查“多条语句写在同一行”“整段代码写在同一行”以及同一代码块被粘贴到多个 Function 节点中的情况

不检查的内容

  • 从触发器出发的路径是否能到达 Core.Flow.Stop。 从 robomotion 26.9.8 开始,如果流程完全没有 Stop,validate 会发出警告(warning: no Core.Flow.Stop node);但 Chat In 或 App Action 流程除外。验证仍会通过。未连接任何连线的 Stop 不会被捕获。没有可达 Stop 的流程会在机器人上一直运行(下次运行会因忙碌而被拒绝)。请自行检查连线——参见检查清单。
  • 与通往 Stop 的路径并行分支出的叶节点(Debug、Log)——验证会通过,但 Stop 可能会在叶节点运行前结束流程
  • 循环连线模式(Goto→Label)——需手动检查
  • 缺少必填属性——需手动检查
  • 变量引用(Message('varName') 是否匹配上游写入)——需手动检查
  • 业务逻辑是否正确

验证后修复循环

robomotion validate write-to-clipboard/    # exit 1, error report on stderr
# read the error, edit main.ts to fix, then:
robomotion validate write-to-clipboard/    # exit 0

常见错误及修复方法

错误片段修复方法
Unknown property 'inCode'使用 robomotion describe node <type> 查看实际属性列表。
Node type X not found in pspec使用 robomotion get nodes <keyword> 查找正确名称。
Invalid output port N使用 robomotion describe node <type> 检查节点的输出端口数量。
Could not load pspec for Package检查命名空间拼写;使用 robomotion get packages <keyword>。
the Flow Designer cannot read it将文件写成声明形式:只导入一次 @robomotion/sdk,所有节点都放在 create 回调内,不使用展开语法。参见 creating-flow 的 docs/reference/project-format.md。
several statements on one line / a whole block on one line将 Function 的 func 中每条语句各放一行。参见 creating-flow 的 docs/reference/function-nodes.md。

运行前检查清单

  • robomotion validate 以退出码 0 结束——这也表示 Designer 能读取该文件,且每个 Function 的格式都正确
  • 从触发器出发的路径能到达 Core.Flow.Stop(没有任何 Stop 时,validate 只会发出警告;连线需自行检查):沿着连线从触发器开始检查;每条路径都以 Stop 结束,且 Debug/Log 叶节点必须从最后一步之前的节点分支出来,不能与 Stop 并列。完全没有 Stop 只适用于两种流程:应用后端(Robomotion.Apps.Action,每条路径都以 App Respond 结束)和聊天流程(Robomotion.ChatAssistant.ChatIn,每轮对话都以 Chat Out 结束)
  • 循环有 Goto→Label 连线(手动检查)
  • 已设置必填属性(手动检查)
  • 多输出节点的端口编号正确

相关技能

  • creating-flow — 生成工作流
  • running-flow — 验证后执行
  • searching-packages — 查找正确的节点类型 / 软件包

评论

支持 Markdown