- name
- pipeline-debug
- description
- 调试和优化 MaaFramework Pipeline JSON。用于对照 schema 验证配置,检测缺失引用、循环依赖、孤立节点、命名与行为不匹配、ROI/阈值问题,并给出可靠性、性能和可维护性改进建议。触发词包括 debug pipeline、validate pipeline、optimize pipeline、pipeline error。
- license
- MIT
- compatibility
- Designed for Claude Code
- allowed-tools
- Read Grep Glob
# MaaFramework Pipeline 调试
## 功能说明
- 对照 `tools/schema/pipeline.schema.json` 及相关 schema 验证 Pipeline JSON。
- 检测结构性问题:缺失引用、循环依赖、孤立节点、意外终止。
- 通过命名规范分析节点角色,从节点名推断其预期行为。
- 检测命名与代码不匹配,例如 `Click` 节点没有动作,`Visible` 节点却执行点击。
- 提供性能、可靠性和可维护性优化建议。
- 必要时生成修正后的 Pipeline 片段,可以增删节点以实现正确行为。
## 使用场景
- Pipeline JSON 运行不符合预期。
- 部署前验证 Pipeline 配置。
- 排查节点跳转、识别失败、重复点击、误点、卡死。
- 优化 ROI、阈值、流程结构或异常处理。
- 根据节点名理解流程语义,检查命名是否与实际识别/动作一致。
## 工作流程
### 1. 读取规范文件
优先读取当前项目中的 schema:
1. `tools/schema/pipeline.schema.json`
2. `tools/schema/interface_import.schema.json`
3. `tools/schema/interface.schema.json`
4. `tools/schema/custom.recognition.schema.json`
5. `tools/schema/custom.action.schema.json`
如果项目缺少某个 schema,说明缺失项并继续基于 MaaFramework 通用协议分析。
### 2. 分析 Pipeline 片段
1. 解析 JSON,列出所有节点。
2. 提取关键字段:`recognition`、`action`、`enabled`、`next`、`interrupt`、`sub`、`on_error`、`timeout`、`max_hit`。
3. 构建节点图:父节点到子节点、反向引用、入口节点、终止节点。
4. 区分 v1 简写字段和 v2 `{type, param}` 字段。
### 3. 对照 schema 验证
逐节点检查:
- 必需字段是否齐全。
- 字段类型是否匹配。
- 枚举值、数值范围、字符串模式是否合法。
- 识别类型及参数是否正确。
- 动作类型及参数是否正确。
- Custom 节点名和参数是否可能与 agent 注册不一致。
### 4. 通过命名分析节点语义
使用 [Pipeline 节点命名规范](references/pipeline-node-naming.md) 理解节点角色:
- `<Domain>Main`:入口节点。
- `<Domain><Subtask>Flow`:流程编排节点。
- `<Domain>Enter<Page>`:进入页面或功能。
- `<Domain>On<Page>Page` / `<Domain><Object>Visible`:页面或 UI 状态检测。
- `<Domain>Click<Object>` / `Select` / `Claim` / `Purchase`:动作节点。
- `<Domain>Confirm<Object>`:确认弹窗或确认操作。
- `<Domain><Page>Entered`:进入成功哨兵节点。
- `<Domain>End` / `EndTask`:终止节点。
重点检查命名与行为不匹配:
- `Click<Object>` 但没有 `action: Click` 或等价动作。
- `Visible` / `On<Page>Page` 却执行点击。
- `Flow` 节点包含具体识别或动作。
- `Enter<Page>` 点击后没有成功哨兵或重试/异常处理。
- `Detected` 暴露底层识别实现,而 `Visible` / `Available` / `Selected` 更符合业务语义。
### 5. 分析节点关系
- 所有 `next[]`、`interrupt[]`、`sub[]`、`on_error[]` 目标都必须存在。
- 识别循环是否有退出条件、`max_hit`、`timeout` 或明确终止节点。
- 找出无法从入口到达的孤立节点。
- 找出没有 `next` 且不像终止节点的死胡同。
- 检查 `[JumpBack]`、`[Anchor]` 等节点属性是否用于合适场景。
### 6. 识别常见问题
详见 [调试规则参考](references/debug-rules.md)。快速检查:
- 缺少识别或识别类型错误。
- TemplateMatch 缺模板、OCR 缺 expected、ColorMatch 缺 lower/upper。
- ROI 过大、阈值过低或过高。
- 点击后没有验证下一画面。
- 重复点击同一按钮,可能误点到下一页元素。
- `enabled` 默认值与 Project Interface 选项语义不一致。
### 7. 生成优化建议
建议按优先级输出:
1. 正确性问题:会导致执行失败、误点、卡死。
2. 可靠性问题:弹窗、加载、动画、网络波动下容易失败。
3. 性能问题:全屏识别、大模板、高频 OCR。
4. 可维护性问题:命名不清、过度拆分、重复节点、缺少 desc。
### 8. 提供修正方案
如发现问题,给出修正后的 JSON 片段,并说明每处改动原因。响应格式见 [输出格式](references/output-format.md)。
## 注意事项
- v1 简写和 v2 object 格式可能共存,应按项目现状判断,不要强行重写无关节点。
- 无 `next` 的节点可以是合法终止节点,但必须符合流程语义。
- `enabled` 默认为 true,只有显式 `false` 才默认关闭。
- `interrupt` / `sub` / `on_error` 的语义依项目使用习惯和 MaaFramework 版本而定,先查 schema 和现有模式。
- 模板路径通常相对 image/resource 图片目录,具体以当前项目约定为准。
- OCR `expected` 可能支持正则;是否自动 i18n 取决于当前项目工具链。
- 输出问题时优先给高置信度结论;不确定项标为“需要运行日志或截图验证”。
## 参考资料
- [Pipeline 节点命名规范](references/pipeline-node-naming.md)
- [调试规则](references/debug-rules.md)
- [常见模式](references/common-patterns.md)
- [输出格式](references/output-format.md)
- MaaFramework Pipeline Protocol:<https://github.com/MaaXYZ/MaaFramework/blob/main/docs/en_us/3.1-PipelineProtocol.md>
在 GitHub 查看