Skip to content

fix: exclude acp_cache promptSnippet in leanPack - #488

Open
KaelWD wants to merge 1 commit into
ranxianglei:masterfrom
KaelWD:patch-1
Open

KaelWD wants to merge 1 commit into
ranxianglei:masterfrom
KaelWD:patch-1

Conversation

@KaelWD

@KaelWD KaelWD commented Oct 1, 2026

Copy link
Copy Markdown

No description provided.

@ranxianglei

Copy link
Copy Markdown
Owner

🤖 Powered by ework · qwen3.8-27b

[bot] 🏷 PR #488 review — fix: exclude acp_cache promptSnippet in leanPack

核对情况:已拉取 head(2b233ac)本地核验。base e7e1614 == 当前 master,无 rebase 需要。diff 仅一行:src/packs.ts:290,在 builtin leanPack 的 adapters.pi.toolExtras 中补入 acp_cache: { promptSnippet: "", promptGuidelines: [] }。

CI:test (22) ✅ / test (24) ✅ / build-artifact ✅ / pr-validation ❌ —— 原因是分支名 patch-1 不符合 YYYY-MM-DD_short-title 规范(check-pr.sh 硬校验),非代码问题。

结构化七问:

  1. 是什么问题:builtin lean pack 的契约是"剥离全部标准 ACP 工具的 promptSnippet + guidelines chrome",但 acp_cache 引入时漏同步进 toolExtras —— lean 表面下 acp_cache 仍带着默认 snippet("acp_cache({})" + guidelines,Pi 宿主 cache-tool.ts:72-73)留在上下文里,与其他四个工具不一致。
  2. 什么原因导致的:加新 ACP 工具时缺机械约束——没有测试钉住"lean toolExtras 必须覆盖 ACP_TOOL_NAMES 全集",纯靠人肉记得更新,于是漂移。
  3. 怎么修复的:补数据——adapters.pi.toolExtras 补第五个条目,精确覆盖 src/compress-tools.ts:588 的五个标准 ACP 工具(absorb/acp_retrieve 是 opt-in、不在 ACP_TOOL_NAMES 内,正确不覆盖)。纯数据改动;kernel 自身不读取该字段(opaque adapter data,全仓 grep 确认仅 packs.ts 定义处出现),对 kernel 功能零影响。
  4. 是否有回归问题:kernel 内部既有行为逐项过——wire 格式、message-id/ref、pipeline 节点序、nudge 不变量、受保护工具过滤、四条 load-bearing prompts rules:均不涉及,无破坏。宿主侧有一处有意行为变更(按规范披露):Pi 宿主使用 lean pack 时,acp_cache 从"保留默认 snippet+guidelines"→"与其余四工具一致被剥离",上下文略变小,与 pack 文档声明的意图("no snippet/guideline chrome")一致。此条需写进 PR body(见下方待办)。
  5. 是否破坏缓存:否。kernel 级缓存机制(content store 去重键、tokenSnapshot 快照语义)不受影响;宿主侧仅是 lean pack 激活时工具描述文本变化,属正常 surface 切换。
  6. 是否改了设计方向:否,只是补齐既有 lean-pack 契约,无架构/数据流转向。
  7. 是否引入了新的配置:无新 env/config/默认值。

跨仓注意(重要):已验证消费端——billion-context-pi src/prompt-pack.ts:95 的 ACP_TOOLS 白名单仍是旧四工具版,piAdapterSurface()(:122)会把新增的 acp_cache 条目静默丢弃;而同仓 surface.ts:15/21 的 AcpToolName/TOOL_NAMES 已含 acp_cache,两处名单不一致。因此端到端生效需要 adapter 侧同步补白名单。已在 billion-context-pi 立配套 issue:#588(含来源标记与建议修法)。时序按 kernel-first 约定:本 PR 合入并发布后,adapter 再升级依赖+改名单。

合并前待办(author):

  1. 分支重命名为 YYYY-MM-DD_short-title 并 force-push 自己的 fork 分支(pr-validation 才能转绿);
  2. 补 PR body:说明行为变更(old→new,可直接引用上面第 4 问);
  3. 建议补一条不变量回归测试,防同类遗漏复发(新工具再加时自动报警):
test("lean toolExtras strips snippet/guidelines for every standard ACP tool (#488)", () => {
  const pi = leanPack.surface.adapters?.["pi"] as
    | { toolExtras?: Record<string, { promptSnippet?: string; promptGuidelines?: string[] }> }
    | undefined;
  const extras = pi?.toolExtras ?? {};
  for (const name of ACP_TOOL_NAMES) {
    assert.ok(name in extras, `lean toolExtras missing ${name}`);
    assert.equal(extras[name]?.promptSnippet, "");
    assert.deepEqual(extras[name]?.promptGuidelines, []);
  }
});

(需 import { ACP_TOOL_NAMES } from "../src/compress-tools.js";)

判定:代码本身最小、正确、无回归,diff 干净;按 §7.4 门禁走人工合并(缺回归测试与 issue 引用,且分支命名不过 CI)。分支改名 + body 补齐后即可由人合并。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants