当前位置: 首页 > news >正文

火爆外网的 Go 开源神器 CLI Printing Press:一键生成 Agent 专属 CLI 工具

大家好,我是Tony Bai。

近日,一个名叫 cli-printing-press 的开源项目冲上了 X.com 热搜。它用 Go 写成,解决的是 AI Agent 时代最隐秘、也最致命的痛点——工具不够用,更不好用。

先说一个反常识的故事

Discord 有 300 多个官方 API 端点。

按常理,一个覆盖所有端点的 CLI 工具,应该是最好用的那个。但事实恰恰相反。

OpenClaw 之父 Peter Steinberger 用 Go 写了一个叫 discrawl 的工具,只提供 11 个命令:syncsearchsqltailmentionsmembers……就这些。结果?700多 颗 GitHub Star,社区口口相传,被无数 AI Agent 开发者列为必装工具。

为什么一个"阉割版"打败了"全功能版"?

因为 Steinberger 看到了 Discord API 设计者自己都没意识到的东西:聊天记录不只是聊天,它是一个组织的知识库。

每一条消息线程,本质上都是一份可以被归档、被索引、被本地全文搜索的文档。那 11 个命令,围绕的就是这个洞察。300 个端点包装器,做不到这一点。

CLI Printing Press,就是一台把这种洞察自动化的“机器”。

AI Agent 的"工具饥渴"时代

在聊这个工具之前,我们需要先理解 2026 年的 AI 开发现状。

Claude Code、Codex、OpenClaw、Gemini CLI等 AI Agent 的能力已经突飞猛进。它们可以写代码、查数据、做分析、自主决策。但有一个瓶颈正在成为所有人的噩梦:现有的 CLI 工具,根本不是为 Agent 设计的。

想象一下 Agent 在调用一个普通 CLI 时会遇到什么:

  • 输出格式不稳定,有时是表格,有时是纯文本,Agent 根本无法可靠地解析;

  • 没有类型化退出码,出了错要去解析 stderr 的文字才能知道是认证失败还是网络超时;

  • 每次查询都要远程 API 调用,一个复合问题需要十几次 round-trip,token 哗哗地烧;

  • 遇到没有公开 API 文档的网站(比如 ESPN、Google Flights),完全束手无策。

CLI Printing Press 项目 README 开篇就把这个痛点说得很直白:"在 AI Agent 的世界里,没有什么比时间和金钱更宝贵——落到工程层面,就是速度和 token 消耗。一个设计优良的 CLI 是 Agent 的肌肉记忆:不用翻文档,不走弯路,不浪费 token。"

CLI Printing Press,就是为了解决这个问题而生的。

它到底是什么?

用一句话描述:

CLI Printing Press 是一台 CLI 工厂。给它一个 API 地址(或者任意一个网站),它输出一个专门为 AI Agent 设计的 Go CLI 工具 + MCP 服务器 + Claude Code Skill。

安装方式极其简单(Go需要>=1.26版本):

# 安装工厂本体 go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest # 克隆技能文件(配合 Claude Code 使用) git clone https://github.com/mvanhorn/cli-printing-press.git # 在 Claude Code 中启动,直接加载skill claude --plugin-dir .

然后在 Claude Code 中,一条命令就能启动生产流程:

/printing-press Notion # 给 Notion API 生成 CLI /printing-press https://espn.com/nba # 直接指向网站,无需 API 文档

为什么选 Go?

这是一个值得细聊的设计决策。

在这个 TypeScript、Python 等生产力语言大行其道的时代,CLI Printing Press 选择了 Go,并且坚定地把 Go 作为所有生成产物的语言。原因很现实:

第一,分发极其简单。go install一行命令,跨平台,无依赖。Agent 在运行时动态安装工具,最怕的就是依赖地狱。Go 的静态编译二进制文件是最优解。

第二,Go 已经被实践证明。Peter Steinberger 用 Go 写的 gogcli(Google Workspace CLI)拥有 7000+ Star,而 Google 官方之后推出的 Rust 版本,一周冲到 1 万 Star,却在社区中败给了前者。一个用户的评价是:"我 100% 偏好 gogcli,因为它就是能让 Agent 做到它需要做的事。"广度没能打败深度,Rust 没能打败 Go。

第三,Go 的并发模型非常适合 Agent 的使用场景。SQLite 批量事务、并发 sync worker、FTS5 全文索引……这些都是 Agent 高频调用场景下的性能关键路径,Go 处理起来得心应手。

核心机制:它如何做到的?

每个 API 都有非显见身份(Non-Obvious Insight)

这是整个项目最有哲学深度的设计。

Printing Press 在生成任何 CLI 之前,都要先找到这个 API 的"非显见洞察"(NOI),一句话的格式:

"[API] 不只是 [显而易见的功能]。它是 [非显见的东西]。每个 [数据点] 都是关于 [隐藏真相] 的信号。"

几个例子,读完你可能会有点震撼:

API

表面认知

真实身份

Discord

聊天软件

可搜索知识库。每条消息线程都是机构记忆。

Linear

任务追踪工具

团队行为观测站。每个状态变更都是你的团队实际运作方式与自我认知之间的差距信号。

Stripe

支付处理器

业务健康监测仪。每次失败收费和用户流失,都是 PMF 的信号。

GitHub

代码托管平台

工程文化指纹。每次 Review 周转和合并模式,都是团队交付方式的信号。

Notion

文档编辑器

知识衰减探测器。每个过期页面和孤立数据库,都是团队遗忘了什么的信号。

这个 NOI 是整个 CLI 的创意 DNA。如果 AI 在研究阶段写不出一个 NOI,说明研究深度不够,Phase 0 不会放行。

五层创造力梯子

大多数工具停在第 1 层。Printing Press 直接爬到第 5 层。

第 1 层:API 端点包装命令 ← 99% 的生成工具止步于此 第 2 层:输出格式 (--json, --csv) 第 3 层:本地持久化 (sync, search, SQLite) 第 4 层:领域分析 (stale, orphans, load) ← discrawl 的水准 第 5 层:行为洞察 (health 综合评分, similar 重复检测) ← 目前无人到达

第 3 层以上,才是真正的价值所在。一旦数据落在本地 SQLite,compound 查询就成为可能——这是任何无状态 API 包装器永远做不到的事情。

本地优先数据层

Printing Press 生成的每个高质量 CLI,都带有一套完整的本地数据层:

  • 领域特定的 SQLite 表(不是 JSON blob,是真正的关系型结构)

  • FTS5 全文搜索索引

  • 带游标追踪的增量同步

  • 直接 SQL 查询接口

这意味着什么?看一个 Linear 的真实 Demo:

$ /pp-linear sql 'blocked issues whose blocker hasn't moved in 7 days'

背后执行的是:

SELECT i.identifier, i.title, age(now(), b.updated_at) AS stuck FROM issues i JOIN issue_relations r ON r.issue_id = i.id JOIN issues b ON b.id = r.related_issue_id WHERE r.type = 'blocked_by' AND b.state = 'in_progress' AND b.updated_at < now() - interval '7 days';

结果:

ENG-412 Crash on cold-start blocked 11d ENG-388 Reconnect dropped sockets blocked 9d ENG-301 Backfill missing rows blocked 8d

50 毫秒。本地完成。关键是 Linear 的官方 API 无法回答这个问题。

Agent-Native 设计哲学

这是 Printing Press 和普通 CLI 生成工具最根本的区别。每一个生成出来的 CLI,都内置了以下设计:

  • 自动 JSON 输出:终端里显示人性化表格,管道传输时自动切换为 JSON,无需--json标志。

  • --compact 模式:只返回高重力字段(id、name、status、时间戳),减少60-80%的 token 消耗。

  • --dry-run 安全探索:让 Agent 在不执行副作用的情况下验证命令逻辑。

  • 类型化退出码

- `0` = 成功 - `2` = 用法错误 - `3` = 资源未找到 - `4` = 认证失败 - `5` = API 错误 - `7` = 速率限制

Agent 读一个退出码就知道下一步怎么做,不需要解析错误文字,自我纠正只需一次重试。

为什么 CLI 比 MCP 更适合 Agent?

CLI 的 token 消耗比 MCP tool definition 少 100 倍。LLM 本来就在 shell 交互上训练过。退出码 0 = 完成。--json | jq是一流的组合模式。

这套设计哲学有一句精辟的总结:"Agent-native 设计,就是认真对待 CLI 设计 的结果。"

无 API 文档?浏览器嗅探搞定

ESPN 没有官方 API。Google Flights 没有公开文档。Dominos 也没有。

Printing Press 的解法:启动一个浏览器,你正常点击浏览,它在后台抓取所有 HTTP 流量,逆向工程出 API 结构,自动生成 OpenAPI spec,然后继续走后面的生成流程。

三种输入模式,覆盖所有场景:

  • --spec:直接提供 OpenAPI spec 文件

  • --har:DevTools 导出的 HAR 流量包

  • 直接 URL:交给浏览器嗅探

工厂流水线,一次生成,双接口输出

每次运行 Printing Press,整个流程分阶段进行:

  • Phase 0:解析 & 复用(1-3 分钟)

  • Phase 1:研究简报 — API 身份、竞争对手、数据层、产品论点(5-10 分钟)

  • Phase 1.5:生态吸收门 — 目录化每个 MCP/skill/CLI 的功能,生成吸收清单(5-10 分钟)

  • Phase 1.7:浏览器嗅探门(2-5 分钟)

  • Phase 2:生成 Go CLI + MCP 服务器(1-2 分钟)

  • Phase 3:构建 GOAT — 吸收所有功能 + 超越命令(10-20 分钟)

  • Phase 4:发货检查 — Dogfood + 验证 + 质量评分(3-8 分钟)

  • Phase 5:Live Smoke Test(可选)(2-5 分钟)

Printing Press产出的不是一个,而是两个可用工具:

一个 spec 进去 → <api>-pp-cli Cobra CLI,供 Claude Code / Codex / shell 调用 → <api>-pp-mcp MCP 服务器,供 Claude Desktop / Cursor / Windsurf 使用

两者共享同一个internal/client、同一个internal/store、同一套认证逻辑。零代码重复,一套实现,双场景覆盖。

质量不靠玄学,靠四项机械验证

生成出来的 CLI 质量如何保证?Printing Press 用了一套两层 100 分制评分系统,加四项机械化验证。

第一层(基础设施,50分):检查骨架是否正确——输出模式、认证流程、错误处理、Agent-Native 标志、终端 UX、README、Doctor 命令、本地缓存。

第二层(领域正确性,50分):检查代码是否真的能跑——生成的 URL 路径是否存在于 OpenAPI spec、认证格式是否和 spec 一致、SQLite 数据管道是否正确连通、是否有死代码和悬挂函数。

Grade A = 85 分以上。两层都过,才算合格。

四项行为证明(Proof of Behavior):

  • 路径证明:所有生成的命令 URL 都存在于 OpenAPI spec

  • 标志证明:所有注册的 flag 都被至少一个命令引用

  • 管道证明:每个 SQLite 表都有 WRITE 路径(sync)和 READ 路径(search/query)

  • 认证证明:认证头格式和 spec 的 securitySchemes 匹配

任何一项证明失败,会触发自动修复流程,重新验证。

已打印的 CLI 库:45 个开箱即用

不想自己生成?官方已经打印好了 45 个 CLI,覆盖主流场景:

  • 旅行:flight-goat(Kayak + Google Flights 双数据源,一条命令搞定长途航班搜索)

  • 体育:espn-pp-cli(17 个体育项目,实时比分、系列赛状态、伤病报告)

  • 生产力:linear-pp-cli(50ms 复合查询)、slack-pp-cli、cal-com-pp-cli

  • 电商:ebay-pp-cli(真正的狙击竞价)、craigslist-pp-cli(历史价格对比、骗局评分)

  • 房产:redfin-pp-cli(内部 Stingray API 嗅探,$/sqft 净 HOA 排名)

  • 美食:dominos-pp-cli(本地最优套餐叠加,这是 Dominos 官网没有的功能)

安装方式同样极简:

# 一键安装入门四件套 npx -y @mvanhorn/printing-press install starter-pack # 安装指定工具 npx -y @mvanhorn/printing-press install espn sentry linear

两个 CLI 协同工作的真实场景

Printing Press 最打动人的地方,是多个 CLI 可以在同一个 Claude 对话中协同工作。

场景:我想去看 OKC 的季后赛,怎么买最便宜的机票?

$ /pp-espn nba okc round 2 game 1 + /pp-flightgoat sea-okc, fly-in same day

两个 CLI,一次对话:

  • espn-pp-cli拉取实时数据:OKC 刚以 131-122 赢了凤凰城,第二轮第一场预计在 5 月 9 日或 10 日

  • flightgoat-pp-cli立刻查询:西雅图飞俄克拉荷马城,当天往返

  • 结果:西南航空 $437 往返,推荐 Wanna Get Away+ 可退款票,Frontier 的那班到得太晚,跳过

这不是 Demo,这是真实运行的输出。两个工具各司其职,一个 Agent 对话完成端到端决策。

写在最后:Go 为什么在 AI 时代逆袭

CLI Printing Press 的出现和走红,其实折射出一个更大的趋势。

Rust 以性能和安全著称,Python 以生态和易用性著称,但在 AI Agent 工具这个细分赛道,Go 正在悄悄胜出。原因很简单:

  1. 分发成本最低:单一静态二进制,go install一行,Agent 可以动态自安装。

  2. 并发模型刚好够用:协程 + channel 处理并发 sync 任务,不过度设计。

  3. SQLite 生态成熟:go-sqlite3、modernc/sqlite,本地优先架构的标准搭档。

  4. 工程师接受度高:Agent 调用的工具,背后的人类也要维护,Go 的可读性是优势。

更深层的洞察是:AI Agent 需要的不是最强的工具,而是最可靠、更好用的工具。打 5 分的输出稳定输出,胜过偶尔打 9 分但不可预测的输出。Go 的 CLI 恰恰提供了这种可靠性。

而 CLI Printing Press,把这套哲学变成了一条流水线。

如果你也在构建 AI Agent,或者正在为 Agent 寻找合适的工具层,这个项目值得花半小时认真研究一下。它解决的问题,可能比你意识到的还要根本。

参考资料

  • 项目地址:github.com/mvanhorn/cli-printing-press

  • 官网:printingpress.dev

  • CLI 库仓库:github.com/mvanhorn/printing-press-library

  • X热搜:https://x.com/i/trending/2052445800421015770


👇 今日互动探讨:

看完这款“CLI 印刷机”,你觉得在 AI 时代,传统的 RESTful API 是否已经走到了尽头?你最想为哪个原本没有 API 的网站“打印”一个专属工具 ?

欢迎在评论区分享你的脑洞!


如果本文对你有所帮助,请帮忙点赞、推荐和转发

点击下面标题,干货!

- “我把公司卖了,却感觉一无所有”:OpenClaw 之父 TED 亲述如何靠 AI 重获新生

- 聊聊为什么我要花这么大精力,带大家手写 Agent Harness?

- 告别单打独斗!Claude Code 全新“Agent Team”模式:当 AI 开始组队干活

- 为什么人人爱 Rust,但 RedMonk 榜单却给它泼了一盆冷水?

- REST 已老,AI 时代的智能体需要怎样的 API?

- Go 1.26 中值得关注的几个变化:从 new(expr) 真香落地、极致性能到智能工具链

- 从“Vibe-Coding”到“Agentic Engineering”:Andrej Karpathy 的 AI 时代程序员生存法则


🔥 还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏《从0 开始构建 Agent Harness》将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理

  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw

  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线

  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估

  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码👇,开启从 0 开始构建Agent Harness 的实战之旅。

http://www.jsqmd.com/news/797246/

相关文章:

  • 生信数据格式,是否该为人工智能重新设计了
  • Spring Boot脚手架:快速构建企业级Java后端应用
  • 国产吨桶厂家核心生产能力大拆解——从吹塑设备到品控实验室(2026年5月) - 品牌推荐大师1
  • 2026年江苏电动破碎阀与水泥块料破碎机采购指南:凯德斯智能防堵塞解决方案深度评测 - 年度推荐企业名录
  • 3种方法打造企业级Windows Syslog监控系统
  • 手把手教你用 RAG 技术实现长视频智能问答系统
  • InvestorFinder 技术架构深度解析:VC 合伙人真实投资行为数据挖掘与精准匹配底层实现
  • FanControl终极指南:3步实现Windows风扇静音与性能的完美平衡
  • 深圳净水滤芯品牌测评:芯状元 —— 冠军品质的高性价比平替之选 - 中媒介
  • 5个维度解析:如何用LeagueAkari重塑你的英雄联盟游戏效率
  • 品牌推荐|2026广州晶石压电石英传感器,品质靠谱适配多行业需求 - 品牌速递
  • 第60篇:Vibe Coding时代:LangGraph 平台化落地总结,构建从个人助手到团队级 AI Coding 平台的完整路线
  • 2026 西安综合职业高中择校参考:西安第四联合职业中学办学全览 - 深度智识库
  • 2026届学术党必备的六大AI学术网站实测分析
  • Redis--高并发问题:缓存穿透、缓存击穿、缓存雪崩与数据库缓存双写不一致
  • 2026年5月卡地亚官方维修保养服务全面升级通知 - 速递信息
  • 六西格玛备考笔记怎么做? - 众智商学院官方
  • 零代码基础也能搞定!用Gitee Pages+现成模板5分钟搭建个人主页/作品集
  • AI Agent配置生成器实战:从原理到应用,快速构建智能体工作流
  • 告别SD卡!用FlashDB在STM32片上Flash存数据,实测资源占用与性能
  • 深圳招商加盟行业洞察 汽车典当赛道合规化发展 优质企业成创业优选 - 深度智识库
  • 1627D
  • 145.二叉树的后序遍历
  • 如何快速将B站缓存视频转换为MP4格式:m4s-converter终极指南
  • 2026年重庆代理记账优选排名|本土靠谱财税服务商口碑深度测评 - 品牌种草官
  • 2026年泉州留学中介机构前十评价,资质正规机构选择参考 - 速递信息
  • 2025届毕业生推荐的十大AI写作工具解析与推荐
  • 2026届毕业生推荐的六大AI辅助论文平台推荐榜单
  • 2026年4月做得好的不锈钢链板公司推荐,不锈钢链板/乙型网带/紫外线杀菌机/不锈钢网带,不锈钢链板厂家选哪家 - 品牌推荐师
  • Companion:智能项目仪表盘,一键解析技术栈与自动化开发流程