AI 代理的「信息获取层」

AI 编程代理已经能读文件、写代码、跑命令,但有一个场景它们始终搞不定——搜信息。不是那种「内部已经有答案」的搜索,而是去网上查文档、找代码示例、读技术博客。

大多数 Agent 的解决方案是手写 curl 调搜索引擎 API,或者依赖一个笨重的浏览器自动化框架。两者都不理想——前者没有结构化的输出,后者太重了。

Ketch 想填补这个空白。它是一个 Go 编写的 CLI 工具,定位是「AI Agent 的搜索和抓取前端」——单二进制、无守护进程、零配置就能跑。它不做「对话」,只做一件事:给你想要的搜索结果,格式干净,开箱即用

三个搜索平面

Ketch 把搜索分成了三个不同的平面,每个平面针对一种信息需求:

🔍 Web 搜索:ketch search

最基础也是最常用的功能。支持多个搜索引擎后端:

  • Brave Search(默认)——免费、无需注册,开箱即用
  • DuckDuckGo——隐私友好,零配置
  • SearXNG——自托管元搜索引擎,适合对隐私有极致要求的用户
  • Exa——面向 AI 的搜索 API,语义搜索效果好,但需要 API Key

默认 Brave 这个选择很聪明——完全免费、不需要任何注册,用户拿到 Ketch 就可以直接 ketch search "how to use X",零摩擦。

💻 代码搜索:ketch code

专门用来搜开源代码,默认后端是 Grep(免费、零配置),也支持 Sourcegraph 和 GitHub Code Search。输出的是代码片段 + 文件路径 + 仓库信息,Agent 可以直接用它找到的上下文来理解和修改代码。

这个功能的杀手场景是:Agent 在做任务时遇到一个不熟悉的库,ketch code "package usage example" 可以快速找到真实项目里的使用范例,比去官网翻文档直观得多。

📚 库文档:ketch docs

基于 Context7 服务,提供经过筛选的库文档片段。和普通搜索不同的是,它会返回版本感知的 API 文档——如果你用的是 React 19,它不会给你 React 16 的答案。

抓取与爬取

搜索只是第一步,拿到链接后还要读内容:

  • ketch scrape——把 URL 抓取成干净的 Markdown。支持批量并发抓取,默认自动处理 JS 渲染页面
  • ketch crawl——递归爬虫,支持 BFS 宽度优先和 sitemap 两种策略。后台执行,可以随时查看状态

值得一提的是它的 SPA 渲染能力。很多页面(Next.js、Vue 3、SvelteKit)是客户端渲染的,普通 HTTP 请求拿到的几乎是空壳 HTML。Ketch 内置了 headless Chrome 渲染引擎,检测到 SPA 页面自动切到浏览器渲染模式,静态页面走快速 HTTP 通道。开发者可以通过 spa_markers 自定义 JS 页面匹配规则。

为 Agent 而生的设计

Ketch 的很多设计细节都表明它是「从一开始就为 AI Agent 打造」的:

  • --json 输出——每个命令都支持 JSON 格式,Agent 不用 parse 文本
  • 无守护进程——单次调用,用完整进程隔离,不会留下后台进程
  • 配置透明——ketch config 以 JSON 格式输出完整配置和可用后端,Agent 可以自己「发现」自己的能力
  • 无状态设计——每次调用独立,不依赖缓存(缓存可选但默认关闭),适合 Agent 的 stateless 调用模式

项目 README 里甚至直接给出了 Agent 的 System Prompt 模板,方便开发者直接把 Ketch 集成到 Agent 的工具箱里:

## Web Search (ketch)
- Uses ketch CLI to search web/code/docs
- Prefer search before scrape (find the right URL first)
- Use search queries the user would type—natural language is fine
- scrape = fetch and parse a single URL to markdown (max 30s)

快速上手

安装很简单:

# macOS (Homebrew)
brew install 1broseidon/tap/ketch

# 或者直接下载二进制
curl -sSf https://chain.sh/ketch/install.sh | sh

# 用起来
ketch search "what is tailwind css v4" --json
ketch code "knex transaction example" --json
ketch docs "hono middleware" --json
ketch scrape https://example.com

我的看法

Ketch 的定位非常精准——它没有试图做一个通用的终端搜索工具,而是瞄准了 AI Agent 的信息获取需求这个具体场景。

这个场景的特殊之处在于:Agent 不像人类那样能「看」网页,它需要结构化、可解析的输入。Ketch 的 --json 输出、无状态设计、配置自省能力,都是围绕这个需求设计的。

三个搜索平面的划分也很有产品思维——网页搜索、代码搜索、库文档搜索对应的是不同粒度的信息需求,用一个统一的 CLI 接口暴露出来,比让 Agent 分别调用不同工具的体验好得多。

当然,Ketch 还很年轻(66 个 commit,v0.9.5),139 个 Star 说明它还在早期阶段。默认 Brave 搜索虽然没有 API 费用,但覆盖面和精准度不如 Google;代码搜索 Grep 后端免费但索引范围有限。不过对于 Agent 的日常「查文档、找示例」场景来说,已经足够好用了。

如果你在开发 AI Agent,或者只是想在终端里找一个比 curl 更好用的搜索工具,Ketch 值得一试。毕竟安装就一行命令,试试不亏。


项目地址:1broseidon/ketch · 许可:MIT · 🌟 139 Stars(截至 2026-06-30) · 最新发布:v0.9.5 · 主页:chain.sh/ketch