想让任何图形软件直接被 AI 代理控制,而不需要手动点来点去?只要把它变成一个命令行工具,AI 就能像下指令一样调度它,省去繁琐的 UI 操作。
核心痛点
大多数 GUI 程序只能靠键鼠交互,AI 做不到“看到按钮点它”。于是大家只能自己写脚本、抓屏、甚至靠 OCR,效率低、出错多。
大家都以为的办法(误区)
- 直接把源码丢进 Python,期待自动生成 CLI。
- 只复制已有的命令行工具,忽视了状态管理和结构化输出。
- 把复杂的 GUI 逻辑硬塞进一个简单的
--help文档里。
真正的解法:从“分析‑设计‑实现‑测试‑发布”七步走
这就是 CLI‑Anything 的第一原则——把任何软件拆成七个明确阶段,每一步都产出可验证的 artefact,确保生成的命令行既能自救,又能让 AI 完全读懂。
第一阶段:代码库分析
先把目标软件的后端引擎、数据模型、已有 CLI 以及 GUI‑API 对照表给理清。比如 GIMP 用的是 GEGL,数据是 XCF;Blender 则是 bpy 脚本,数据是 .blend。把这些信息写进一份 SOP(Standard Operating Procedure)文档,后面每一步都对照这份文档。
第二阶段:CLI 架构设计
根据 SOP,划分命令组(比如 project、export),决定状态模型(统一的 JSON 项目文件),以及输出格式——默认人类友好,--json 开关提供机器读取。
第三阶段:实现
用 click 写出真正的命令行入口,加入 REPL(交互式壳)作为默认模式。关键点是:
- 全局会话对象支持 50 层撤销/重做。
- 每个子命令都兼容
--json,返回结构化数据。 - 通过
invoke_without_command=True实现空参直接进 REPL。
第四至第七阶段:测试、文档、Skill 文件、发布
测试分单元和端到端两大块,确保每个命令在合成、导出、撤销上都能通过。把结果写进 TEST.md,再用 skill_generator.py 把命令元信息抽成 SKILL.md,让 AI 能自动发现这些功能。最后用 PEP 420 的命名空间包把 CLI 打包,pip install -e . 后会自动把 cli-anything- 前缀的可执行文件放进 PATH,AI 只需要 which cli-anything- 就能找到。
为普通用户带来的好处
- 省时省力:不再手动打开软件、点菜单,直接用“一行指令”完成同样任务。
- 可靠可追溯:每次操作都有结构化日志,出错可以快速回滚。
- AI 可直接调用:任何支持调用外部命令的代理都能把这些 CLI 当成自己的“技能库”。
实战小技巧
- 先跑
/cli-anything:list --json看系统里已经有哪些可用的 CLI。 - 使用
/cli-anything:refine给已有 CLI 补齐遗漏的功能点。 - 遇到测试挂掉,先检查
click、pytest版本,确保 Python≥3.10。
下一步可以看看
之前聊过怎么在不同平台(Claude、OpenClaw 等)装插件,这里再补一本地化部署的细节,感兴趣的可以点进去继续阅读。
如果你已经尝试把某个软件转成 CLI,或者在使用过程中遇到奇怪的 bug,快在下面评论区聊聊,大家一起踩坑、一起升级!
评论 (0)