docs(design): 落成 0005,修订存储接缝的原子写与步记录三处
第二轮 Codex 对抗审查报的五条全部核实成立,0003/0004 已冻结,修订新写一份。 五条都不改任何决策的结论,改的是结论到形状之间那一段的落实。 决策一:步记录加一个布尔的完成信号列。0004 决策二承诺靠它区分两条完成通路, 而决策四的字段表里没有这个字段。它自己就够区分,不必查注册表—— 事后分析手上常常只有轨迹文件。 决策二:存储接缝六个方法重切一刀,把「按预分配 ID 写一条结果」拆成 「写模型调用结果」与「写动作结果与步记录」。原子性从散文变成签名里不可表达其他形态。 决策三:观察那一列的口径改成「回填进历史的那段文本」,不加字段。 dissect 的 render_messages 把 step.observation 原样套模板发出, raw_output 也是解析器截断后的版本——两侧同构,都是一段文本加一个数字。 决策四:作废 0004 词表里「一个可能取不到的完成信号」,那是上一轮 fatal bug 的原话。 决策五:存储接缝加前缀持久性。少了它,一次明明成功的模型调用会被恢复 记成「状态未知」,而它成功的证据就在同一份日志里。 结论已回写 architecture.md 第九节与决策索引;migrations/dissect.md 需求七 补上「分开记的是文本加数字,不是两段文本」,堵掉这次审查里出现过的误读。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -128,6 +128,12 @@ PolyLoop 提供的是「把模型响应解释成动作、最终回答或无效
|
||||
dissect 的解析器会把第一个代码围栏之后的文字丢掉,所以「模型说了什么」和「下一轮模型看见
|
||||
什么」是两个不同的量。混用会让统计口径出错。
|
||||
|
||||
**「分开记」记的是一段文本加一个数字,不是两段文本。** dissect 两侧都这么做:模型那侧存
|
||||
`raw_output`(解析器截断之后的,正是回填进历史的那段)加 `content_chars`(模型可见输出的
|
||||
全长);观察那侧存 `observation`(进历史的那段)加 `observation_truncated_chars`。照「两段
|
||||
文本」读会得出「库少了一个字段」的结论,那个结论是错的,见
|
||||
`../design/0005-storage-atomicity-and-record-fields.md` 决策三。
|
||||
|
||||
**八、可见回复与推理段的长度按字符记,不依赖上游上报。**
|
||||
实测中转网关会用本地分词器补算并整体替换用量对象,把明细一起吃掉——某次标定里 24 次调用
|
||||
的推理 token 全部没上报。字符数直接数,不受上报与否影响。
|
||||
|
||||
Reference in New Issue
Block a user