一、技能重组(动作-对象命名) - 旧目录 clean/confirm/continuation/db/detect/embed/… 重组为 clean-book-text/decide-candidate/write-next-chapter/access-database/ check-content-consistency/embed-knowledge/…(git 识别为 rename,内容保持) - agents/*.md、AGENTS.md/CLAUDE.md 收编、example_skill 登记表同步新名 二、先审后入创作闭环(本次核心) 正文接受从"机械门一过就写正典"改为"机械门+语义审查双通过+用户批准+单事务原子提交", DB 级兜底,编排层跳步即被硬拒。 - candidate_cas.py + example_candidate_cas(109):持久化 CAS 状态链 - fact_delta.py + example_fact_delta/example_fact_ledger(106):结构化事实增量, 模型只提六型闭集增量+正文证据引文,仅用户批准的增量随正文同事务入账本 - projection_registry.py + example_projection_run(107):投影登记与恢复 - acceptance_state.py:接受前置实时状态重读 - lesson_registry.py + example_lesson(108):经验升格链,禁止自动升格 - DDL 105:example_candidate 增 semantic_status/semantic_report_sha256 - write_canonical.accept:语义兜底+同事务合并增量+登记投影; run_writer_pipeline/persist_writer_run/run_writer_semantic_detector/step2 接入全链 - claude_runtime:兼容新 CLI modelUsage 信息字段 三、审查修复(独立子代理四维审查后) - 事实增量 propose→approve 翻态正道,不撞唯一键 - 冻结配置探针重刷(CLI 2.1.211→2.1.231 漂移),profileSha256/adapterVersion 再登记 - 可视化合同悬空路径/五六空间矛盾、 SoT 旧技能名漂移、行尾空白清理 测试:离线 65 套 + 真实库集成 5 套(CAS/接受故障注入/事实增量/投影/经验升格)+ 回放 79 项全绿。 创作内容(docs/design、生成正文 artifacts)按"框架与创作分开"未入本提交。
6.8 KiB
name, description, disable-model-invocation
| name | description | disable-model-invocation |
|---|---|---|
| capture-ai-flavor-cases | 从已有作品或创作反馈中抽取可复核的 AI 味案例卡,保留来源哈希与位置并产出规则候选。需要反向积累人感样例、记录一次写作事故或把重复观察送入规则评审时使用;不直接修改正文、范式或生产规则。 | true |
抽取 AI 味案例卡
目的与边界
本 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 文件恢复或迁移入库,正常检测不得依赖它单独执行。 - 模型:扫描、哈希、校验和候选归纳前置门不调用模型;语义标注可由独立评审完成,结果必须回写卡片的 review 字段。
- 失败:任何来源、哈希、状态或反例门失败都返回
CASE_CARD_CONTRACT_FAILED,不输出部分成功的规则。
运行
# 既有作品反向扫描;research_only 是默认安全值,输出 hash-only 卡
.venv/bin/python .claude/skills/capture-ai-flavor-cases/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 .claude/skills/capture-ai-flavor-cases/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 .claude/skills/capture-ai-flavor-cases/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 .claude/skills/capture-ai-flavor-cases/scripts/capture_cases.py inventory \
/path/to/works --output /tmp/inventory.json --offline
# 对卡片做结构与来源门禁
.venv/bin/python .claude/skills/capture-ai-flavor-cases/scripts/capture_cases.py validate \
/tmp/ai-flavor-cases.yaml
# 在确认/投影/规则使用前手工重验证来源;默认自动追加数据库回执。
.venv/bin/python .claude/skills/capture-ai-flavor-cases/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
# 只有已标注正反证据且来源重验证通过时才生成 candidate 规则;命令不会生成 active
.venv/bin/python .claude/skills/capture-ai-flavor-cases/scripts/capture_cases.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
owned、licensed 和 public_domain 才允许把片段写入卡;research_only、unauthorized 只能 hash-only,且永远不能确认。source_sha256 针对原始文件字节,excerpt_sha256 针对保存的片段,二者不可由模型自报。
重验证不会在看板打开时自动发生;它是确认、样例投影和规则消费前的显式 fail-closed 门。来源找不到不是“仍然有效”,而是 unavailable。
状态与升级
scan/feedback产生shadow + unclassified。- 人工标注为
sf(确实应修)、snf(表面相似但不应修)、boundary或regression;标注不等于确认。 - 来源重验证结果为
verified后,只有可审阅且获授权的卡才能canonical,再投影为样例。 - 规则候选至少需要两个不同来源作品,并同时包含一张
sf与一张snf/boundary/regression卡;所有引用卡必须有verified回执。候选状态固定为candidate。四类样例、跨任务回放和规则评审完成后,才由现有质量链决定是否激活。
详细字段和失败码见 references/case-card-contract.md。
首版回填清单与候选规则种子见 references/fixtures/;其中既有作品只保留 hash/位置,不能直接确认。
backfill-inventory-*.json 与 revalidation-*.json 是可复核的导出/恢复证据;正式内容在 muse-example 的
example_ai_flavor_case、example_ai_flavor_revalidation_batch、example_ai_flavor_revalidation 三张表。
dashboard/server.py 的 /ai-flavor 默认查这三张表,数据库不可用时才明确标注离线回退;页面不会因打开而重新读取原文。
状态语义:案例卡 shadow 只供复核,canonical 仅表示获授权且完成评审,rejected/archived 不进入生成上下文;重验证 verified 才能确认、投影样例或消费规则,stale(全文哈希变化)、unavailable(来源不可得)和 card_mismatch(锚点变化)都使当前卡在这些动作上失效,但历史回执保留。
机械验收
.venv/bin/python .claude/skills/capture-ai-flavor-cases/scripts/test_capture_cases.py
.venv/bin/python .claude/skills/access-database/scripts/test_skill_catalog.py
git diff --check
测试必须覆盖:来源 hash、重验证 verified/stale/unavailable/card_mismatch、未授权 hash-only、重复 ID、live feedback 来源绑定、shadow 不能投影样例、缺重验证回执不能确认,以及跨作品/反例门。