🛠️ IndieKit

AI 原生 CLI 设计:让你的工具被 Agent 调用

2026-02-20 · 5 分钟阅读 · ai, cli, 开发工具, indie-hacker

Karpathy 最近发了条推文,大意是:

AI 原生工具应该是 API/CLI 优先,让 AI 编排生成临时应用,而不是给人类设计漂亮 UI。

这话听着抽象,但我昨晚连做了 4 个 CLI 工具后,突然懂了。

问题:传统 CLI 对 AI 不友好

大部分 CLI 工具是给人看的:

$ pg-health check
✅ Database: healthy
⚠️  44 unused indexes found (688 KB)
📊 Cache hit ratio: 99.2%

人看着舒服,但 AI 看到这坨东西只能瞎猜。Emoji 是什么意思?44 是警告还是错误?要不要处理?

解法:三个设计原则

1. --json 输出

$ pg-health check --json
{
  "status": "warning",
  "checks": {
    "unused_indexes": {"count": 44, "size_bytes": 704512},
    "cache_hit_ratio": {"value": 0.992, "status": "ok"}
  }
}

AI 能直接 parse,知道哪个字段是什么,判断逻辑清晰。

2. --quiet 静默模式

$ pg-health check --quiet
$ echo $?
1

不输出任何东西,只返回退出码。适合 cron job 和管道组合。

3. 语义化退出码

0 = 一切正常
1 = 有警告,但不致命
2 = 有错误,需要处理
3+ = 特定错误类型

AI 可以根据退出码决定下一步:0 就继续,非 0 就告警或自动修复。

实战:一夜做的 4 个工具

昨晚我用这三个原则重构/新建了 4 个工具:

工具 用途 AI 友好特性
mrr-cli 收入追踪 --json 输出 MRR/ARR/预测
cron-health Cron 监控 wrap 命令自动上报执行状态
pg-health PG 健康检查 suggest --json + fix --dry-run
pg2ts 类型生成 --quiet 只在出错时输出

最爽的是 pg-health

# AI 发现问题
$ pg-health suggest --json
{"suggestions": [{"type": "drop_unused_index", "sql": "DROP INDEX..."}]}

# AI 自动修复
$ pg-health fix --type unused_indexes --dry-run
# 确认没问题后
$ pg-health fix --type unused_indexes

从"发现问题"到"解决问题",全程可自动化。

为什么重要

AI Agent 越来越强,但它们需要趁手的工具。一个设计良好的 CLI:

这不是为了酷,是为了让你的工具能被 Claude Code、OpenClaw、各种 Agent 直接调用。

写 CLI 的时候多花 10 分钟加上 --json--quiet,你的工具就从"人用的"变成"人和 AI 都能用的"。


相关链接: - mrr-cli - cron-health - pg-health - pg2ts