You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
面板 Sent to LLM(sent view)漏计 system prompt+工具 schema:plugin.ts 硬编码 systemPromptTokens: 0,SysPrompt 行永不可渲染(#425 不覆盖) #532
sentTotal = classified + systemPromptTokens(panel.ts:67-69),而 systemPromptTokens 被硬编码为 0:src/plugin.ts:393(dist 54745)——尽管 kernel API 明确索要"measured token count of the host system prompt"(panel.ts:17-19);
bili 其实已经测过这个量:estimateInputTokens(processedMessages, systemText, tools, …)(server.ts:1643-1647),只是没传给面板;适配器也已把 system 从消息投影里抽出(openaiToCore 返回 {msgs, systemText}),故 breakdown 的 bd.system 也≈0;
层次判断:这是"测过但没传"的接线缺口,不是 kernel bug——kernel API 文档明确要 host 自己测量并传入("host-specific to obtain; the kernel breakdown does not see it")。因此不需要动 kernel,bili 侧修复即可。
Activity
ranxianglei commentedon Sep 4, 2026
[bot] 🏷 审核结论:缺陷属实,根因定位正确,开始修复。
验证(v0.1.83 / acp-kernel 0.0.51)
src/plugin.tshandlePluginStatus 确实硬编码systemPromptTokens: 0(唯一调用点,grep 全仓仅此一处);buildStatusPanel:sentTotal = classified + systemPromptTokens,且classified只取 breakdown 五类(system/tool/summaries/code/text);系统提示在 0.0.37+ 的 wire codec 里被 hoist 出折叠空间(openaiToCore返回{msgs, systemText}、Responses 走 developer message、Anthropic 走顶层字段),所以bd.system≈0 → 漏计量 = system + tools schema,与票述一致;estimateInputTokens(processedMessages, systemText, tools, …)(server.ts,= messages 估计 + countTokens(systemText) + countTokens(JSON.stringify(tools))),只是没喂给面板;层次判断:这是"测过但没传"的接线缺口,不是 kernel bug——kernel API 文档明确要 host 自己测量并传入("host-specific to obtain; the kernel breakdown does not see it")。因此不需要动 kernel,bili 侧修复即可。
方案(按票述建议实现,略有细化):
session.metadata.systemPromptTokens(与 estimateInputTokens 同源计数;anthropic 用 injectSystem 后的最终文本,openai 只计 bili 注入部分避免与 kernel 已分类的 head-system 双计,responses 计 developer message 内容);plugin.ts改传该值;同时给unprunedTokens加同一量,保证Session-only (compressed originals)推导(unpruned − sent)仍在同一尺度上隔离纯压缩原件;一个已知残留:Responses wire 的
additional_tools/mcp_list_toolspreamble 项不计入(与 #453 clamp 路径的约定一致,那边同样忽略),codex 会话仍会少这部分;如需计入可另开一票。PR 稍后贴在本票。
ranxianglei commentedon Sep 4, 2026
[bot] 🏷 进展:实现完成,新测试全绿,全量套件核验中(沙箱磁盘写满导致一次中断,正在清理后复跑)。
已完成:
src/server.ts:新增导出countSystemAndToolsTokens(systemText, tools)(与estimateInputTokens同源计数,后者改为复用,行为不变);三条 wire 路径在 prepare 时把实际出站的 system+tools token 数存入session.metadata.systemPromptTokens(anthropic = injectSystem 后的最终文本;openai = client system + compress prompt,且跳过 title-gen 旁路请求;responses = developer message 内容,仅 transform 成功时);src/plugin.ts:面板调用改传该值(带 number 守卫),unprunedTokens同步加同一量以保持 Session-only 推导同尺度;tests/issue532-panel-system-tokens.test.ts(4 项全过):typecheck 干净。全量套件第一次跑 1035/1036,唯一失败项待定位(疑似与下面环境问题相关而非本改动引入)。随后沙箱磁盘写满(ENOSPC)打断了复核,清理空间后会复跑全套 + build,确认无回归即开 PR 并回贴链接。
ranxianglei commentedon Sep 4, 2026
[bot] 🏷 修复完成 → PR: #534
实现(与票面建议一致,按 wire 路径细化)
src/server.ts:新增导出countSystemAndToolsTokens(systemText, tools)(与estimateInputTokens同源计数,后者改为复用它、行为不变);三条 prepare 路径把实际出站的 system+tools token 数存入session.metadata.systemPromptTokens:injectSystem后的最终文本(注入时含 compress prompt);sysParts),title-gen 旁路请求跳过(其自带的小 system 不得覆盖主会话值);src/plugin.ts:handlePluginStatus改传该值(带 number 守卫),替代硬编码的 0;unprununedTokens同步加同一量,保持 Session-only 推导同尺度。为何不会重复计数:适配器把头 system 从消息投影里抽出(
openaiToCore→{msgs, systemText}、Responses→systemParts),kernel breakdown 的bd.system≈0 是设计使然——喂给 kernel 明确预留的 "host-measured system" 槽位(systemPromptTokens)恰好补上这块盲区,breakdown 五项之和 == Sent total 自动成立(自洽)。测出站文本而非原始输入,保证 bili 注入 compress prompt 时数值仍然真实。验收标准对照
Pre-flight
npm run typecheck干净;新测试 4/4 过;npm run build成功;npm test1035/1036。唯一失败launcher.test.ts"codex/claude resolve to themselves" 已验证为预先存在的环境相关失败:在未改动的 master(baf1ac5)上以独立 worktree 复跑,同样失败且报错一致(环境里 codex 装在绝对路径,resolver 返回/usr/bin/codex,断言期望裸名codex)。与本改动无关,按"小问题只报告不另开票"处理在此;若希望 CI 全绿可考虑让该断言容忍绝对路径解析。已知残留(已在 PR body 注明)
Responses-API 的
preamble项(additional_tools/mcp_list_tools)未计入——与现有estimateInputTokens/ #453 clamp 约定一致(它们也不计),相对真实 tool schema 占比很小,需要的话后续可补。合并请人工操作(规则禁止 Agent merge):#534
Merge master into fix-panel-system-prompt-tokens: resolve #425 host-c…
ranxianglei commentedon Sep 6, 2026
已 review + 冲突已解:#425(host-credit arming)与 #534(systemPromptTokens arming)在 prepareOpenai/prepareResponses 的 snapshotMessages 前同一位置交叉,二者正交,合并保留双方(prepareAnthropic 自动合并已是双块)。plugin.ts 面板取
tokenCount: hostContextTokens ?? lastInputTokens(#425)+systemPromptTokens(#532)组合。已推 merge commit 8cdf842 到 PR 分支(含最新 master)。Pre-flight:typecheck ✓ 1131/1133(2 个已知 plugin-agent 环境失败)build ✓。
设计审查通过:countSystemAndToolsTokens 与 estimateInputTokens 同源复用(无第二套口径);openai 只计注入的 sysParts 避免与折叠视图 head system 双计;responses 只计注入的 devContent;title-gen 侧请求跳过防污染;unprunedTokens 同步加回保持 Session-only 推导单一尺度。测试 269 行含面板自洽性(行和=Sent 总)+ anthropic/openai e2e。
可合并。
fix: status panel counts outbound system prompt + tool schema (#532)
ranxianglei commentedon Sep 6, 2026
[bot] 🏷 收到。已把 PR head 的
8cdf842拉到本地核对,与你描述一致:4d22e58(含 fix: instance registry lost-update — per-instance marker files (#527) #528 等最新 master)+bb49736(本票提交),commit message 即 "resolve fix: report uncompressed baseline in host usage + clamp negative persisted token stats (#408) #425 host-credit vs 面板 Sent to LLM(sent view)漏计 system prompt+工具 schema:plugin.ts 硬编码 systemPromptTokens: 0,SysPrompt 行永不可渲染(#425 不覆盖) #532 systemPromptTokens arming (keep both, orthogonal)";tokenCount: session.hostContextTokens ?? session.stats.lastInputTokens(fix: report uncompressed baseline in host usage + clamp negative persisted token stats (#408) #425)与systemPromptTokens(number 守卫后的 面板 Sent to LLM(sent view)漏计 system prompt+工具 schema:plugin.ts 硬编码 systemPromptTokens: 0,SysPrompt 行永不可渲染(#425 不覆盖) #532 值)同块共存,unprunedTokens配对加回也在;status JSON 的contextTokens同样走hostContextTokens ?? lastInputTokens;countSystemAndToolsTokenshelper、estimateInputTokens复用全部保留,fix: report uncompressed baseline in host usage + clamp negative persisted token stats (#408) #425 的hostCreditTokens写入路径未受影响。PR 状态 open、mergeable=true。合并按规则只能人工操作(Agent 禁止 merge):#534 —— 你点合并后 CI 会自动发版流程照常,这边无需再动。
Merge pull request #534 from ranxianglei/2026-09-04_fix-panel-system-…
ranxianglei commentedon Sep 6, 2026
已修复并合并:PR #534(merge 3eb918e)。countSystemAndToolsTokens 统一口径,anthropic/openai/responses 三 wire 在 prepare 阶段测量出站 system+tools,面板 SysPrompt 行恢复渲染。issue 之所以未自动关闭:PR 标题里 '(#532)' 是纯引用,无 Closes 关键词。
fix: google lane records the k̂ denominator (#2407 addendum)