plan-select — 扳手框架|方案择优引擎 v2(三维度槽位原型池)
定位: 需求执行路径选择的唯一权威入口。定义源:
~/Downloads/扳手框架|方案择优引擎.md+ 2026-08-18 用户两次会话裁定(维度重构)。 沿革: 替代 PLAN-FIRST-GATE"列步骤清单 → 等用户确认"环节——需求进入后不等用户审核方案,直接进本引擎择优执行。v1 五特征映射版 2026-08-18 同日被用户裁定重构为本版。
一、核心设计(用户裁定原文语义,冻结)
- 候选池固定 3 个维度槽位,每个维度生成一个方案,总共至多 3 个:
| 槽位 | 维度 | 方案 | 唯一核心高分特质 |
|---|---|---|---|
| 1 | 执行载体维度 | 【原生内置最优】 | 全程模型原生内部实现(不调用外部工具) |
| 2 | 依赖组件维度 | 【历史复用最优】 | 历史有生成过、可复用已有成果(标准内置库/已有代码,无额外外部依赖) |
| 3 | 变更范围维度 | 【迭代效率最优】 | 迭代生成步骤最少、修正次数最少 |
- 缺维过滤:某维度条件不满足(如历史没有可复用成果)→ 该方案生成不了 → 直接过滤,不给分、不参与排序。若判 0 分即成脏数据,会被"最低分最优"误选,可能输出"无方案"冒充最优——必须过滤而非计 0;
- 评分:有效方案分数 = S(真实执行步骤数,脚本直接计数),分数最低者为最优;同分按槽位编号小者优先(机械,无概率空间);
- 判 A → 照抄 chosen 直接执行,不等用户确认;
- 执行后双校验【运行态校验(超时/报错/权限拒绝)+ 产物客观校验】,失败
--rank N顺位切换,上限 = 有效方案数,全败即终止,禁止循环重试; - 禁止模型输出打分/自评词(脚本机械拦截 → VIOLATION);放弃探针;全部解析、计数、过滤、排序由脚本执行,模型照抄输出,禁止手写判定。
二、执行流水线
- 模型按第三节模板生成候选池(维度不满足的槽位直接不写该方案块),落盘
~/.agents/logs/plan_select/POOL-<ts>.md; - 扳开关照抄结论:
python3 ~/.agents/skills/plan-select/scripts/plan_select.py --pool <候选池文件> - 判 A → 照抄
chosen直接执行; - 双校验失败 → 必须
--fail <rank> --reason "<实测失败结果>"留痕(plan_select.jsonl 记 plan_fail 事件),脚本自动输出下一顺位;禁止裸--rank N跳顺不留痕; - 全败(rank 超界判 B)→ 终止任务;全部槽位被过滤判 B → 禁止输出"无方案",转 CLARIFY 向用户澄清。
三、候选池模板(模型唯一填充格式)
## 方案 1
dimension: native_internal
steps:
1. <客观动作描述>
2. <客观动作描述>
verify: <客观失败判据:什么实测结果算本方案失败,可机械复判>
## 方案 2
dimension: history_reuse
steps:
1. <客观动作描述>
verify: <客观失败判据>
## 方案 3
dimension: iteration_efficiency
steps:
1. <客观动作描述>
2. <客观动作描述>
3. <客观动作描述>
verify: <客观失败判据>
dimension:行仅允许 3 个字面槽位词(中文别名亦可):native_internal(原生内置)/history_reuse(历史复用)/iteration_efficiency(迭代效率),每槽至多 1 方案;steps:下只写编号步骤行(1.2.…),脚本直接计数得 S;verify:强制字段(2026-08-19 REFORM-GATE 判 A 落地,纠错机制内建化)——失败判据必须池子生成时写死,判 A 时脚本照抄进 directive,执行双校验时禁止临时发明/放水;缺失即 VIOLATION 拒判;- 某槽生成不了(维度条件不满足)→ 整个方案块不写,切勿写空块或凑步骤;
- 方案体内禁止"评分:/打分:/推荐方案/首选/我认为X更好"等自评词。
四、退出码(四态,与 gate-switch 族一致)
| 码 | 档 | 含义 | 动作 |
|---|---|---|---|
| 0 | A | 排序完成 | 照抄 chosen 直接执行 |
| 2 | B | 全部槽位被过滤 / rank 超界 | 禁止输出"无方案":转澄清或全败终止 |
| 3 | CLARIFY | 候选池无任何方案块 | 按模板生成后重扳 |
| 4 | VIOLATION | 未知维度词/槽位重复/>3 块/含自评词 | 修正模板后重扳 |
五、边界与例外
- 不适用:纯问答/查询类对话(无执行路径可选)、复盘/评估/写作等输出过程——直接回答,不走本引擎;
- 改造/优化类诉求(对规则/机制/流程的改造)仍先走 REFORM-GATE 收益闸,判 A 后的实施阶段进本引擎;
- 需求歧义大到任何槽位都填不出客观步骤 → 走 CLARIFY 问用户,禁止硬凑;
- 每次扳动留痕
~/.agents/logs/plan_select.jsonl(判定/chosen/过滤槽位),过滤率与顺位切换次数纳入复盘审计。