Repository navigation
[Bug] 系统提示每次变化都往历史追加完整副本,Codex 车道下 19 份被拼进 instructions 超 1MiB,整会话 400(0.2.2-rc.1,含精确复算) #13010
Replies: 2 comments
|
补充:pi-ai 协议里本来就有"section 级打补丁"机制,比前面三条修复方向都更优(查版本影响范围时发现的) pi-ai 的 SystemMessage 有两个载荷字段(
正确用法:静态主体放
为什么现在没用:内核把所有东西渲染成扁平字符串, 修复方向排序更新:
|
|
追加那段路径确认了;flag 不在这个仓里,在 pi-ai 的模型目录里。 你说的三处都对: flag 的来源:这个仓里查不到
我读的是 这段可以直接给 AI,让它按你的 pi-ai 版本核对那个模型条目。 |
Uh oh!
There was an error while loading. Please reload this page.
现象
DSH Desktop 0.2.2-rc.1,
dsh-codex-subscriptionprofile(provideropenai-codex,模型gpt-6.1-terra)。会话进行到第 16 轮起,每一次请求都被 OpenAI 拒绝:长度 1,525,112 字符,超过 Responses API 的 1,048,576 字符硬上限。会话从此起永久死亡,无法自愈,只能开新会话。
数据(精确复算)
会话文件(
C:\Users\ldc\.dsh\sessions\...\session-3c83c9e5-....jsonl.zstd)里共有 19 份完整的 system/message,每份 41–122KB(其中 PTC run_code 注入段单份约 106KB),总字符 1,525,076;pi-ai 拼接时用"\n\n"分隔,18 个分隔符 = 36 字符:机制链(已在 rc.2 源码 e8f7b93 上核对)
SystemPromptProjection.project()(packages/core/agent-loop/src/runtime-context.ts:99-113)——当路线支持 mid-convo system 时,"a capable continuing series keeps appended nodes in place to preserve the prefix":系统提示每变一次,就在历史末尾追加一份完整副本,旧的保留。这是有意识的设计(保上游前缀缓存),不是笔误。@earendil-works/pi-ai):getCurrentSystemMessage把历史里所有 system 消息用"\n\n"拼成一个字符串,放进 Responses 请求的instructions字段。instructions有 1,048,576 字符硬上限 → 超限即 400。三者叠加:无界累积 × 全量拼接 × 有上限的字段 = 长会话必然死。触发位是模型 compat 的
supportsMidConvoSystemMessages(packages/llm/llm-pi-ai/src/models.ts:77-79,置位后systemPromptUpdate: 'in-history')。一个需要维护者确认的点:
RESPONSES_COMPAT_GATE对该字段是withhold(packages/llm/llm-pi-ai/src/catalog.ts:273,用户配置面不可设),而 OSS 源码里查不到gpt-6.1-terra的声明——但会话文件里 19 次 in-history 追加经验证确实发生了,说明该模型的置位来自我们看不到的内置目录(Desktop 发行版?)。请确认这个 flag 的实际来源。为什么这是缺陷
追加设计本身有道理(省前缀缓存重算),但两处组合成了结构问题:
结果:codex 车道上所有系统提示变化足够多次的长会话,最终都会整会话 400。而且 400 之后每一轮都 400——不是偶发失败,是会话永久死亡。
建议修法(按根治程度排序)
supportsMidConvoSystemMessages不置位,project()走现有的 replace 分支(runtime-context.ts:104-111)——历史里永远只有一份系统提示。代价是每次系统提示变化失效一次前缀缓存,这本来就是追加语义想省的;但"失效一次缓存"严格优于"整会话 400"。getCurrentSystemMessage去重/只保最新一份。这个还能救已经写脏的存量会话。影响与补充
instructions是顶层字段;代理只对认领到的流量做事,绕过车道的请求原样直发。完整的第三方视角报告见 billion-context#6258(含逐字节复算),另见 billion-context#917 里独立观察到的同类膨胀。All reactions