TypeScript · 项目报告

yusukebe/ax

The AI-era curl

已完成 打开 GitHub
Y
402星标
6Fork
0Issue
MIT许可证

分析结果

项目分析

ax 是一个面向 AI 编程代理和开发者的命令行网页抓取与结构化提取工具,被作者定位为“AI 时代的 curl”。它不仅能像 curl 一样请求 URL,还会返回状态码、响应头、耗时、body 等完整报告,并支持页面结构发现、CSS 选择器提取、多字段行提取、HTML 表格转结构化数据、Markdown 输出和 token 预算控制。项目使用 TypeScript 编写,基于 Bun 构建单文件二进制,许可证为 MIT。

适用领域 命令行工具 / 网页抓取 / 结构化数据提取 / AI Agent 工具链 / 开发者效率工具 / HTML 解析 / 文档读取与摘要前处理 / 数据采集辅助
配置难度 低到中等。对于熟悉 curl、CSS selector 和命令行的开发者,上手难度较低;如果要稳定抽取复杂页面数据,需要理解 HTML 结构、选择器、缓存行为和输出格式。对 AI Agent 用户而言,学习成本主要在记住 --outline、--locate、--row、--table、--md、--budget 等核心参数。
商业价值 对开发团队的主要价值在于提升 AI Agent 和工程师处理网页信息的效率,减少为一次性抓取任务编写临时 Python/正则脚本的成本,并降低大段 HTML 进入上下文窗口带来的 token 消耗。它适合用于研发提效、文档解析、轻量数据采集、接口调试、竞品信息提取等场景。由于其本地运行、无 API Key、MIT 许可和单命令工作流,企业可以较低成本集成到内部开发者工具链或 AI Agent 工作流中。不过,对于大规模爬虫、浏览器自动化采集、强反爬网站和严格合规场景,它更适合作为辅助工具,而不是完整数据采集平台。
01

技术亮点

  • 比 curl 更适合 AI Agent:请求不会静默失败,空 body 或错误状态也会输出完整报告
  • 集成 fetch、结构发现、selector 定位、结构化提取、表格解析、Markdown 转换等能力
  • 强调 token 友好:支持 --budget 限制输出规模,避免把大量 HTML 直接放入上下文窗口
  • 本地运行、确定性输出、无需云服务和 API Key,相比 Firecrawl 等云服务成本更低
  • 支持多字段行提取,例如一次性提取 title、href 等字段,减少临时 Python 脚本需求
  • 支持 --outline 和 --locate,适合在网页结构变化时快速修复选择器
  • MIT 许可证,商业使用和二次集成限制较少
  • README 中给出了与 curl、htmlq、Firecrawl 和临时 Python 脚本的清晰对比
  • 作者提供了真实 Claude Code 会话的成本对比数据,宣称可显著降低 AI Agent 网页任务成本
02

目标用户

  • 使用 Claude Code、Cursor、Codex 等 AI 编程代理的开发者
  • 需要快速从网页或 API 中提取结构化信息的后端/全栈开发者
  • 经常使用 curl、htmlq、jq、Python 脚本做临时抓取任务的工程师
  • 需要控制上下文窗口 token 消耗的 AI 应用开发者
  • 需要从 HTML 表格、列表页、文档页中提取数据的技术人员
  • 希望本地、无 API Key、低成本完成网页解析任务的团队
03

配置要求

  • 需要类 Unix shell 环境以执行官方 curl | sh 安装脚本
  • 项目二进制由 Bun 构建,但普通用户通常不需要自行安装 Bun
  • 需要能够访问目标网页或 API 的网络环境
  • 如果从源码构建,预计需要 Node.js/TypeScript/Bun 相关开发环境
  • 对于 JavaScript 重度渲染的 SPA 页面,ax 可能无法得到最终渲染后的 DOM,需要配合浏览器自动化工具
  • 解析模式下 URL 会默认缓存约 2 分钟,可用 --fresh 强制重新抓取,或 --no-cache 禁用磁盘缓存
  • 输出结果默认有数量上限,例如结果最多 50 条并在 stderr 提示,可通过参数控制输出格式和预算
04

适用场景

  • 替代 curl 获取网页或 API 响应,并始终输出状态码、headers、耗时和 body 信息
  • 通过 --outline 快速查看网页结构,避免把整页 HTML 塞进 AI 上下文
  • 通过 --locate 定位包含特定文本的 CSS selector,辅助修复选择器
  • 通过 CSS selector 和 --row 从列表页中批量提取标题、链接、价格等字段
  • 将 HTML table 自动转换为带字段名的结构化行数据
  • 将文档页面转换为 Markdown,并用 --budget 控制输出 token 数量
  • 辅助 AI Agent 执行 fetch → understand → extract 的网页处理循环
  • 在网页结构轻微变化时,比正则或一次性 Python 脚本更容易维护提取逻辑
  • 为数据清洗、竞品信息采集、文档阅读、接口调试提供轻量命令行入口
05

部署与配置

  • 使用官方安装脚本:curl -fsSL https://ax.yusuke.run/install | sh
  • 安装完成后运行 ax --help 查看完整命令行参数
  • 可运行 ax agent-context 查看面向 AI Agent 的使用说明
  • 如果使用支持 skills 的 AI Agent,可执行:npx skills add yusukebe/ax
  • 基础验证示例:ax https://example.com
  • 结构发现示例:ax https://example.com --outline
  • 结构化提取示例:ax https://example.com '.item' --row 'title=a, href=a@href'
06

风险与注意事项

  • 项目当前 star 约 300、fork 约 4,生态和社区规模仍较小
  • README 中展示的 benchmark 主要来自特定 Claude Code 场景,泛化效果需要自行验证
  • 不适合需要完整浏览器渲染、登录态、复杂 JS 执行、反爬绕过的网页采集任务
  • 依赖 HTML 结构和 CSS selector,目标网站结构大幅变化时仍需调整规则
  • 官方安装方式为 curl | sh,在企业环境中可能需要安全审计后再使用
  • 如果目标站点有访问限制、robots 协议或法律合规要求,使用者需要自行承担合规责任
  • 当前 README 暴露的信息主要集中在 CLI 使用,关于插件体系、稳定 API、长期兼容性的信息有限
  • 缓存行为虽然有提示,但在调试实时数据时需要注意 --fresh 或 --no-cache 的使用

历史记录

热榜历史快照

2026-07-13 第17名 新收录 · github_search
2026-07-12 第28名 新收录 · github_search