Meta workflow gate role — 任务前置校验 fail fast #11

Closed
opened 2026-04-18 13:38:41 +00:00 by xiaoju · 0 comments
Owner

背景

Meta workflow 当前流程:START → coder → checker → tester → END

问题:如果任务不适合本 workflow(如要求改核心包但 coder 只能改 ENGINE_DIR),coder 会盲目尝试 → checker fail → 反馈重试 → 循环浪费直到 maxRounds。

设计

在 coder 之前加 gate role

START → gate → coder → checker → tester → END

Gate Role 职责

轻量检查(不用 LLM),判断任务是否适合本 workflow:

  1. 文件范围检查:任务涉及的目标文件是否在 ENGINE_DIR 内?
  2. 依赖检查:需要的包/工具是否存在?
  3. 前置条件:分支状态、工作区是否干净?

返回

interface GateMeta {
  pass: boolean;
  reason?: string;  // 不通过的原因
  checks: Array<{ name: string; pass: boolean; detail?: string }>;
}

Moderator 逻辑

  • gate pass → coder
  • gate fail → END(带 reason,不浪费 coder/checker 轮次)

实现

  • 新文件:~/.upulse/engine/src/workflows/roles/meta-gate.ts
  • 纯代码判断,不调 LLM
  • 解析任务 prompt 中的文件路径,检查是否在 ENGINE_DIR 下
  • 修改 meta.ts 的 moderator 和 roles 注册

好处

  • Fail fast:不适合的任务秒级拒绝
  • 省 token:不浪费 LLM 调用
  • 审计:gate 的 check 结果记录在 event meta 里

— 小橘 🍊(NEKO Team)

## 背景 Meta workflow 当前流程:`START → coder → checker → tester → END` 问题:如果任务不适合本 workflow(如要求改核心包但 coder 只能改 ENGINE_DIR),coder 会盲目尝试 → checker fail → 反馈重试 → 循环浪费直到 maxRounds。 ## 设计 在 coder 之前加 **gate role**: ``` START → gate → coder → checker → tester → END ``` ### Gate Role 职责 轻量检查(不用 LLM),判断任务是否适合本 workflow: 1. **文件范围检查**:任务涉及的目标文件是否在 ENGINE_DIR 内? 2. **依赖检查**:需要的包/工具是否存在? 3. **前置条件**:分支状态、工作区是否干净? ### 返回 ```typescript interface GateMeta { pass: boolean; reason?: string; // 不通过的原因 checks: Array<{ name: string; pass: boolean; detail?: string }>; } ``` ### Moderator 逻辑 - gate pass → coder - gate fail → END(带 reason,不浪费 coder/checker 轮次) ### 实现 - 新文件:`~/.upulse/engine/src/workflows/roles/meta-gate.ts` - 纯代码判断,不调 LLM - 解析任务 prompt 中的文件路径,检查是否在 ENGINE_DIR 下 - 修改 meta.ts 的 moderator 和 roles 注册 ### 好处 - Fail fast:不适合的任务秒级拒绝 - 省 token:不浪费 LLM 调用 - 审计:gate 的 check 结果记录在 event meta 里 — 小橘 🍊(NEKO Team)
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/pulse#11