CLI-Anything:把软件变成 Agent 可用的命令行

CLI-Anything 通过为现有软件生成结构化命令行接口,让 AI Agent 能以 REPL、子命令和 JSON 输出的方式使用真实软件能力。

CLI-Anything 是 HKUDS 开源的 Agent 工具化项目,目标是把原本面向人类 GUI 操作的软件,转成 AI Agent 更容易调用的命令行接口。它不是重新实现一个简化版软件,而是围绕现有代码库和真实后端生成 CLI harness,让 Agent 可以通过稳定命令、状态会话和结构化输出来完成任务。

这个方向解决的是 Agent 使用软件时最常见的断层:GUI 自动化依赖截图、点击和坐标,容易受界面变化影响;单个 API 又经常覆盖不完整,Agent 需要自己拼接大量上下文。CLI-Anything 选择把软件能力收敛成命令行,因为命令天然适合被模型读取、组合、验证,也便于接入脚本和自动化流程。

它怎么工作

官方仓库把 CLI-Anything 描述为一套自动生成 CLI 的流水线。给它一个本地软件源码路径或 GitHub 仓库地址后,流程会分析代码结构、识别后端和数据模型,设计命令分组,再实现 CLI、测试和文档。

生成出来的 CLI 通常包含两种使用方式:一种是面向连续工作的 REPL,会保留项目状态;另一种是子命令模式,适合脚本和流水线。命令还会提供 JSON 输出,方便 Agent 直接解析结果,同时保留人类可读的格式用于调试。

官方示例里,Claude Code 插件可以这样使用:

1
2
3
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
/cli-anything <software-path-or-repo>

如果已经生成某个软件的 harness,后续使用方式会更接近普通 Python CLI:

1
2
3
4
5
cd <software>/agent-harness
pip install -e .
cli-anything-<software> --help
cli-anything-<software>
cli-anything-<software> --json <command>

适合什么场景

CLI-Anything 更适合那些“能力在真实软件里,但 Agent 不好稳定操作”的场景。例如图像、视频、音频、办公文档、3D 建模、数据分析或 AI/ML 工具链,只要项目有可分析的代码库、可调用的后端或清晰的数据模型,就有机会被包装成 Agent 可用的命令集。

它的价值不只是在命令行里多一层封装,而是把软件的关键操作变成可发现、可组合、可测试的接口。Agent 可以先通过 --help 理解能力,再用 JSON 输出接收结果,并把多个命令串成工作流。对于需要批处理、自动验证和持续迭代的任务,这比临时让 Agent 点击界面更可控。

需要注意的边界

CLI-Anything 并不等于任何软件都能立刻无成本接入。它依赖目标软件的源码、后端能力、文件格式和可测试性;如果一个软件高度封闭、关键逻辑只存在于 GUI 层,生成高质量 CLI 的难度会明显上升。

官方方法论也强调真实后端和测试验证,这意味着生成 harness 不是只写几个命令包装脚本就结束。要让它用于严肃工作,还需要确认命令覆盖范围、输出格式、依赖安装、真实软件调用和端到端测试是否可靠。更现实的用法,是先为一个明确工作流生成 CLI,再通过 refine、test、validate 等命令逐步补齐能力。

小结

CLI-Anything 的思路很直接:不要让 Agent 去适应脆弱的人类界面,而是为现有软件补上一层稳定、结构化、可测试的命令行入口。它适合想把专业软件纳入 Agent 工作流的人,也适合研究“Agent 原生软件”形态的开发者。真正落地时,重点不在于一句命令生成了多少代码,而在于生成的 CLI 是否能调用真实能力、保持状态、输出结构化结果,并经得起测试。

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计