CLI-Anything:让我们的软件更容易被 AI Agent 使用
面向对象:产品、研发、平台、解决方案团队 资料来源:HKUDS/CLI-Anything 仓库,核对时间:2026-05-28 仓库地址:https://github.com/HKUDS/CLI-Anything
一句话说明
CLI-Anything 的核心想法很直接:把原本主要给人点按钮、拖拽、看界面的软件,包装成 AI Agent 可以稳定调用的命令行工具。这样 Agent 不需要“看懂界面”,而是通过明确的命令、参数和 JSON 输出去完成任务。
可以把它理解成“给软件加一层 Agent 可用的遥控器”。
它解决的是什么问题
今天很多软件天然是给人使用的:用户打开界面、点击菜单、修改配置、导入导出文件。AI Agent 要操作这类软件时,通常有三种困难:
-
图形界面对 Agent 不稳定:按钮位置、弹窗、主题、分辨率变化都会影响操作。
-
软件能力不容易被发现:Agent 很难知道某个软件到底支持哪些功能、每个功能怎么调用。
-
输出不利于自动判断:界面上的结果适合人看,但不适合程序自动校验是否成功。
CLI-Anything 的思路是把这些能力整理成命令行:
-
用
--help让 Agent 自动发现能力。 -
用结构化参数表达操作意图。
-
用 JSON 输出表达执行结果。
-
用测试和真实后端验证,保证生成结果不是“看起来成功”,而是真的可用。
仓库主要包含什么
1. CLI-Hub:CLI 的安装和发现入口
CLI-Hub 是一个类似“CLI 应用商店”的入口。用户或 Agent 可以通过命令浏览、搜索、安装、更新、卸载 CLI。
常见命令包括:
pip install cli-anything-hub cli-hub list cli-hub search image cli-hub info gimp cli-hub install gimp cli-hub launch gimp
仓库当前登记了两类 CLI:
|
类型 |
数量 |
说明 |
|---|---|---|
|
CLI-Anything 自建/社区 harness |
64 |
针对具体软件封装的 Agent 可调用 CLI |
|
公共 CLI |
16 |
第三方或官方 CLI,由 CLI-Hub 统一管理 |
2. Agent Harness:把软件变成 CLI 的方法论
仓库提供了一套标准流程,用来把一个现有软件封装成 Agent 可操作的 CLI。它不是简单写几个脚本,而是强调“真实软件集成 + 可测试 + 可发布”。
核心流程可以概括为 7 个阶段:
-
分析代码库:找到核心逻辑、数据模型、文件格式和已有后端工具。
-
设计 CLI 架构:规划命令分组、状态管理、JSON 输出和交互模式。
-
实现 CLI:基于 Python Click 构建命令、REPL、会话、撤销/重做等能力。
-
规划测试:先写 TEST.md,明确单元测试和端到端测试范围。
-
编写测试:覆盖核心逻辑、命令调用、真实文件生成和真实软件后端。
-
写入测试结果和文档:记录执行结果、覆盖范围和限制。
-
打包发布:生成可安装包,并让命令进入 PATH。
仓库还包含一个 Phase 6.5:自动生成 SKILL.md。它的作用是让 Agent 知道这个 CLI 什么时候该用、怎么安装、有哪些命令、如何处理输出和错误。
3. 已支持的软件类型很广
CLI-Anything 已经覆盖了很多类型的软件和系统,包括:
|
方向 |
示例 |
|---|---|
|
图像与设计 |
GIMP、Krita、Inkscape、Blender、FreeCAD |
|
文档与办公 |
LibreOffice、Calibre、Zotero |
|
视频与音频 |
Kdenlive、Shotcut、OpenScreen、Audacity |
|
自动化与开发 |
n8n、PM2、WireMock、LLDB |
|
AI 与知识工具 |
Ollama、ComfyUI、NotebookLM、Novita |
|
通讯与平台 |
Zoom、Feishu/Lark CLI 等 |
这些例子说明它不只适合“开发者工具”,也适合多媒体、办公、创作、数据处理、自动化平台等复杂软件。
它的关键设计思想
CLI 是人和 Agent 都能理解的接口
相比图形界面,CLI 有几个天然优势:
-
命令文本适合大模型生成。
-
参数结构清晰,便于组合成工作流。
-
--help可以自描述,Agent 能主动学习。 -
JSON 输出方便程序判断成功、失败和后续动作。
-
命令可以被测试、记录、复现和审计。
不是“绕过软件”,而是调用真实软件
CLI-Anything 强调真实后端集成。例如封装 LibreOffice 时,不只是生成一个中间文件,而是要调用真实 LibreOffice headless 导出,并校验 PDF、DOCX、XLSX 等结果是否真的有效。
这点对我们很重要:如果未来用于自己的软件,不能只做一个演示型 wrapper,而要接到真实业务能力、真实数据模型和真实权限体系上。
Agent 需要的不只是命令,还需要“说明书”
SKILL.md 是给 Agent 看的使用说明。它通常包含:
-
什么时候应该使用这个 CLI。
-
安装前提和环境要求。
-
命令分组和示例。
-
推荐使用 JSON 输出。
-
常见错误和处理方式。
-
哪些操作危险、需要确认。
这相当于给我们的软件补一份“Agent 使用手册”。
可以怎么用于我们自己的软件
适合优先接入的场景
如果我们的软件里有以下能力,就很适合参考 CLI-Anything 的方式封装:
|
场景 |
适合原因 |
|---|---|
|
批量处理 |
Agent 可以自动跑大量重复任务,例如批量导入、导出、转换、审核 |
|
后台配置 |
比 GUI 更适合用命令表达,例如创建项目、修改规则、启停任务 |
|
内容生成 |
Agent 可以调用软件生成文档、图表、素材、报告、配置文件 |
|
数据查询与分析 |
JSON 输出可直接进入下一步推理或报表生成 |
|
运维和排障 |
命令可记录、可复现、可审计,适合排查问题 |
|
工作流自动化 |
多个命令可以串联成完整业务流程 |
我们可以做的第一版目标
建议不要一开始就追求“把整个软件都变成 CLI”。更现实的做法是选 3 到 5 个高价值工作流做 MVP。
一个合适的第一版 CLI 可以包含:
-
status:查看当前服务、配置、登录态或项目状态。 -
list/search/get:让 Agent 能查询对象。 -
create/update/delete:让 Agent 能修改对象,但高风险操作要确认。 -
export/import:让 Agent 能把结果带到其他系统。 -
run/execute:触发一个真实业务流程。 -
--json:所有命令支持机器可读输出。 -
--dry-run:危险写操作先预览,不直接执行。
推荐的技术落地结构
可以参考 CLI-Anything 的结构,为我们的软件建立一个独立的 Agent CLI 包:
our-software-cli/ setup.py 或 pyproject.toml our_software_cli/ __main__.py cli.py client.py session.py commands/ project.py user.py workflow.py export.py skills/ SKILL.md tests/ TEST.md test_core.py test_full_e2e.py
如果我们的软件已有 HTTP API,CLI 可以优先封装 API;如果核心能力在本地 SDK、脚本或服务里,就封装本地调用;如果有桌面端但没有 API,则需要先梳理底层数据模型和可调用后端。
推荐的命令设计原则
|
原则 |
说明 |
|---|---|
|
先读后写 |
Agent 修改前应能查询当前状态 |
|
默认安全 |
删除、覆盖、发布等操作必须支持确认或 dry-run |
|
JSON 优先 |
所有核心命令都应支持 |
|
错误可恢复 |
错误信息要告诉 Agent 下一步怎么修 |
|
状态可追踪 |
会话、任务、导出文件路径都要清晰返回 |
|
可测试 |
每个命令都要能被自动化测试验证 |
对我们产品的潜在价值
1. 让软件进入 Agent 工作流
用户未来可能不是自己点完所有流程,而是对 Agent 说:“帮我把上周数据生成报告,并发给团队。”如果我们的软件有 CLI 和 Agent 说明书,就更容易被这类工作流调用。
2. 降低集成成本
相比为每个平台单独做插件,CLI 是更通用的中间层。Claude Code、Codex、OpenClaw、Cursor、脚本系统、CI/CD 都可以调用命令行。
3. 提升内部自动化效率
内部研发、测试、运营、交付都可以用同一套 CLI 做自动化。例如自动创建测试项目、批量生成演示数据、导出客户报告、巡检配置问题。
4. 形成更清晰的产品能力边界
为了设计 CLI,我们必须把软件能力拆成清晰的命令、参数、状态和结果。这会反过来帮助产品梳理 API、权限、错误码和业务对象。
落地建议
第一阶段:选一个高频工作流试点
选择一个对内部或客户都有价值、但范围可控的工作流,例如:
-
自动创建一个项目并完成基础配置。
-
批量导入数据并输出校验报告。
-
根据模板生成一份业务报告。
-
查询运行状态并给出问题诊断。
目标是做出一个能被 Agent 真正调用的 CLI,而不是只做 demo。
第二阶段:补齐安全和测试
重点补齐:
-
认证和权限。
-
--json输出规范。 -
--dry-run和危险操作确认。 -
单元测试。
-
端到端测试。
-
真实环境下的输出校验。
第三阶段:生成 Agent 使用说明
为 CLI 写 SKILL.md 或类似说明,告诉 Agent:
-
什么场景应该用它。
-
命令怎么调用。
-
输出字段代表什么。
-
常见错误怎么处理。
-
哪些操作需要用户确认。
第四阶段:接入内部 Agent 或工作流平台
把 CLI 放到内部 Agent、CI、运维脚本或交付工具里,让它承接真实任务。通过真实使用再反推命令设计和能力补齐。
风险和注意事项
|
风险 |
说明 |
建议 |
|---|---|---|
|
权限越界 |
Agent 自动执行写操作可能带来风险 |
引入最小权限、确认机制和审计日志 |
|
命令覆盖不完整 |
初版 CLI 可能只覆盖少数功能 |
从高价值工作流开始,逐步扩展 |
|
输出不稳定 |
文本输出变化会影响 Agent 判断 |
核心结果必须提供稳定 JSON schema |
|
只做壳不接真实能力 |
demo 可跑,但业务不可用 |
必须调用真实 API、SDK 或后端 |
|
测试不足 |
Agent 会放大边界情况 |
引入端到端测试和真实输出校验 |
建议结论
CLI-Anything 对我们的启发不是“直接照搬一个工具”,而是提供了一套产品工程思路:为软件增加一层稳定、结构化、可测试、可被 Agent 理解的操作接口。
对我们自己的软件来说,最值得尝试的是:
-
选一个高频业务工作流。
-
封装成小而完整的 CLI。
-
所有命令提供 JSON 输出和 dry-run。
-
写 Agent 使用说明。
-
用真实端到端测试证明它能完成任务。
这样做的价值在于:我们的软件不仅能被人使用,也能被 AI Agent 稳定、安全、可审计地使用。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)