--- name: 建立机器味规则 description: 把已标注的 AI 味案例卡沿 canonical→样例→规则候选→评测→激活的升格链推进,并负责降级。需要确认案例卡、投影四类样例、归纳规则候选、跑合同回放或审批激活时使用;不做案例采集与扫描,也不改正文。 disable-model-invocation: true --- # 升格 AI 味规则 ## 在五技能接力链中的位置 采集归 `记录机器味案例`,本 Skill 接在它后面(链路登记见 [`chains/README.md`](../../../../flow/chains/README.md) 的 AI 味接力段): ```text 案例卡采集(记录机器味案例) → 人工标注 → canonical → 四类样例投影 → 规则候选(propose-rule) → 合同回放 + holdout 评测 → 人工审批 → humanization/rules active → 技能 2/3 消费 ``` 采集快,升格慢:本 Skill 的每一步都失败关闭,不会把 shadow 卡或合同回放报告自动变成 active 规则。模型换版本后的 active 规则巡检用 `回放评估细纲质量` 回放,失效规则由本 Skill 的 `deprecate-rule` 降级。 ## 依赖边界 案例卡的读取、结构校验、来源重验证与样例投影实现归 `记录机器味案例/scripts/capture_cases.py`,本 Skill 单向 import,不复制第二份卡合同。规则合同校验与评测算法在 `humanization/src/deai/`。 ## 输入 ```bash # Shadow 卡人工标注(默认写回数据库当前投影) .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py annotate \ --cards /tmp/cards.yaml --card-id case-... --label sf --carrier narration \ --reviewer qingse --note "当前上下文无叙事功能" --output /tmp/annotated.json # 来源已 verified 后确认 canonical;数据库再次检查 verified 回执 .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py confirm \ --cards /tmp/cards.yaml --card-id case-... --verification /tmp/revalidation.json \ --reviewer qingse --note "作者确认" --output /tmp/canonical.json # canonical 卡投影为四类样例之一 .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py project-sample \ --cards /tmp/canonical.yaml --card-id case-... --verification /tmp/revalidation.json \ --output /tmp/sample.yaml # 归纳规则候选;命令永远只产 candidate .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py propose-rule \ --cards /tmp/cards-a.yaml /tmp/cards-b.yaml \ --rule-id candidate-lexical-001 --name "空洞元话语" \ --verification /tmp/ai-flavor-revalidation.json --output /tmp/rule-candidate.yaml # 合同回放;带 holdout 才有资格进入激活门 .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py evaluate-rule \ --rule humanization/rules/structural/s002.yaml --samples /tmp/projected-samples.yaml \ --cards /tmp/canonical-cards.yaml --verification /tmp/revalidation.json \ --holdout /tmp/holdout.json --output /tmp/rule-evaluation.json # 人工审批激活 / 降级 .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py activate-rule \ --rule /tmp/rule-candidate.yaml --contract-report /tmp/rule-evaluation.json \ --holdout-report /tmp/rule-evaluation.json --approver qingse --output /tmp/rule-active.yaml .venv/bin/python muse/lifecycle/quality/humanization/skills/建立机器味规则/scripts/mine_ai_flavor.py deprecate-rule \ --rule humanization/rules/lexical/l007.yaml --approver qingse --reason "换版后失效" \ --output /tmp/rule-deprecated.yaml ``` `--verification` 是 `记录机器味案例` 的 `revalidate` 命令生成的来源重验证回执。 ## 输出 每个子命令写一个结构化文件并在 stdout 打一行 JSON 摘要:标注/确认产出更新后的卡与落库回执;`project-sample` 产出 `humanization-samples-bundle-v1` 样例;`propose-rule` 产出状态固定为 `candidate` 的规则 YAML;`evaluate-rule` 产出含 `contract_pass`、`holdout`、`eligible` 的评测报告;`activate-rule` / `deprecate-rule` 产出改状态后的规则 YAML。任一步失败输出 `AI_FLAVOR_MINING_CONTRACT_FAILED` 并非零退出。 ## 数据边界 - 读取:案例卡与重验证回执文件、`humanization/rules` 规则文件、holdout 数据集。 - 写入:命令指定的输出文件;`annotate` / `confirm` 默认把案例卡当前投影写回 `muse-example`;`evaluate-rule` 把评测结果落成 `example_run` + `example_quality_result` 的质量账(幂等 run_id 由报告哈希派生)。`--offline` 是显式例外,只用于离线合同测试。 - 规则文件本身仍由 Git 管理,评测不改规则文件。 - 运行时规则/样例权威在 `example_ai_flavor_rule` / `example_ai_flavor_sample`(DDL-111);本 Skill 的规则生命周期产出 YAML 变更,经 `humanization/tools/seed_rules_db.py` 单事务同步入库并在 `example_ai_flavor_rule_event` 留痕。未完成同步的规则变更不进入生产读取。 - 不写正文、不写 `knowledge/` 正式资产。 ## 红线 - 规则候选状态永远是 `candidate`;`propose-rule` 不产 active。 - 候选至少需要两个不同来源作品,并同时包含一张 `sf` 与一张 `snf/boundary/regression` 卡;所有引用卡必须有 `verified` 回执。 - 没有 holdout 分层计数和人工审批,候选不能写成 active。唯一例外是所有者留痕豁免,激活门代码不放宽,豁免必须在规则 evidence 写明决定、日期与理由。 - 来源重验证是显式 fail-closed 门:`stale`、`unavailable`、`card_mismatch` 都使当前卡在确认、投影与规则消费上失效;来源找不到不等于"仍然有效"。 - 不把正例样本单独归纳成全局规则。 - 不碰本次创作正文。