CLI-Anything 只能用于桌面端软件吗?如何为自己的软件生成 Agent 可用的 CLI
很多开发者第一次看到 CLI-Anything 时,会被 GIMP、Blender、LibreOffice 这些桌面软件的演示所吸引,进而产生一个自然的疑问:这个工具是不是只能用于桌面端 GUI 软件?如果我有一个 Web 服务、一套 REST API、或者一个本地运行的 AI 推理引擎,能不能也用它来生成 CLI?本文以第三人称视角,结合项目已有的 20 余个 Harness 实例,系统回答这些问题。
一、先看事实:已支持的软件远不止桌面端
打开 CLI-Anything 的 registry.json,会发现已注册的 23 个 CLI 覆盖了至少六种截然不同的软件形态:
| 软件形态 | 代表性 CLI | 后端集成方式 |
|---|---|---|
| 桌面 GUI 应用 | GIMP、Blender、Inkscape、Krita、Kdenlive、Shotcut、Audacity、MuseScore | 子进程调用真实软件的 CLI/脚本接口 |
| 办公套件 | LibreOffice | libreoffice --headless 无头模式 |
| 本地 Web 服务 | ComfyUI(AI 图像生成)、AdGuard Home(DNS 广告拦截) | REST API 调用(HTTP 请求) |
| 云端 REST API | Zoom(视频会议)、AnyGen(AI 内容生成)、Novita(AI 模型推理) | OAuth2/API Key 认证 + REST 调用 |
| 本地推理引擎 | Ollama(本地 LLM) | REST API 调用(localhost) |
| 浏览器自动化 | Browser(DOMShell) | MCP 协议(Model Context Protocol) |
| 云端 AI 服务 | NotebookLM(Google 研究助手) | 封装已有 CLI 工具 |
| 知识管理工具 | 幕布(Mubu) | 本地数据文件解析 |
| 图表工具 | Mermaid、Draw.io | 文本格式生成 + 渲染器 URL/CLI |
答案已经很明确:CLI-Anything 不是一个"桌面软件专用"工具。它的适用范围是"任何有代码库或可编程接口的软件"。
二、六种后端集成范式
通过分析这些已有的 Harness,可以归纳出六种后端集成范式。理解这些范式,就能判断自己的软件该如何接入。
范式一:子进程调用桌面软件
这是最初也是最直观的模式。CLI 生成合法的项目文件(ODF、MLT XML、SVG 等),然后通过子进程调用真实软件完成渲染和导出。
典型代表:
- LibreOffice:
libreoffice --headless --convert-to pdf - Blender:
blender --background --python script.py - Inkscape:
inkscape --actions="..." --export-filename=... - Kdenlive/Shotcut:
melt project.mlt -consumer avformat:output.mp4 - Audacity:
sox处理音频
适用场景:目标软件提供了命令行接口或脚本接口,可以在无 GUI 环境下运行。
范式二:REST API 调用本地服务
当目标软件以 Web 服务形式运行在本地时,CLI 通过 HTTP 请求与其交互。
典型代表:
- ComfyUI:向
http://localhost:8188发送工作流 JSON,轮询生成结果,下载图片。CLI 提供了workflow load、queue prompt、images download等命令。 - Ollama:向
http://localhost:11434发送推理请求。CLI 封装了model list、generate text、embed text等命令,支持流式输出。 - AdGuard Home:通过 REST API 管理 DNS 过滤规则、客户端、DHCP、统计等。CLI 提供了
filter add、clients list、stats show等命令。
适用场景:目标软件以 HTTP 服务形式运行,提供 REST API。
范式三:云端 REST API 调用
与本地服务类似,但目标是云端 API,需要处理认证(OAuth2、API Key)和网络延迟。
典型代表:
- Zoom:通过 OAuth2 认证调用 Zoom REST API,管理会议、参会者、录制。CLI 提供了
auth setup、meeting create、recording download等命令。 - AnyGen:通过 API Key 调用 AnyGen 云端 API,生成文档、幻灯片、网站。CLI 提供了
task create、task poll、task download等命令,支持异步任务轮询。 - Novita:通过 API Key 调用 OpenAI 兼容的 API 接口,访问 DeepSeek、GLM 等模型。CLI 提供了
chat、stream、models等命令。
适用场景:目标软件以云端 API 形式提供服务。
范式四:MCP 协议集成
当目标软件提供 MCP(Model Context Protocol)服务器时,CLI 通过异步 MCP 客户端与其交互。
典型代表:
- Browser(DOMShell):通过 MCP 协议与 Chrome 浏览器的无障碍树交互,将 DOM 映射为虚拟文件系统。CLI 提供了
page open、fs ls、act click、act type等命令,支持 Daemon 模式复用连接。
适用场景:目标软件提供 MCP 服务器,或者希望通过 MCP 协议集成 AI 工具。
范式五:封装已有 CLI 工具
当目标软件已经有一个 CLI 工具但不够 Agent 友好时,可以在其上层封装一个统一的、支持 JSON 输出和 REPL 的 CLI。
典型代表:
- NotebookLM:封装社区的
notebooklm-pyCLI,添加--json输出、会话管理、命令分组等 Agent 友好特性。 - MuseScore:封装
mscoreCLI,提供转调、导出、乐器管理等结构化命令。
适用场景:目标软件已有 CLI 但缺乏结构化输出、会话管理等 Agent 所需特性。
范式六:本地数据文件解析
当目标软件的数据存储在本地文件中时,CLI 直接解析和操作这些文件。
典型代表:
- 幕布(Mubu):解析幕布桌面端的本地数据文件和同步日志,提供知识管理和大纲操作的 CLI。
适用场景:目标软件的数据以文件形式存储在本地,可以直接读写。
三、判断自己的软件适不适合
基于以上六种范式,可以用一个简单的决策树来判断:
你的软件有可编程接口吗?
├── 有 CLI/脚本接口 → 范式一(子进程调用)
├── 有 REST API(本地) → 范式二(本地 REST)
├── 有 REST API(云端) → 范式三(云端 REST)
├── 有 MCP 服务器 → 范式四(MCP 协议)
├── 有已有 CLI 但不够好 → 范式五(封装增强)
├── 数据存储在本地文件 → 范式六(文件解析)
└── 以上都没有 → 需要先为软件创建可编程接口
换句话说,只要软件有某种形式的可编程接口——无论是命令行、REST API、MCP 协议、SDK 还是本地数据文件——CLI-Anything 就能为其生成 Agent 可用的 CLI。
唯一真正的限制是:如果软件只有 GUI,没有任何可编程接口,也没有可分析的源代码,那么 CLI-Anything 无法直接处理。但这种情况下,通常可以找到一个开源替代品来解决问题。
四、实操:如何为自己的软件生成 CLI
4.1 准备工作
需要准备的东西很简单:
- Python 3.10+
- 一个支持的 AI 编程工具(Claude Code、OpenCode、OpenClaw 等)
- 目标软件的源代码(本地路径或 GitHub 仓库 URL)
4.2 一行命令生成
以 Claude Code 为例:
# 从本地源码生成
/cli-anything:cli-anything /path/to/your/software
# 从 GitHub 仓库生成
/cli-anything:cli-anything https://github.com/your-org/your-software
Agent 会自动执行 7 个阶段:代码分析 → 架构设计 → 实现 → 测试规划 → 测试编写 → 文档 → 发布。
4.3 安装和使用
# 安装到 PATH
cd your-software/agent-harness && pip install -e .
# 验证安装
which cli-anything-your-software
# 查看帮助
cli-anything-your-software --help
# JSON 模式供 Agent 消费
cli-anything-your-software --json <command>
# 进入交互式 REPL
cli-anything-your-software
4.4 迭代优化
单次生成不一定覆盖所有功能。使用 /refine 命令进行增量扩展:
# 全面差距分析
/cli-anything:refine /path/to/your/software
# 定向优化特定功能
/cli-anything:refine /path/to/your/software "我需要更多批处理和导出相关的命令"
每次 refine 都是增量的、非破坏性的,可以多次运行逐步扩大覆盖范围。
4.5 验证和测试
# 按照 HARNESS.md 标准验证
/cli-anything:validate /path/to/your/software
# 运行测试
/cli-anything:test /path/to/your/software
# 手动运行测试(推荐使用 force-installed 模式)
cd your-software/agent-harness
CLI_ANYTHING_FORCE_INSTALLED=1 python3 -m pytest cli_anything/your_software/tests/ -v -s
4.6 发布到社区
如果希望将生成的 CLI 分享给社区,需要:
- 在
registry.json中添加条目:
{
"name": "your-software",
"display_name": "Your Software",
"version": "1.0.0",
"description": "简短描述 CLI 的功能",
"requires": "后端依赖(如 your-software 可执行文件)",
"install_cmd": "pip install git+https://github.com/HKUDS/CLI-Anything.git#subdirectory=your-software/agent-harness",
"entry_point": "cli-anything-your-software",
"skill_md": "your-software/agent-harness/cli_anything/your_software/skills/SKILL.md",
"category": "分类名"
}
- 向 CLI-Anything 仓库提交 PR,CLI-Hub 会自动更新。
五、不同场景的实操建议
场景一:我有一个内部 Web 后台管理系统
如果系统提供 REST API(大多数现代 Web 应用都有),可以直接用 CLI-Anything 生成 CLI。Agent 会分析 API 文档或源码,生成对应的命令分组。
建议:将 API 文档(OpenAPI/Swagger)放在源码目录中,Agent 分析时会自动参考。
场景二:我有一个 SaaS 产品,只有 API
完全适用。Zoom、AnyGen、Novita 都是这种模式。CLI 会封装认证流程(OAuth2/API Key)和 API 调用,提供结构化的命令和 JSON 输出。
建议:确保 API 文档或 SDK 源码可供 Agent 分析。
场景三:我有一个本地运行的 AI 模型服务
Ollama 和 ComfyUI 就是这种场景。CLI 会封装模型管理、推理请求、结果获取等操作。
建议:确保服务的 API 端点文档清晰,或者源码中有明确的路由定义。
场景四:我有一个 Electron 桌面应用
Electron 应用通常有 Node.js 后端,可能暴露了 IPC 接口或 CLI 参数。CLI-Anything 可以分析其源码并生成对应的 CLI。
建议:如果应用没有现成的 CLI 接口,可以先在应用中添加一个简单的命令行入口,再用 CLI-Anything 扩展。
场景五:我有一个开源项目,想让 AI Agent 能操控它
这正是 CLI-Anything 的核心场景。将源码路径或 GitHub URL 传给 /cli-anything,等待 7 阶段流水线完成即可。
建议:从 /cli-anything 开始,然后用 /refine 逐步扩展功能覆盖。
场景六:我的软件只有编译后的二进制文件
这是 CLI-Anything 的已知局限之一。/cli-anything 基于源码进行分析和生成,仅有二进制文件时,生成质量会显著下降。
建议:如果软件有 API 文档或 SDK,可以将文档作为"源码"提供给 Agent。如果完全没有可分析的材料,考虑找一个功能相近的开源替代品。
六、生成的 CLI 长什么样?
无论目标软件是什么形态,生成的 CLI 都遵循统一的结构和交互模式:
# 所有 CLI 都支持 --json 输出
cli-anything-your-software --json <command>
# 所有 CLI 都支持 --help 自描述
cli-anything-your-software --help
# 所有 CLI 都支持 REPL 交互模式
cli-anything-your-software
# 所有 CLI 都通过 pip install 安装到 PATH
pip install -e .
which cli-anything-your-software
命令分组会根据软件的领域自动设计。例如:
- 对于视频会议软件(Zoom):
auth、meeting、participant、recording - 对于 AI 图像生成(ComfyUI):
workflow、queue、models、images、system - 对于本地 LLM(Ollama):
model、generate、embed、server、session - 对于 DNS 管理(AdGuard Home):
config、server、filter、blocking、clients、stats、log、rewrite、dhcp
每个 CLI 还附带 SKILL.md 文件,使 AI Agent 能够自动发现和理解工具的全部能力。
七、总结
CLI-Anything 的适用范围远超桌面端 GUI 软件。它的核心能力是"为任何有可编程接口的软件生成 Agent 原生的 CLI",已有的 23 个 Harness 覆盖了桌面应用、本地 Web 服务、云端 REST API、MCP 协议服务、已有 CLI 封装和本地数据文件解析六种形态。
对于开发者而言,关键不是"我的软件是不是桌面端的",而是"我的软件有没有某种形式的可编程接口"。只要有——无论是命令行、REST API、MCP、SDK 还是本地文件——CLI-Anything 就能为其生成一套结构化的、支持 JSON 输出的、带 REPL 交互的、附带完整测试的 Agent 可用 CLI。
项目地址:https://github.com/HKUDS/CLI-Anything
CLI-Hub:https://hkuds.github.io/CLI-Anything/
协议:Apache 2.0
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)