# 契约 #8 Prompt Registry —— Prompt 即契约(Git 化注册表) # owner:各 prompt 归属工位 | 治理:见 .agents/skills/prompt-governance.md 与 docs/agent-specs/prompt治理体系-execution.md # 引用方式:Dify/aigc 用 {{registry:id@ver}} 引用;变更 prompt 必须升 version 并过四道闸(CI) version: 1 # ───────────────────────────────────────────────────────────────────────────── # 消费面三态对账(W-PCI · 2026-07-04,四道闸 CI 接线步骤 0;用代码证据坐实、非凭注释推断) # # 为什么要对账:四道闸 CI 只该焊在「真被 live 生产路径消费、喂给 LLM」的 prompt 上;焊在早已下架 # 的死面上,既白花真模型钱,又给出虚假的治理安全感。下表把 19 条逐条判定三态,段 B 真模型闸据此 # 决定跑还是豁免。三态定义: # · live —— 现行生产生成路径运行时读它、渲染后发给 LLM(改它会真影响线上生成质量)。 # · fossil —— 代码里仍有加载壳,但产物形态或模板白名单已废,现行不会有任务走到它(改它无线上影响)。 # · batch-relic —— 只被已删除的 agent-loop v1 批跑编排(evalflow.py)消费过,无任何 live 代码消费方。 # # 逐条结论(证据 = 一手代码,路径见括注): # safety.prompt-check live SafetyCheckClient.java:51 构建期加载 01-safety/prompt-safety-check.md, # GP9 合规门渲染 {{input.prompt}} 真发 LLM(gp9-safety,独立于模板白名单)。 # config.clicker-designer fossil PromptResourceLoader.TEMPLATE_RESOURCES 仍构建期加载,但 # config.merge-designer fossil AigcTemplateConstants.SUPPORTED_TEMPLATE_IDS 已把旧四模板整体下架 # config.idle-designer fossil (白名单 = generic + 5 品类):提交抛 AIGC_TEMPLATE_NOT_EXISTS、 # config.tycoon-designer fossil 执行判 no_template_match 不烧 LLM。它们产的 GameConfig 是已废 gamedef 形态。 # config.generic-coder fossil registry 自标 STUB 0.0.1;PromptResourceLoader 加载它只为 isReady() # 通过 + schema 进校验缓存,其类注释明写「后端不在进程内渲染/喂 LLM 该 prompt」; # generic 任务实走外置 Python cheap-worker(用 cheap-system.md,非本条)。 # quality.adversary-review batch-relic 全仓 grep 无任何 .py/.java live 消费方;仅 agent-loop v1 evalflow.py(已删)批跑过。 # fix.design-revise batch-relic 同上,无 live 消费方。 # tier2.design-system live tier2 gen-worker roles.py 经 prompts.load 运行时读(design_team 兜底)。 # tier2.design-systems-designer live roles.py:245 prompts.load 运行时读(阶段 1 工作室专家)。 # tier2.design-economy-designer live roles.py:246 prompts.load 运行时读。 # tier2.design-level-designer live roles.py:247 prompts.load 运行时读。 # tier2.design-presentation-designer live roles.py:248 prompts.load 运行时读。 # tier2.design-leader-system live roles.py:264 prompts.load 运行时读(阶段 1 leader,带参 brief)。 # tier2.writer-system live roles.py:280 prompts.load 运行时读(阶段 2 单写 agent 前缀)。 # tier2.player-system live roles.py:297 prompts.load 运行时读(L3 视觉软检玩家)。 # config.cheap-system live cheap-worker cheap_roles.py _load_system_prompt() 运行时读(便宜档 A-model 生成)。 # playtest.actor live playtest/3 runner 运行时读;只产 ActorSelection/1,无 verdict 权限。 # playtest.judge-a live 双 Judge 槽 A;先核义务事件再核动作后截图。 # playtest.judge-b live 双 Judge 槽 B;先核动作后截图再反查义务事件。 # # 门焊接口径(据上表): # · 段 A 离线版本闸(check_version_bump.py)对全部 contracts/prompts/ 条目生效——「改正文必升 version」是 # 纯结构纪律、零成本,无需区分三态,一律强制。 # · 段 B 真模型闸(eval_gate.py)只焊 live 条目(safety + tier2×8 + cheap-system + playtest×3): # - live 且有金标集 → 真跑四道闸(当前 safety.prompt-check + playtest Actor/Judge A/B); # - live 但无金标集(cheap-system / 8 条 tier2,本表 eval 字段待建)→ fail-closed 报「金标缺失」,绝不假绿; # - fossil / batch-relic → 显式 SKIP 豁免(clicker/merge/idle/tycoon/generic-coder/quality/fix),不花真模型钱。 # · 注:04-config 下 business-sim/narrative/puzzle/trpg/heritage 五个 -designer.md 是 SUPPORTED_TEMPLATE_IDS 内 # 的 live 白名单模板,但同 generic 一样「只进 schema 缓存、不喂 LLM」,且未登记进本 registry;不在本次对账 17 条内。 # ───────────────────────────────────────────────────────────────────────────── prompts: # 【三态·段B处置】safety.prompt-check = live(SafetyCheckClient GP9 合规门真发 LLM),且有 eval/ 10 条负例金标集 # → 段 B 真模型闸对它真跑四道闸(当前唯一「live 且有金标」的条目)。 - id: safety.prompt-check version: 1.0.0 stage: "01-safety" # 8 阶段:01-safety 02-intent 03-template 04-config 05-asset 06-quality 07-fix 08-meta owner: WS2 # 归属工位 file: 01-safety/prompt-safety-check.md desc: 创作者 Prompt 安全/注入检测(生成链路第 1 节点) eval: eval/safety.prompt-check/ # Golden eval 集(四道闸:Schema/成功率/回归diff/成本延迟) # —— agent 化生成 QA 闭环 v1 三件套(HJ-AGENT-LOOP-EXEC-001 §5;v1 仅 clicker 走批跑)—— # 【三态·段B处置】以下 clicker/merge/idle/tycoon 四策划模板 = fossil(已废 gamedef 线,SUPPORTED_TEMPLATE_IDS # 已整体下架、不可被生成)→ 段 B 真模型闸对它们 SKIP 豁免(保留条目不删,见头部对账总表)。 - id: config.clicker-designer version: 1.1.0 # v1.1.0:batch-001 冻结告警→新增 designIntent 模板内约束(加规则不改口径) stage: "04-config" owner: WS2 file: 04-config/clicker-designer.md desc: agent 闭环独立策划:创意一句话→GameDesign 三段(designIntent/expectedPlaySeconds/config;config 受 contracts/templates/clicker.schema.json 约束) eval: eval/config.clicker-designer/ # 每批 evalflow.py 强制回流(inputs/labels JSONL)+ C1 spike 52 条种子(D3 转入) - id: config.merge-designer version: 1.0.0 # 首版:merge 模板策划(结构对齐 clicker-designer,按 merge schema 改字段约束) stage: "04-config" owner: WS2 file: 04-config/merge-designer.md desc: agent 闭环 merge 模板策划:创意一句话→GameDesign 三段(designIntent/expectedPlaySeconds/config;config 受 contracts/templates/merge.schema.json 约束) eval: eval/config.merge-designer/ # 新建 Golden 目录(首版无种子,随批回流;§4.5) - id: config.idle-designer version: 1.0.0 # 首版:idle 模板策划(结构对齐 clicker/merge-designer,按 idle schema 改字段约束) stage: "04-config" owner: WS2 file: 04-config/idle-designer.md desc: agent 闭环 idle 模板策划:创意一句话→GameDesign 三段(designIntent/expectedPlaySeconds/config;config 受 contracts/templates/idle.schema.json 约束) eval: eval/config.idle-designer/ # 新建 Golden 目录(首版无种子,随批回流) - id: config.tycoon-designer version: 1.0.0 # 首版:tycoon 模板策划(结构对齐 clicker/merge-designer,按 tycoon schema 改字段约束) stage: "04-config" owner: WS2 file: 04-config/tycoon-designer.md desc: agent 闭环 tycoon 模板策划:创意一句话→GameDesign 三段(designIntent/expectedPlaySeconds/config;config 受 contracts/templates/tycoon.schema.json 约束) eval: eval/config.tycoon-designer/ # 新建 Golden 目录(首版无种子,随批回流) # —— P3 生成主线编码 prompt(W-G1,2026-06-14;范式=编码出 bundle 源码,非策划出 GameConfig)—— # 【三态·段B处置】generic-coder = fossil·STUB(PromptResourceLoader 只为 isReady/schema 加载它、不喂 LLM; # generic 任务实走外置 cheap-worker 的 cheap-system.md)→ 段 B SKIP 豁免。 - id: config.generic-coder version: 0.0.1 # ⚠️ STUB 占位骨架(04-config/generic-coder.md 仅 frontmatter+三要点提纲,非正式 prompt);L1 出正式草案时整体替换并升版,两处 version 同步 stage: "04-config" owner: WS2 file: 04-config/generic-coder.md desc: P3 编码 prompt(创意一句话→GameHostFactory 源码→esbuild 打 __GameBundle bundle;非策划出 GameConfig)。【当前为 STUB 占位骨架·L1 出正式草案替换】 eval: eval/config.generic-coder/ # 新建 Golden eval 目录(首版无种子,随 bake-off 批回流) # 【三态·段B处置】quality.adversary-review 与 fix.design-revise = batch-relic(无 live 代码消费方,仅 # 已删的 agent-loop v1 evalflow.py 批跑过)→ 段 B SKIP 豁免(有金标集也不跑真模型,见头部对账总表)。 - id: quality.adversary-review version: 1.1.2 # v1.1.2:细则①追加 merge 域示例(P0/P1 口径文字仍未动) stage: "06-quality" owner: WS2 file: 06-quality/adversary-review.md desc: agent 闭环对抗策划:GameDesign→findings[](P0/P1/P2 口径写死;只批不改、不下结论、不可见试玩数据) eval: eval/quality.adversary-review/ # 每批 evalflow.py 强制回流;批末稳定性重测一致率素材 - id: fix.design-revise version: 1.0.1 # v1.0.1:+template_schema 注入段/:48 括注中性化 stage: "07-fix" owner: WS2 file: 07-fix/design-revise.md desc: agent 闭环 fix 变体:原 GameDesign+findings(P1) 回灌重出(只修指出项,未指出字段原样保留;回炉额度合计 1 轮) eval: eval/fix.design-revise/ # 每批 evalflow.py 强制回流;fix 前后对照跨目录按 rootDesignId 关联(§16 D2-a) # ── tier2 富游戏自治生成线 prompt(09-tier2-richgame;range=tier2/gen-worker/worker/roles.py)───────────── # 【三态·段B处置】以下 8 条 tier2 = live(roles.py 经 prompts.load 运行时读),但 eval 字段待建、当前无金标集 # → 段 B 真模型闸对它们 fail-closed 报「金标缺失」(绝不假绿;补金标后即真跑,见头部对账总表)。 # 范式:AgentScope 2.0.2 ReAct 两阶段角色(阶段 1 工作室多 agent 设计 / 阶段 2 单写 ReAct + L3 软检玩家), # 【非】cheap-line 的策划/编码出 GameConfig|bundle 范式。与 Tier0/1 既有条目(01-safety~07-fix)完全隔离、互不影响。 # 消费方 = roles.py 经 worker/prompts.py 运行时读本段 file 指向的正文;读不到/脏 → 回落 roles.py 内置原文(best-effort,绝不中断生成)。 # 首版正文 = roles.py 内置原文逐字节对齐(带参的存 {{input.*}} 模板),故默认行为字节不变;调一条 prompt = 改对应 .md 正文升 version 重跑。 # 注:eval 字段暂留待建(图说 B 族明示 tier2 eval/灰度门当前不存在,配置改动只「下次生效+轨迹留痕」两层保护,非设计缺陷)。 - id: tier2.design-system version: 1.0.0 stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/design-system.md desc: 阶段 1 单 design agent 兜底(题面→富游戏设计稿七要点;design_team 失败时 degrade 回落用) - id: tier2.design-systems-designer version: 1.1.0 # v1.1.0:策划知识包 v2——加第 5 条策划判据(可判定句式;不给平衡数值) stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/design-systems-designer.md desc: 阶段 1 工作室专家·系统设计师(核心循环/多系统拆解/耦合点/可观测语义 state) - id: tier2.design-economy-designer version: 1.1.0 # v1.1.0:策划知识包 v2——加第 5 条策划判据(可判定句式;不给平衡数值) stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/design-economy-designer.md desc: 阶段 1 工作室专家·经济数值设计师(数据表/经济流转/胜负条件含失败态/难度曲线) - id: tier2.design-level-designer version: 1.1.0 # v1.1.0:策划知识包 v2——加第 5 条策划判据(可判定句式;不给平衡数值) stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/design-level-designer.md desc: 阶段 1 工作室专家·玩法关卡设计师(玩法节奏/关卡阶段编排/操作手感/失败-重试体验) - id: tier2.design-presentation-designer version: 1.1.0 # v1.1.0:策划知识包 v2——加第 5 条策划判据(可判定句式;不给平衡数值) stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/design-presentation-designer.md desc: 阶段 1 工作室专家·表现层与可玩性设计师(Phaser scene 树/UI-HUD 布局与命中映射/进展反馈/可玩性) - id: tier2.design-leader-system version: 1.0.0 stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/design-leader-system.md desc: 阶段 1 工作室 leader(拆题面→调四专家工具→汇总成连贯设计稿;带参 input.brief) - id: tier2.writer-system version: 1.0.0 stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/writer-system.md desc: 阶段 2 单写 agent system 固定前缀(任务/九工具/工作纪律铁律/典型循环节奏;题面+品类靶+设计稿三块由 roles.py 按入参条件追加) - id: tier2.player-system version: 1.1.0 # v1.1.0:打磨不降档——fun=5 须记忆点、fun≥4 才 pass(scoreOnly 软检,纯评语口径、零行为影响) stage: "09-tier2-richgame" owner: WS2 file: 09-tier2-richgame/player-system.md desc: L3 视觉软检玩家 agent(看截图+语义 state 判富游戏体验;只评分绝不当门;带参 input.persona) # ── cheap-worker 便宜档 A-model 生成线 prompt(04-config;range=cheap-worker/cheap_roles.py)────────── # 【三态·段B处置】config.cheap-system = live(cheap_roles.py 运行时读,便宜档生成主力面),但无 eval 金标集 # → 段 B 真模型闸 fail-closed 报「金标缺失」(补金标后即真跑,见头部对账总表)。 # 消费方 = cheap_roles.py 经 _load_system_prompt() 运行时读本段 file 指向的正文; # 读不到/脏/缺文件 → 回落 cheap_roles._SYSTEM_PROMPT(best-effort,绝不中断生成)。 # 首版正文 = _SYSTEM_PROMPT 内置原文逐字节对齐(含 ⟦G⟧/⟦SCAFFOLD_DESC⟧ 占位符),默认行为字节不变; # 调一条 prompt = 改 04-config/cheap-system.md 正文 + 升 version,下次生成自动生效。 - id: config.cheap-system version: 1.8.1 # v1.8.1(同步 04-config/cheap-system.md frontmatter 在途升版 1.8.0→1.8.1,变更说明见该文件;原 v1.8.0 W-AXIS-V3 生产者契约):ctx.log 降为纯诊断,五品类业务结果统一经 host 白名单 ctx.event(type,payload,message?) 发出;按 proof-obligations/2 明列事件 type/最小 payload/跨步同值,拒绝猜 tag/message、ctx.event=false 降级与伪造事件。v1.7.0(W-AXIS-V2 波2 契约退役):删 _forensicsView「自动验收契约」整条红线与全部 targets/occupied 语义(五法句/品类指路同步)——tap-targets 驱动器与 play-spec 退出便宜档验收链,验收 = 四门投影 ∧ 测试 agent 视觉引导真玩,模型不再为死契约写代码;handleTap 输入契约与 ctx.log 日志纪律保留(服务真人与测试员)。v1.6.3(W-AXIS 波2 拆残笼):①「两层奖励」改纯游戏设计语(基础反馈保上手+技巧分给深度)、删「围盲驱动器/绕正则」措辞;②「check 正则命中」改「词法真实命中、报错带行号」(红线判定换词法);③删整文件重写熔断恐吓、edit_file 补锚点容错说明(空白归一/近似片段)。v1.6.2:正文补 edit_file 工具契约(七工具/小改优先 edit_file、别整文件重写)——修热取源停在「六工具/write_file 整体覆盖」的 stale 欠账,治大文件整写截断(便宜档死圈病根之一)。v1.6.1:起局鲁棒性 + targets 键契约进红线——①起局/交互按钮命中矩形必须在状态进入点 onEnter 确定性建立、render 只画(治并发 rAF 饥饿下卡 menu)②点目标玩法 state 键名固定 `targets`(驱动器契约 C5 依赖,改名=盲驱动器选错族=H 门挂)。v1.6.0:打磨不降档(创始人 07-04 定调「档位切 scope 不切 polish」)——删 spike「能跑能玩即可」残留、hitstop 出禁项改结算标配、设计块强制落盘+finish 前收尾自查、新增 ⑩ 难度曲线、⑨ 经营决策模式指针。v1.5.0:策划知识包 v2——⑨ 否决项加判定句式+内嵌正反例;8/9 条计数口径统一;prompt.mjs 冻结为 A/B 史料(不再双源同改)。v1.4.0:W-GENRE 品类路由并集(剧情+6/TRPG+7/非遗+8/解谜+9) stage: "04-config" owner: WS2 file: 04-config/cheap-system.md desc: 便宜档 LittleJS A-model 生成 agent system prompt(轻量 AI 参与档,入口契约+插件+红线+输入契约+完成判据;运行时热取,回落 cheap_roles._SYSTEM_PROMPT) # ── 便宜档玩法验收 v3(10-playtest-v3;Actor/Judge A/B 物理隔离,finalPostguard 才有终裁权)──────── - id: playtest.actor version: 3.0.5 # v3.0.5:正文针对 run-20260715 五轮(v3.0.4, successRate 0.6-0.8 未建线)的已证失败模式加输出前硬自检。FM-A region 默认首候选/未对准主控件(shop-open 误选左上状态栏 r01×2、runner-restart 误选左缘空白 r02,真主按钮 r15/r01)→约束黄点 safePoint 对准 brief 主控件+禁取首/最小编号候选;FM-B key 方向推理错(2048 顶行两 2 水平相邻却连选 ArrowUp)→约束同行相邻仅 Left/Right、同列相邻仅 Up/Down、禁垂直键;FM-C lattice 行列读漂(match3 row1col6 读成 col5、行列读串落候选集外)→约束按边缘 r/c 标记逐格复读+禁行列写反与差一格;FM-D 越权类型(shop-open legalSelections 仅 tap 却返回 wait)→约束 type 逐字落 legalSelections.types、单元素时强制唯一。FM-B/C 根因含模型密集棋盘读图能力局限,正文约束可抬成功率但非能力上限解。baseline 待真模型重跑重建,本步只做正文强化+版本对齐。v3.0.4:region ID 以青色引线锚定黄点 safePoint,禁止重叠框误绑定。v3.0.3 首次明确黄点语义。 stage: "10-playtest-v3" owner: W-AXIS file: 10-playtest-v3/actor.md desc: playtest/3 Actor system prompt;读取 ActorView/3 与 VisualTargetSet 可见目录,只产单个 ActorSelection/1,不输出裸坐标或 verdict eval: eval/playtest.actor/ - id: playtest.judge-a # v3.0.14 对齐:judge-a.md 正文 frontmatter 已升 3.0.14(正文针对 5 类模型漂移加硬约束:义务 id 逐字复制/ # JSON 括号配平/problems 逐条硬证引用/summary 全引用/反事实视觉判定),registry 同步该版本。 # 注意:升到 3.0.14 后正文 hash 与 3.0.13 基线不同,旧 baseline 失效,须后续真模型重跑重建;本步只做版本对齐。 version: 3.0.14 # v3.0.14:正文强化格式约束(id 逐字/JSON 配平/problems 硬证/summary 全引用/反事实视觉)。v3.0.13:对齐正文 frontmatter。v3.0.12:全局缺陷优先于 missing;candidateState 只读不输出。 stage: "10-playtest-v3" owner: W-AXIS file: 10-playtest-v3/judge-a.md desc: playtest/3 Judge A;读取唯一 JudgePackage,按义务事件到动作后截图顺序独立检查,输出供 JudgeConsensus/1 规范化 eval: eval/playtest.judge/ - id: playtest.judge-b # v3.0.14 对齐:judge-b.md 正文 frontmatter 已升 3.0.14(正文针对 5 类模型漂移加硬约束:义务 id 逐字复制/ # JSON 括号配平/problems 逐条硬证引用/summary 全引用/反事实视觉判定),registry 同步该版本。 # 注意:升到 3.0.14 后正文 hash 与 3.0.13 基线不同,旧 baseline 失效,须后续真模型重跑重建;本步只做版本对齐。 version: 3.0.14 # v3.0.14:正文强化格式约束(id 逐字/JSON 配平/problems 硬证/summary 全引用/反事实视觉)。v3.0.13:对齐正文 frontmatter。v3.0.12:全局缺陷优先于 missing;candidateState 只读不输出。 stage: "10-playtest-v3" owner: W-AXIS file: 10-playtest-v3/judge-b.md desc: playtest/3 Judge B;读取同一 JudgePackage,按截图终态到义务事件顺序独立检查,输出供 JudgeConsensus/1 规范化 eval: eval/playtest.judge/ # 其余 prompt 待各工位 Day-0 抽取迁入(Dify 节点/OpenGame 内嵌 prompt → 本 Registry)