万物皆可 CLI
很多人谈 CLI,会把它理解成“更快的操作方式”。但对 AI 来说,CLI 的意义完全不同:它不是速度工具,而是接口契约。
GUI(图形界面)是给人看的,强调“直觉”;CLI 是给机器调用的,强调“确定”。输入输出都是文本,天然可解析、可组合、可回放。只要一个设备/服务能用 CLI 或等价的文本协议描述“它能做什么”,AI 就能把它当作可编排的能力模块。
所以“万物皆可 CLI”不是让人学命令行,而是让世界多一层机器友好的契约:设备暴露最小命令集,AI 负责翻译与编排,人只保留意图与验收。
下面用一个“模拟设备 CLI + 工作流编排”把这件事讲透。
一、先把接口说清楚:设备 CLI 应该长什么样?
如果一个设备要对 AI 友好,它至少要满足三件事:
可发现(discoverable):AI 能问出“你会什么”。
可约束(constrainable):每条命令参数明确、错误明确、可幂等或可回滚。
可验收(verifiable):每次执行都有状态/日志/结果可读。
因此,一个“最小可用”的设备 CLI,建议固定四类命令:
help:列出能力、参数、例子status:返回当前状态(可用于验收/回放)set/do:执行动作(参数可校验)events/logs:输出近期事件/错误(用于排障)
下面给一个通用的“命令返回格式”示例(纯文本即可,但最好是 JSON Lines):
lamp set --on true --brightness 60
# => {"ok":true,"device":"lamp","action":"set","state":{"on":true,"brightness":60},"ts":"2026-03-15T21:00:00+08:00"}
错误也要“机器可读”:
ac set --temp 16
# => {"ok":false,"error":{"code":"OUT_OF_RANGE","message":"temp must be 18-30"}}
二、Demo:用 CLI 编排一个“复杂需求”的工作流
需求(人类输入)
“我明天早上 8:00 有个重要线上会议。请你帮我把一切准备好:
- 7:10 叫醒我(如果我昨晚睡眠差,就提前 10 分钟)
- 咖啡机做一杯浓缩
- 空调调到 24 度,窗帘拉到 70%
- 打印一页会议提纲
- 会议前 5 分钟自动打开会议链接、麦克风默认静音、摄像头打开
- 如果网络测速不达标,提前提示我切热点
我只要看到你最后的“验收清单”。 ”
假设我们有这些设备 CLI(模拟)
watch:睡眠/提醒coffee:咖啡机ac:空调curtain:窗帘printer:打印机net:网络测速meet:会议应用(或浏览器)
工作流编排(可执行脚本形态)
下面是一个“纯 CLI 的编排示例”(为了读起来清晰,我用伪 bash + JSON 输出;真实实现可以由技能/定时任务来跑):
# 0) 读取睡眠质量
sleep=$(watch sleep_score --last_night --format json)
# sleep => {"score":62,"bed":"23:58","wake":"06:45"}
wake="07:10"
if [ $(echo "$sleep" | jq -r .score) -lt 70 ]; then
wake="07:00"
fi
# 1) 设定提醒
watch alarm set --time "$wake" --label "重要会议提醒"
# 2) 并行准备(环境)
coffee brew --type espresso --strength strong
ac set --temp 24 --mode cool
curtain set --open 70
# 3) 打印会议提纲
printer print --file "/docs/meeting-brief.md" --format a4 --copies 1
# 4) 网络自检
net speedtest --min-down 50 --min-up 10 --max-latency 50
# => {"ok":false,"down":32,"up":8,"latency":65,"suggest":"use_hotspot"}
# 5) 若不达标,提醒切热点(可选:自动切换)
watch notify --title "网络不达标" --body "建议提前切热点(down=32/up=8/lat=65)"
# 6) 会前 5 分钟自动进入会议
meet schedule --time "07:55" --join_url "https://xxx" --mic muted --camera on
# 7) 输出验收清单(给人)
echo "验收清单:
- 闹钟:$wake(依据昨晚睡眠分)
- 咖啡:espresso strong(已下发)
- 环境:空调24°冷;窗帘70%(已下发)
- 打印:meeting-brief.md A4*1(已下发)
- 网络:不达标→已提醒切热点
- 会议:07:55 自动入会,麦克风静音,摄像头开启"
这里最关键的不是“这些命令真不真”,而是:一旦设备把能力暴露为可调用的文本接口,AI 就能把它们当作积木拼起来。复杂需求不再依赖“某个超级 App”,而是依赖“可组合的接口”。
三、为什么这比“装一堆 App”更接近未来?
App 的问题不是功能少,而是它对 AI 不友好:
- 操作依赖视觉与手势 → 不稳定、不可回放
- 跨 App 联动难 → 组合成本高
- 权限与日志不可见 → 不可审计、不可验收
CLI(或等价 API)则天然适合被 Agent 使用:
- 文本可解析 → 可编排
- 状态可读取 → 可验收
- 错误可结构化 → 可恢复
当越来越多设备/服务“CLI 化”,AI 才能从“会说”升级为“能做、可交付”。