乐于分享
好东西不私藏

为AI智能体设计CLI工具的经验

为AI智能体设计CLI工具的经验

作者: eric zakariasson (@ericzakariasson) 时间: 2026年3月25日


如果你观察过智能体使用CLI,肯定见过它在交互式提示符前卡住,或者对着没有示例的帮助页面发呆。大多数CLI都是假设键盘前坐的是人类。以下是我总结的一些让CLI对智能体更友好的做法:

避免交互式提示如果CLI在执行中途弹出提示,智能体就卡住了。它不会按方向键,也没法在恰当时机输入”y”。所有输入都应该能通过flag传递。交互模式只作为flag缺失时的fallback,而不是主要路径。

别把文档一股脑倒出来智能体先运行mycli,看到子命令,选一个,再运行mycli deploy --help获取需要的信息。不会浪费上下文在不会用到的命令上。让它按需发现。

让–help真正有用每个子命令都要有–help,每个–help都要包含示例。示例才是重点。智能体从mycli deploy --env staging --tag v1.2.3这种例子中pattern match的速度,比读描述快得多。

所有操作都支持flag和stdin智能体习惯pipeline。它们想链式执行命令,在工具间pipe输出。别要求奇怪的positional args顺序,也别在值缺失时fall back到交互式提示。

快速失败,给出可执行的错误如果required flag缺失,别hang住。立即报错并展示正确的调用方式。只要你给点东西,智能体很擅长自我纠正。

命令要幂等智能体会不断重试。网络超时、任务中途丢失上下文。同样的deploy跑两遍应该返回”already deployed, no-op”,而不是创建重复项。

破坏性操作加–dry-run智能体应该在真正执行deploy或deletion前能预览会发生什么。让它验证计划,然后再正式跑。

–yes / –force跳过确认人类看到”are you sure?”,智能体传–yes绕过去。安全路径作为默认,但允许绕过。

命令结构要可预测如果智能体学会了mycli service list,它应该能猜出mycli deploy listmycli config list。选定一个模式(resource + verb),到处都用它。

成功时返回数据展示deploy ID和URL。Emoji cute,但不是必需的。


如果你在为智能体构建CLI,这些模式能省很多调试时间。大部分工作只是把人类隐式理解的变成显式约定。

肯定还有很多我漏掉的,欢迎补充!


原文互动数据: ❤️ 1546  👁 338044  🔁 134  🔖 2753