软件的默认用户是人所以有 GUI 应用都是通过鼠标键盘、动画、确认弹窗等方式与软件交互但是AI Agent不需要这些交互方式它需要的是命令行交互方式Command Line InterfaceCLICLI-Anything 则是一个把任何人使用的 GUI 应用变成 CLI 的工具他把造 Agent 需要的 CLI 过程自动化了指着一个开源 repo 跑一条命令通过代码扫码几分钟后就将 GUI 应用变成了 Agent 能够直接使用的 CLI01 为什么需要把 GUI 应用 CLI 化Claude Code 这种 Ai Agent 的母语事实上是通过 Bash Shell 执行的CLI 脚本例如 Claude Code 的 tool 使用模式几乎都通过 Bash 间接调用各种 CLI(gh/git/npm/python/jq/curl)Claude Code 活在 terminal 里CLI 也活在 terminal 里所以Agent 调一个 CLI是它各种完成任务方式中开销最低、协议最简单的那条路一次Bash调用stdout/stderr 直接进入上下文执行反馈就是状态机直接把 GUI 应用包一层 CLI相当于把这个软件翻译成 Agent 的母语这样应用不再是一个需要自动化的对象而是一个直接可调用的工具人和 Agent 的输入输出不同人是视觉连续动作的用户眼睛扫一遍应用 UI 拿信息通过鼠标在二维平面上操作完成任务所以 GUI 通常是顺着人的感官造的输入框、按钮、下拉菜单、复选框、进度条、动画、确认弹窗等等Agent 是文本离散调用的用户它的输入是一段 prompt输出是一次命令执行脚本并通过获取命令执行反馈来完成任务它没有眼睛没有鼠标轨迹所以他们需要的是能够通过命令行调用的接口而不是可交互的 GUI当然让 Agent 控制鼠标键盘直接操作 GUI 也是可行的但是这样做的成本太高每一步都是翻译损耗而且操作准确度也难以保证例如 Selenium、Playwright、AppleScript、PyAutoGUI、Browser-use 这些方案都是通过和 GUI 交互的方式来完成任务的可能存在这些问题UI 改版之后交互方式需要重制selector 漂移、控件 id 不稳定不同分辨率、不同主题、不同语言下行为不一致Agent 难以调试自己的操作反馈只能通过截图、日志等方式来判断而直接通过 CLI 执行的成本完全不同参数错了立刻报错、反馈输出是结构化文本、可以进行代码测试等等工程负担会更轻量化03 怎么实现 GUI 应用 CLI 化CLI-Anything 把 GUI 应用 CLI 化的过程拆成 7 个阶段分析代码——绕开 GUI 的前端入口直接找到软件的真后端设计输出——把应用功能映射成命令组命令实现——生成调用后端功能的 wrapper计划测试——给每个命令规划测试矩阵写测试——把测试用例写出来强制必须调真后端写文档——--help、README、SKILL.md 等使用使用手册和说明文档发布——pip install进 PATHAgent 可以直接在 Bash Shell 中调用这种 CLI 化和通用浏览器驱动方式的差别路径代表Agent 看到的接口适合不适合驱动层让 Agent 透过 GUI 操作Playwright、webcli 等DOM / 像素 / accessibility treeSaaS、内网后台、不开源、无 API 的网站桌面 app、需要稳定语义的批处理生成层让 Agent 通过 CLI 直接调真后端CLI-Anything原生 CLI开源软件、提供 API 的应用闭源 SaaS、纯渲染没 backend 的应用事实上这两种方式是互补的开源软件天然能被 CLI-Anything 这种生成层方案改造成 Agent 工具因为只要源码在Agent 就能造出原生 CLI而闭源应用想通过 Agent 用要么自己出 MCP server、要么自己出 OpenAPI否则只能被驱动层 GUI-scrape 走04 CLI-Anything 实践示例我们通过 CLI-Anything 将开源的绘图工具 draw.io 生成出 Agent 能直接使用的 CLI4.1 装 plugin首先需要给 Claude Code 装上 CLI-Anything 插件在对话框里用/plugin斜杠命令按照/plugin marketplaceaddHKUDS/CLI-Anything /plugininstallcli-anythingcli-anything /reload-plugins/reload-plugins之后就能看到 cli-anything 插件被 Claude Code 成功加载了4.2 clone 目标仓库CLI-Anything 是个代码分析器它必须能读到目标软件的源码所以第一步是把仓库 clone 到本地也可以直接让 CC 自己去做cd~/Workbench/githubgitclone https://github.com/jgraph/drawio4.3 使用 /cli-anything 生成 CLI代码 clone 完成后在 CC 对话框中使用/cli-anything它会自动在 draw 源码目录下生成一个agent-harness/目录里面包含了所有生成的代码和测试用例/cli-anything ~/Workbench/github/drawioClaude Code 会按 HARNESS.md 的 SOP 依次做Phase 1 代码分析——识别后端引擎draw.io 的 desktop 二进制支持--export渲染 PDF/PNG/SVG扫 mxfile/mxGraphModel/mxCell XML schemaPhase 2 架构设计——给出 9 个命令组project / page / shape / edge / template / layout / export / session / repl写 DRAWIO.md SOPPhase 3 实现——生成 core/utils/CLI 主入口Click REPL实现--json输出和 auto-savePhase 4-5 测试——写 TEST.md 计划 23 个 core 单测 8 个 E2E 测试含 PDF/PNG/SVG/HTML 的 magic bytes 校验Phase 6 跑测试——31/31 全过Phase 6.5 SKILL.md——给 Agent 准备自描述的 skill 文件Phase 7 PyPI 打包——pip install -e .把cli-anything-drawio命令塞进 PATH整条流水线跑下来大约 20 分钟期间 Claude Code 会持续输出阶段状态4.4 CLI 生成完成跑完后which cli-anything-drawio能在~/Library/Python/3.9/bin/下定位到新生成的 entry point-V显示1.0.0整个 harness 目录大概是这样的所有产物都在agent-harness/下drawio/Agent-harness/ ├── DRAWIO.md # per-software SOP ├── setup.py # PyPI 打包 ├── skills/cli-anything-drawio/SKILL.md └── cli_anything/drawio/ ├── drawio_cli.py # Click REPL 主入口 ├── core/ # project / templates / layout / session ├── utils/ # drawio_backend.py (调真实 draw.io desktop) repl_skin └── tests/ # TEST.md test_core.py test_full_e2e.py4.5 测试 CLI新 CLI 装好后就可以直接在会话里给 Claude Code 提绘图需求了开始测试 Draw CLI 工具画一个 Claude Code 实现架构图它自己规划了 8 层结构User / CLI / 5 路控制面 / Context Engine / Anthropic API / Tool Dispatcher / 6 个工具家族 / 6 个后端然后调cli-anything-drawio的shape add/edge add把节点和连线一条条加上最后调export render让真正的 draw.io desktop 把它渲染成 PDF/PNG/SVGCLI 最终使用效果虽然并不完美但也能看出它的能力05 什么时候需要 CLI 化这套方法的甜区是那些你自己既用 GUI、又希望 Agent 帮你批量做的软件必须是开源的——CLI-Anything 要分析源码有清晰的 internal API / 后端可见——需要软件自己有 API 入口GUI 操作可以拆成离散动作——比如 draw.io 的加节点、连线、布局这些操作都是是离散的日常重复做这件事——重复才有自动化的价值这些场景 Agent 都很适合使用 CLI draw.io / mermaid / excalidraw——绘图工具OBS Studio——切场景、录屏运维和直播脚本DBeaver / Beekeeper——数据查询Postman / Insomnia——API 测试但应用 CLI 化不是银弹需要注意生成的 CLI 质量取决于源码质量——耦合度高、文档差的项目生成出来的 Agent 接口大概率也乱要 review 生成的代码—— CLI 是个 wrapper 层可能调错 API、漏掉边界条件维护成本不为零——上游项目升级了内部 API生成的 CLI 也要重跑参考资料CLI-Anything GitHubChase AI - CLI-Anything Just Brought Claude Code Into The Future