首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >面向Agent设计的CLI,你要注意这几件事情!

面向Agent设计的CLI,你要注意这几件事情!

作者头像
用户11563501
发布2026-06-23 12:58:01
发布2026-06-23 12:58:01
800
举报

当前,如何面向Agent设计软件成了一个新热点,比如“MCP已死,CLI当立”的标题你应该看到过。不过,如果你还见过Agent卡在某个交互式提示符前,等着按方向键或者输入"y",然后就挂住了的情形,就知道现在大多数CLI设计对Agent来说完全是死胡同。

Eric Zakariasson认为核心问题是:人类靠直觉和上下文猜东西,Agent靠pattern matching和明确的flag。他给出了几条设计建议,有助于真正对Agent有用。

非交互是底线。 如果你的CLI在执行过程中突然弹出一个提示符,Agent就死了。它没法按方向键,也没法制你在哪个时刻该输入"y"。所有输入都应该可以通过flag传递。交互模式应该作为flag缺失时的备用方案,而不是默认路径。

代码语言:javascript
复制
# 这会让Agent卡住
$ mycli deploy
? Which environment? (use arrow keys)

# 这才正常
$ mycli deploy --env staging

别一开始就把所有文档塞给它。 Agent的执行逻辑是:跑一下命令,看到子命令列表,挑一个,跑--help,拿到需要的参数,然后走人。它不需要一开始就读完所有文档。让它逐步发现。

--help里的示例比描述重要一百倍。 Agent读mycli deploy --env staging --tag v1.2.3这种具体例子,比读一大段文字描述快得多。它做的是pattern matching,不是语义理解。

代码语言:javascript
复制
$ mycli deploy --help
Options:
  --env     Target environment (staging, production)
  --tag     Image tag (default: latest)
  --force   Skip confirmation

Examples:
  mycli deploy --env staging
  mycli deploy --env production --tag v1.2.3
  mycli deploy --env staging --force

接受stdin和flag,Agent在 pipeline 里思考。 Agent的脑子里全是数据流:cat config.json | mycli config import --stdin,mycli deploy --env staging --tag $(mycli build --output tag-only)。别让奇怪位置的positional args或者缺省值时的交互提示打断这个流程。

报错就好好报,别让人猜。 缺了必要flag就立刻报错,并且给出正确的调用方式。Agent擅长自我纠正,前提是你给它一个能改的东西。

代码语言:javascript
复制
Error: No image tag specified.
  mycli deploy --env staging --tag <image-tag>
  Available tags: mycli build list --output tags

幂等性是很多人偷懒的地方。 Agent会不断重试。网络超时,context丢了一半,再跑一次同样的deploy应该返回"already deployed, no-op",而不是再造一个重复的。评论区有人说得直接:idempotency缺失是最贵的问题,Agent的重试循环里跑三十几轮,一个非幂等的命令能直接让整个pipeline崩掉。

加上--dry-run。 破坏性操作之前让Agent先preview一下,确认计划没问题再真干。

代码语言:javascript
复制
$ mycli deploy --env production --tag v1.2.3 --dry-run
Would deploy v1.2.3 to production
  - Stop 3 running instances
  - Pull image registry.io/app:v1.2.3
  - Start 3 new instances
No changes made.

$ mycli deploy --env production --tag v1.2.3
✓ Deployed v1.2.3 to production

成功时也返回点有用的数据。 deploy_id、url、duration这些机器能读的东西,比一个emoji有意义得多。

代码语言:javascript
复制
deployed v1.2.3 to staging
url: https://staging.myapp.com
deploy_id: dep_abc123
duration: 34s

有人补了一刀:结构化JSON输出应该设为默认,人类可读的表格是可选的。Agent解析pretty table里的数据能折腾出一堆regex bug。有个评论说得更狠:"CLI就是一个带字体的API,为Agent先设计。"

这波趋势很清楚:以前我们为人类造工具,以后得为人类+机器一起造。只照顾人味的界面,接下来几年会被自动化流程绕过去。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI工程化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档