适用人群
别再把同一份网站菜单粘贴给模型
在 109 个页面的正面对比中,Clean Web Clipper 留下 102 行重复的导航,另外三个提取引擎分别留下 282、478 和 491 行,而且完全没有残留的 HTML 标签。送到模型面前的,是文章正文,外加一段写明来源网址和发布日期的属性头。
粘贴一个网页,真正的代价
从浏览器里复制一页文档,粘贴进对话框,你发给模型的还有 Cookie 提示、侧栏、版本切换器、“本页目录”侧栏、四列页脚链接和一条“接下来阅读”推荐栏。每一行都是你要付费的 token,每一行都在和你真正想让模型读的那两段争夺注意力。
第二重代价更隐蔽:重复的导航看起来像结构。让模型总结这个页面,它会把菜单项列成主题;问它某个说法出自哪里,它会指向一个链接文字。粗糙的转换器留下的零散 div 和 table 标签,又给模型多加了一层要绕开的东西,然后才轮到正文句子。
真正开始花钱的是第二次粘贴。对话越来越长,历史被截断,你把页面再粘贴一次,可页面从早上到现在已经改过,模型现在推理的是一段略有不同的文字,对话里却没有任何记录说明这件事发生过。每次运行都去抓同一个网址的智能体也有同样的问题,还要加上频率限制和它过不去的登录。磁盘上的文件每次都是同样的输入,网站打不开时它依然可读。
模型收到的变成了什么
- 重复导航大约只有对比引擎平均值的四分之一:102 行重复,对比引擎分别是 282、478 和 491 行。
- 在测试的 512 个页面上,残留的 HTML 标签为零:模型没有任何需要绕开的标记。
- 属性头写明来源网址和发布日期,所以一个说法可以被准确归属,而不是靠猜。
- 一个快捷键就把页面复制成 Markdown,可以直接粘贴进任何对话。
- 图片可以完全去掉,冗长的图片地址就不会进入上下文。
- 没有文章的页面会如实说明。信息流或搜索结果页不会变成提示词里的三百个链接。
- 残句行更少:短于二十五个字符的行占比为 0.221,对比引擎分别为 0.278、0.262 和 0.263。短行大多是披着句子外形的链接文字。
- 参考链接变成集中在文末的
[^1]脚注,正文里带编号的引用仍能对应到出处,而不是指向一个失效的锚点。
---
title: "协程与任务"
source: "https://docs.python.org/zh-cn/3/library/asyncio-task.html"
extraction: "dom"
---
## 可等待对象
如果一个对象可以在 `await` 语句中使用,那么它就是 **可等待** 对象。许多 asyncio API 都被设计为接受可等待对象。
```python
async def main():
await asyncio.sleep(1)
print("hello")
```为提示词做好设置
两套设置,大部分选项相同:一套用于粘贴进对话,一套用于给智能体准备一个读取用的文件夹。每套大约五分钟。
- 右键点击图标,打开选项,把点击图标时设为“复制 Markdown”。这是最短的路径:点一下,切到对话窗口,粘贴。
- 把图片设为跳过。一个 CDN 图片地址光是缩放参数就可能有两百个字符,对纯文本模型毫无意义。
- 在属性部分保留
source和date,关闭author和extraction。两行文件头就足够模型标注出处,其余字段都是你花钱发送的冗余。 - 用
Alt+Shift+M剪藏页面,然后粘贴。如果扩展程序提示“没有文章”,就别硬贴进去。这个提示说明页面主要是链接文字,而这正是会让模型把菜单项当成主题罗列的输入。 - 如果是给智能体而不是对话用,把保存位置设为智能体本来就会读取的文件夹,比如项目里的
context/,文件名模板设为{domain}-{title}。 - 把任务真正依赖的六到八个页面剪藏进这个文件夹。智能体读的是本地文件:不抓取,不受频率限制,没有过不去的登录,每次运行读到的文字都一样。
- 为最常剪藏的网站加一条按网站规则,比如把
reddit.com送进单独的子文件夹并跳过图片,这样文件夹不用你费心也能保持分类整齐。
压缩上下文开销的设置
下面每一项,都去掉了模型要按量计费去读的一部分内容。属性那一行最容易设错:标注出处两行就够,不需要五行。
| 设置项 | 取值 | 为什么这样设 |
|---|---|---|
| 点击图标时 | 复制 Markdown | 点一下、切窗口、粘贴:没有文件,没有窗口,没有对话框 |
| 图片 | 跳过 | 图片地址很长,对纯文本模型毫无意义,常常比旁边的段落还长 |
| 属性 | 开启 `source` 和 `date`,关闭 `author` 和 `extraction` | 足以标注出处,不在模型用不上的字段上花 token |
| 保存位置(智能体) | 项目里的 `context/` 文件夹 | 本地文件意味着不抓取、不限流,每次运行输入完全相同 |
| 文件名模板 | `{domain}-{title}` | 在文件夹里 grep 的智能体能分清两个都叫“概览”的页面 |
| 剪藏范围 | 只剪藏选中内容,而不是整页 | 一个章节就能回答问题时,其余九个章节纯属开销 |
| 按网站规则 | `reddit.com` → 子文件夹,跳过图片 | 讨论帖和参考资料值得分开存放 |
此页面上没有文章 提取出的文字中,超过四分之一在链接文字里,这正是信息流、 商品页或搜索结果页的样子。没有任何内容写入剪贴板。 检查的区块 41 选中的区块 <section class="cards"> 链接占比 0.71 实际文本 740 个字符
三种用法
一个页面,一个问题
你在读一份规范,想让模型核对你对其中一节的理解。你选中那一节,按 Alt+Shift+M,然后粘贴。模型收到的是这一节、一行 source 和一行 date:没有 Cookie 提示,没有版本切换器,没有“本页目录”侧栏,也没有八列页脚。
差别体现在回答上,而不只是账单上。让模型总结一个粘贴进来的页面,如果导航也在里面,它会把菜单项列进主题,因为一个在每个章节里都重复出现的短语,看起来确实像结构。把导航去掉,错误也就从源头上去掉了。
智能体读文件夹,而不是自己去抓取
一个编程智能体需要某个 SDK 的 API 参考文档。你把八个页面剪藏进 context/,每个文件以域名和标题命名。智能体读取本地文件:不抓取,不限流,你登录后才能看到的页面和公开页面一样可读。
而且内容不会变。抓取来的页面在同一任务的两次运行之间可能已经改了,对话记录里却不会有任何提示。剪藏的文件只有在你重新剪藏时才会变,旧文件也还在,可以拿来 diff。
模型根本访问不到的页面
文档在需要单点登录的公司内网 Wiki 上,或者在你付费订阅的内容里。让模型去抓这个网址,它拿到的是登录页;给模型一个搜索工具,它拿到的是专门给爬虫看的版本。扩展程序读取的是浏览器已经为你当前会话渲染好的页面,所以你能看到的文字,就是你能粘贴的文字。
在这个过程中,页面文本不会离开你的电脑,剪藏内容本身也不会上传到任何地方。剪藏进入你的剪贴板,“发到 AI 对话”按钮只是复制并打开一个标签页,自己不传输任何东西。
和其他把网页交给模型的方式比一比
下面是人们把网页交给模型时实际在用的五种做法。每一行都写明得到什么、代价是什么,包括这个扩展程序自己。
| 现在的做法 | 得到什么 | 代价是什么 |
|---|---|---|
| 直接粘贴网址 | 提示词里的一行 | 很多模型无法抓取网页;能抓取的,拿到的可能是给爬虫看的版本 |
| 复制粘贴整个页面 | 所有内容,连同页面上的各种摆设 | 可比的输出里有 282–491 行重复菜单,这里是 102 行 |
| 截图交给多模态模型 | 页面当时的样子 | 图片 token,没有来源,没有日期,事后也没法 grep |
| 把网页另存为 HTML | 磁盘上一份忠实的副本 | 文件里大部分是标记,文章只占你发送内容的一小部分 |
| 阅读模式后再复制 | 有时文字更干净 | 有的页面能触发,有的不能,而且没有来源和日期信息 |
| Clean Web Clipper | 正文,外加两行文件头 | 一次一个页面;不总结、不分块、不做向量嵌入 |
回答出错时怎么办
为什么模型总结的是导航,不是文章?
信息流页面放进提示词,就会是这个结果。看看剪藏窗口的提示:如果显示“没有文章”,说明提取出的字符中有大约四分之一以上在链接文字里,这正是分类页、搜索结果页或商品页的特征。找到文章页本身,剪藏那一页。回答的改善会比怎么改提示词都明显。
为什么剪藏比页面看起来短得多?
常见原因有两个。一是页面在你滚动时才加载正文,剪藏那一刻只有已渲染的部分存在:先滚到底,再剪藏。二是某个章节在折叠面板或未打开的选项卡里,打开之前它不在 DOM 中。浏览器没有渲染出来的内容,任何扩展程序都读不到。
为什么没有可供模型引用的日期?
页面没有声明日期。这个字段宁可留空,也不填今天的日期,因为在模型的上下文里,一个言之凿凿的错误日期比缺失更糟:它会被当作事实复述给你。有些语料带日期的频率远低于其他语料,在土耳其和捷克的前五十名网站中,发布日期确实很少见,这是这些网站的特点,不是提取的问题。
为什么图片链接还在占用上下文?
图片默认保留为链接,这对阅读是对的,对提示词是错的。把图片设为“跳过”,可以全局设置,也可以设为按网站规则,Markdown 里就完全没有图片引用:没有占位符,没有空括号,什么都没有。
它不做什么
它不与任何 AI 服务通信。剪藏内容不会发往任何地方,只进入你的剪贴板或磁盘;“发到 AI 对话”按钮也只是复制内容并打开一个标签页。它不总结、不分块、不做向量嵌入,那是模型的工作,不是剪藏工具的工作。它一次只剪藏一个页面,也就是你正在看的那一页,没有爬虫。页面从未渲染出来的内容,它也拿不到。