Some checks failed
docs-gate / docs-gate (push) Has been cancelled
合并裁定(rubric 挂点两套实现收敛,fable 亲审):评分尺主干 = TRPG 机制(单 checks 数组契约+嵌套 richness.genre,19 单测钉住);从分支嫁接 fixtures/genre-rubrics/<genre>.json 加载器为第二来源 (内联 GENRE_CHECKLISTS 优先、fixture 兜底,puzzle.json 即刻生效);分支平铺 genreHits/genreChecks 双数组契约弃用,其接线测试适配主干形状。run_studio 增显式 genre= 参数(None→按模板推断,原行为不变)。 GENRE_BY_TEMPLATE += _template-puzzle。顺手补账:.agents/README 索引四个品类 skill(前三次 merge 欠账)。 验收(本机):金标 7 品类 6/6 + cheap_verify 19/19 + 解谜资产门 6/6(含 node scaffold/check 真 shell-out) + 模板 node 13/13 + check_registry 17 条 + node --check/py_compile 全过;test_roles 2 红=主干既有基线 (回落分叉,归一单已排)。 诚实记录:分支验收唯「n=3-5 小批全过门」BLOCKED(4/7;三失败=AI 大面重写引入运行时 bug,九门正确 拦截,根因已回写 skill §9 品类红线;spike 路无续修环是结构缺口,生产路 RepairMiddleware 覆盖)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
contracts/prompts/ —— 第 8 类契约:Prompt Registry
Prompt 即契约。所有生成链路的 LLM prompt 在此 Git 化注册、版本化、过门禁,禁止散落在 Dify 节点/代码里。 治理细则见
.agents/skills/prompt-governance.md与docs/agent-specs/prompt治理体系-execution.md。
目录结构(8 阶段)
prompts/
├── registry.yaml # 注册表:id@version / owner / stage / file / eval
├── 01-safety/ # Prompt 安全/注入检测
├── 02-intent/ # 意图解析
├── 03-template/ # 模板匹配
├── 04-config/ # GameConfig 生成
├── 05-asset/ # 素材生成(ComfyUI 引导)
├── 06-quality/ # 质量评估
├── 07-fix/ # 失败修复/重生成
├── 08-meta/ # 标题/简介/封面文案
└── eval/<id>/ # 每条 prompt 的 Golden eval 集(inputs/expect/baseline)
引用与变更
- 引用:Dify/aigc 用
{{registry:id@ver}}引用,PromptRegistryLoader 加载注入。 - 变更:改 prompt 必须升 version,并过四道闸 CI(Schema 通过率 / 生成成功率≥80% / Golden 回归 diff / 成本延迟);四闸绿后运营 HITL 抽检 K 条方可合入。
Registry 一致性 CI 门(check_registry.py)
check_registry.py(本目录同级)验证 registry.yaml 里每条 version 与对应 .md frontmatter 的 version 是否完全一致。防止 Java PromptResourceLoader 构建期快照加载的 prompt 版本与注册表宣称版本漂移(二者不一致会导致日志/追溯/审计失真)。
手动跑:
python3 contracts/prompts/check_registry.py
# exit 0 = 全部对齐;exit 1 = 有漂移(打印具体 id + 两侧 version)
接入 CI / pre-commit(推荐):
- CI:在流水线加步骤
python3 contracts/prompts/check_registry.py(无三方依赖,标准库即可跑)。 - pre-commit:在
.pre-commit-config.yaml加 hook,entry: python3 contracts/prompts/check_registry.py,pass_filenames: false。
触发时机:任何 .md 或 registry.yaml 变更都应跑一次;CI 全量跑。