智能体吞食网页大法:Claude Code 800KB极致压缩,Token成本暴降内幕


Claude Code 并非直接吞下网页源码,而是通过 HTML 转 Markdown、小模型过滤、信任站点直通与短期缓存,把臃肿网页压缩成高价值上下文,在保证信息密度的同时极大降低 Token 消耗。

先说结论:Claude Code 并不是“抓网页就喂模型”

很多人以为所谓“联网代码助手”,只是把网页 HTML 原封不动丢进上下文,Token 烧多少算多少。但 Claude Code 走的是完全不同的一条路:它把网页当成一种需要“消化、提纯、再喂养”的信息原料,而不是现成食物。核心目标只有一个,用尽可能少的 Token,换取尽可能高的信息密度。

当你在Claude Code里输入一个网址,它会显示“已获取847KB”——但你真的以为这847KB全塞进了大模型的上下文吗?别天真了!实际进模型的可能只有12KB。

这不是魔法,而是一套精心设计的“网页瘦身流水线”。

这套系统先用Turndown把臃肿HTML转成干净Markdown,再让一个小而快的模型精准提取与你问题相关的片段,最后才把精华喂给Claude主模型。

更妙的是,对docs.python.org、developer.mozilla.org等约80个可信技术文档站点,如果服务器直接返回纯Markdown且内容小于10万字符,就跳过小模型直接透传。整个过程还配有15分钟TTL、50MB容量的LRU缓存,重复请求几乎零成本。

这种分层处理架构既大幅压低了token消耗,又保证了上下文的相关性和可读性,堪称AI代理抓取网页的教科书级方案。

网页为什么是 Token 杀手

现实世界的网页极度臃肿。一个看起来很干净的文档页面,HTML 体积动辄五六十 KB,其中真正有用的内容可能只有两三 KB。剩下的全是 div 嵌套、导航菜单、脚本、样式、追踪代码。这些东西对模型理解问题毫无帮助,却会实打实地占用上下文窗口并计费。

如果一个智能体每次抓网页都直接灌原始 HTML,那不是“联网能力”,而是“自动烧钱能力”。Claude Code 的整个设计,就是为了解决这个问题。

Claude Code显然深谙此道,它没有选择“拿来就用”的懒人策略,而是搭建了一条高效的内容提纯流水线。

这条流水线的第一步,就是把HTML“脱水”成结构清晰的Markdown。这一步看似简单,实则至关重要——它剥离了所有视觉噪音,只保留语义骨架:标题、段落、代码块、链接。这种转换不是粗暴删减,而是基于内容结构的智能重构,为后续处理打下干净基础。

第一层过滤:HTML 到 Markdown,不留结构垃圾
Claude Code 拿到网页后的第一步,并不是分析语义,而是做一件很工程化但极其重要的事:格式清洗。

Claude Code内部调用了Turndown库来完成把 HTML 转成 Markdown格式转换,核心代码就这一行:

Th2.default().turndown(J); // HTML in, Markdown out

J代表原始HTML字符串,输出则是对应的Markdown文本。这一步会系统性地剥离所有对语义无帮助的部分,比如层层嵌套的 div、导航栏、脚本、CSS、广告和页脚。最终留下的是标题层级、段落、代码块、链接这些“结构化内容骨架”。

Turndown是一个成熟的开源工具,能智能识别HTML中的语义元素并映射为Markdown语法。

更重要的是,它会自动忽略script、style、nav、footer等非内容区域,甚至能处理复杂的嵌套结构。这意味着,无论网页前端多么花哨,经过Turndown处理后,剩下的都是“干货”。这种预处理极大降低了后续模型的理解负担,也避免了无关信息干扰答案生成。值得注意的是,这一步对所有HTML响应一视同仁,无论来源是否可信,都必须先“洗澡”才能进入下一关。

这一步本身就能把 Token 体积压到原来的十分之一左右,是整个系统里性价比最高的一刀。

真正聪明的地方:小模型先上场
小模型上场:不是所有内容都值得被大模型看见!光有干净的Markdown还不够。假设你问的是“这个API支持哪些认证方式?”,而整篇文档有三千字,难道要把全文都塞给Claude?那太奢侈了。

大多数人到这里就会停下,以为 Markdown 会直接送进 Claude 主模型。但 Claude Code 在这里又加了一层过滤,而且是非常关键的一层。
Markdown 并不一定直接进入主模型,而是先交给一个“小而快的模型”。

逻辑大致是:

  • 如果内容是 Markdown,体积小于阈值,而且来源可信,可以直接用;满足特定条件(比如是可信站点且内容为纯Markdown且小于10万字符)
  • 否则,把用户原始问题和 Markdown 内容一起交给小模型,让它“按问题抽取相关信息”。把URL、内容、信号、配置等参数传进去,由小模型做二次提炼。

这个小模型收到的提示词(prompt)会根据站点信任等级动态调整——对可信站点,允许它保留更多细节、代码示例和文档摘录;对普通站点,则严格限制引用长度,最多125个字符。这种分级策略既保证了权威文档的完整性,又防止了不可信来源的信息污染。

这个小模型并不是做总结,而是做“相关性蒸馏”:

  • 如果用户问的是认证方式,那它就只返回认证相关段落;
  • 用户问的是部署参数,那无关章节直接消失。

主模型看到的,从来不是完整网页,而是已经对齐问题的精简上下文。

信任站点的绿色通道并不等于无脑直通

Claude Code 内部维护了一份大约八十个站点的白名单,几乎清一色是高质量技术文档站点,比如 Python 官方文档、MDN、React 官网、Kubernetes 文档、AWS 文档等。

但这里有个容易被误解的点:只有当服务器直接返回 Content Type 为 text/markdown,并且内容长度低于十万字符,才会完全跳过小模型。

当请求命中这些域名,且服务器响应头明确标注Content-Type: text/markdown,同时内容长度低于10万字符(即Ph2 = 1e5),系统就会启用“直通模式”——跳过小模型提炼环节,直接把Markdown原文送入主模型上下文。

如果是这些站点返回 HTML,一样要先转 Markdown,一样可能进小模型。也就是说,信任站点的特权不是“永远不过滤”,而是“在内容本身已经干净的前提下少走一步”。

这个设计非常务实:
一方面,这些站点本身结构规范、内容精炼,无需额外过滤;
另一方面,省去小模型调用可进一步降低延迟和成本。

但要注意,这个VIP通道有严格前提——必须是服务器原生返回Markdown。

这说明Claude Code的信任是基于内容格式而非单纯域名,体现了对数据源头真实性的尊重。

小模型并不是一套提示词跑天下。

  • 对于信任站点,小模型被允许保留更多上下文细节,包括代码示例、文档原文片段和技术说明。
  • 而对非信任站点,抽取规则明显更严,引用内容长度被限制在非常短的范围内,防止把噪声页面、营销内容或结构混乱的文章塞进主模型。

这实际上是在工程层面引入了“信息可信度”的概念,而不是一视同仁。

缓存机制:让重复劳动彻底消失
为了进一步优化性能和成本,Claude Code实现了高效的本地缓存。

Claude Code 对抓取结果做了十五分钟的 LRU 缓存,总上限五十 MB。这意味着在短时间内反复引用同一个文档,几乎不再产生额外 Token 成本。对调试、反复追问、渐进式提问尤其友好。对用户来说,表面上只是“又用了一次链接”,但底层已经是完全免费复用。

所有网页抓取结果都会被存入一个LRU(最近最少使用)缓存中,有效期为15分钟(vp5 = 900000毫秒),总容量上限为50MB(kp5 = 52428800字节)。这意味着,在15分钟内对同一URL的多次请求,系统会直接返回缓存结果,无需重新下载、解析或处理。这对频繁查阅同一文档的用户来说简直是福音——不仅速度快如闪电,还完全不消耗额外token。

缓存策略看似简单,却是提升用户体验的关键一环。它承认了一个事实:人类在探索信息时往往会反复回看,而AI系统应该聪明地记住这些“临时记忆”,而不是每次都从零开始。

全流程复盘:从URL输入到上下文注入的七步走
整个网页抓取与处理流程可以清晰拆解为七个阶段。
第一,用户输入URL和提问;
第二,系统检查缓存,命中则直接返回;
第三,若未命中,则发起网络请求获取原始内容;
第四,若内容为HTML,则调用Turndown转为Markdown;
第五,判断是否为可信站点且满足直通条件(Content-Type为text/markdown且长度<10万字符),若是则跳过下一步;
第六,否则,将Markdown内容连同用户提问一起交给小模型进行相关性提取;
第七,将最终结果写入缓存并返回给主Claude模型用于生成答案。

这个流程环环相扣,每一步都服务于同一个目标:用最低的成本,把最相关的信息送到大模型面前。它不是简单的“fetch and dump”,而是一套有判断、有取舍、有优化的智能管道。

从 URL 到主模型,中间经历的并不是一次传输,而是一整套“信息消化系统”。网页只是原料,Markdown 是半成品,小模型负责提纯,主模型只吃精华。

这套设计背后的思想非常明确:不是上下文越大越聪明,而是信息密度越高,模型越好用。

给内容创作者和文档团队的一刀

既然知道了Claude Code的处理逻辑,网站开发者该如何优化自己的技术文档以更好地服务AI代理?答案很明确:内容干净比格式花哨更重要。

如果文档是为人类写的,HTML 没问题;如果文档是为智能体消费的,Markdown 是最低摩擦路径。
但比格式更重要的是结构。清晰标题、明确段落、规范代码块,比任何花哨前端都更重要。

哪怕最终还是走 HTML 转 Markdown,再进小模型,结构清晰的页面依然会被更完整地保留下来。

虽然直接提供Markdown能触发可信站点的直通快车道,但即使只提供HTML,只要结构语义清晰(正确使用h1-h6、p、code、pre等标签),Turndown也能高效转换。真正致命的是那些充斥着无意义div嵌套、内联样式、隐藏元素和营销弹窗的页面——这些噪音会让小模型难以聚焦,甚至提取出错误信息。

因此,最佳实践是:使用标准HTML语义标签组织内容,避免过度工程化的前端框架包裹,保持代码示例独立可读,减少非必要脚本加载。如果条件允许,直接提供纯Markdown版本并通过Content-Type明确声明,不仅能提升AI代理的解析效率,未来也可能被纳入可信站点白名单,享受VIP待遇。

最现实的产品级建议:用户需要知道“到底花了多少token”

Claude Code 现在最大的问题不是处理能力,而是透明度。

尽管Claude Code的后台优化堪称精妙,但前端展示却留下了一个关键盲区。用户只能看到“已获取847KB”这样的原始文件大小,却完全不知道经过Turndown转换和小模型提炼后,最终进入Claude上下文的实际内容有多大,更别说对应的token消耗了。

这种信息不对称让用户无法评估成本效益,也无法判断系统是否真的“聪明地”处理了请求。

因此,一个合理的功能建议是:在UI中同时显示原始大小、处理后大小和预估token数。比如“原始847KB → 处理后12KB(≈300 tokens)”。这不仅能让用户安心,还能教育市场理解AI代理背后的真实工作逻辑——不是所有流量都等于成本,智能压缩才是未来。

如果能在界面中直接展示“原始大小、处理后大小、最终上下文 Token 数”,这套精巧设计的价值会被用户真正理解,也能帮助开发者更理性地使用联网能力。

技术细节深挖:参数、阈值与代码逻辑
从反编译的cli.js片段中,可以提取出多个关键参数和逻辑分支。

首先是Turndown调用:Th2.default().turndown(J),其中J为HTML字符串。
接着是内容类型判断:W.includes("text/markdown")用于检测MIME类型。
长度阈值Ph2被设为100,000字符(1e5),这是直通模式的硬性门槛。

缓存配置方面,vp5=900000表示15分钟(900秒)的TTL,kp5=52428800对应50MB内存上限。小模型调用函数为vh2(Q, J, B.signal, G, K),参数包括查询、内容、取消信号、配置和是否可信标志。特别值得注意的是,对非可信站点,系统强制限制引用长度不超过125字符,这通过提示词模板实现,而非后处理截断。

这些细节共同构成了一个既灵活又严谨的内容处理框架,兼顾效率、成本与准确性。

总结
Claude Code 并不是简单的联网模型,而是一套围绕 Token 成本构建的信息压缩架构。
HTML 转 Markdown、小模型蒸馏、信任站点策略和缓存机制共同构成了一条现实可落地的智能体网页摄入路线。这不是噱头,而是工程理性。



极客辣评
本文内容高度聚焦“智能体如何消化网页”这一具体工程问题:
  • 它基于对Claude Code内部代码(cli.js)的实际逆向分析,而非泛泛而谈的功能描述;
  • 首次系统揭示了Claude Code网页抓取的四层处理机制(缓存、格式转换、小模型提炼、可信站点快车道)!
  • 它提供了具体参数(如10万字符阈值、15分钟缓存、125字符引用限制)和代码片段,具备技术可验证性。
适合兴趣:“Claude 网页抓取”、“AI代理 token优化”、“Turndown Markdown转换”

从SEO角度看,Claude Code的处理逻辑实际上奖励了那些结构清晰、语义规范、内容聚焦的网页。这意味着,不仅人类读者喜欢干净的文档,AI智能体也会优先“青睐”这类内容。

对于技术博客、开源项目文档、API指南的维护者来说,这是一个明确信号:优化HTML语义结构、减少前端噪音、提供纯文本版本,不仅能提升用户体验,还能增加被AI代理准确引用的概率。

长远来看,这可能催生一种新的“AI-First Documentation”范式——专门为机器阅读优化的内容创作标准。而那些依赖复杂SPA框架、大量JavaScript渲染的页面,可能会在AI时代逐渐边缘化。