102 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: 记录机器味案例
description: 从已有作品或创作反馈中抽取可复核的 AI 味案例卡,保留来源哈希与位置并做来源重验证。需要反向积累人感样例、记录一次写作事故或批量回填既有作品时使用;不做标注确认与规则升格,不直接修改正文、范式或生产规则。
disable-model-invocation: true
---
# 抽取 AI 味案例卡
## 在五技能接力链中的位置
本 Skill 是技能 5「挖掘」的**采集**入口(链路登记见 [`chains/README.md`](../../../../flow/chains/README.md) 的 AI 味接力段):
```text
创作/已有作品 → 案例卡采集(本 Skill)→ 来源重验证(本 Skill)
→ 标注 / canonical / 样例投影 / 规则候选 / 评测 / 激活(建立机器味规则)
→ humanization/rules active → 技能 2/3 消费
```
- 它**不碰本次创作正文**:只记账(作者回退、误杀、门禁失败都走 `feedback` 入卡),在背后为规则库供料;
- 采集快、升格慢:卡片默认 `shadow`,之后的每一步状态推进都归 `建立机器味规则`。
## 目的与边界
本 Skill 只生产质量证据层的 `ai_flavor_case` 卡片,并做来源重验证。它不是作品实体卡,也不是公共范式卡;卡片默认处于 `shadow`,不能进入生成上下文,不能直接改变正文或规则。
输入有两条来源链:
- `backfill`:扫描已有作品,记录表面候选、全文哈希、章节/行位置和上下文。来源未明确授权时只保存哈希与位置,不把原文写入仓库。
- `live_feedback`:记录创作中发现的具体问题、候选正文哈希和人工判断,允许快速入卡,但同样先停在 `shadow`。
确定性脚本负责发现、哈希、状态、结构门禁和自动落库;“这是 AI 味还是有意写法”由 `建立机器味规则` 的人工/独立评审标注。
## 数据与副作用合同
- 读取:用户明确提供的文本文件,以及本 Skill 输出的案例卡 YAML/JSON。
- 写入:检测命令指定的回执文件,以及 `muse-example` 中的案例卡与重验证账本;不写正文、`knowledge/` 正式资产或生产规则目录,也不写质量评测账。
- 自动落库:`scan`、`inventory`、`feedback` 在检测完成后自动以一个事务写入数据库。`--offline` 是显式例外,只用于离线合同测试或数据库恢复准备;不能把离线文件当正式内容。
- 恢复入口:`persist_cases.py` 只用于把已审计的 inventory/revalidation 文件恢复或迁移入库,正常检测不得依赖它单独执行。
- 模型:扫描、哈希、校验都不调用模型;语义标注由 `建立机器味规则` 承接。
- 失败:任何来源、哈希、状态或反例门失败都返回 `CASE_CARD_CONTRACT_FAILED`,不输出部分成功的卡。
- 规则权威边界:运行时规则/样例权威在 `example_ai_flavor_rule` / `example_ai_flavor_sample`(DDL-111);规则生命周期不在本 Skill,归 `建立机器味规则`。
## 运行
采集只是第一步;标注、确认、样例投影、规则候选归纳、评测与激活由 `建立机器味规则` 承担。本 Skill CLI **只**暴露:`scan` / `inventory` / `feedback` / `validate` / `revalidate`。`confirm_card` / `project_sample` 是供 promote 导入的库函数,采集入口不提供对应子命令。
```bash
# 既有作品反向扫描;research_only 是默认安全值,输出 hash-only 卡
.venv/bin/python muse/lifecycle/quality/humanization/skills/记录机器味案例/scripts/capture_cases.py scan \
/path/to/work.txt --work-ref work-7 --output /tmp/ai-flavor-cases.yaml
# 命令结束时自动写入 muse-example;同时生成 .inventory.json/.revalidation.json 回执
# 批量回填并固化可复核清单;只写来源哈希、位置和观察,不复制第三方正文
.venv/bin/python muse/lifecycle/quality/humanization/skills/记录机器味案例/scripts/capture_cases.py inventory \
/path/to/works --source-root-ref 小说清单 --output /path/to/backfill-inventory.json \
--generated-on 2026-08-13
# 8 本作品的卡与逐卡重验证在同一检测运行中自动入库
# 创作反馈快速入卡(正文只在本次受控输入中读取)
.venv/bin/python muse/lifecycle/quality/humanization/skills/记录机器味案例/scripts/capture_cases.py feedback \
--text-file /tmp/candidate.txt --work-ref work-12 --run-ref run-abc \
--issue "段尾抽象升华没有功能" --output /tmp/feedback-card.yaml
# 创作反馈也会自动入库,保留 run_ref 绑定
# 明确只做离线构造(不会写库)
.venv/bin/python muse/lifecycle/quality/humanization/skills/记录机器味案例/scripts/capture_cases.py inventory \
/path/to/works --output /tmp/inventory.json --offline
# 对卡片做结构与来源门禁
.venv/bin/python muse/lifecycle/quality/humanization/skills/记录机器味案例/scripts/capture_cases.py validate \
/tmp/ai-flavor-cases.yaml
# 在确认/投影/规则使用前手工重验证来源;默认自动追加数据库回执。
.venv/bin/python muse/lifecycle/quality/humanization/skills/记录机器味案例/scripts/capture_cases.py revalidate \
/path/to/ai-flavor-cases.yaml --source-root /path/to/source-root \
--checked-on 2026-08-14 --output /tmp/ai-flavor-revalidation.json
# 仅需离线回执时显式加 --offline
```
`owned`、`licensed` 和 `public_domain` 才允许把片段写入卡;`research_only`、`unauthorized` 只能 hash-only,且永远不能确认。`source_sha256` 针对原始文件字节,`excerpt_sha256` 针对保存的片段,二者不可由模型自报。
重验证不会在看板打开时自动发生;它是确认、样例投影和规则消费前的显式 fail-closed 门。若来源无法获取,状态判定为 `unavailable`,不可判定为有效。
## 状态与交接
1. `scan`/`feedback` 产生 `shadow + unclassified`——这是本 Skill 的终点。
2. 之后的标注(`sf` / `snf` / `boundary` / `regression`)、`canonical` 确认、样例投影、规则候选归纳、评测与激活全部归 `建立机器味规则`。
3. `revalidate` 产出的 verified 回执是交接件:下游每一步都要拿它做 fail-closed 复核。
详细字段和失败码见 [`references/case-card-contract.md`](references/case-card-contract.md)。
首版回填清单与候选规则种子见 [`references/fixtures/`](references/fixtures/);其中既有作品只保留 hash/位置,不能直接确认。
`inventory`/`revalidate` 的 `--output` 导出是可复核的恢复证据;正式内容在 `muse-example` 的
`example_ai_flavor_case`、`example_ai_flavor_revalidation_batch`、`example_ai_flavor_revalidation` 三张表。
`muse/authority/studio/read/server.py` 的 `/ai-flavor` 默认查这三张表,数据库不可用时读它自己的 `muse/authority/studio/read/fixtures/` 离线回退(导出件由人放入,看板不读本 Skill 目录);页面不会因打开而重新读取原文。
状态语义:案例卡 `shadow` 只供复核,`canonical` 仅表示获授权且完成评审,`rejected`/`archived` 不进入生成上下文;重验证 `verified` 才能确认、投影样例或消费规则,`stale`(全文哈希变化)、`unavailable`(来源不可得)和 `card_mismatch`(锚点变化)都使当前卡在这些动作上失效,但历史回执保留。
## 复利合同
- **消费**:研究限定来源与已有案例卡;不把第三方正文写入正式内容。
- **回写**:`persist_cases.persist` 批次落库成功后经 `propose_lesson_dedup` 登记「AI味案例卡批次已落库」(`run_id`/`candidate_sha256` 均绑 `report_sha256`);规则升格仍归 `建立机器味规则`。离线/测试可传 `persist_lesson=False`。