把文字塞进图片里,Claude Code 的账单直接砍七成:pxpipe 上手指南

Anthropic 的图片定价有个”漏洞”:一张图片的 token 费用只看像素尺寸,不管里面塞了多少字。pxpipe 正是利用这一点,把你的系统提示词、工具文档、旧聊天记录这些冗长的文字全部渲染成 PNG,塞进一张 1928×1928 的图片里。原来 25000 token 的系统提示,变成图片只要 2700 token。

这不是什么理论推演,是实打实的账单对比:Fable 5 一场完整会话,纯文本跑下来花了 $42.21,用 pxpipe 只花了 $4.51。13,709 个生产请求的平均节省是 59%,压缩请求的节省接近 70%。

听起来有点邪门?确实。但数据摆在那儿,而且工具已经开源了。本文就讲清楚它怎么用、省多少、哪里会翻车。


30 秒上手

两条命令就能跑起来:

Bash
npx pxpipe-proxy
ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude

第一条启动本地代理,监听 `127.0.0.1:47821`。第二条让 Claude Code 把请求发到这个代理而不是 Anthropic 官方 API。代理拦截请求,把大块文字渲染成图片,再把改写后的请求转发给上游。整个过程对你来说完全透明——你还是正常用 Claude Code,只是账单变低了。

启动后访问 `http://127.0.0.1:47821/` 可以看到 Dashboard:已节省的 token 数、每次转换的并排对比、紧急停止开关、实时模型状态。比盲跑安心不少。

如果你不想用代理模式,也可以当库调用:

Python
import { renderTextToImages, transformAnthropicMessages } from "pxpipe-proxy";

const { pages } = await renderTextToImages(toolResultText);
const { body, applied, info } = await transformAnthropicMessages({
  body: requestBytes,
  model: "claude-fable-5",
});

这种方式适合你自己搭工具链,不依赖代理转发。


为什么图片比文字便宜

Anthropic 的计费规则是这样的:文字按字符算,大约一个字符一个 token。图片按像素算——一张 1928×1928 的 PNG 大约消耗 4,761 token,不管图片里写了多少字。

pxpipe 用 5×8 的代码字体图集渲染文字,100 列软换行。一张图片能塞大约 92,000 个字符。如果这些字符当纯文本发,要消耗约 91,000 token。塞进图片里,只消耗约 4,761 token。压缩率接近 19 倍。

当然,实际流量里不是所有文字都这么密。Claude Code 的真实流量大约是 1.91 字符/token,所以实际节省达不到 19 倍,但 59-70% 是实测数据。


到底省了多少

先看官方数据:

数据来源请求数节省比例
生产快照13,70959%($100 → ~$41)
后续追踪8,904~70%
仅压缩请求72-74%

再看 Fable 5 的 A/B 对比:

指标纯文本pxpipe
费用$42.21$4.51
上下文使用96% 满73.5k/1M(有余量)
Token 精确计数(39个文件)10/1010/10

上下文利用率的变化也值得注意:纯文本模式已经把 1M 窗口塞到 96%,几乎撑满;pxpipe 只用了 73.5k,还有大量余量可以继续对话。这意味着不只是省钱,还可能让你在长任务里少撞上下文上限。

之前我们聊过 AI 编程助手的 token 省钱方案,那篇讲的是 Codebase Memory MCP 和 Headroom 两款工具。pxpipe 的思路完全不同——不是减少上下文内容,而是换一种更便宜的编码方式把同样多的内容塞进去。如果你的项目比较大、Claude Code 经常撞上下文墙,pxpipe 可能比删减上下文更管用。


它压缩了什么,没压缩什么

pxpipe 不会把所有文字都变成图片。它有选择性:

会被压缩的内容:

  • 大型 `tool_result`(文件读取、命令输出、日志)——超过约 6k 字符的密集内容
  • 旧的折叠历史——活跃尾部之后的对话轮次被重新渲染为图片页面
  • 静态系统提示 + 工具文档块

不会被压缩的内容:

  • 你最近发的消息和模型的最近回复
  • 模型的输出(代理从来不碰响应)
  • 稀疏的散文内容
  • 太小不值得压缩的内容
  • 不在白名单里的模型——完全透传,不做任何处理

这个设计逻辑很清楚:最新的、需要精确处理的对话保持文字,旧的、密集的、只当参考的上下文变成图片。既省钱又不影响当前对话质量。


支持哪些模型

默认启用两个模型:

Bash
PXPIPE_MODELS=claude-fable-5,gpt-5.6

Fable 5 是目前效果最好的——基准测试里 100% 准确率,图片阅读能力没有退化。GPT-5.6 也默认启用。

其他模型需要手动开启,因为效果有折扣:

模型状态说明
claude-fable-5✅ 默认启用图片阅读 100% 准确
gpt-5.6✅ 默认启用支持
claude-opus-4-8⚠️ 可选误读约 7% 的渲染内容
claude-opus-4-7⚠️ 可选同样误读约 7%
gpt-5.5⚠️ 可选图片上下文性能退化

如果你用的是 Opus 4.8 或 GPT-5.5,想开启 pxpipe,设环境变量:

Bash
PXPIPE_MODELS=claude-fable-5,gpt-5.6,claude-opus-4-8 claude

或者直接在 Dashboard 上通过模型芯片切换。

如果你想完全禁用图片渲染(比如跑一个特别需要精确性的子任务),设 `PXPIPE_MODELS=off`。

子代理还有个逃生舱:在 agent frontmatter 里写 `model: sonnet`,或者设环境变量 `CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-6`,这样子任务会用不压缩的文本模式跑。


基准测试:靠谱吗

开发者做了不少测试,结果相当有意思:

新颖随机数算术题(模型不可能背答案):

模型文本准确率图片准确率Token 节省
claude-fable-5100%100%-38%
claude-opus-4-8100%93%-38%

Fable 5 在图片模式下做数学题的准确率和纯文本完全一样。Opus 4.8 会误读约 7%。

SWE-bench(代码修复能力):

基准纯文本图片请求大小变化
SWE-bench Lite10/1010/10-65%
SWE-bench Pro15/1914/19-60%

Lite 完全没影响,Pro 略差一个(18/19 判决一致,分歧项复制后 3/3 解决)。

精确字符串回忆:

这里就有坑了。12 字符的 hex 字符串,Fable 5 能从图片里正确回忆 13/15,Opus 4.8 是 0/15。也就是说,如果你需要模型从上下文里精确回忆一个 SHA 哈希、一个 ID、一个密钥,图片模式可能出错——而且出错的方式不是报错,而是自信地给你一个看起来很像但不对的答案。

这其实是 pxpipe 最大的风险,下面单独说。


会翻车的地方

有损性:这是最关键的问题。

pxpipe 不是无损压缩。它把文字变成图片后,模型要通过视觉编码器”读”图片里的文字。这个过程中精确字符串会被搞错。哈希值、ID、数字、密钥这些东西,从图片里读回来可能有偏差。

而且错误方式是”静默虚构”——模型不会告诉你”我读不太清”,而是自信地给出一个看似合理但实际错误的答案。开发者自己在日常使用中碰到过一次:模型从图片化的聊天历史里回忆一个人名,给出了一个看起来对但实际不对的名字。

速度:

处理图片比读文字慢。模型要跑视觉编码器来理解图片内容,而不是直接读文本。对大型请求,PNG 编码本身也增加延迟。

语言支持:

ASCII 和 Latin-1 字符充分测试过了。CJK(中日韩)能用但偏保守——渲染效果不如英文那么密集。中文用户用 pxpipe 的压缩率可能达不到英文的 59-70%。

开发者已经做了一些缓解措施:精确标识符(SHA、数字)以文本形式附带;页面几何尺寸限制在 API 的重采样上限内;有可读性审计文档。但本质上,这个方案就是有损的。


什么时候该用,什么时候不该用

适合用的场景:

  • Claude Code 长会话,经常撞 1M 上下文上限——pxpipe 不只省钱,还帮你多塞内容
  • 大项目重构,需要喂大量文件给模型做参考
  • 你的工作流里模型主要看”大意”而不是精确字符(比如理解文档结构、找代码模式)
  • 用 Fable 5 作为主力模型(它读图片最准)

不适合用的场景:

  • 需要模型精确回忆 ID、哈希、密钥等短字符串
  • 跑 Opus 4.8 或 GPT-5.5 做精确操作(误读率太高)
  • 中文密集的工作流(压缩率打折)
  • 你对每一分钱都不在意(那就没必要折腾)

一个实用建议:把 pxpipe 当成”长对话省钱模式”。开始一个新任务时先用纯文本,确保最近几轮对话精确无误;当对话变长、上下文开始膨胀时,开启 pxpipe 让旧内容压缩。这样你既保证了当前对话质量,又避免了长会话的账单爆炸。

如果你用的是 Claude Sonnet 5,目前它不在 pxpipe 的默认白名单里。Sonnet 5 的图片阅读能力还没经过 pxpipe 的基准测试,建议先观望。


和其他省钱方案的关系

我们之前介绍过两款 token 省钱工具:Codebase Memory MCP 和 Headroom。它们的核心思路是”减少上下文内容”——删除不必要的代码、压缩 prompt、过滤无关文件。pxpipe 的思路是”换一种更便宜的编码方式”——同样的内容,用图片代替文字。

两种思路可以叠加:先用 Memory MCP / Headroom 减少内容总量,再用 pxpipe 把剩下的密集内容压缩成图片。理论上省钱效果能叠加到 80-85%。但这也让问题叠加了——删减内容可能丢信息,图片编码也有损,两层有损叠加,出错的概率更高。

还有个叫 Caveman Prompting 的思路,用”原始人式”极简沟通风格来减少 token 消耗,号称省 65%。这个方案零成本、零技术门槛,和 pxpipe 不冲突。想极致省钱的话:Caveman 减 prompt 长度 → Memory MCP 减无关内容 → pxpipe 压缩剩余内容。三层叠加,账单可能直接砍到原来的 10-20%。代价就是准确性——你需要自己判断省钱的边界在哪。


如果你还在犹豫

pxpipe 是个有意思的实验性工具。它证明了一个定价机制的”漏洞”可以被利用来大幅降低成本,而且数据相当扎实——Fable 5 下 100% 准确率、SWE-bench Lite 完全不受影响。

但”实验性”这个词不是随便说的。它是有损压缩,静默虚构的风险真实存在。开发者自己在 README 里写得很坦诚,基准测试数据也公开透明。这种诚实比很多商业产品强得多。

我的建议是:先在非关键任务上试跑几天。用 Dashboard 观察节省比例和转换效果,跑几次需要精确回忆的小测试(比如让模型从上下文里回忆一个 12 位 hex 字符串),看看实际误读率在你的场景下是多少。数据说服你了,再在正式项目里启用。

毕竟 $42 变 $4 这个数字,确实很难让人不动心。


项目地址github.com/teamchong/pxpipe(MIT 许可证,TypeScript,当前版本 v0.8.0)

相关阅读

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

推荐阅读

  • 别再手动复制报错了:Chrome DevTools MCP 让 AI 自己看浏览器,前端调试效率翻倍

    你还在把控制台报错一行行复制给 Claude?这个 Google 官方出的工具,让 AI 直接”看”到你的浏览器里发生了什么。 做前端开发的都经历过这种死循环: 代码写完 → …

  • 把文字塞进图片里,Claude Code 的账单直接砍七成:pxpipe 上手指南

    Anthropic 的图片定价有个”漏洞”:一张图片的 token 费用只看像素尺寸,不管里面塞了多少字。pxpipe 正是利用这一点,把你的系统提示词、工具文档、旧聊天记录这…

  • Gemini Spark 终于上了 Mac:Google 的桌面 AI 智能体,到底能干点啥?

    7 月 1 号,Google 悄悄把 Gemini Spark 搬上了 Mac。 说”悄悄”是因为没开发布会,只是在官方博客上更新了一篇文章。但这事儿其实不小——这是 Goog…

  • xAI 出了个”两分钟搭呼叫中心”的工具:Voice Agent Builder 上手全记录

    7 月 1 号晚上,xAI 放出了一个叫 Voice Agent Builder 的测试版。 我第一眼看到介绍的时候不太以为然——零代码搭语音 agent、$0.05/分钟、80+ 预设声音、内置 N…

暗夜独行