Skip to content

feat(compress): opt-in wire-level strip of historical image payloads (closes #321) - #324

Open
ranxianglei wants to merge 2 commits into
masterfrom
2026-09-07_issue321-strip-historical-images
Open

feat(compress): opt-in wire-level strip of historical image payloads (closes #321)#324
ranxianglei wants to merge 2 commits into
masterfrom
2026-09-07_issue321-strip-historical-images

Conversation

@ranxianglei

@ranxianglei ranxianglei commented Sep 7, 2026

Copy link
Copy Markdown
Owner

概要

接入 acp-kernel 0.0.58 的 stripHistoricalImages(kernel #215,源自 billion-context#617):图像字节随每个上游请求逐字重发——codec 把图像移出 CoreMessage.text 到边车,压缩折叠了文本也照样转发原图。开启后历史图像载荷在上游请求体中被剥离。

设计(对齐 billion-context 宿主侧约定)

  • compress.stripImages(默认)+ compress.stripImagesKeepRecent(默认 5),global/provider/model 三级最深优先合并
  • 挂 pi 的 before_provider_request 钩子(pi-ai 在 HTTP 前以已解析的请求体对象触发 onPayload,返回非 undefined 即整体替换 payload)——与 billion-context 代理同一 wire 点;纯函数改写原始 body
  • 协议映射:anthropic-messages → anthropic;openai-completions → openai;openai-responses / azure-openai-responses / openai-codex-responses → responses;未知协议一律返回不动(绝不误伤)
  • 纯图像消息折叠 "[image]" 文本占位符,消息数/角色序稳定;无事可剥返回原引用(零重序列化)
  • bili 代理让位(runtime.refused / baseUrl 检测)时跳过——代理拥有 wire,扩展不碰
  • 依赖:acp-kernel 0.0.56 → 0.0.58(同 PR 内 bump;已发布,npm ci 按 lockfile 安装验证通过)

注意事项(文档已注明)

测试(对已发布的 acp-kernel 0.0.58,npm ci 按 lockfile 安装)

  • tsc --noEmit
  • tests/strip-images.test.ts 8 例:协议映射矩阵 / 禁用与未知协议 no-op / anthropic 剥离+近期保留 / openai image_url + responses input_image 占位折叠 / 三级配置合并 / e2e(开启剥离、默认关不动、代理 baseUrl 让位)
  • 全套件 634 tests / 631 pass / 0 fail / 3 skipped;tsup 构建 ✅(acp-kernel/wire 子路径已内联进 dist,零运行时依赖不变)
  • CONFIGURATION.md + zh-CN + CHANGELOG 已更新

分支说明(ework-daemon 复核后 force-push)

原分支 base 停在 #323(issue #322 in-memory state 修复)合入之前,直接开 PR 会回退 #322 的修复(state.ts cache 更新 + 两个测试文件约 90 行)。已将 feature 提交与 pin-bump 提交原样 cherry-pick 到当前 master(f2c5924)之上并 force-push 本分支(pin-bump 提交信息里的旧版本号笔误 0.0.57 已更正为实际值 0.0.56);上述验证均在重基后的分支上完成。

Fixes #321

关联:billion-context#617billion-context#618acp-kernel#215acp-kernel#218

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

📦 Built Extension Artifact

Branch: 2026-09-07_issue321-strip-historical-images (decb5d0)

Option A — Install from npm PR tag (recommended)

pi install npm:billion-context-pi@pr-324

Each push to this PR publishes a new version under the pr-324 npm tag.

Option B — Download artifact

  1. Download the artifact from the Actions run
  2. Extract the tarball and install:
tar xzf billion-context-pi-pr324.tgz
pi install ./package

This comment is automatically updated on each push.

pi-agent added 2 commits September 7, 2026 22:37
…loses #321)

compress.stripImages (default off) + compress.stripImagesKeepRecent
(default 5), three-level deepest-wins merge. Hooks pi's
before_provider_request (post-serialization, pre-HTTP) and calls
acp-kernel stripHistoricalImages (>= 0.0.58). Protocol mapping:
anthropic-messages / openai-completions / openai-responses (+azure/codex);
unknown APIs untouched; stands down under the bili proxy; identity ref
when nothing to strip.
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.

Adopt acp-kernel stripHistoricalImages for historical image payloads (opt-in)

1 participant