分层要落到运行时才有效
# 分层要落到运行时才有效
结论
你在「协议 / 分层」上踩的是同一个坑:层分对了、文档写好了,但没有任何东西在执行它。 判定标准只有一条 —— 这一层有没有被运行时(代码 / 校验器 / 消费方)真正读取。 没被读取的分层等于不存在:它不报错,只是不生效。
五处证据:每一处都是「分层存在,但没落地」
| 出处 | 分好的层 | 落地缺在哪 | 后果 |
|---|---|---|---|
| 作者是AI时协议要唯一规范答案 | 真源 / 机器可读契约 / 人类说明三层 | 校验器只查 required slot,不拦旧私有 class 与 renderer-owned 规则回填 | 导入模板继续污染数据库 |
| 多源更新按维度取真源 | skill 正文 → 上游;协议字段 → 本地 | 「还没同步的层」只在文档里列,没有同步校验 | 文档与运行时各说各话 |
| 评测平台是平台层项目规则是适配层 | 平台(版本/数据集/trace/评分) vs 项目(fixtures/cases/runners/evaluators) | 只上传固定 modelOutput 就跑实验 | 验证了「解析与契约」,被当成「链路回归」 |
| 通用脚本要靠工具适配器接入 | 中立逻辑 vs 某端格式要求 | 直接注册通用脚本、把格式写进通用件 | 通用件被绑死在单个工具上 |
| 简历模板的三层渲染协议与迁移 | data / layout / render;协议只管结构,视觉归模板 CSS | 协议 class 与 selector 不成对迁移 | 「DB 改了、线上 render 没改、视觉不变」 |
综合判断
-
分层的价值全部押在「消费」上。 契约被 validator 读、中立件被适配器包、结构规则被 render 执行 —— 才算一层;否则它只是文档里的一个说法。这也解释了为什么这些坑全都静默: 没被执行的约束不会报错,只会让人在错误的前提上继续做。
-
「层分对了」和「层生效了」是两件事,要用不同的动作验收。 分层是设计动作(写文档、定职责),生效是运行时动作(加校验、加适配器、跑真链路)。 只做前者,得到的是看起来很有秩序的、没有约束力的体系。
-
可迁移的动作:每次划完一层,追问一句 —— 「谁会在运行时读它?如果没有,我凭什么相信它会被遵守?」 答不出「谁读」,这一层就还没落地,别急着往下一层走。
与既有 synthesis 的关系
- 可复用物与不可复用物分开 讲的是怎么分层(按寿命 / 复用性); 本条讲的是分层之后怎么才算数(落到运行时)。两者是同一条链的前后两段: 分错层 → 过期物污染没过期物;分对层但没落地 → 约束形同虚设,同样静默。
- 先定位归属层再动手 讲排障时先判断归属层; 本条是它的建设侧镜像:动手之前,先确认这一层有没有执行者。
为什么这是 synthesis
单看每一页,都是某次具体协作里的一个疏漏(校验器漏拦、文档没同步、实验覆盖不够、适配器没写、迁移不成对)。 并排之后才看得出它们共享同一个失败形状:分层做了、执行没做。 这个形状与项目无关,可以直接带走。
相关
- 契约只承载结构,个性留给扩展层 —— 本条讲「分层怎么才算数」,那条讲「层与层之间怎么切界」
- 存量不会自动跟上新逻辑 —— 有人读了还不够,还要所有对象都经过它
- 作者是AI时协议要唯一规范答案 / 多源更新按维度取真源 / 评测平台是平台层项目规则是适配层 / 通用脚本要靠工具适配器接入 / 简历模板的三层渲染协议与迁移