oh-my-pi snapcompact 评测中的 qa-remote-compact 提示词:验证 OpenAI 远程上下文压缩后的问答保留率 人工智能AI Agent代码智能体工具调用CLIMCP Clients【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in. Built by Stencil Labs.项目地址https://gitcode.com/GitHub_Trending/oh/oh-my-pi点击查看免费下载本篇技术指南聚焦oh-my-pi仓库packages/snapcompact/research评测管线中的一个关键提示词文件qa-remote-compact.md它服务于OpenAI 远程上下文压缩/responses/compact条件下的问答评测用于度量会话窗口被 API 侧压缩后模型还能保留并回答出多少原文信息。读完本文你将掌握该提示词的设计语义、它在 final.py 评测网格中的装配方式、底层/responses/compact客户端实现、SQuAD EM/F1 评分与成本核算逻辑以及如何亲自运行这一评测条件。一、提示词为什么存在上下文压缩与信息保留率评测oh-my-pi/snapcompact见 README的核心主张是位图帧上下文压缩把被丢弃的对话历史序列化、归一化后渲染成像素字体的密集 PNG 帧让视觉模型直接读图恢复信息全程本地、确定性、无额外 LLM 调用。但这并不等于它拒绝承认其他压缩路线的价值——恰恰相反research/目录里放着一整套压缩策略对比评测把多种路线放在同一个语料上比召回。评测基准是 SQuAD v1.1 dev 集约 1.5M 字符的段落流见 run.py 的模块说明评分采用官方 EM/F1。final.py 的模块说明给出了完整的条件网格text纯文本分块直接问答召回上限 ceilinghandoffAgent handoff 文档基于文档问答compactAnthropic 用compaction-summary提示词做本地压缩OpenAI 用远程/responses/compact压缩窗口img-{6x10,5x8}-{sent,bw}每个分块渲染一张 1568×1568 PNG视觉问答其中 OpenAI 一侧的compact条件就是在 qa-remote-compact.md 的指导下完成的。它回答的核心问题是当对话窗口真的被远端 API 压缩之后多少原文信息活了下来二、qa-remote-compact.md 逐行解读文件全文只有 7 行是一个典型的会话内记忆探针提示词模板Earlier in this conversation you were given a set of reference passages to keep in mind. The conversation context may have been compacted since. Answer the questions below using ONLY what you retained from those passages. - Give short extractive answers: a word or phrase from the passages. - If the information did not survive in your context, reply exactly UNREADABLE for that question. - Output a numbered list, one answer per line, no commentary. {questions}可以拆出四条核心设计约束场景锚定第一句把模型拉回到会话早期——它曾被给过一批参考段落而现在上下文可能已被压缩。这是对真实 Agent 使用场景长会话被 compact 后继续干活的忠实模拟。只用保留记忆作答using ONLY what you retained from those passages禁止模型重新翻原文或脑补这保证了测到的是压缩后真正保留下来的信息。抽取式短答案 UNREADABLE 弃权协议要求从段落中抽取一个词或短语extractive answers一旦信息在上下文中没活下来必须原样输出UNREADABLE。这个哨兵值贯穿整个评测家族squad.py 的评分环节会专门统计它见第五节。编号列表输出答案按行编号、与输入问题一一对应且不附加任何评论让后续的机械化解析parse_numbered零成本对齐问题序号。对比同目录下的 qa-text.md把参考材料直接内联进提示词再提问和 qa-image.md把材料渲染成位图再读图回答qa-remote-compact的独特之处在于参考材料不随提示词发送——它只存在于模型的压缩后的记忆里。这正是远程压缩与本地压缩两条路线的本质区别本地压缩Anthropic 分支先让模型把文本总结成摘要再基于摘要问答远程压缩则把整个会话窗口交给 OpenAI 服务端压缩评测只看残留记忆。三、在评测管线中的装配位置final.py 的 remote-compact 条件qa-remote-compact.md只在 final.py 的compact分支中被加载且前面有is_openai(model)门槛——该条件仅对 OpenAI 系模型生效elif cond compact and is_openai(model): comp cached( model, remote-compact, {chunk: chunk_text}, lambda: dict(zip( (items, usage), openai_compact(keys[openai], model, session_frame(chunk_text)), )), args.fresh, ) usage_rows.append((compact, comp[usage])) extra_items comp[items] messages [{ role: user, content: [{ text: load_prompt(qa-remote-compact.md).format(questionsq_block) }], }]整个链路分四步会话铺垫session_frame(chunk_text)run.py先发一条session-frame.md模板消息Here is a set of reference passages I need you to keep in mind…再配上固定的助手应答Noted. I have read the passages and will keep them in mind.——这复刻了真实 Agent 的先读材料、再干活开场。远程压缩把这对 user/assistant 消息交给openai_compact()由 OpenAI 服务端执行/responses/compact返回压缩后的 output items。记忆回放压缩产物作为extra_items透传进后续问答调用extra_input_itemsextra_items在 providers.py 的llm_complete中这些 items 会被前置拼接到新的输入里——也就是把压缩后的会话窗口重放到请求开头紧接着才出现qa-remote-compact提示词和编号问题。提示词收尾{questions}被替换成q_block——\n.join(f{i 1}. {q[q]} ...)这种编号问题串见run_cell_chunk与提示词要求的编号列表输出严格配对。注意cached(model, remote-compact, ...)意味着每次压缩请求本身也被磁盘缓存按 payload 哈希中断或改范围的运行只会新产生未命中的单元格账单。四、providers.py 中的 /responses/compact 客户端实现远程压缩的底层实现位于 providers.pydef openai_compact(api_key, model, messages): POST /responses/compact: returns (compacted output items, usage). body { model: model, input: [ {role: m[role], content: _openai_content(m[content], m[role])} for m in messages ], } out _post(f{OPENAI_URL}/compact, body, {authorization: fBearer {api_key}}) return out.get(output, []), _openai_usage(out)几个值得注意的实现事实端点拼在OPENAI_URL https://api.openai.com/v1/responses之后即/v1/responses/compact。消息统一经_openai_content转换文本块按角色写成input_text/output_text图片块写成input_image并带detail: original。由于 remote-compact 分支只用session_frame的纯文本消息这里实际只有文本。返回的out[output]是压缩后的 output items直接作为后续问答请求的压缩窗口回放。用量通过_openai_usage归一化cache_r取自input_tokens_details.cached_tokenscache_w记为 0OpenAI 侧自动缓存reasoning取reasoning_tokens。在 final.py 的定价注释中缓存读按输入单价的 0.1 倍计、Anthropic 缓存写按 1.25 倍计extra_input_items也被 providers.py 明确标注为OpenAI-onlyOpenRouter 与 Anthropic 分支若收到它会直接抛ValueError。五、回答如何被评分编号解析、EM/F1 与 UNREADABLE 弃权统计压缩后模型输出的编号列表由 squad.py 的parse_numbered解析逐行匹配^\s*(\d)[.):]\s*(.*\S)?\s*$按序号回填答案缺失项补空串。随后按 SQuAD 官方口径评分exact_match归一化小写、去标点、去 a/an/the后与任一 gold 答案逐字符相等f1取所有 gold 答案中 token 级 F1 的最大值abstained只要答案小写化后包含unreadable子串就记为弃权。在 final.py 的run_cell_chunk里每条记录会写入records.jsonl字段包括model、length、cond、chunk、pos_rel问题所在段落相对分块的位置0..1用于位置分带分析、q、answer、golds、em、f1、abstained并把各阶段 token 用量挂到首条记录上。也就是说UNREADABLE 弃权率是评估压缩损失的第一手指标——弃权越多说明远程压缩丢得越多而 EM/F1 则衡量侥幸活下来的信息能否被准确回忆。六、成本核算与响应缓存评测不只是比召回还比每召回一分花多少钱。final.py 的aggregate汇总所有阶段的in / out / cache_w / cache_r / reasoningtoken并按如下公式折算美元cost_in (tok_in 1.25 * cache_w 0.1 * cache_r) / 1e6 * price_in cost_out tok_out / 1e6 * price_outremote-compact 条件会被计入两个阶段的用量compact压缩调用本身与qa问答调用因此它的成本天然包含压缩一次 问答一次的完整链路。模型单价表集中在 final.py 的MODELS字典claude-fable-5、claude-opus-4-8、gpt-5.5、gpt-5.4-nano等编辑价格后--report会按缓存重算。缓存方面cached()以sha8(model, tag, payload)生成磁盘键见 final.py且截断/空输出绝不写入缓存stop max_tokens或text 时只告警不落盘保证重跑时能用更大预算修复截断响应。这也意味着 remote-compact 的压缩产物一旦缓存命中重复--report不需要再调一次/responses/compact。七、与提示词家族其它成员的对照一次记忆探针的设计权衡research/prompts/下围绕同一评测语料发育出一组提示词彼此构成清晰的对照提示词载体核心指令测量目标session-frame.md纯文本keep these passages in mind, Ill ask later铺垫先读后问的会话状态qa-text.md纯文本内联参考仅依据参考作答、抽取式、UNREADABLE文本直读的召回上限qa-image.md位图 PNG仅依据图中文字作答、UNREADABLE位图帧的信息可读性qa-remote-compact.md无参考仅残留记忆仅依据压缩后保留的内容作答、UNREADABLEOpenAI 远程压缩的保留率exp13-extract.md纯文本抽取式摘要逐字摘录负载句子硬字符预算抽取式压缩基线对照 exp13_extractive.py 的说明可以发现一个有意思的动机现有compact/handoff基线要求的是叙述性摘要这对抽取式问答是敌意的exp13 改用逐字摘录并配gold_survivalgold 答案字面存活率作为方法召回上限。qa-remote-compact则站在另一极完全不生成可见摘要直接检验 API 内置压缩窗口的记忆残留。三者在压缩产物是否可见/可控上的取向各不相同共同服务于同一个评测目标——搞清楚不同压缩路线到底损失了什么。八、如何运行该评测条件final.py是一行命令跑完整网格的入口remote-compact 条件是compact在 OpenAI 模型上的展开。常用命令# 默认网格全部模型 × 长度 50/150/250 × 全部条件 uv run final.py # 只看 OpenAI 远程压缩条件的快速验证50 段语料 uv run final.py --models gpt-5.5 --lengths 50 --conditions compact # 只重打印缓存结果不发任何 API 请求 uv run final.py --report关键参数见 final.py 的参数定义--models逗号分隔的模型列表必须是MODELS中已登记含单价的键--lengths段落数默认50,150,250对应约 30k/102k/170k 字符的语料规模--conditions条件列表compact即触发 OpenAI 远程压缩分支对 Anthropic 模型则走compaction-summary本地压缩--qpc每个分块采样的问题数默认 30按种子均匀铺开记录pos_rel便于位置分析--seed采样种子默认 42--size图像条件的分块渲染尺寸默认 1568纯文本/压缩条件不受影响--workers并发线程数默认 6--max-tokens问答输出预算默认 16384--effort推理努力级别None表示走提供商默认--fresh忽略磁盘缓存强制重调 API--report只按缓存重打印结果矩阵不产生 API 调用--env密钥文件路径默认~/.envANTHROPIC_API_KEY与OPENAI_API_KEY均从此读取last assignment wins见 providers.py。输出落在results/final/下records.jsonl逐问题记录、matrix.csv每 模型×长度×条件 一个单元格的聚合、summary.json。运行前的语料SQuAD dev-v1.1.json首次会下载缓存到.cache/见 squad.py。九、适用前提与限制条件分支强绑定 OpenAI 系is_openai()判定gpt-、o3、o4、codex前缀providers.py。走 OpenRouter 路由的模型含/不适用 remote-compact且extra_input_items仅 OpenAI 支持。结果数据是运行时产物results/目录由评测脚本生成仓库内不预置结论性数据本文不引用任何未经运行验证的指标。这是研究评测工具而非产品提示词qa-remote-compact.md服务于压缩保留率测量这一研究目标其UNREADABLE协议与编号格式是给机械化评分设计的与omp生产环境的压缩提示词如 packages/agent/src/compaction/prompts 下的compaction-summary.md、anthropic-compaction-instructions.md职责不同使用时需区分场景。十、小结qa-remote-compact.md虽只有 7 行却是oh-my-pisnapcompact 评测网格中OpenAI 远程压缩这一格的支点它以session-frame铺垫、/responses/compact压缩、记忆回放重放、编号 UNREADABLE 输出、EM/F1 评分、缓存与计价收尾完整回答了上下文被 API 远程压掉之后信息还剩多少这一对长会话 Agent 至关重要的工程问题。配合 run.py 与 final.py 的网格框架你可以把任意 OpenAI 系模型放入该条件量化其压缩窗口的信息保留与单位成本。进一步可参考 docs/compaction.md 了解该评测在整体压缩架构中的位置。赞分享人工智能AI Agent代码智能体工具调用CLIMCP Clients【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in. Built by Stencil Labs.项目地址https://gitcode.com/GitHub_Trending/oh/oh-my-pi点击查看免费下载相关推荐electerm 终端 SSH SFTP 客户端快速上手30 秒连上服务器electerm 终端 SSH SFTP 客户端快速上手30 秒连上服务器 周五晚上要从一台没见过的服务器拉日志你打开 electerm——粘个地址连上再桌面应用开发工具网络剑指 Offer 75 题刷题指南LeetCode-Book 的「算法 × 数据结构」双维分类与三语代码闭环剑指 Offer 75 题刷题指南LeetCode Book 的「算法 × 数据结构」双维分类与三语代码闭环 LeetCode Book 的 sword_fo示例工程用 OpenCore Legacy Patcher 让老 Mac 重返 macOS 15从自检到验收的完整升级指南用 OpenCore Legacy Patcher 让老 Mac 重返 macOS 15从自检到验收的完整升级指南 停在 macOS 10.14 的 MacB操作系统固件驱动开发上一篇如何快速提取 Wallpaper Engine PKG 包并批量转换 TEX 纹理RePKG 实战指南下一篇按一次空格看完 Word、Excel、PPTOffice文件快速预览完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考