Agent Reach 实测:一条命令给 AI Agent 装上联网能力,B站搜索免 Key 跑通

用 Agent 干活这两年的一个切身感受:编排、写代码、管任务这些「脑子」的活儿进步飞快,9 月的 OpenAI Agents API 和 Gemini Antigravity 已经把托管沙箱卷到了一行代码启动,但联网取资料这个「眼睛」的活儿还是原始社会——Twitter API 按条收费,Reddit 匿名接口直接 403,B站风控把通用下载工具拦了个干净,小红书不登录连搜索都摸不到。让 Agent 自己上网查个东西,十次有八次卡在这些门槛上。

GitHub 上一个 9.2 万星的项目想用一句话解决这事:把十几个平台的接入方式选好、装好、体检好,你(或者你的 Agent)只管用。它叫 Agent Reach,MIT 协议,我在这台 M4 Mac 上把安装、体检、逐渠道实测完整跑了一遍——开箱 4 个免 Key 渠道全通,两条命令又解锁 2 个,同时也踩到了 3 个官方文档里写得不够显眼的坑,都记在这篇里。

它不是又一个爬虫合集,是「能力层」

先看数据:截至我发稿,Panniantong/Agent-Reach 91,890 星、8,065 fork,挂着 Trendshift「当日 GitHub Trending 第一」的徽章。仓库今年 2 月创建,当前版本 v1.5.0,主分支最新提交停在 9 月 16 日(那次提交新增了 Boss直聘渠道)。星数短期暴涨,说明它戳中的痛点足够普遍。它和市面上「爬虫工具合集」的本质区别在定位。作者的原话是:Agent Reach 是能力层(capability layer),负责选型、安装、体检、路由,不负责底层读取本身——真正的读取由 Agent 直接调用上游工具(yt-dlp、gh、feedparser),它不做包装。源码里的 channels/ 目录就是一张路由表,每个平台一条「首选 + 备选」的有序后端列表:

Plaintext
channels/
├── web.py          → Jina Reader(读任意网页,免 Key)
├── youtube.py      → yt-dlp(字幕 + 搜索)
├── github.py       → gh CLI(官方工具)
├── bilibili.py     → bili-cli ▸ OpenCLI ▸ 搜索 API
├── twitter.py      → twitter-cli ▸ OpenCLI ▸ bird
├── reddit.py       → OpenCLI ▸ rdt-cli(无零配置路径)
├── xiaohongshu.py  → OpenCLI ▸ xiaohongshu-mcp ▸ xhs-cli
└── v2ex.py / rss.py / xueqiu.py / boss.py ...

B站这条路由的首选 bili-cli 是个 独立命令行项目,只读功能免登录。这个设计最有说服力的证据是换代记录:2026 年 6 月 yt-dlp 被 B站风控全面 412 拦截(直连、代理、带 Cookie 都试过),项目方把 B站路由整条换成了 bili-cli,用户零操作。平台反爬会一直变,把对抗的维护成本集中到项目方,用户只管用——这是它一周冲上热榜的真正原因,也是个人维护「爬虫脚本库」最耗神的部分。

实测安装:先认准「别从 PyPI 装」

我的测试环境:M4 MacBook(16GB 统一内存),macOS arm64,Python 3.13.12,Agent Reach v1.5.0。安装前有个必须强调的坑——PyPI 上有个同名的 agent-reach 包,但那不是本项目,README 里专门写了警告。正确姿势是从仓库装:

Bash
# 推荐用 pipx;用虚拟环境也一样
python3 -m venv ~/.agent-reach-venv
source ~/.agent-reach-venv/bin/activate
pip install https://github.com/Panniantong/agent-reach/archive/main.zip

# 只读体检,不改系统(默认安全模式)
agent-reach install --env=auto

install 默认只检查不动系统,装依赖、写配置这些动作要显式加 --system 才会执行,还支持 --dry-run 预览。我跑完体检的输出是这样:

Plaintext
Agent Reach Installer
SAFE MODE — skipping automatic system changes
Environment: Local computer (auto-detected)
  ✅ GitHub CLI already installed
  ✅ Node.js already installed
  ✅ mcporter already installed
图例:✅ 可用  [!] 已装但需配置/登录  [X] 未安装
  [!]  GitHub 仓库和代码 — gh CLI 可执行,但未检测到认证
  [!]  YouTube 视频和字幕 — yt-dlp 已安装但未配置 JS runtime
  ✅  V2EX 节点、主题与回复 — 公开 API 可用
  ✅  RSS/Atom 订阅源 — 可读取 RSS/Atom 源
  [X]  全网语义搜索 — mcporter 已装但 Exa 未配置
  ✅  任意网页 — 通过 Jina Reader 读取任意网页
  ✅  B站视频、字幕和搜索 — 搜索 API 可达(仅搜索,curl 直连)
状态:4/16 个渠道可用

开箱 4/16,另外三条待修——每条后面直接跟了修复命令。这个体检就是官方说的 agent-reach doctor,每个渠道都做真实探测(发一次实际请求),不是看命令存在就算数。

两条命令修复,逐渠道实测

YouTube 和 Exa 两条待修项,doctor 直接把处方打在了输出里:

Bash
# 修复 1:yt-dlp 需要指定 JS runtime(YouTube 反爬升级后的新要求)
mkdir -p ~/.config/yt-dlp && echo '--js-runtimes node' >> ~/.config/yt-dlp/config

# 修复 2:Exa 语义搜索走 MCP 接入,免 Key
mcporter config add exa https://mcp.exa.ai/mcp --scope home

修完之后我把六个免 Key 渠道挨个跑了一遍,以下全是真实返回。

B站搜索——不装 bili-cli 也能用,走搜索 API 直连(先访问一次首页拿 Cookie,再带 UA 调接口):

Bash
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
curl -s -c /tmp/bili_ck.txt -o /dev/null -A "$UA" "https://www.bilibili.com/"
curl -s -b /tmp/bili_ck.txt -A "$UA" -e "https://www.bilibili.com/" \
  "https://api.bilibili.com/x/web-interface/search/all/v2?keyword=llama.cpp%20%E5%86%B3%E7%AD%96%E6%A8%A1%E5%9E%8B&page=1"

返回 code 0,搜「llama.cpp 决策模型」出来的前几条是部署教程和决策模型对比视频,标题、UP 主、播放量、BV 号都在 JSON 里,直接可读。

V2EX——公开 API 直连热门主题,返回 8 条真实帖子,第二条还挺应景:「喵的,用了 2 年的 Claude 账号 10.5 凌晨 2 点被封了」,58 条回复:

Bash
curl -s "https://www.v2ex.com/api/topics/hot.json"

RSS——用自带的 feedparser 解析,Hacker News 首页 20 条一字排开:

Python
import feedparser

d = feedparser.parse("https://hnrss.org/frontpage")
print(d.feed.title, len(d.entries))   # Hacker News: Front Page 20
for e in d.entries[:3]:
    print("-", e.title)

读网页——Jina Reader 免 Key 读任意 URL,返回的是清洗好的 Markdown 而不是一堆 HTML 标签,我拿它读了一页博客存档,正文、链接、图片描述的层级都保留得很干净。这一条本质上是 curl https://r.jina.ai/目标URL,Agent 理解成本为零。

YouTube 字幕——JS runtime 修复后,yt-dlp 直接拉到了视频自动字幕。我拿史上第一条 YouTube 视频《Me at the zoo》试的手,19 秒的视频,VTT 文件秒回,逐句带时间轴。对「帮我看下这个教程讲了什么」这类需求,拿字幕喂给模型比下载视频实惠得多。

Exa 语义搜索——配好之后一调用,撞上了限流(下面细说)。

三个坑,都有解

坑 1:yt-dlp 缺 JS runtime。 新版 yt-dlp 在 YouTube 侧要求 JS 运行时解签名,光装 yt-dlp 不够,要把 --js-runtimes node 写进配置(机器上有 Node.js 就行)。不修的话 doctor 会一直给你黄灯。

坑 2:Exa 免费 MCP 是共享限流。 用 mcporter 配好 https://mcp.exa.ai/mcp 零 Key 确实能用,但我第一次真实调用就返回了 You've hit Exa's free MCP rate limit——这条端点是所有人共享的。解法也简单:dashboard.exa.ai 申个免费 API Key,把 URL 改成 https://mcp.exa.ai/mcp?exaApiKey=你的KEY 即可独享额度。偶尔用用撞到限流重试也行,做自动化流水线就别省这个 key。

坑 3:GitHub 渠道装好 ≠ 能用。 gh CLI 本机没登录的话,gh repo view 会直接拒绝:To get started with GitHub CLI, please run: gh auth login。我实测未登录状态就是这样,gh auth login 走一次浏览器授权,或者设 GH_TOKEN 环境变量,这个渠道才真正点亮。

接进你自己的 Agent:SKILL.md 是灵魂

Agent Reach 最聪明的设计是「一句话安装」:把 install.md 的链接直接丢给 Claude Code、Cursor 或 OpenClaw,Agent 读完文档自己完成安装和配置——因为文档就是按「给 AI 读」的标准写的,边界、目录规则、禁止事项都写明了。

装完执行 agent-reach skill --install,它会把一份 SKILL.md 写进 Agent 的技能目录。这份文件教会 Agent 的是映射关系:遇到「读这个网页」调什么、「搜B站」调什么、「读小红书」缺什么配置。之后你只需要说人话,不用记任何命令。

一个使用建议:这类本地能力层和托管 Agent 是互补关系。如果你在用 Open Dots 这类自托管工作台,或者本地跑着 llama.cpp 起的模型服务,Agent Reach 装在同一台常驻开发机上正好补齐联网这环——托管沙箱里的工具每次会话结束就丢,本地能力层是攒得下的。

我不建议你这么用

  • 别用主号配 Cookie 类渠道。 Twitter、小红书、Reddit 这些靠登录态解锁的平台,README 自己就把丑话写在了前面:脚本调用存在被平台检测封号的风险,务必用专用小号。Cookie 等于完整登录权限,泄露时小号能把损失圈住。
  • 别在服务器上裸跑。 README 说明本地电脑不需要代理,部署在服务器上就需要(约 $1/月)——国内服务器直连 Twitter、YouTube 大概率全线飘红,这是网络环境决定的,不是工具问题。
  • 别当商业级采集引擎。 它是给 Agent 装的「眼睛」,不是分布式爬虫。高频、大规模的采集请求会撞限流、触发风控、连累账号,真有这个量级的需求该上正规数据服务商。

值不值得装

天天让 Agent 查资料的开发者、想给 OpenClaw 或 Claude Code 补联网能力的人、不想为 Twitter/Reddit API 付月费的独立开发者——装,十分钟内六个免 Key 渠道全部点亮,成本几乎为零。只用 ChatGPT 网页版的轻度用户、需要合规审计的企业数据管道——先缓缓,前者没地方跑 CLI,后者的 Cookie 灰色地带过不了法务。

值得一学的反而是它的模式:把「平台对抗」这种脏活累活收敛到一个持续维护的开源项目里,用体检命令把状态透明化,用路由表把更换成本降为零。下次你发现自己的 Agent 又双叒叕被 403 挡在门外,与其重新踩一遍坑,不如先 agent-reach doctor 一下。

推荐阅读

  • llama.cpp 决策模型实测:/v1/systemone 一次前向出概率,M4 跑通 Kev-4B,中文比英文省 28% token

    llama.cpp 10 月 2 日合入 /v1/systemone 端点,决策模型从此能跑在自己机器上,不用再绑任何厂商 API。我在 M4 Mac 上实测 Kev-4B 与 Julia-1 两个官…

  • OpenAI Dots 开源平替实测:Mac 自托管 Open Dots,30 行代码吃上本地模型

    OpenAI Dots 限 Pro 订阅还缺席多数地区,开源平替两天涨了四百星。我在 M4 Mac 上实测自托管全流程:五分钟起服务,发现它不兼容 Chat Completions 协议,Ollama…

  • Claude Code Mods 上手:用 TypeScript 改写 AI 编程工具的行为,不登录也能跑通官方测试

    Claude Code 推出 Mods:用 TypeScript 函数改写提示词、拦截工具调用、替换内置功能。我在 Mac 上实测了完整流程:从 2.1.226 升级到 2.1.287,发现官方脚手架…

  • OpenAI DevDay 2026 全面解读:Dots 智能体、GPT-6.1 Sol、Codex Cloud,开发者现在能上手什么

    DeepSeek Harness 推出桌面端 v0.2.0-rc.2,从开源框架变成开箱即用的 macOS/Windows 应用。我在 Mac 上实测了完整安装流程:353MB DMG、1GB 体积、…