在这里插入图片描述
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看, 传送门https://blog.csdn.net/qq_34419312

前言

不知道你们有没有过这种体验——手头上管着好几个AI Agent,每个都要接搜索、接网页抓取,挨个装MCP,结果最后token没少烧,bug没少出,改个配置还要改三遍。

我最近半年干了件巨爽的事:把Codex桌面端、Claude Code CLI、Hermes Agent这三个家伙用的stdio MCP全拆了,搜索一个包,抓取一个包,三个Agent共享一套工具。

今天就给你们唠唠,为啥Skill模式能把stdio MCP按在地上摩擦,以及为啥说Bing CN是国内开发者最被低估的搜索神器。

1. Skill vs stdio MCP:六个维度全方位吊打

1.1 先上对比表,空口无凭没意思

维度stdio MCPSkill + npx CLI
schema token 占用所有工具描述常驻系统提示,开机即烧tokenSKILL.md 按描述触发,schema 不常驻
多 agent 部署各自装一份,升级改三处一份配置 + 一个 npm 包,三端同步
沙箱代理兼容子进程继承代理,沙箱一挡就崩显式传参,可控性拉满
错误追踪JSON‑RPC 两层包装,定位要剥洋葱CLI 直接打 stderr + 退出码
能力扩展改 schema + 重启 + 三端重载加一行命令,五分钟搞定
可观测性结果常被截断,看不到元数据全量元数据输出,透明可控

1.2 最致命的坑:schema token 就是常驻烧钱怪

这就好比你办了个视频网站会员,默认给你开了五个设备同时在线,结果你每次就用手机看剧,剩下四个平板、电脑、电视全在那儿挂着扣钱。

开5个MCP,系统提示词凭空多4‑8K token,每一次对话都要付这笔钱。可现实是80%的对话里,你其实只用得到1‑2个工具,剩下3‑4个MCP纯纯就是常量沉没成本。

Skill模式就聪明在“按需加载”:Agent先看描述字段判断要不要用,真需要了才把完整SKILL.md拉进上下文。一个百来行的SKILL.md,没用到的时候基本是0 token消耗。

我拆完之后,三个Agent的系统提示词总长度直接降了3‑5K,下游回答都明显更聚焦,终于不跟我扯一堆没用的铺垫了。

1.3 第二爽:一份安装,三个Agent一起上车

以前装MCP有多麻烦?Codex装一遍,Claude装一遍,Hermes再装一遍,纯纯的重复劳动。升级的时候更绝,改三处配置,重启三次服务,一天光干这个了。

现在就一行命令,npx一下,三个Agent全给你安排明白。升级的时候也简单,各自reload一下skill就同步了,再也不用当复读机挨个改配置。

npx -y skills@latest add dej4vu/websearch \
  --skill websearch --agent codex --agent claude-code --agent hermes-agent \
  --global --yes

1.4 第三解气:沙箱代理终于不玄学崩了

以前stdio MCP最烦人的是什么?启动失败报一堆英文堆栈,你翻半天都找不到根因。结果最后查出来,就是沙箱把代理给拦了——Node子进程继承了shell的代理变量,沙箱一挡直接寄。

就像你过安检,包里揣了瓶水被拦了,结果你翻半天找不着,合着是你外套口袋里的矿泉水给你触发的警报,上哪儿说理去。

换成npx CLI之后就舒服多了,代理地址直接显式传参,要么清环境变量,简单直接。报错也是直接打stderr,退出码明明白白,一眼就能看到哪儿出问题。

1.5 剩下三个维度,个个戳中痛点

**错误追踪:**以前MCP报错,JSON‑RPC包一层,server包一层,定位问题要剥两层皮,跟拆盲盒似的。现在CLI直接输出错误信息,不用绕弯子。

**能力扩展:**以前加个工具,改schema、重启服务、三个Agent各自重载,一套流程下来半小时没了。现在加个子命令,SKILL.md加一行就行,五分钟搞定。

**可观测性:**以前MCP返回结果经常被截断,你都不知道拿到的是不是全的。现在JSON里什么截断标记、下一页索引、有没有缺日期、排序方式、新鲜度、结果总数,全给你标得清清楚楚,明明白白消费。

2. Bing CN:被国内开发者严重低估的搜索神器

2.1 中文长尾词,命中率真的吊打国际引擎

很多人一提到搜索就条件反射谷歌、Tavily,我以前也这样。直到实测了几次中文技术查询,才发现Bing CN是真的香。

就搜大模型最新动态这种,什么智谱GLM、千问、DeepSeek最新模型,Bing CN搜出来官方文档稳在前五,知乎CSDN都在后面。国际引擎就算切到中文区,也经常混一堆英文结果,找个中文资料跟大海捞针似的。

# 同一时刻三行命令跑起来
npx -y @dej4vu/websearch-cli@latest search "智谱 GLM 最新模型" --count 10 --json
npx -y @dej4vu/websearch-cli@latest search "千问 最新模型" --count 10 --json
npx -y @dej4vu/websearch-cli@latest search "deepseek 最新模型" --count 10 --json

2.2 时间戳能力,原生就给你拉满

Bing搜索结果自带的时间信息有多全?页面元素有,摘要里有相对时间,URL路径里也藏着日期。我直接做了个解析器,四个来源挨个扒,总能给你扒出准确发布时间,绝不瞎编。

最绝的是auto模式,你搜“最新”“发布”“上线”这种时效词,它自动给你把时间范围收窄到一个月,按日期倒序,还专门给官方域名加权,不会让营销号把官方文档压在下面。

普通技术查询就老老实实按相关性排,不瞎干预,分寸感拿捏得很好。

extractPublishedAt(result) => {
  // 优先 .news_dt,其次 snippet 中时间描述,最后 URL
  // 任一命中就返回结构化时间,全部不命中就标 dateMissing
}

2.3 多页聚合去重,不跟你玩数字游戏

很多搜索引擎都有这毛病:你要30条结果,它每页给你10条,三页下来重复的占一半,实际到手可能就15条,跟你玩文字游戏。

我做了自动翻页、合并去重,JSON里直接告诉你:请求了多少条,实际拿到多少条,去重了多少条,翻了几页,有没有更多,全透明。

还有跟踪参数自动去掉,跳转链接还原真实URL,知乎、小红书这些内容站,只标记不删除,你想不想看自己选,人性化。

{
  "sort": "auto",
  "freshness": "month",
  "requestedCount": 30,
  "resultCount": 28,
  "pagesFetched": 3,
  "duplicatesRemoved": 4,
  "hasMore": false
}

3. fetch功能:表格还原这块,我跟官方对齐了

3.1 以前的坑:表格被压成一段文字

最早版本我没接表格转换插件,结果HTML表格抓下来全压成扁平段落,被朋友吐槽:人家MCP的fetch拿过来直接就能用,你这还要自己拼表格。

确实,做文档总结任务的时候,表格有多重要不用我说吧?一堆数据给你揉成一段话,看都看瞎了。

后来v0.3.2我直接跟上了官方同款的turndown‑plugin‑gfm,表格该是什么样就是什么样,Markdown格式直接输出,复制就能用。

3.2 顺便做了一堆贴心优化

Readability搞不定的文档站,自动fallback到正文容器,不会给你抓一堆侧边栏广告和推荐阅读。

代码块高亮完整保留,不会给你切成零碎段落,复制下来直接能跑。

分页元数据全给你,续抓逻辑自己写就行,灵活度拉满。

robots协议、代理、超时全是显式开关,想怎么调怎么调。

# 一个最小调用示例
npx -y @dej4vu/websearch-cli@latest \
  fetch "https://docs.bigmodel.cn/cn/coding-plan/latest-model" --json

4. 一份SKILL.md,喂饱三个Agent

4.1 安装就一行命令,全给你安排到位

skills工具1.5.23版本之后,原生支持这三个Agent,一行命令全局安装,三个Agent同时生效。

agent全局路径
codex~/.agents/skills/websearch
claude‑code~/.claude/skills/websearch
hermes‑agent~/.hermes/skills/websearch

4.2 description写得长,是为了给你省token

有人说你这SKILL.md开头的描述怎么这么长?这你就不懂了。

Agent是靠description判断要不要加载这个技能的,写得越精确,误触发越少,不该加载的时候就不加载,全程基本0 token消耗。

要是写得含糊不清,Agent没事就把整个SKILL.md拉进上下文,那才叫真的烧钱。这就跟招聘似的,岗位描述写清楚,不合适的就别投简历,省得大家浪费时间。

4.3 升级也方便,一行命令搞定

升级版本就改个版本号,一行命令重新装一下,三个Agent同步更新,丢CI里全自动,不用人工干预。

npx -y skills@1.5.23 add "dej4vu/websearch#v0.3.2@websearch" \
  --skill websearch --agent codex --agent claude-code --agent hermes-agent \
  --global --yes

5. 这些坑我都踩过了,你们别再踩

5.1 npx报404?不是版本没发,是镜像搞的鬼

很多人跑命令报404,就急着去发issue说版本不存在。其实根本不是,要么是沙箱代理拦截了,要么是国内npm镜像给你挡了。

解决方案很简单,清掉所有代理环境变量,强制用官方源,亲测有效。

env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY \
  -u http_proxy -u https_proxy -u all_proxy \
  npx -y --registry=https://registry.npmjs.org/ \
  @dej4vu/websearch-cli@0.3.2 search "GLM 最新模型" --json

5.2 fetch表格变文字?升级到最新版

v0.3.2之前的版本确实有这问题,升级到最新版就好了,已经加了表格转换插件。

5.3 MCP启动失败、超时?多半是代理的锅

以前很多人说MCP server启动失败,fetch超时,十有八九都是沙箱里代理变量没清,进程崩在子进程那层,报错还贼抽象,根本看不懂。

换成CLI加显式代理参数,可控性高太多了,什么问题都能一眼看到。

5.4 freshness=month不是严格时间倒序

注意啊,Bing的month新鲜度只是时间窗口过滤,内部还是按相关性排的。想要严格按时间倒序,得加–sort date参数,配合解析出来的publishedAt一起用。

5.5 别让MCP的schema token把你榨干

最后再提醒一句,三个Agent同时开五六个MCP,系统提示词平白多8K token,这都是真金白银啊。

把不常用的通用能力都拆成SKILL.md,按需加载,效果立竿见影。

6. 上手只要60秒,三步搞定

不用看长篇大论的文档,三步就能跑起来。

6.1 先跑一次搜索,试试水

npx -y @dej4vu/websearch-cli@latest search "智谱 GLM 最新模型" \
  --count 10 --json | jq ".results[] | {rank, title, publishedAtText}"

6.2 再抓一篇网页,看看效果

npx -y @dej4vu/websearch-cli@latest fetch \
  "https://docs.bigmodel.cn/cn/coding-plan/latest-model" --json

6.3 给三个Agent装上技能

npx -y skills@latest add dej4vu/websearch \
  --skill websearch --agent codex --agent claude-code --agent hermes-agent \
  --global --yes

有问题直接去提issue,或者看中文README,都写得很详细。

7. 后面还有这些规划

项目还在持续迭代,后面的路线图也给你们透个底:

  • 通用网页搜索,后面还要聚合更多引擎
  • 元数据抽取,标题、作者、发布时间、关键词、摘要全给你扒出来
  • sitemap模式,从站点地图批量抓取
  • 缓存层,相同URL短期复用,避免被反复限流
  • 插件化黑名单,自己想拦什么站点就拦什么
  • 更多Agent适配,Aider、Cline、Continue这些都安排上

项目MIT协议,欢迎PR、提Issue、点Star。

反正我自己用下来,这套方案是真的解决了很多以前MCP时代的糟心事。如果你也在做多Agent部署、被沙箱代理搞得头大、觉得MCP太费token,不妨试试这套。

也欢迎评论区聊聊,你们有没有遇到过什么MCP的奇葩坑,或者觉得Bing CN还有什么香的地方。

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/qq_34419312

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐