CLI as Agent Interface
为什么现在是造 CLI 的最好时机
来源:J0hn,2026-04-03
二十年空白与终端文艺复兴
1995-2015 年,CLI 工具创新几乎停滞。然后 Go 和 Rust 打破了局面。
关键突破:单二进制分发
以前用 Python 写 CLI,用户得先装 Python、pip install、处理版本冲突...
Go/Rust 编译出来的是一个独立的二进制文件。一行 curl,下载,给执行权限,完事。
curl -L https://example.com/tool | tar xz
chmod +x tool
./tool
不需要运行时,不需要依赖管理,不需要 Docker。
Rust 社区重写经典 Unix 命令
| 经典命令 | 现代替代 | 改进 |
|---|---|---|
| grep | ripgrep | 快 10 倍,默认递归,自动跳过 .gitignore |
| cat | bat | 语法高亮,行号,Git diff 标记 |
| ls | eza | 彩色输出,树形视图,Git 状态 |
| find | fd | 语法更直觉,默认忽略隐藏文件 |
| cd | zoxide | 记住常去目录,模糊匹配 |
Agent 让 CLI 成为软件入口
钉钉、飞书等大厂亲自下场做 CLI。
原因:CLI 是 Agent 的终局接口。Agent 不需要 GUI,它需要结构化的命令和输出。
OpenCLI:Agent 的 Emacs
来源:OpenCLI,2026-04-05
核心范式
万物皆可 CLI。网站、Electron 应用、本地工具 —— 所有外部交互都被统一到一个可编程的命令行环境中。
Agent 可以自由发现、调用、组合、修复,甚至创造新的命令。
与 Emacs 的类比
| 特性 | Emacs | OpenCLI |
|---|---|---|
| 核心哲学 | 万物皆可 Elisp | 万物皆可 CLI |
| 安装方式 | 放入 ~/.emacs.d/ |
放入 ~/.opencli/clis/ |
| 生效时机 | require/autoload | 文件落盘即自动注册 |
| 原语 | buffer、text、command | args、columns、format |
Agent 使用示例
# Agent 只需知道这一行,不需要知道背后的 Wbi 签名和 Cookie 处理
opencli bilibili search "Rust 教程" --limit 10 -f json
复杂性被插件封装,暴露出来的是干净的命令接口。
关联
- product-trends/overview — Product Trends 总览
- product-trends/agent-native-architecture — Agent-native 架构
- harness-engineering/overview — CLI 是 Harness 的一部分
Tools
expect-cli
终端交互自动化 CLI 工具。
基本信息
安装: npx expect-cli@latest
类型: CLI工具
用途: 终端交互自动化和测试
安装使用
# 初始化
npx expect-cli@latest init
# Web 使用
npx expect-cli@latest
AI Agent应用场景
自动化测试
- 自动化 CLI 工具交互测试
- 模拟用户输入进行端到端测试
- 验证命令行应用行为
Agent 工作流
- 自动化需要交互的命令行流程
- 批量处理需要确认的脚本
- 无人值守的自动化任务
相关资源
- 类似工具: expect (Linux 经典工具)
评估状态
- 已安装测试
- 已集成到工作流
- 已用于实际项目
CLI for Agent
来源:@ericzakariasson 仓库:https://github.com/cursor/plugins/tree/main/cli-for-agent 收藏:3,176
核心问题
大多数CLI是为人类设计的:
- 交互式提示
- 模糊错误信息
- 无示例帮助
Agent使用时会被卡住或解析失败。
7条Agent友好CLI设计原则
1. 非交互优先
所有输入都能通过flag传入,交互模式只作为fallback。
2. 按需发现文档
不要一次性dump所有文档,让Agent逐层--help探索。
3. --help必须有示例
Agent靠模式匹配,示例比描述有效10倍。
4. 支持flag和stdin
Agent思维是管道,要能链式调用。
5. 快速报错且可操作
缺少flag立即报错并展示正确调用方式。
6. 幂等性
Agent会重试,同一命令执行两次应返回"已完成,no-op"。
7. --dry-run
让Agent先预览再执行破坏性操作。
额外建议
--yes/--force:跳过确认- 可预测的命令结构:如果学会
mycli service list,应该能猜到mycli deploy list - 成功时返回数据:显示部署ID和URL,表情符号不是必须的
应用场景
- 构建新的CLI工具
- 重构现有CLI
- 编写子命令帮助文档
- 审查现有工具是否会阻塞Agent
项目中的检查清单
任何暴露给Agent调用的CLI工具(obsidian CLI、gog、podwise等)都应对照检查:
- 确保所有参数都有flag版本
- 错误信息要包含正确调用示例
- 破坏性操作加
--dry-run