我构建了一个 Bitbucket CLI——它让我相信 CLI 在 AI 代理方面胜过 MCP 服务器

发布: (2026年4月17日 GMT+8 08:49)
4 分钟阅读
原文: Dev.to

Source: Dev.to

Cover image for I built a Bitbucket CLI — and it convinced me CLIs beat MCP servers for AI agents

概览

GitHub 有 gh。GitLab 有 glab。Bitbucket Cloud 有……?
它叫 bb

基本命令

bb pr list                 # 打开 PR,最近的在前
bb pr view 42              # 详情、审阅者、状态 — 不打开浏览器
bb pr diff 42              # 原始 diff,可管道输送到 less / delta / 任意工具
bb pr merge 42             # 合并、压缩合并或快进合并
bb pipeline wait          # 阻塞直至当前构建完成

为什么 CLI 能胜过 AI 代理的 MCP 服务器

1. 工具模式在每一次交互中都会消耗上下文

MCP 服务器会把工具以 JSON schema 的形式注入模型上下文,每条消息都要这样做。十二个工具,十二个 schema,每一次交互都要消耗。CLI 只需要一次,通过 --help 广告自身,代理记住其形状。你只需要一次性支付 token,而不是永远消耗。

2. Shell 是通用的工具协议

每个代理框架——Claude Code、Cursor、Aider、Codex,以及后续的框架——都已经会运行 bash。bb pr view 42 在你安装的当天就能工作,在所有工具中都无需额外集成代码。MCP 需要一个会说 MCP 协议的客户端,这会为本来就会作为子进程运行的功能增加非平凡的耦合。

3. 组合是免费的

bb pr list --output-style ai | grep OPEN | head -5
bb pipeline latest --output-style ai | jq -r .status
bb pr diff 42 | wc -l

代理可以管道、过滤、计数、链式调用——全部使用它已经熟悉的原语。MCP 工具是封闭的函数调用;你无法 grep MCP 响应或把它管道输送到 jq。每一次切片、切块都需要新增工具或新增参数。

4. 你可以调试它

当代理出现奇怪行为时,你可以直接运行它执行的命令,看到它实际看到的输出。使用 MCP 时,代理只能看到服务器构造的结构化负载,你只能通过日志去推断到底发生了什么。

5. 分发已经解决

npm install -g @hugo-hebert/bbucket-cli,完成。无需配置文件、服务器进程、也不需要“重启编辑器让工具生效”。代理在 shell 可用的那一刻就继承了该工具。

CLI 对代理唯一的欠缺

现有的 CLI 在默认输出上做得不够好,这对模型来说很不友好,因为会出现盒子绘制字符和 ANSI 颜色。于是每个 bb 命令都有第三种模式,除了默认模式和 --json

bb pr list --output-style ai

输出(制表符分隔、无颜色、无边框):

42  OPEN    Fix auth token refresh       hugo
41  MERGED  Add env variable endpoint    sara

使用 bb option --output-style ai 将其设为默认,代理即可一次性读取输出。这就是全部适配——无需服务器、无需 schema、无需协议——只需要一种输出模式。你可以获得 MCP 服务器大部分提供的功能,却没有集成成本。

试一试

npm install -g @hugo-hebert/bbucket-cli
bb auth
bb pr list
  • 仓库:
  • 文档:

Demo

0 浏览
Back to Blog

相关文章

阅读更多 »

地球日的活力

我构建的 History 按日历天在浏览器中保存;每个部分旁边的照片是真实的捆绑图像。可选的 Gemini API 路由可以添加温暖的教练……