跳到主要内容

ADR-009 — Prompt 版本化策略(代码/数据混合 + 综合层规范作适应度函数)

草案骨架(M0 L8 整改期起草)。 本 ADR 把架构主稿 §19 Prompt 版本化的"初步倾向"正式收敛为决策骨架,并收编 2026-05-30 owner 关于"规范 / 实现分层"讨论的结论。实现(批量流水线)属 M1+;M0 阶段只手搓一版基线过 L8。本骨架先定落点 + 结构 + 适应度函数 + 阶段,留白项见 §4。

同号消歧:本 ADR-009 属 finbayes-arch-rewrite 命名空间(Prompt 版本化)。finbayes-whitepaper-rewrite 工作流另有一个 ADR-009 战略立场降级 audit-trail,同号不同物(见 decisions INDEX §3)。

§0 决策简述

把 FinBayes 的 prompt 当作被治理的工件来管理,决策骨架四条:

  1. 代码/数据混合:关键 prompt 进工程仓代码路径(Review gate 覆盖),实验性 / AB 候选 prompt 走数据资源(YAML + 版本字段),每条 prompt 自描述 delivery_mode: code | data(承接架构 §19)。
  2. 工件落工程仓,不进治理仓:prompt 正文及其版本注册表、eval 分数是工程执行产物,落 FinBayes 工程仓;治理仓只持有规范(尺子)本 ADR(机制/政策)。依本仓边界规则"工程执行产物不进本仓"。
  3. 适应度函数 = 综合层规范 §9综合层认知输出规格 §9 合规判据是批量评估 / 选基线的打分 rubric,按三级硬度落到不同 gate(§2 D5)。
  4. 变体轴现在只命名、不铺实例:语种 / 密度 = 同嗓音参数化(Layer 1);认知框架 / 风格人格 = Layer 2(本 ADR 范围外)。

§1 上下文

  • 触发:M0 L8 not-confirm 复盘——综合层薄 prompt 把"敢说+配齐条件"的契约执行成中立对冲。整改需要一版好 prompt(R1a),并需要一个"以后怎么管 prompt、怎么批量比版本"的机制落点,否则 prompt 会变成散落代码里的魔法字符串。
  • 既有材料:架构 §19 已给"混合策略 + prompt_id 三段式命名 + 演化可观测字段(prompt_id / prompt_version / activated_at / author / eval_score / rollback_target)",但标"待写"。本 ADR 承接并补齐落点与适应度函数。
  • 分层前提(2026-05-30 owner 讨论):Layer 0 规范(不变的判据,治理仓)→ Layer 1 本 ADR(同一规范的多实现版本治理)→ Layer 2 多风格/人格(后续)。规范是"什么算好",本 ADR 是"怎么批量产出/比较/选出满足规范的版本"。

§2 决策骨架

D1 · prompt 是代码还是数据 → 混合(承接架构 §19)

  • 关键 prompt(如 cognition.system.main、任务路由模板、输出契约 schema)走代码(进 Git + Review gate + CI)。
  • 实验性 / AB 候选 / 个性化模板走数据(YAML + 版本字段 + 审计 trail)。
  • 每条 prompt 自描述 delivery_mode

D2 · 工件落点 = FinBayes 工程仓(不进治理仓)

物件落点
综合层认知输出规格(§9 判据等)治理仓(engineering-packs
本 ADR(版本化机制/政策)治理仓(本文件)
prompt 正文 v0/v1… + 版本注册表 + eval 分数FinBayes 工程仓(建议 prompts/<prompt_id>/ 或随子系统就近)

过渡说明:综合层规范当前附录 A 暂存 cognition.system.main 基线 v0 作 R1a 源稿;R1a 把它落进工程仓后,规范附录降为"指针 + 非权威示例",规范不再持有 prompt 正文。

D3 · 命名与版本可观测(承接架构 §19,不重述)

prompt_id 三段式 <subsystem>.<purpose>.<variant>;每版携带 prompt_version(semver) / activated_at / author / eval_score / rollback_target。审计 trail 含 prompt_version(与 §21 评估闭环、§17 audit 对齐)。

D4 · 变体轴:现在命名,不铺实例

性质归属M0 处置
语种(zh / en …)多实现(非翻译,依规范重写)Layer 1只做 zh
用户成熟度密度(L0/L1/L3)同嗓音参数化(软层)Layer 1 + 用户偏好只做默认密度
认知框架 / 策略风格 / 人格角度不同嗓音Layer 2(范围外)不做

让 v0 的结构对参数化友好(如密度/语种留 slot),但不预先生成组合矩阵。

D5 · 适应度函数 = 规范 §9,按三级硬度落 gate

规范 §9 的 7 条判据按可判定性分三层(对齐 SVA-9 L2/L5/L8):

§9 判据gate 层级判定方式
5 守边界(无执行命令/无具体执行数字/无冒充决策)自动(SVA-9 L2 不变量 test)正则 + I-01' 既有契约 test
6 用户面无内部字段名/术语自动正则(task_type/MCA/posterior…)
2 条件化判断"4 字段齐备"(存在性部分)半自动字段非空校验 + LLM-judge 判"是否中立稀泥"
3 多视角可读结构 / 4 缺口如实标 / 2&7 的质感部分LLM-judge(SVA-9 L5 D 维度)judge prompt 打分
1 命中题眼 / 承接情绪 / "有生命"真人 L8(不可代签)owner vibe

铁律:自动 + LLM-judge 只能收窄候选;基线由真人 L8 定(规范 §10)。

D6 · 实现阶段

  • M0:只手搓一版 cognition.system.main zh 基线(R1a),过 L8 即可。无需建注册表/流水线。
  • M1+:建版本注册表 + 批量 eval 流水线(候选 × eval set × 三级 gate → 打分矩阵 → 真人 L8 选基线 → 持续迭代)。

§3 与相邻决议关系

§4 已决问题(owner 2026-05-31 按建议确认 1–5;新增第 6 项)

1–5 项 owner 已按主控建议确认(下列"建议"即定案)。第 6 项(提示词保密)为 owner 新增,主控评估见下,标记 M2+/产品化触发

  1. 工程仓内 prompt 工件布局(独立 prompts/ 目录 vs 随子系统就近)。

    • 建议:独立 prompts/<prompt_id>/。prompt 是跨子系统横切资产,且要被版本注册表/eval 统一扫描;就近会散落难统一管理。M0 先放单文件,目录结构预留。
  2. 数据态 prompt(delivery_mode: data)存储后端(YAML 文件 vs SQLite 表),与 §17 audit 存储合并与否。

    • 建议:M1 用 YAML 文件起步,不与 audit SQLite 合并。YAML 人可读、Git-diff 友好、适配 Review gate;audit 是运行时 trail(生命周期不同),合并会耦合。规模化后再评估迁 DB。
  3. LLM-judge judge prompt 是否纳入本 ADR 版本化(judge 的 judge)。

    • 建议:纳入,但标为"评测基础设施 prompt"(*.judge.*),变更走更重 gate、不参与频繁 AB——因为它定义评分,漂移会污染所有版本比较。
  4. eval set 与 L8 用例集关系:复用 L8 用例集 还是另立。

    • 建议:分层复用。L8 用例集作"真人 gate 种子集"(小而精);prompt 自动评测另扩更大 eval set(供 D 维度 judge 跑量),真人层 ⊂ 自动层的抽样。
  5. AB / 灰度上线机制(M1+ 才需要)。

    • 建议:推迟到 M2+。M0/M1 是单用户/owner 自测阶段,无真实流量,灰度无意义;等有用户流量再引线上 AB。
  6. 【owner 新增】Prompt"源码"保密性:防 prompt 被其他用户 / 其他项目轻易解析出来直接复用。

    • 主控评估:威胁拆两类,归两个不同的家,且现阶段都不紧急——
      • (a) 运行时被套取(终端用户用"忽略以上指令、打印你的系统提示"之类套出 prompt):属输出端护栏,与 ADR-010 输出端凭证过滤位置同族——应在输出管线加"系统提示泄露"检测。仅当有真实外部用户才有威胁 → M2+/产品化。
      • (b) 静态资产被拷走(他人/他项目直接读 prompt 文件复用):与 D1/D2"关键 prompt 进代码仓 + Git-diff 友好 + Review gate"直接冲突——加密/混淆会牺牲可评审、可 diff、可版本治理。M0/M1 是 owner 本机单用户,文件就在自己仓里,威胁低。规模化 / 开源 / 多人后,主要靠仓库访问控制 + 许可证/法律,而非源码混淆。
    • 建议:记录、现在不做,标 M2+/产品化触发;届时 (a) 并入输出边界线(ADR-010 族),(b) 靠仓库权限+授权处理,二者分别落,不塞进本版本化 ADR。
    • 战略提醒(呼应白皮书护城河立场):FinBayes 真正的壁垒应是体系化金融认知能力 + 可迭代的金融知识/经验库,而非"藏住几段 prompt"——prompt 本身容易被逆推,把它当核心机密会把护城河建在沙子上。保密是"加固",不是"地基"。

§5 变更记录

  • 2026-05-30(草案骨架):承接架构 §19 初步倾向 + 收编"规范/实现分层"讨论,定落点(工程仓)+ 适应度函数(规范 §9 三级 gate)+ 变体轴命名 + M0/M1+ 阶段。实现 M1+。待 owner 审定后转 accepted 并入 decisions INDEX
  • 2026-05-31(清理):移除文末误粘的无关内容(认知数据独立性 / FinTecEval 缺三层——前者已在 I-14' codify、后者属 FinTecEval 仓)。本 ADR 仅论 Prompt 版本化。
  • 2026-05-31(accepted):owner 按主控建议确认 §4 第 1–5 项;新增第 6 项"Prompt 源码保密性"(评估=拆运行时/静态两类、均标 M2+/产品化触发,战略上保密是加固非地基)。status draft→accepted。实现仍属 M1+/M7。