火爆外网的 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 个命令sync、search、sql、tail、mentions、members……就这些。结果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-triptoken 哗哗地烧遇到没有公开 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-presslatest # 克隆技能文件配合 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 写的 gogcliGoogle 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 层以上才是真正的价值所在。一旦数据落在本地 SQLitecompound 查询就成为可能——这是任何无状态 API 包装器永远做不到的事情。本地优先数据层Printing Press 生成的每个高质量 CLI都带有一套完整的本地数据层领域特定的 SQLite 表不是 JSON blob是真正的关系型结构FTS5 全文搜索索引带游标追踪的增量同步直接 SQL 查询接口这意味着什么看一个 Linear 的真实 Demo$ /pp-linear sql blocked issues whose blocker hasnt 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 8d50 毫秒。本地完成。关键是 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 更适合 AgentCLI 的 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 文件--harDevTools 导出的 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 5Live 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-goatKayak Google Flights 双数据源一条命令搞定长途航班搜索体育espn-pp-cli17 个体育项目实时比分、系列赛状态、伤病报告生产力linear-pp-cli50ms 复合查询、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 正在悄悄胜出。原因很简单分发成本最低单一静态二进制go install一行Agent 可以动态自安装。并发模型刚好够用协程 channel 处理并发 sync 任务不过度设计。SQLite 生态成熟go-sqlite3、modernc/sqlite本地优先架构的标准搭档。工程师接受度高Agent 调用的工具背后的人类也要维护Go 的可读性是优势。更深层的洞察是AI Agent 需要的不是最强的工具而是最可靠、更好用的工具。打 5 分的输出稳定输出胜过偶尔打 9 分但不可预测的输出。Go 的 CLI 恰恰提供了这种可靠性。而 CLI Printing Press把这套哲学变成了一条流水线。如果你也在构建 AI Agent或者正在为 Agent 寻找合适的工具层这个项目值得花半小时认真研究一下。它解决的问题可能比你意识到的还要根本。参考资料项目地址github.com/mvanhorn/cli-printing-press官网printingpress.devCLI 库仓库github.com/mvanhorn/printing-press-libraryX热搜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 的实战之旅。