oh-my-pi snapcompact 压缩研究:eager 缩放协议提示词(exp08-archive-eager)的设计、解析与两阶段执行

发布时间:2026/9/12 17:16:04
oh-my-pi snapcompact 压缩研究:eager 缩放协议提示词(exp08-archive-eager)的设计、解析与两阶段执行 oh-my-pi snapcompact 压缩研究eager 缩放协议提示词exp08-archive-eager的设计、解析与两阶段执行【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi本篇技术指南围绕 oh-my-pi 仓库中 snapcompact 包研究目录下的提示词模板 exp08-archive-eager.md 展开剖析它在foveated 两阶段读取实验exp08中的角色、逐条指令的设计意图以及它与实验代码 exp08_foveate.py 如何通过ZOOM rows A-B协议完成先粗读、再定点放大的两轮问答闭环。读完本文你将掌握这套面向视觉 LLM 的位图文本读取提示词协议的结构、eager/conservative/phrase 三种策略的差异以及如何把放大请求解析、行带合并、重渲染回注对话等机制落地为可复现的实验流程。一、背景为什么需要 foveated 两阶段读取snapcompact 是 oh-my-pi 的位图帧上下文压缩包见 README.md与其让 LLM 总结被丢弃的会话历史它把文本序列化后渲染成密集的像素字体 PNG 帧让视觉模型直接读回。渲染与 PNG 编码全部在本机原生代码oh-my-pi/pi-natives中完成不调用 LLM、无 API 延迟。在此基础上研究目录packages/snapcompact/research开展了一系列如何让视觉模型更可靠地读取位图的消融实验。其中 exp08 的思路是foveated中央凹式两级读取第一轮用比常规更密的像素字体渲染整页归档图让模型能答就答、不能答就申请放大第二轮只把被请求的行带切片重新渲染成大字号图继续问答。为什么要把第一轮压得更密exp08_foveate.py 的模块 docstring 给出了关键数字采用 5x8 像素字体时1568px 方形帧可容纳313 列 × 196 行 61348 字符/页比此前 6x10 字体的最优方案img-6x10-sent基线密度高出约 1.5 倍。密度提升的直接收益是单页能装进更多被压缩的会话文本代价则是字迹更小、更容易误读——这正是放大协议要补偿的部分。二、eager 提示词全文结构与逐条解析exp08-archive-eager.md 全文只有 10 行是一个带模板占位符的系统提示词按功能可拆成四个层次2.1 图像格式声明模板参数注入The attached image contains encyclopedia passages rendered as a bitmap: monospace pixel font, {cols} characters per row, {rows} rows, read left-to-right then top-to-bottom. Rows are numbered 1 (top) to {rows} (bottom). Original paragraph breaks were collapsed to spaces.这一句为模型建立了图像 字符网格的坐标系等宽像素字体、每行{cols}字符、共{rows}行、按从左到右、从上到下的顺序阅读行号自上而下编号。{cols}与{rows}不是写死的——在 run_cell_chunk 中通过load_prompt(prompt_file).format(colscols, rowsrows)由实验代码动态填充cols/rows来自 bdf.py 的 capacity()rows size // pitch // repeat、cols (size - (columns-1)*gutter) // columns // adv。行坐标系与后续的行带寻址ZOOM rows A-B一一对应是整套协议的地基。Original paragraph breaks were collapsed to spaces.提示词还主动告知模型原文换行已被折叠成空格防止模型因为预期中段落应该换行而错位理解网格内容。2.2 怀疑论指令eager 变体的核心IMPORTANT: this font is rendered BELOW the size you can read reliably. Characters that look legible are often misread (digits, names, and dates especially). Be skeptical of your own reading.这是全文最重要的一句话它明确告诉模型——当前字体尺寸低于可靠阅读阈值看似清晰的字符也可能读错尤其是数字、专有名词与日期请对自己的阅读结果保持怀疑。这条自我怀疑指令的作用是引导模型不要把不确定的读取当作确定答案输出而是主动触发放大机制。对比保守版 exp08-archive.md后者只说字体刻意很小多数内容努力可读但某些区域可能读不出而 eager 变体把风险语气加重为几乎必然误读、务必怀疑两者在触发放大的阈值上形成了鲜明的策略差异详见第四节。2.3 三档回答协议Questions follow after the image. Answer them using ONLY text you can read in the image.Give a direct short extractive answer ONLY when you are fully certain of every character in it.For any question where you are not fully certain — wrong-looking digits, a name you might be misreading, a region that is small or smudged — reply exactlyZOOM rows A-Bfor that question (e.g.ZOOM rows 41-47). That row band will be re-rendered for you at a large, comfortable font. Zooming is cheap and encouraged; guessing is penalized.Estimate the row range from the vertical position of the region (row 1 top edge, row {rows} bottom edge). If unsure of the exact rows, give a generous range — a margin around your estimate is included automatically.If you cannot even locate a relevant region, reply exactly UNREADABLE for that question.这一节把每个问题的作答空间收窄为三档且给出了严格的触发条件直接抽取式回答extractive answer仅在对每一个字符都完全确信时输出fully certain of every character。措辞刻意收紧——不是大致看得清而是逐字符确信把模糊读取排除在直接回答之外。放大请求ZOOM rows A-B只要存在任何不确定——疑似读错的数字、可能误读的名字、区域太小或模糊——都必须回复精确格式ZOOM rows A-B如ZOOM rows 41-47。行号按图像垂直位置估算顶边为第 1 行并鼓励给出宽松区间因为代码侧会自动包含余量pad。句末的 Zooming is cheap and encouraged; guessing is penalized 是对模型的激励约束放大成本低且被鼓励猜测会被惩罚——这解释了为什么该变体命名为eager急切放大。UNREADABLE连相关区域都无法定位时的最终兜底。Output a numbered list, one answer per line, no commentary.收尾要求严格的机器可解析输出格式每个问题一行、按问题编号输出、无任何多余评论。这一约定直接对接实验代码的squad.parse_numbered()见 squad.py后者按\d[.):]正则把回答逐行还原为编号数组缺失项补空字符串。三、三种读取策略的对比conservative / eager / phraseexp08_foveate.py 中 PROTO 表把三种协议条件与提示词文件、放大余量pad、寻址方式绑定在一起条件提示词文件pad寻址方式策略语义源码注释原文fovexp08-archive.md2rowsconservative仅在过小时放大行寻址紧余量fov2eagerexp08-archive-eager.md12rowseager除非完全确信否则放大行寻址宽余量fov3exp08-archive-phrase.md12phraseeager 提示 短语寻址模型引用部分辨认出的锚词harness 在 chunk 中模糊定位该行带三点关键差异放大触发阈值conservative 要求区域太小才放大eager 则反过来要求除非完全确信否则放大。二者是同一坐标系下两个极端conservative 省放大轮次但可能硬答错eager 更频繁申请放大但把误读风险转移给放大轮。pad 余量eager/phrase 的pad12行远大于 conservative 的pad2行与提示词中give a generous range的指引呼应——宽余量保证行带切片一定能覆盖目标内容。寻址方式rows 模式让模型直接给出行号区间phrase 模式则让模型引用 3-8 个单词的锚短语见 exp08-archive-phrase.md由 harness 用 locate_phrase() 在 chunk 文本中做大小写归一化后的模糊匹配再把字符跨度换算成行号。四、从ZOOM rows A-B到重渲染harness 的执行闭环eager 提示词只是输入侧的一半另一半在实验代码中。一次完整的两轮执行流程如下对应 run_cell_chunk第一轮归档图问答从 SQuAD 式段落流flow由 squad.build_flow 生成、按 chunk 预算切分中采样问题后把整段 chunk 用 5x8 字体渲染成一张归档 PNGfexp08-arch-{ARCHIVE_FONT}-{variant}-{sha8(...)}.png带内容哈希缓存与原子写入。消息序列为提示词模板已填充 cols/rows 归档图 编号问题列表。模型第一轮回答进入qa1。ZOOM 请求解析对每条回答rows 模式走 parse_zoom()用两个正则解析_ZOOM_RANGE re.compile(r(?i)\bzoom\b[^\d]*(\d)\s*(?:[-\u2013\u2014]|to\b)\s*(\d)) _ZOOM_SINGLE re.compile(r(?i)\bzoom\b[^\d]*(\d))支持ZOOM rows A-B区间与单行两种形式AB时会自动交换保证AB若模型声称 ZOOM 却无法解析出行带该题被置为UNREADABLE。行带合并与切片所有待放大行带经 merge_bands() 处理——先按padeager 为 12向外扩、再裁剪到[1, max_row]相邻或重叠的带合并成一个避免重复渲染。随后 zoom_renders() 按行 r 覆盖字符[(r-1)*cols, r*cols)的映射从 chunk 文本中切出对应切片用 8x13 大字号字体重渲染并从ZOOM_SIZES (520, 784, 1040, 1568)中挑选能容纳该切片的最小方形尺寸超长行带会被拆分到多页。第二轮放大图问答消息流扩展为messages [assistant(qa1), user(exp08-zoom 提示 带标签的放大图 待答问题列表)]。放大轮的提示词由 exp08-zoom.md 提供——它先声明以下是您请求的行带的高分辨率重渲染文本与原文一致只是按新行宽重排再要求模型结合放大图与已读内容、沿用原编号继续作答读不出就回UNREADABLE。合并打分第二轮的answers2覆盖第一轮中所有触发 ZOOM 的问题final[i] answers2[i] or UNREADABLE随后逐条计算 exact match 与 F1见 squad.py 的exact_match/f1并记录zoomed、zoom_band、anchor、abstained等元数据。五、成本核算eager 策略的度量方式放大轮不是免费的实验代码用 aggregate() 与 _phase_cost() 把两轮 usage 合并核算token 汇总in/out/cache_w写入缓存/cache_r读取缓存/reasoning分桶累计qa1与qa2两阶段分开记录usage_rows。定价公式输入按(in 1.25*cache_w 0.1*cache_r) / 1e6 * price_in输出按out / 1e6 * price_out——缓存写入按 1.25 倍、缓存读取按 0.1 倍折算这是按主流 provider 的缓存计费结构建模的。关键派生指标zoom_q触发放大的题数、zoom_rate放大率、no_zoom_pct无需放大即回答的比例、cost_zoom_usd纯放大轮的增量成本用于回答eager 的宽余量放大到底多花多少钱、换来多少 F1。基线对照代码 BASELINE 中记录了img-6x10-sent基线的 f1/标准误/成本例如gpt-5.550 为(0.850, 0.0508, 0.068)输出汇总时给出d_f1与d_cost_usd差值。注意这是实验设计中的对照常量最终三条件的对比结论需要以records.jsonl/summary.json实际运行结果为准。实验入口main()exp08_foveate.py通过命令行参数--models、--lengths、--conditions、--qpc、--size、--workers等配置网格最终把逐题记录写入records.jsonl、聚合结果写入summary.json与matrix.csv。运行方式为从 snapcompact 目录执行uv run exp08_foveate.pydocstring 首行注明。六、结论eager 协议的设计要点exp08-archive-eager.md 虽短却是 foveated 两阶段读取链路中承上启下的关键一环其设计可以提炼为三条可复用原则给模型一个可靠的放弃通道ZOOM rows A-BUNREADABLE双兜底 guessing is penalized的激励把误读风险从模型硬猜转移到harness 定点重渲染这一确定性更高的路径上。用行号坐标系让放大可执行图像被声明为{cols}×{rows}字符网格模型只需估算垂直位置代码即可按[(r-1)*cols, r*cols)精确切片无需模型给出字符级定位。策略参数全部显式化放大阈值eager vs conservative、余量 pad2 vs 12、寻址方式rows vs phrase都被提炼为可配置的 PROTO 参数从而能在一个网格里公平对比不同策略的 F1 与成本曲线。该提示词是 packages/snapcompact/research 实验矩阵的一份子它与 exp08-archive.md、exp08-archive-phrase.md、exp08-zoom.md 共同构成完整的放大协议族研究结论反过来服务于 snapcompact 生产包的形状选择与压缩管线README.md架构总览见 docs/compaction.md。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询