浏览器快照 15,000 字符不够用?Hermes 把额度做成了可调配置,还顺手砍掉了摘要的隐形开销

你让 Hermes 去读一个在线文档页面,页面很长,结果它只看到了开头一小段——剩下的内容因为超出快照额度被截断了。又或者反过来:页面不大,但 Hermes 背后悄悄调了一次“摘要模型”把页面压缩给你看,token 账单上多了一笔你没注意的开销。8 月 25 日合并的两个 PR 把这两件事一起解决了:PR #94453 把浏览器快照的字符额度做成了可配置项,PR #94401 则让快照彻底告别“调用辅助 LLM 生成摘要”的旧路径。
先搞懂:浏览器快照是什么、额度有什么用
Hermes 让浏览器“看”网页时,并不是把整张网页图片塞给模型——那样又贵又慢。它会把页面的可访问性树(accessibility tree,页面结构的一种标准化描述)转成文本快照,交给模型理解。快照越大,模型能看到的页面内容越多,但占用的上下文(token)也越多。所以 Hermes 给快照设了一个字符预算:超过预算的部分截断。
以前这个预算是个写死的常量(15000 字符),用户改不了。PR #94453 把它变成了配置项 browser.snapshot_threshold:
# 查看当前值
hermes config get browser.snapshot_threshold
# 改大:长文档页面想保留更多正文
hermes config set browser.snapshot_threshold 30000
# 改小:想省上下文空间
hermes config set browser.snapshot_threshold 8000
默认值仍是 15000,最小值 1000。配置写在 config.yaml 的 browser 段下:
browser:
snapshot_threshold: 30000
填了非法值(比如 0 或负数)会自动回退到默认值,不会崩。浏览器插件 Camofox 的快照路径也走同一个配置。
更重要的变化:快照不再“付费”给摘要模型
PR #94401 修的是一个隐蔽的浪费。以前网页快照超过预算时,Hermes 会借用一个叫 auxiliary.web_extract 的辅助模型槽位(就是你在 hermes model 里看到的一个“Web extract”选项)来生成摘要——也就是说,每次抓大页面都可能触发一次额外的 LLM 调用,而界面上那个选项还叫“Web extract”,看起来像网页抓取功能,实际上它只服务浏览器快照摘要,且摘要后原文照样被截断。
改动后,快照策略统一为截断并存储(truncate-and-store):超预算的部分按行边界截断,完整快照存到本地缓存,模型需要看完整内容时,通过 read_file 分页读取——跟网页抓取工具 web_extract 已经采用的模式一致。结果是:
- 零额外 LLM 调用:截断是确定性的文本操作,不花 token;
- 信息不丢:完整快照在磁盘上,随时能翻页读;
- 死槽位消失:
auxiliary.web_extract从hermes model的辅助任务列表、桌面端设置等所有界面移除。
如果你以前在 config.yaml 里配过 auxiliary.web_extract,不用管它——旧值会被安全忽略。
这对你的实际影响
| 场景 | 以前 | 现在 |
|---|---|---|
| 页面超过快照预算 | 调用一次辅助 LLM 生成摘要(费 token) | 确定性截断,完整快照存盘可翻页读 |
| 长文档页想多看正文 | 改不了,写死 15000 | browser.snapshot_threshold 随意调 |
hermes model 辅助任务 |
有个名字误导的 web_extract 槽 | 已移除,界面更干净 |
小结
两个改动一增一减:增的是配置自由度(browser.snapshot_threshold,默认 15000、最小 1000),减的是隐形开销(快照摘要不再调用 LLM)。浏览器工具的整体玩法没变,但长页面读取更可控、账单更清爽。想了解 Hermes 浏览器工具的全貌,可以看 浏览器后端默认化指南 和 桌面端阅读预览;关于省 token 的其他技巧,四个隐藏技巧合集 里有不少。配置相关的操作,hermes config 命令参考 讲得最全。