Back to skills
SKILL.md
Evolve Check
ASecurity任何内容流程收尾的伴随演进评估(数据驱动的 self-evolving,非独立目标轮)。 用户下内容目标(补 case / reference 沉淀 / 诊断 / 拉取 / replay)后,执行中产生 的数据(新沉淀、miss、重复动作、流程摩擦)本身就是 evolving 信号——本协议在 流程收尾低成本检查:对照触发条件表 → 有信号才产 idea 卡并自行验证执行 (agent 自产卡 + 自验证 + 攒批聚合 PR 人审),无信号一行即止。演进不是"跑一轮 自演进"才发生,而是系统做事时自动校准——像人学习。深度全库观测轮(用户说 "看看有什么可改进")见 /skill:self-evolve;本文件是被内容流程收尾引用的轻量协议。
- 5 stars
- 0 votes
- 0 copies
- 3 views
- Added September 19, 2026
Security analysis
100/100npx -y skills add pillumina/ascend-sleuth --skill evolve-check --agent claude-codeAre you the author of Evolve Check?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/pillumina-evolve-check)---
name: evolve-check
description: >
任何内容流程收尾的伴随演进评估(数据驱动的 self-evolving,非独立目标轮)。
用户下内容目标(补 case / reference 沉淀 / 诊断 / 拉取 / replay)后,执行中产生
的数据(新沉淀、miss、重复动作、流程摩擦)本身就是 evolving 信号——本协议在
流程收尾低成本检查:对照触发条件表 → 有信号才产 idea 卡并自行验证执行
(agent 自产卡 + 自验证 + 攒批聚合 PR 人审),无信号一行即止。演进不是"跑一轮
自演进"才发生,而是系统做事时自动校准——像人学习。深度全库观测轮(用户说
"看看有什么可改进")见 /skill:self-evolve;本文件是被内容流程收尾引用的轻量协议。
---
# Evolve-Check(收尾评估协议)
> **定位**:self-evolve 的伴随形态。self-evolve = 用户显式发起的深度轮(全库观测/
> 攒批/聚合);本协议 = **任何内容流程收尾自动执行的轻量检查**——用户说"沉淀
> vllm-ascend 的 closed issue",issue-ingest 跑完收尾即触发本协议,不看用户是否
> 另说"改进系统"。演进是隐形执行策略的一部分;本文自包含执行参数。
>
> **本地执行说明**:本 skill 是收尾协议,非独立用户入口。内容流程(issue-ingest /
> to-reference / to-postmortem / diagnose / knowledge-groom)收尾时,agent
> `read` 本文件并遵循下方流程;用户说"这次做完有什么可改进的/值得沉淀的"也可直接触发。
## 何时触发(收尾钩子)
任何内容流程**完成主体目标后、出最终报告前**执行一次,成本目标近零(无信号即止):
- issue-ingest:沉淀与标记完成后;
- to-reference / to-postmortem:草稿产出、落盘后;
- diagnose:**不强制每次收尾跑本协议**(高频 + 已有内建 evolving:未命中起草候选
case、源码揭示稳定结构事实顺手走 to-reference、反馈捕获把 `feedback.outcome` 置 `pending`)——
其 L2/L3 视角(反复 miss 同族、流程摩擦)由 S2 replay(`s2_replay.py --todo`)
与深度轮归因事件信号覆盖,见 /skill:self-evolve §二;
- knowledge-groom:批审产出后。
触发**不需要用户说"跑自演进"**——它是流程的默认收尾步骤(同 diagnose 写 trace 的
地位)。如果一轮内容执行本身就是自演进深度轮的一部分(self-evolve 驱动),跳过本
协议(深度轮已含观测)。
## 评估步骤(先扫信号,无信号即止)
**第 1 步:读本轮执行现场**(不重扫全库、不读 case 全文——token 预算,原则九):
- **优先读统一执行记录**(走脚本,别内联 python):脚本自带三件内联版没有的东西——**路径解析**
(共享件在主检出还是本检出内)、**共享范围标注**(防把读数读成全系统读数)、**无记录时的退化口径**。
内联版还踩过另一类坑:记录里的 `at` 曾被 PyYAML 读成 datetime,`r['at'][:16]` 直接 TypeError
(写侧现已统一为带引号 ISO 字符串,该断点已修——但前三条理由不变,且新 worktree 里文件根本不存在):
`python3 scripts/tail_exec_log.py`(默认尾部 3 条;`--n 5` / `--skill evolve-check` / `--json`)
——拿"本轮做了什么"(替代凭 agent 记忆):
- 产出:本轮新增 case/reference/卡 id(从记录 products 提取,不重扫全库);
- 过程中有没有:miss(diagnose/replay 未命中)、重复手动动作、流程摩擦、执行错、
新数据源/新 issue 类型首次出现——这些在 decision_reason 未提及时由 agent 现场补判断;
- **无执行记录时**:脚本打印一行「无执行记录」并 exit 0——这是**正常退化路径,不是报错**
(内容 skill 忘了落记录、或本轮是历史流程/外部动作)。按它给的口径如实标注"无执行记录,
基于现场判断",不假装有数据(诚实退化)。内容 skill 收尾应落记录(见各 skill「收尾」节);
修好记录缺失比在本步硬猜更有价值。
- **exec-log 是同一克隆共享的**(主检出 `metrics/skill-exec-log.yaml`,所有 worktree 共写共读;
`.gitignore` 运行时件):所以"这里为空"= **这个克隆还没有任何收尾记录**,而不是"本 worktree
没跑"。脚本输出自带路径与共享范围标注,**不要**把读数说成全系统读数——**跨克隆/跨机不聚合**,
要跨机得让聚合值(`--summary`)写进当期的指标源文件(`metrics/timeline.d/<期号>.yaml`,
随后 `scripts/build_timeline.py` 重建聚合)。
**第 2 步:对照触发条件表**——命中的信号才继续,无命中直接出报告。**本表是「哪些现场值得产卡」的清单,不是信号名枚举**:卡里的 `source_signals[].signal` 是自由文本,允许写更贴切的名字;新增一类现场时**先补本表**再产卡(否则表与行为会脱钩——实测曾有一批卡触发在表外)(加一行
"evolve-check:无演进信号"),**不为产卡而产卡**(原则四/十)。
| # | 信号(本轮执行现场) | 含义 | 候选动作 |
|---|---|---|---|
| T1 | 沉淀 ≥3 条同根因/同族 case,或发现可跨 case 归纳的共性 | 有 methodology/reference 可提炼 | 归纳 reference(走 /skill:to-reference --ingest-cases),**不产卡**;归纳时发现要改路由或加载行为才产卡 |
| T2 | diagnose/replay miss 某 issue 族,或 Tier 3 兜底反复走同路径 | 覆盖缺口 | 补 case(S2 replay 佐证缺口),**不产卡**;缺口指向 triage 分支或检查判据才产卡 |
| T3 | 同一手动动作重复 ≥2 次(如反复拼同一查询、反复等同一命令输出) | 可固化流程/脚本 | 产 L2 卡:沉淀脚本/skill 步骤或 reference |
| T4 | 执行错反复出现且无归属组件 / 归因事件聚合浮出失败簇 | 流程缺陷 | 产 L2 卡:修订该组件所在 skill 步骤 / triage 分支 |
| T5 | 新数据源/新 issue 类型/新错误码首次出现且无配置 | 覆盖扩展 | 扩配置 / 补 reference 家族,**不产卡**;要改家族表的绑定方式或 triage 分支才产卡 |
| T6 | 容量超 soft_cap 或健康指标恶化(`scripts/metrics_health.py` 的越界清单;判据数值在 `metrics/gates.yaml`) | 结构治理 | 产 L1 卡:拆分评估(ev_proposal) |
| T7 | 本轮跑通一个可复用链路(拉取→评测→沉淀→验证全通) | 新流程资产 | 产 L2 卡:沉淀为 skill/脚本候选(弱信号,新 skill 立项走双签) |
| T8 | 本轮出现**体验/质量**信号(用户抱怨问得多/结论看不懂、输出像模板、坏路径甩锅、交互摩擦) | 体验与质量问题 | **不产卡**——记入 session 报告,累积成 `/skill:skill-review` 的输入(体验是判断性规范,不做 CI 硬门) |
| T9 | **人给的反馈**:人审意见、owner 追问、用户纠正(同一条反馈反复出现 = 判断或表法有系统偏差) | 人的判断与系统的判断不一致 | 产 L2 卡:把该判断改成结构或流程步骤(反馈只出现一次 → 先记信号,不产卡) |
| T10 | **自审发现的缺口**:设计缺口 / 机制缺口 / 可观测性缺口(如「判据在量错东西」「声明与实现不符」「某个读数没有分母」) | 机制自身的缺陷 | 产 L1/L2 卡:修读数或补机制(这是本协议最主要的产卡来源,别把它当「没有信号」) |
| T11 | **审计/数据体检**:口径漂移、断言过期、数据反常(如「同名概念两个数」「断言里写死的数字已腐烂」) | 存量在腐化 | 产 L2 卡:修口径或改断言;**审计轮本身不产卡**,带具体缺陷才产 |
**第 3 步:产卡 + 自行验证(有信号时,agent 自动完成,不等用户)**:
1. **先读候选水位**(产卡前的机械检查,别靠自觉):`python3 scripts/ev_proposal.py --waterline`
——输出「待回写/待合入 N(上限 20)」,**超限退 1**;退 1 时本轮**只记信号不产卡**,先消化积压
(信号照记在收尾说明里,条件到了再产)。读数含"指针没回写"的成分,超限时先按
`python3 scripts/ev_proposal.py --mark-merged --from-prs` 把上一批的指针补齐再看剩余量——
把已合入的卡读成未合入,会让动作走成"停产"而真正该做的是回写;
2. 查重 + **同组件先例咨询**(防重提被拒方案——skill-impact 咨询语义;
论证可选层 docs/mechanism/pipeline.md §12a):`python3 scripts/ev_proposal.py --list`
——同 trajectory/同 target 已有在池卡 → 合并不新建;
同时查本卡要改的组件(skill 步骤 / triage 分支 / script)在历史卡里的结局:
`--list` 定位同组件卡 → 读其 decisions——该组件被改过 / 回滚过 / 有 rejected 结论 =
该方向已试过 → 不重复方案(改提新方向,或记信号不产卡);一次查全走
`python3 scripts/ev_proposal.py --impact [组件关键词]`(组件×尝试×结局;**有结局分歧的组件会被标出**
——只有那些组件的先例能告诉你"别重试",其余是"改完又改"的累积);
3. 产骨架:`python3 scripts/ev_proposal.py --new` → 填字段(layer / **target_component** /
title / source_signals 带 trajectory / hypothesis / predicted_effect / validation /
risk / principle_refs),trajectory 必须指到本轮执行出处(产出文件 id / replay
结果 / trace)。**target_component = 本卡要改的那个组件**(仓库内路径或组件名):它是
「同组件改过几次、结局如何」的键,缺了先例咨询就无从查起(先例视图 `ev_proposal.py --impact`
读它;CI 对生效日之后的卡强制);
`predicted_effect` 必须带 **`measure`——预测的出处**:一条命令 + 期望
(`expect_exit` 或 `expect_stdout` 至少一项),让**任何** reviewer 一条命令就能
复核预测是否成立(`scripts/ev_measure.py <卡号> --run`;三态退出码 =
符合 / 被证伪 / 无法判定)。真不可度量时如实声明 `reason`,不要编一条命令。
预测写不出可复现口径,通常说明它还不是一个可证伪的假设——先改预测。
与 `trajectory` 的分工:trajectory 管**问题可回放**,measure 管**预测可复现**;
4. **自行验证执行**(评估自动化的核心——agent 自己验证,不把验证推给人):
- 按**影响面分级**选门禁(docs/guide/eval.md「门禁分级」可选论证层,下述为执行值):
**检索/路由/候选选择面**改动 → golden 子集前后对照(2-5 条受影响 fixture,
非全量;基线缓存复用,只跑改后侧)或 S2 replay(`scripts/replay_golden.py` /
`scripts/s2_replay.py`),数据通过才算 eval solid;检索/路由层候选在 **arena
selection 池可用时**(`scripts/eval_arena.py --stats` 出分、`--gate` 出判词,论证见
docs/mechanism/eval-arena.md 可选层):无回归 + 门控判词为 **accept**
才判 solid(门控判定是数据门槛,不替代 dual 双签)。golden 无回归不在这两条命令里,
由 `scripts/replay_golden.py` 单独跑(每条 fixture 一次完整诊断,要模型)。
**判词三态,只有 accept 算通过**:`weak_accept` 表示"看起来涨了但证据不够"
(池子里翻转的对子太少,或 stats 缺逐条向量)——**不得据此判 validated**:
要么补样本/扩池后重跑,要么如实把卡记为证据不足(诚实退化,不虚报门控通过)。
判据自带复用折减:同一个池被反复拿来做接受决定时,工具的判定阈值按复用序号收紧
(池内容变了=换了量尺,复用计数自动归零)。所以**别把同一个小池当无限量尺**——
连续几次判 weak 就是该重新选样或扩充池的信号,而不是把标准说松;
**交互/追问/指引面**改动(不改变候选选择)→ 跑 ixn 对口样本(`scripts/ixn_replay.py`,
2-3 条针对性)或小型探针,**不跑检索 golden**;
纯文档/注释 → 不跑 replay,scan + 人审;
- 不能即时判定的(真实反馈类 content/fix):完成实现 + S2 佐证,如实标注
"已实现待真实确认"(现场有效性进观察窗,事后结算);
- **先跑一遍自己的 `measure`**(`scripts/ev_measure.py <卡号> --run`):判据跑不通
或期望对不上的预测,不算验证——先修判据或如实改预测,别把不可复现的预期留在卡上;
5. **agent 判断(EV 卡 = agent 决策档案,不含 git 合入态/待办态)**:
- eval solid → `validated`(采纳:改动保留,进流程层攒批/PR 供人审);
- eval 不成立 / 实验失败 → `rejected`(不采纳:留结论,改动不保留);
- 发现更好方向 → 新卡 supersede 本卡(`superseded`);
- **产卡即执行(无 candidate 待办态)**——方案成形才产卡,产卡状态 in_experiment
开始执行;执行或验证完成而卡仍停 in_experiment = 卡不完整(见第 3.5 步)。
**第 3.5 步:生命周期完整性(卡 = proposal→action→eval→decision 的 agent 决策档案)**:
- **每步 decisions 记 type**:产卡记 `{type: proposal}`、执行记 `{type: action, conclusion: <做了什么/commit/产物>}`、
验证记 `{type: eval, conclusion: <验证数据/通过与否>}`、判断记 `{type: decision, conclusion: <采纳/不采纳/换方向/继续下一轮+依据>}`——
卡能看出生命周期走到哪、凭什么判断。**decision 是"在该节点做出的判断",不是"卡的终点"**:一张卡可以有多次
(多轮:判断 → 新一轮 → 再判断),终态由 status 承载;
- **status 随执行推进,不靠自觉**:方案成形 → 产卡(in_experiment,开始 action + eval);
agent 判断采纳 → validated / 不采纳 → rejected / 换方向 → superseded。**执行与验证都完成
而卡仍停 in_experiment = 卡不完整**——这条已可机器判定,`verify_proposals.py` 报两类:
①**卡不完整**:in_experiment 且已记 `action` **且** `eval` 但无 `decision`(工作做完了、
判断没落;只记了 action、验证还在跑的在途卡不算——那是正常中间态);②**僵尸卡**:
in_experiment 超 14 天(`STALE_DAYS`,与面板同口径)仍无 `decision`。CI 的 `proposal-audit`
job 跑它,卡随 PR 合入即被校验。**有中途 decision、只是还有下一轮要跑,仍停在 in_experiment 是正常的**:
结束与否看 `status`,不看 decision 的个数;
- **终态卡必闭合**:validated/rejected/superseded 必须有 agent 判断的 decision 记录;
validated 后补 `actual_cost.tokens`(成本审计;无法量化写 `0` + `note` 说明口径)——
缺了 CI 报审计缺口,面板也标「缺成本」(两处口径一致);
- **卡必须能追到出处**:`source_signals` 非空且每条带 `trajectory`(产出文件 id / replay
结果 / trace)——没有出处的卡无法回放归因,CI 直接报错;
- **预测也必须能追到出处**:`predicted_effect.measure` 带命令 + 期望(或如实声明不可度量)。
理由:评审被设计成 30 秒判定(`predicted_effect` vs 验证结果),而只有散文的预测判不了
——reviewer 只剩"开全文"或"直接批"两个动作。缺 measure / 有命令无期望 / 命令仍是占位
都会被 CI 报错;存量卡豁免但缺口由 `scripts/ev_measure.py --audit` 如实报出;
- 仅"观察到的信号"(数据前提未满足 / 无准备执行的具体方案)**不产卡**——信号记 session
报告/任务状态,条件到(方案成形/数据齐)才产卡执行(防想法清单污染提案账本)。
- **改进动作必须先产 EV 卡(前置元流程,防绕过)——范围限定为三类**:①改动**行为面**(triage 分支、
skill 流程步骤、闸门绑定、表族追加——凡改变命中或加载行为的);②**修订已合入的 active 词条**;
③索引与口径类机制改动。三类都走 **产卡(proposal)→ 执行(action)→ 验证(eval)→ 判断(decision)
→ 才随 PR 合入**;禁止先执行后补卡(产出已生效而决策链缺失,人审无据)。
- **内容面产出不产卡**:补 case、补或修 reference 词条、扩错误码家族、从 case 归纳 reference——
这些都是内容动作,不产卡。产出物自己就是决策记录(case 的 `evidence` 与脱敏自查、reference 类
PR 模板的变更类型/词条清单/来源与验证状态/聚类检查/预核意见),而卡要求的可证伪预测它们给不出;
配卡只会产出"预测=CI 能过"的仪式卡,与本协议"预测必须可复现"的要求自相矛盾
(原则四/十:不为产卡而产卡)。这些动作对应的信号(同族沉淀满三条、覆盖缺口、新错误码首次出现)
照记进收尾报告与执行记录,动作直接执行;**信号连带要求改行为面时,只为行为面那部分产卡**。
内容流程产出草稿进 inbox(待审队列)同样不在此列;`to-reference` / `to-postmortem` 收尾照常
跑本协议,按触发条件表有真信号才动。
**第 4 步:落收尾记录 + 出说明**(并入流程报告,不单独打扰用户):
1. **先落本协议的收尾记录**(顺序不能反:记录落了,"这次协义跑过"才是数据)。
**为什么必须落**:不落记录时"收尾跑了但无演进信号"与"根本没跑"在数据上完全不可区分,
机制是否在运作无法证伪(收尾记录此前几乎为空,面板与 metrics 都不读 exec-log)。
面板「执行现场」按它显示运行次数与无信号次数。
```
python3 scripts/log_skill_exec.py --skill evolve-check \
--products "<EV-xxxx(validated),...>" \
--reason "<一句话:命中 T# → 动作 / 收尾无演进信号>" \
--source <上游 skill:issue-ingest / to-reference / to-postmortem / knowledge-groom> \
--tokens <估算>
```
无信号时 `--products` 留空、`--reason` 写"收尾无演进信号"(面板据此单列 no-signal 计数)。
落完自查本地不变量:`python3 scripts/verify_exec_log.py --check`(seq 唯一/字段齐全)。
该脚本**不进 CI**——exec-log 是 `.gitignore` 运行时件,CI 上文件不存在,进 CI 只会空转。
2. 出说明:
```
evolve-check:产出 EV-xxxx(补 case,S2 replay 佐证缺口)→ agent 判断采纳(validated)
或:evolve-check:无演进信号(本轮无新增数据/无流程摩擦/无覆盖缺口)
```
## 与 self-evolve 的分工
| | evolve-check(本协议) | self-evolve(深度轮) |
|---|---|---|
| 触发 | 内容流程收尾自动(用户下内容目标即隐含) | 用户显式"跑一轮自演进/看看有什么可改进" |
| 范围 | 本轮执行现场(一流程一查) | 全库观测(归因聚合/容量/覆盖/指标) |
| 信号源 | 本次产出的数据 + 摩擦 | 跨轮聚合(归因事件、S2 校准集、timeline) |
| 共用 | idea 卡 schema / 验证门 / 攒批聚合 PR | 同左 |
两者产出同一批池(`proposals/ideas/`),攒批聚合 PR 供人审时合并处理,不区分来源。
## 授权边界
- **EV 决策是 agent 做的**(产卡 + 自验证 + 判采纳/不采纳——本协议第 3/3.5 步);
卡的 authorization 字段(auto/review/dual)标注的是**改动合入的知识层分级**(改动随 PR
合入时按此送审),不是 EV 决策需要人逐卡审批;
- **人审发生在目标态完成/降级完成时提的聚合 PR**:审整个自演进过程是否 solid(含 rejected
卡——agent 提了 EV、实验发现不行、不采纳,这是诚实记录,人审应接受),不是逐卡审批;
- 指标口径红线保留:产卡不得改评分/指标定义(系统不改自己考卷);
- 结构级(triage/skill 骨架/新 skill 立项)走 kb/high-risk 双签,本协议只产候选不直改。
## 边界(不做)
- 不为产卡而产卡:无信号即止;候选水位超限时只记信号不产卡;
- 不代替用户下内容目标:本协议只回答"这次做完能否更好",不决定"下次做什么";
- 不碰客户现场、不做批量改库(那是 self-evolve 深度轮 + 人审的范围)。
## 依赖的能力/工具
| 能力 | 工具/入口 |
|---|---|
| 读本轮执行现场(第 1 步) | `scripts/tail_exec_log.py`(确定性入口;文件缺失/空表 = 正常退化,exit 0) |
| 落收尾记录(第 4 步) | `scripts/log_skill_exec.py --skill evolve-check` + 自查 `scripts/verify_exec_log.py --check` |
| 查重/产卡骨架 | `scripts/ev_proposal.py --list / --new` |
| 卡校验 | `scripts/verify_proposals.py`(CI `proposal-audit` job;含卡不完整/僵尸卡/出处缺失) |
| 预测复核 | `scripts/ev_measure.py <卡号> --run`(**自己先跑一遍**:判据跑不通的预测不算验证) |
| 验证门(即时判定) | `scripts/replay_golden.py` / `scripts/s2_replay.py` |
| 归因事件聚合(T4 信号) | `scripts/component_tally.py` |
| 收尾可见性(面板) | `scripts/ev_board_data.py` 的 `skill_exec` 段 → ev-panel「执行现场(exec-log)」 |
| 内容沉淀(T1/T2 落到执行) | /skill:to-reference / /skill:to-postmortem |
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.