Maintainer scope(维护专用 · Cursor)
- 不是 runtime pack:日常
specify → implement → QC不要求 Read 本 skill;已从skills/mstar-*运行时包中拆出,避免与「每轮必读」混淆。 - Canonical 位置:本仓库内 仅此目录(
.cursor/skills/mstar-routing-eval/)为正文 +assets/SSOT;不再维护skills/mstar-routing-eval/副本。 - 谁在读:
@prompt-engineer改规则前;维护者改project-manager/ harness 门禁后跑回归;repo-maintenance清单涉及路由时。
Load order(必读顺序)
在同一会话或任务中首次 Read 本 skill 时:必须先 Read mstar-harness-core skill(SKILL.md,以及评估路由与门禁时需要的 mstar-harness-core/references/)。 本 skill 的 routing-evals.json 场景校验的是对 harness 的遵守情况;若未建立 harness 上下文,评估易与真实门禁脱节。冲突时 以 mstar-harness-core 为准。
摘要:mstar-harness-core — 期望路由与 phase gate;本 skill — 场景集、Routing Eval Report 模板与回归方法。
Morning Star Routing & Evaluation Harness
1. PM 路由评估
本节用于验证 @project-manager 是否将任务路由到正确的 agent 和门禁。
输入
- 场景集:本 skill 的
assets/routing-evals.json - 路由策略来源:
mstar-rolesskill 的project-manager角色 - 全局约束:
mstar-harness-coreskill(含 harness 不变量与 skill 索引)
评估方法
对每个场景:
- 将实际路由与
expected_route进行比对。 - 检查所需产出是否已规划并最终产出。
- 验证没有
hard_fail_if条件被违反。 - 验证
Context Loaded已声明且包含必要文件。 - 验证 Assignment 的语言契约:字段名英文、任务正文可中文、执行产出/报告英文(除非用户明确要求其他语言)。
- 记录路由质量和缺失的证据。
评估执行步骤(1-2-3)
- 准备输入:加载当前
assets/routing-evals.json、project-manager.md、mstar-harness-core(含 references)。 - 逐案判定:按
expected_route/must_have_artifacts/hard_fail_if打分并记录证据。 - 输出报告:按下文
Routing Eval Report模板汇总(含phase_gate_compliance_rate)。
评分
Pass:路由和产出满足预期,无硬性失败。Borderline:存在轻微偏差但质量门禁得到保留。Fail:触发硬性失败条件或跳过关键门禁。
Phase Gate 评分细则
用于量化 specify -> clarify -> plan -> tasks -> implement 合规度。
Pass- 非 hotfix:Prepare 与 Execute 门禁均完整通过;无跳步实现。
- hotfix:允许压缩路径,但已明确事后
clarify/RCA补记安排。
Borderline- 门禁顺序总体正确,但存在可修复的轻微缺项(例如
Phase Gate Checklist字段漏写但证据可追溯)。 - 未出现"先实现后补 gate"的行为。
- 门禁顺序总体正确,但存在可修复的轻微缺项(例如
Fail- 非 hotfix 跳过
clarify或tasks。 - 已知 plan drift 仍继续实现,且无 plan 回写。
- hotfix 未承诺或未记录事后
clarify/RCA。
- 非 hotfix 跳过
建议量化指标
phase_gate_compliance_rate = pass_cases / total_cases- 建议门槛:
- 日常迭代:
>= 0.9 - 关键发布前:
= 1.0
- 日常迭代:
2. 回归信号
如果以下情况在两个或以上场景中出现,则说明路由逻辑退化:
- 实现类任务省略了 QA gate 决策(
mandatory或pm-acceptance须落 Assignment;禁止无字段即 Done) - QC 路径相对任务类型被过度或不足使用
- 跨模块工作缺少 architect/探索阶段
- 未按
specify -> clarify -> plan完成准备阶段即进入实现 plan完成后未进行tasks拆解就直接实现- 非热修复任务使用了热修复路径
- 对业务 Git 仓库的实现类分派缺少
Working branch或明确的Branch policy(见mstar-branch-worktreeSKILL.md) Context Loaded缺失或缺少必要的 plan 路径- 非热修缺陷在未记录根因或可证伪假设前大规模改代码
- 生产/高危运维变更缺少回滚说明或高危清单
- 声明 Report-only 的 QA 任务却改动业务逻辑,或无谓触发全量三审
- Hotfix / clean small non-UI 误派
qa-engineer(应为QA gate: pm-acceptance) - UI 可见变更跳过 mandatory QA 或无 observable 证据
- Assignment 语言契约不一致(字段名漂移为中文、或要求英文报告却回报为中文且无用户豁免)
- 实现类 Assignment 缺少
Task category或与Execute as、Why this agent明显矛盾(或缺少Execute as) - 意图门禁缺失:Prepare 未书面收敛真实目标/成功判据/非目标即进入开发分派
- Dev 三角失衡:在「新 API + 多文件/用户可见 UI」或可并行的双模块场景下,长期仅派
@fullstack-dev、从不派@frontend-dev/@fullstack-dev-2,且 Assignment 未写明Dev routing: single-stream — … - 误把「单轨串行」当「全程仅 fullstack-dev」:计划写不并行 / 逐波串行,但 PM Task Board 上多行可对等 dev 单元却无理由全部
fullstack-dev、未按project-manager.mdDev 三角 §6 round-robin,也未写Dev owner tie-break: single id — … - 并行技能标签缺失:已下发 ≥2 条并行实现 Assignment(或
Dev routing: parallel/ tasks 并行标记)且走 Superpowers 工作流时,Status Update 或 Assignment 的Superpowers未出现dispatching-parallel-agents(或同义短语);或 同仓 ≥2 可写并发 却未叠using-git-worktrees与检出约定 - N invoke ≠ worktree 隔离:同条消息已发 ≥2 implement invoke,但 Assignment 无绝对
Worktree path/ 未在 invoke 前git worktree add(见mstar-branch-worktree→references/parallel-writable-pre-dispatch.md) - 跨 plan 无 lease 并行:迭代 Phase 2 跨 plan 可写派发无 verified
plans[].execution_lease+ 独立 featureWorktree path;或 steal / 覆盖活跃execution_lease/integration_merge_lease;或并行 integration merge;或InProgress无 lease 未恢复即 writable-dispatch(见mstar-iteration§2.6 ·mstar-dispatch-gates) - 跨 plan 并行无 same-host 锁:跨主机 / 无共享 flock 仍 dispatch 跨 plan 并行可写 implement,且 无 用户本轮
Cross-host lease race: accepted(或等价)+ auditplans[].notes;应 Blocked 或改为Plan parallelism: serial(见mstar-artifacts·mstar-iteration§2.0 #5)— 含Worktree mode: waived Worktree mode: waived误作并行授权:Assignment 含 waived 且无 same-host 锁、无 serial、无Cross-host lease race: accepted+ audit 仍 dispatch 跨 plan 并行可写 implement- invoke 角色字段缺失(静默 generic 回退):已发 Task/subagent invoke,但 item 漏写与
Execute as匹配的角色绑定字段(ompagent/ Cursorsubagent_type/ OpenCodesubagent/ Kimi·ZCodesubagent_type)⇒ 宿主静默回退 generic worker,却因 count=N 通过而误判「派发完成」(见mstar-dispatch-gates、mstar-host/references/parallel-dispatch.md)。N=1 顺序 Review-&-Edit 链最易触发——count 门恒过,字段门是唯一保护 - scoped 会话越界:作用域 PM 已绑定指定 plan 仍驱动非指定行(例如第一个未完成 plan);或把
project-manager当 subagent 派发而非在当前主会话 boot;或为 scoped 路由加载整迭代 boot 产物(compound、Phase 3-6 细则);或把 plan / coordinator 会话路径传进 child Assignment 或 child invoke(caseplan-scope-addresses· 见mstar-iteration→references/plan-scoped-pm.md) - 重复 fresh claim 被当 resume:第二个终端对同一 Assignment 再 bind 时发明 resume token 或自动挂到活跃 holder;或把终端标签、pane 状态、idle 时长、TTL 当身份,或抢 lease;或把同一 Assignment 的 fresh bind 当隐式 same-holder resume(期望 engine 以
coordination.duplicate-holder拒绝;caseplan-scope-duplicate· 见mstar-iteration→references/plan-scoped-pm.md) - 未知或残缺参数回退整迭代:
--workflow/--plan残缺、混合或未知时回退到无参整迭代路由;或静默补全缺项、挑默认 plan;或声称畸形调用执行成功、改状态让它「成功」(caseplan-scope-unknown-args· 见mstar-iteration→references/plan-scoped-pm.md) - 无参路由被 scoped 化:把无参路由当作对 global boot 的 scoped 过滤;或在无参路由上要求
--workflow/--plan或 Assignment;或为它 seed 一个 scoped session(caseplan-scope-noargs· 见mstar-iteration→references/plan-scoped-pm.md) - 最后一个 plan 越权收尾:因是最后一个未完成 plan 而进入
## Phase 3: iteration-close或跑 compound;或从 scoped session 写status: Done、删execution_lease;或开迭代 PR、启动 PR merge-ready loop(期望停在mstar plan handoff后的InReview;caseplan-scope-last-plan· 见mstar-iteration→references/plan-scoped-pm.md) - scoped session 自证 Done:plan session 置
Done或释放行 execution lease / integration merge lease;或没有已验证的 coordinator merge proof 就报完成;或信任调用方给的成功标志、用第二次 merge 代替reconcile(caseplan-scope-handoff-done· 见mstar-iteration→references/plan-scoped-pm.md) - leaf 升格或收凭据:leaf 自升为 PM / coordinator 并吸收 plan scope;或递归派发 PM 或任何 subagent;或接受、保存、回显 Assignment 给的 session path / credential(case
plan-scope-leaf· 见mstar-dispatch-gates) - Phase 2 线性等待:存在 running child 即进入 wait,未先按
Rescheduling checkpoint(before-wait)评估独立 ready task / 已 prepare plan;或把 plan / task 编号当串行理由(casephase2-ready-before-wait· home 指针 →mstar-iteration→references/phase-2-worktree-lease.md§2.4) - review 返回不推动调度:task review 返回后仍等无关 plan 的整个 lifecycle 结束才派发无关 ready 实现;或让并行轨共用同一可写 session / resumed reviewer(case
phase2-review-overlap· home 指针 →mstar-iteration→references/phase-2-worktree-lease.md§2.4) - 依赖提前释放或活动 base 被改:review 通过即释放 dependent task;或对已派发活动 task re-split / 改
BASE_SHA(casephase2-base-dependency· home 指针 →mstar-iteration→references/phase-2-worktree-lease.md§2.4) - 重复 owned 工作 / 超容量 primary:重复派发 owned / running 工作,或在最后一个 primary 槽位被占时再起 primary;或用 pane idle / 终端标签当 ownership(case
phase2-owned-and-capacity· home 指针 →mstar-iteration→references/phase-2-worktree-lease.md§2.4) - 空 ready 循环:无 ready work 时反复自证同一事实、timer / 轮询、tick 计数或「still waiting」notice;为保持忙碌造工作(case
phase2-quiet-wait· home 指针 →mstar-iteration→references/phase-2-worktree-lease.md§2.4) - scoped primary 越界调度:scoped plan primary 驱动 sibling plan、跑 integration merge 或进入 Phase 3–6(case
phase2-scoped-primary· home 指针 →mstar-iteration→references/phase-2-worktree-lease.md§2.4)
3. 迭代规则
如果任一场景失败:
- 向用户提议对
mstar-rolesskill 的project-manager角色 或mstar-*skills 的修改(全局配置写入仅由用户本人执行,agent 不得直接落盘) - 重新运行完整场景集
- 在 plan notes 中记录变更内容及原因
4. Prompt/规则迭代评估(独立于单次对话)
为什么需要这个
没有评估的 prompt 修改容易过拟合到单次对话。使用小型但可重复的评估体系,让改进提升可靠性,而非仅仅优化风格。
迭代循环
- 定义变更假设(若涉及「库文档怎么查」或宿主差异,先对照
mstar-harness-core的共享协议与当前宿主 adapter skill,避免双轨说明漂移)。 - 运行一组固定的代表性任务提示词。
- 对比变更前后的行为。
- 记录发现并更新提示词/skill 文档。
- 重复直到收益趋于平稳。
测试集设计
维护一组紧凑的提示词,覆盖:
- 小型功能交付
- 中等规模跨模块变更
- 缺陷调查与修复
- 审查密集型路径(含评审意见冲突)
- 提示词/规则重构任务
- 间歇性/高歧义缺陷(RCA 先于大改)
- 用户可见前端回归(
QA gate: mandatory+ 可观察 QA 证据) - Hotfix / clean small non-UI(
QA gate: pm-acceptance,不派 QA) - 生产或高危运维变更(回滚与清单)
- QA Report-only(无业务代码改动)
每个测试应指定:
- 预期路由(应使用哪些 agent)
- 预期产出(计划、审查摘要、验证证据)
- 硬性失败条件(缺少 QA gate、无 pm-acceptance 清单即 Done、跳过审查等)
- 阶段门禁轨迹(
specify -> clarify -> plan -> tasks -> implement)
评分维度
每次运行按 1-5 分评分:
- 路由准确性:正确的 agent、正确的阶段、最少的交接摩擦
- 策略合规性:计划更新、状态流转、签收规则
- 证据质量:具体验证而非模糊声明
- 吞吐量:每轮产出进展,避免不必要的等待
- 鲁棒性:失败或歧义后的恢复质量
- 阶段适度性:任务体量与门禁深度匹配(小改动不套全量"计划评审"链,大改动不跳过 RCA/契约)
- Phase Gate 合规:非 hotfix 不得跳过
clarify与tasks - 行为准则合规:是否符合
mstar-coding-behavior(显式假设、最小解法、手术式改动、Step -> verify)
Prompt 变更的最低接受标准
提示词/规则变更只有在满足以下条件时才可接受:
- 策略合规性不下降
- 不增加可避免的交接循环
- 至少 3/5 场景中证据质量持平或更好
- 关键场景中
Phase Gate合规率不低于变更前(建议目标:100%) - 行为准则合规不下降(尤其是"无关改动率"与"不可追溯改动")
回归记录
当变更导致回归时,记录:
- 提示词版本和变更部分
- 失败的场景
- 可能的根因
- 回滚或后续调整
将此日志保存在相关 plan 文件的 notes 或 failure log 中。
5. Routing Eval Report(输出模板)
当使用 assets/routing-evals.json 跑回归时,建议统一输出以下结构,便于横向比较:
# Routing Eval Report
## Run Metadata
- date: YYYY-MM-DD
- ruleset version: {version}
- evaluator: {agent/person}
## Overall
- total_cases: {n}
- pass_cases: {n}
- borderline_cases: {n}
- fail_cases: {n}
- phase_gate_compliance_rate: {pass_cases / total_cases}
## Failed Cases
- {case-id}: {reason}
- {case-id}: {reason}
## Borderline Cases
- {case-id}: {what is missing and why still borderline}
## Regression Signals
- {signal}: {count}
## Recommended Actions
- {doc or prompt change proposal}
最小要求:
- 每个失败用例必须对应
hard_fail_if中的具体条目,避免"主观失败"。 - 必须单独报告
Phase Gate相关失败(clarify/tasks/plan-drift/hotfix-post-rca)。 - 报告应可回溯到本次评估使用的
routing-evals.json版本。
6. 实践指引
- 每次迭代只改变一个主要行为维度。
- 优先删除低价值指令,而非添加更多文本。
- 将评审中反复出现的评论转化为明确的模板或检查。
- 将持久性规则提升到对应
mstar-*skill 中;保持角色文件简洁。 - 对"最小解法/手术式改动"建议做抽样 diff 审计,避免 prompt 变更后再次膨胀。
Assets
assets/routing-evals.json— PM 路由回归场景集(结构:cases[].prompt / expected_route / must_have_artifacts / hard_fail_if)。评估时用cat或jq读取;更新场景集须与本 skill 同 PR 维护以避免版本漂移。本 skill 侧的维护事实:场景集当前为version32 · 63 例(含plan-scope-*7 例与phase2-*6 例,其防守信号均登记在 § 2);数字以场景集文件为准,此处只随更新改写。