yusukebe/ax
GitHub: yusukebe/ax
ax 是一款面向 AI 编程智能体的命令行网页抓取与结构化数据提取工具,用一条命令替代 curl 抓取、HTML 解析和数据提取的完整流程。
Stars: 429 | Forks: 7
# ax
**AI 时代的 curl:抓取、发现、提取。一个命令搞定。**
ax 是编程智能体应该使用的工具,而不是将 `curl` 的输出通过管道传递给一次性的解析脚本。它能抓取页面,帮助智能体理解其结构,并提取结构化数据 —— 在本地确定性地运行,输出专为上下文窗口设计。
```
ax https://api.example.com/users # curl parity — but never silent
ax https://example.com --outline # discover the page's structure
ax https://example.com '.item' --row 'title=a, href=a@href'
ax https://docs.example.com/guide --md --budget 800 # read docs as markdown
```
## 缘由
编程智能体不断重复着一个网络循环:**抓取 → 理解 → 提取**。如今,这意味着使用 `curl`(在响应体为空时_什么也不_打印),在上下文窗口中肉眼检查原始 HTML(消耗数千个 token),以及编写基于 HTML 的正则表达式脚本,一旦 HTML 结构发生细微变化这些脚本就会失效。
ax 用一个命令取代了整个循环:
- **抓取,绝不静默** — 为每个请求返回 `{status, ok, ms, headers, body}`。空响应体和错误状态码依然会生成完整报告。JSON 响应体会被自动解析。抓取模式从不缓存 —— 每个请求都是实时的。(`--body` 提供经典的管道体验:仅在标准输出打印响应体。)
- **发现,而非全盘倾倒** — `--outline` 展示页面的重复结构;`--locate 'text'` 回答“哪个选择器包含了这个内容?” —— 原始 HTML 绝不会进入上下文窗口。解析模式的 URL 会被缓存约 2 分钟,因此探测几乎是零成本的(每次命中都会在 stderr 中通知;`--fresh` 强制重新抓取,`--no-cache` 绝不触碰磁盘)。
- **结构化提取** — `--row 'title=a, href=a@href'` 通过一次调用提取多字段行;`--table` 将 `` 转换为带键的行数据;`--where` 使用安全的表达式语言进行过滤。
- **设计上极其节省 token** — 结果上限为 50 条,并在 stderr 中附带说明(绝不静默截断),`--budget