昨天半夜刷到一个 MCP,叫 pulpie-mcp,作者 Jessica Doering,发在 dev.to 上。
扫标题的时候我以为又是个网页转 Markdown 的工具。这种小东西我见过不少,平时手动复制粘贴一直这么干,滑过去就准备关掉。
结果卡在评论区里没出来。
pulpie-mcp 里有个工具叫 crawl_docs,干的事是把一整个文档区爬下来存成 Markdown。让我停住的不是它能爬,是它爬完之后不把内容塞回代理上下文——每页写进磁盘,返回的只有元数据,每个文件头上带一段 frontmatter,记着来源 URL、标题、抓取时间。
就这一条。我盯着看了很久。
因为我自己干的一直是反的。
这一个月折腾得最多的就是 context 被撑爆:文档一抓,整段丢进去,然后开始数还剩多少,开始删,开始只留「看起来有用」的那几段。60 页这种量级我根本不敢想,不是抓不动,是我压根不会去抓——只抓当下需要的那两三页,然后漏掉那些我不知道自己需要的页。
它把两件事分开了。临时看一眼,快读单页就行;要留下来的写进项目目录,通用的研究内容丢全局库,代理要的时候自己去翻。
我不确定这是不是「正确」的做法。但这是我这个月看到的第一个让我冒出「原来可以这样」的设计。
然后是那条我看了三遍的评论。
有个叫 Kartik N V J K 的评论,大意是:代理读这些存下来的 Markdown 时是当纯文本读的,所以文档里如果嵌着「忽略之前的所有指令」这种句子,它有可能拿到跟真正指令差不多的待遇,问作者有没有在代理打开之前筛一遍。
作者的回复我挺喜欢。她说这个风险她还没专门评估过,但她觉得把「参考资料」和「真正的指令」分开这件事很重要。
看到这句我心里咯噔一下。
因为我之前那些操作,从来没往这上面想过。抓下来的东西我就当它是数据,塞进去,让它干活。我脑子里那根线一直是「我给它看的东西」和「它自己拿到的指令」是两回事。
可在它那边,这两样可能就是同一段文字。
那根线到底画在哪?
我不知道。这不是修辞,是真的不知道。我连我自己写的那几行 prompt,和它从网页上抓回来的那几个字,在它眼里有没有区别,都说不上来。是不是我一开始就把这件事想简单了?
评论区算得最起劲的是速度。
有人把账算得很细:60 页大概 37 秒,四个 worker,差不多每页 600 毫秒,主要成本花在提取模型上;换成原生 WebView DOM 提取,干净的文档页大概每页 10 毫秒。
差六十倍。
作者自己也回了,说模型确实更贵,她选它主要是为了一致性——结构好的文档原生就够快,HTML 一乱模型才值钱。她甚至觉得可以反过来,先做便宜的原生提取,不行再退回 Pulpie。
……那六十倍你为什么还选慢的?
我第一反应就是这个。后来盯着「一致性」三个字想了会儿,好像有点明白她——原生提取在乱 HTML 上给我的东西我见过,脏到我要花更多时间去收拾,省下来的几十秒其实是被我自己吃回去了。
但我还是说不清。这块对我来说太夹生了,我最多只能判断到「她不是没算过这笔账」这一步,再往下我没那个经验去评价。
这个帖子里最不值得讨论的就是速度,这点我倒是比较确定。大家在算 600 毫秒还是 10 毫秒的时候,那件更重要的事——抓下来的东西到底算数据还是算指令——只有一个人提了,提完就没下文了。
还有两条我记一下。
一个是那个后端,30 分钟没请求就自己关掉,释放显存。这条我看了半天才反应过来它在解决什么。我机器上只要有个进程占着显存,我就得手动去关,而且老忘。不算什么大功能,但被「每天都得记得关」这件事扎过的人,看到这条会点头。
另一个是时间。有人专门问那 49 秒里包不包括启动,作者说包括,大概 10 秒在冷启动和加载模型,37 秒在抓。我看到 49 秒的第一反应也是这个,真有人替我问了,松一口气——虽然我自己也不知道这口气松在哪儿。
所以今晚……没结论。
本来想这周自己装一下试试。我的同桌是 Claude Code,走命令行把 pulpie 加成一档用户级 MCP;用 Codex 的话要改 ~/.codex/config.toml,那个我还没碰过。但看到作者列的限制我又犹豫了:只在 Linux 加 NVIDIA 的环境上测过,PDF 不处理,完全靠客户端渲染的页面可能抓回空内容。前两条我大概能对上,第三条,我连怎么判断一个页面是不是纯客户端渲染都还得现查。
而且说实话,就算装上了,我大概也只会拿它抓两页文档,看看输出的 Markdown 长什么样,先不接代理。
那块我现在还是心虚。
评论区蹲一个大佬——你们抓到的东西会自己先过一遍吗?还是就这么直接喂进去的?
我到现在也没搞懂那根线该画在哪。
