# 架构评审答复 · GPT-6 Astra · 2026-09-14（第一轮）

> 归档说明（2026-09-14 补录）：本文是外部模型对 `docs/internal/ARCH-REVIEW-BRIEF.md` 的第一轮评审答复**原文**。
> 投喂用提示词见 `docs/internal/ARCH-REVIEW-REQUEST.md` §2b（路径版）。投喂对象自述"仅阅读指定文档与相关代码，未修改文件、未运行测试"。
> **归档动因**：本会话此前已压缩过一次，该答复当时只存在于对话中；若再压缩即永久丢失，故落盘为唯一持久副本。
> **待办**：文中所有「文件:行号」主张尚未全部核实——核实结论将作为第二轮投喂的输入材料（真阳性 → 进 Phase 0 / 假阳性 → 第二轮显式反制）。

---

结论：保留"最优档优先、push 为主、pull 为辅"的方向，但**目前不能把"三层验收通过、S3/S6 已合规"作为重算法上线的可靠前提**。本次仅阅读指定文档与相关代码，未修改文件、未运行测试；下面的验收均为建议执行项。

## A. 输入包中最值得质疑的前提

**A1｜你怀疑什么：S3"已合规"和"融合序直接作为最终序"不成立。** BRIEF §5.1、SPEC §3 据此把主要改造范围限定在 S1/S2/S4/S5，可能遗漏真正影响检索结果的路径。

**依据：** S3.2 禁止分数空间加权，但 JS 的 [semantic-js-pre.js:60](D:/dsh-auto-memory/lib/semantic-js-pre.js:60) 和 Python 的 [worker_semantic_pre_v1.py:486](D:/dsh-auto-memory/python/worker_semantic_pre_v1.py:486) 都对归一化分数加权；调用分别见 [context-host-pre.js:378](D:/dsh-auto-memory/lib/context-host-pre.js:378)、[worker_semantic_pre_v1.py:907](D:/dsh-auto-memory/python/worker_semantic_pre_v1.py:907)。公共注入层又按原 `score` 排序，见 [activation-inbox-pre.js:255](D:/dsh-auto-memory/lib/activation-inbox-pre.js:255)。因此融合影响入选，却未必决定最终展示顺序；C7 分值降序不能证明融合正确。

**建议怎么核实［两档共用］：** 固定每个召回臂的排名，只改变分数间距，排名融合结果应保持不变；再构造"融合序与原稠密序相反"的候选，贯穿召回、预算裁剪和最终注入检查顺序。任一阶段意外变序即失败。先完成这组零额外 LLM 调用的验证，再把融合结果作为 S2/S4 实验基线。

**A2｜你怀疑什么："增量索引"和"内容寻址块 ID"被赋予了超出实现的含义。** 前者未必减少计算，后者未必支持未变文本块复用；这会使 S1.3 的工期和预期收益失真。

**依据：** L0 在 [l0-index-pre.js:125](D:/dsh-auto-memory/lib/l0-index-pre.js:125) 先对全部摘要调用嵌入，再于该文件 `:138` 选择旧向量；[l0-index-pre.js:219](D:/dsh-auto-memory/lib/l0-index-pre.js:219) 返回的 `recomputed` 是变化计数，不能代表实际编码量。另一方面，[m7_embedding_pre_v1.py:75](D:/dsh-auto-memory/python/m7_embedding_pre_v1.py:75) 的块 ID 包含整个记录的 `recordDigest`；同一记录改变一块，其他块的 ID 也会改变。S1.1 的公式本身没有保证"单块文本不变则缓存命中"。

**建议怎么核实［两档共用］：** 使用记录实际输入条数的嵌入替身，覆盖不变更新、增加记录、修改多块记录末块、前部插入四种情况，同时报告编码条数与块 ID 变化。若只返回漂亮的增量计数、实际仍编码全部摘要，就判失败；S1.3 的首期收益按"记录级失效域"核算，不能预支更细粒度缓存收益。

**A3｜你怀疑什么：C5/C6 全绿没有证明状态、快照和最终预算三个关键边界。** 这直接影响错误记忆能否重新进入上下文，也使成本模型缺乏可靠上限。

**依据：** [C5 测试:127](D:/dsh-auto-memory/tests/smoke/smoke-test-c5-tier-inject-pre.mjs:127) 放入 `superseded` 候选，[同测试:133](D:/dsh-auto-memory/tests/smoke/smoke-test-c5-tier-inject-pre.mjs:133) 却预期三条全部保留，与 I5 相反。命中复用在 [index.js:3894](D:/dsh-auto-memory/lib/index.js:3894) 只检查时间与会话后便与当前来源拼装，没有在该入口核对 I6 的同一 `miv`。预算方面，[tier-layer-inject-pre.js:323](D:/dsh-auto-memory/lib/tier-layer-inject-pre.js:323) 不裁目录和降级行，裁剪后还追加说明；[index.js:3986](D:/dsh-auto-memory/lib/index.js:3986) 封顶的是目录扣账成本，不是已加入的文本长度。这些都是静态代码反证，实际事故发生频率未经核实。

**建议怎么核实［两档共用］：** 直接向实际注入入口提供混合状态候选、先命中后换 `miv` 的时序，以及目录和白板同时接近上限的输入；只有 current 内容保留、三层同版本、最终完整输出不超预算才通过。测试不得预先替被测入口过滤，也不得只检查"出现了裁剪提示"。

## 一、分档边界：BRIEF §3-1／§8.2(b)-1

**1. 结论：** 按用户允许承担的成本和增强授权定义档位，引擎作为档位预设与缓存身份。最优档继续以作者的质量目标为先，LLM 增强独立门控；引擎失效时进入降级，不把用户永久重新归类为兼容用户。

**2. 依据：** BRIEF §2.1、§2.2；S1.2、S9.1–S9.4。文档没有提供"Python 必然代表某个质量水平"的对照证据。

**3. 档位与三件套：** 两档共用，最优档优先；本项是配置与调度安排，重方案单列于第三节。沿用单一检索流程，资源不足时关闭增强；无 LLM 时保留本地处理，嵌入引擎不可用时明确降级为词法。

**4. 成本：** 本项新增 LLM 调用为 0，无须新增常驻模型；配置判断的延迟、内存增量未测。换引擎仍承担 S1.2 要求的重建成本；最终注入 token 另计，不能称整条链"零 token"。

**5. 可失败验收：** 对同一语料分别关闭 LLM、令嵌入引擎不可用、耗尽增强预算，若均保持同一接口、产生可用降级结果及原因则通过，任一情况整链失败或偷偷调用 LLM 即失败。

**6. 契约影响：** 不改变 OR 双引擎和三层接口；若把 S9.3"同一路径"解释为两档执行完全相同的模型调用，则与 S9.2 的可选增强矛盾，应先裁定其含义，不能通过档位专用字段绕过。

## 二、兼容档可验收性：BRIEF §3-2／§8.2(b)-2

**1. 结论：** "存在降级路径"是必要条件，还必须证明这条路径能在有界时间和资源内完成。验收应覆盖首次可用、单轮响应、持续写入后的新鲜度、常驻及峰值内存、磁盘占用，并绑定设备和语料规模。

**2. 依据：** S9.1、S3.3、S5.3，以及 BRIEF §7②③；当前材料不足以给出可信的毫秒或 MB 上限。

**3. 档位与三件套：** 兼容档作为降级保障，两档共用测量方法；无需引入重模型。语义加载或请求超过预先登记的截止时间，就返回词法结果与明确原因；不得等待不可用组件完成才降级。

**4. 成本：** 新增在线 LLM 调用为 0；增加本地计时、资源采样和有界诊断，具体延迟与内存待测，无须新增模型依赖。诊断文字也占注入预算；新鲜度与磁盘回收不能从成本表省略。

**5. 可失败验收：** 在登记的最低设备、语料规模和写入负载上重复冷启动、查询及组件失效实验，全部满足事前登记的时间、内存、磁盘、新鲜度界限且额外 LLM 调用为 0 才通过，超界或未登记界限均不能宣称兼容验收通过。

**6. 契约影响：** 这是 S9.1 的验收落实；同一测试接受不同预算参数，不是为兼容档免除 I4–I7，也不要求它达到最优档相同的召回结果。

## 三、重方案准入：BRIEF §3-3／§8.2(b)-3

**1. 结论：** 保留 S9.2 三件套作为方案准入，再用 S7 对照实验决定是否启用；无需要求降级结果与增强结果相同。最优档可先试验一次 LLM 查询改写，保留原查询召回，不引入检索自省循环。

**2. 依据：** S2.1–S2.4、S7、S9.2；三件套证明成本可控制，不证明收益存在。PROGRAM §6 的 `10/12` 与契约 §4.5 的可达率 `≥0.9` 是不同门，不能互代；同一组 12 题同时满足二者需要至少 `11/12`。

**3. 档位与三件套：** 最优档试验：作者显式开启、费用额度充足且查询属于事前登记的复杂查询集合时触发；建议每次最多一次调用、生成两条改写，不重试，原查询始终保留。超时、错误、超额或无 LLM 时回退本地原查询并标注。

**4. 成本：** 建议试验上限为输入 512、输出 128，即每次最多 640 个额外 LLM token，由作者承担；额外等待上限建议 1.5 秒，二者是待验证的控制值，不是性能预测。检索最多增加两条查询的本地计算；远程方案不新增常驻本地模型，但需服务适配器，内存与取消后资源释放待测。

**5. 可失败验收：** 冻结语料、题集、答案证据及预算，分别运行增强关闭／开启的 S7 A/B/C 对照，只有答案可达率提高、噪声比不升、契约全部通过且故障注入能按时退回原查询才通过，否则不启用。

**6. 契约影响：** 符合 S2.4、S7、S9.2；兼容档调用它会违反 S9.1，因改写失败丢失原查询会违反 S2.4。成本计量或服务能力缺失时，当前只能批准实验设计，不能认定已满足上线门槛。

## 四、数值真值归属：BRIEF §8.2(b)-4

**1. 结论：** 采用"单一数值定义源＋文档数值表生成或校验＋独立行为验收"。设计裁决决定数值含义，定义源记录已批准的默认值、硬上限、单位和关系；运行配置产生有效值，不能让偶然的代码改动自动成为新政策。

**2. 依据：** SPEC §0.2、契约 §4。当前守卫在 [smoke-test-doc-code-consistency-pre.mjs:149](D:/dsh-auto-memory/tests/smoke/smoke-test-doc-code-consistency-pre.mjs:149) 只列七个字段，没有覆盖 `L1/K` 等全部预算关系。

**3. 档位与三件套：** 两档共用；属于确定性配置治理，无 LLM 门控需求。默认值、硬上限和配置后的有效值必须分别展示、分别检查。

**4. 成本：** 在线额外 LLM token 为 0，无新增常驻进程或模型依赖；开发期增加定义整理及生成校验工作，运行期开销未测。集中数字不能替代最终文本长度和真实 token 成本测量。

**5. 可失败验收：** 在隔离副本分别改变数值、单位和文档声明，未同步必须报错；再输入超预算内容，即使所有数值声明一致，最终输出超限也必须失败。

**6. 契约影响：** 不改 I1–I3 或 S5.2；最优档提高可配置总预算不等于获准突破冻结的 `B0/L1/K/B2`。此外，契约 §4.6 的字符估计大于旧估计，并不能单独证明它是真实 tokenizer 的硬上界。

## 五、预算差异与共用契约：BRIEF §8.2(b)-5

**1. 结论：** 固定字段含义、证据身份、序列化规则及降级规则，允许完整条目数量和按需出现的层不同。以完整证据条目为裁剪单位，先预留身份、出处及降级说明，再分配正文；预算不足时明确未输出该证据。

**2. 依据：** S9.3、I1–I7、契约 §1.2／§2.3；Tier-1/Tier-2 本来就按需出现，所以两档输出不逐字相同不构成违约。

**3. 档位与三件套：** 两档共用，最优档通过更多有效预算保留更多证据，兼容档减少数量。无 LLM 时执行同一组装和裁剪规则；不得通过删状态、出处或版本约束节省预算。

**4. 成本：** 新增 LLM 调用为 0；完整元数据会占既有注入额度，组装延迟与内存待测，无新增模型依赖。当前 Tier-2 在 [tier-layer-inject-pre.js:247](D:/dsh-auto-memory/lib/tier-layer-inject-pre.js:247) 取摘录并仅输出 layer、memoryId 和正文，不能把另一条 `expand` 路径的出处能力视为这里已经具备。

**5. 可失败验收：** 对同一快照和查询，使用两档预算及条目边界前后一字符的预算检查最终输出，同一解析规则可读、计数准确、保留证据字段完整且总长合规才通过，残缺正文、缺出处、混版或超限即失败。

**6. 契约影响：** 修复现有 I4/I5/I6/S5.2 缺口；另须先裁定 S5.4"相似度降序"与 S4 独立精排的关系。不能把 RRF 或精排分直接改名为相似度，也不能让展示层重排悄悄撤销精排结果。

## B. 不建议做的事

- **［两档共用］** 不建议以 C7 分数可见或套件全绿替代端到端验收；当前已有测试将违反 I5 的结果视为通过。
- **［最优档］** 不建议先扩大预算掩盖拼装缺陷，或在排序语义未厘清前叠加 cross-encoder；前者无法控制实际成本，后者无法归因收益。
- **［两档共用］** 不建议将多轮检索设为默认、混排两引擎向量，或要求降级答案与增强答案完全一致；前两者越过既定边界，后者使增强无法体现价值。
- **［两档共用］** 不建议直接把白板"重要概念""相关卡片"当确定性 lint 判据；WB §6 未定义识别范围、关系规则和误报标准，目前不能据此判验收通过。

## 需要补充的信息

- 两档实际配置、最低设备、模型版本、语料规模与写入负载；冷启动和单轮延迟分布、常驻／峰值内存、磁盘增长；目标 tokenizer、计费口径及最终注入统计边界。
- 正式 12 题、答案所在原文块、S7 各策略原始结果；同次请求贯穿 push/pull、融合、决策、缓存及注入的版本和分数记录；白板 lint 的概念、关系和日期阈值定义。缺少这些，不能确认重方案收益、真实资源上限或整条链已满足共用契约。
