[{"data":1,"prerenderedAt":342},["ShallowReactive",2],{"article-agent-cli-vs-gui":3},{"id":4,"title":5,"body":6,"cover":303,"date":304,"description":305,"draft":306,"extension":307,"faq":308,"featured":306,"meta":321,"navigation":322,"path":323,"readingTime":324,"seo":325,"seoKeywords":326,"stem":334,"summary":15,"tags":335,"type":339,"updated":340,"video":340,"__hash__":341},"articles\u002Farticles\u002Fagent-cli-vs-gui.md","对 Agent 操作 GUI 说不：从 CLI-Anything 看软件交互的下一步",{"type":7,"value":8,"toc":295},"minimark",[9,16,19,26,29,32,42,45,50,57,65,70,79,85,89,92,95,101,107,113,120,126,130,133,140,143,198,201,204,212,215,220,223,238,241,245,248,253,256,270,273,277,283,288,291],[10,11,12],"blockquote",{},[13,14,15],"p",{},"GUI 是给人类设计的'慢接口'，AI Agent 需要直达操作层的'快通道'。CLI 化适合成熟稳定软件，Scripts 方案更适合迭代灵活的项目。",[13,17,18],{},"GitHub 上港大团队开源的 CLI-Anything，两周之内涨到两万多 Stars。它做的事情用一句话概括：把任何桌面软件变成命令行工具，让 AI Agent 可以直接操作。",[13,20,21],{},[22,23],"img",{"alt":24,"src":25},"cli-anything","\u002Fa\u002Fagent-cli-vs-gui\u002Fcli-anything.png",[13,27,28],{},"一个命令行工具，为什么能引发这么大的关注？",[13,30,31],{},"因为 AI 要给我们干活完成任务，无非有两种方式：",[33,34,35,39],"ol",{},[36,37,38],"li",{},"AI 自己看着页面操作",[36,40,41],{},"AI 通过命令行，不用看界面，就能用命令文本操作",[13,43,44],{},"而现在的大模型，在文本处理上的能力远远大于图片理解的能力。所以，越来越多人意识到，给 AI 一个带界面的软件，它觉得更难用，也更难给你一个好结果。反倒是让他用代码的思维通过命令行执行软件，对它而言就简单多了。",[46,47,49],"h2",{"id":48},"为什么说让-agent-操作图形界面是弯路","为什么说让 Agent 操作图形界面是弯路？",[13,51,52,53],{},"OpenClaw 的创始人 Peter Steinberger 说过一个很精辟的判断：",[54,55,56],"strong",{},"App 本质上是一个 Slow API。",[13,58,59,60,64],{},"什么意思？人需要界面，是因为可以高效利用视觉信息处理问题。但现在的 AI 更擅长文本处理，它只需要知道有一个 ",[61,62,63],"code",{},"export"," 命令可以调用就能高效完成任务。所以压根不需要让 AI 像人类一样看页面。",[13,66,67],{},[54,68,69],{},"GUI 是给人类设计的\"慢接口\"，而 AI Agent 需要的是直接触达操作层的\"快通道\"。",[13,71,72,73,78],{},"这也是我在",[74,75,77],"a",{"href":76},"\u002Farticles\u002Fagent-ui","上一篇文章","中分享的实践：给产品加 AI 入口时，我没有让 AI 去操作前端界面，而是直接把后端 API 接给了 AI Agent。效果立竿见影——以前运营找人跑数据要半天，现在对话框里说一句话，AI 直接调接口出结果。",[13,80,81,82],{},"CLI-Anything 爆火的逻辑和这个一模一样：",[54,83,84],{},"把 可视化界面 拿走，直接暴露底层操作能力给 Agent。",[46,86,88],{"id":87},"也不是一切都要-cli-命令化","也不是一切都要 CLI 命令化",[13,90,91],{},"CLI-Anything 的思路是对的——分析源码，自动生成结构化的 CLI 命令，让 Agent 用确定性的方式调用软件功能。比操作 GUI 稳定得多，高效得多。",[13,93,94],{},"但我在项目中集成 CLI-Anything 时，我发现了现实的局限性：",[13,96,97,100],{},[54,98,99],{},"1. 它需要源码","，闭源商业软件走不通。",[13,102,103,106],{},[54,104,105],{},"2. 它需要接口稳定","，软件快速迭代时 CLI 版本很快就会脱节。",[13,108,109,112],{},[54,110,111],{},"3. 它受限于预定义命令","，Agent 只能做命令集里有的事，遇到新需求就得重新生成。",[13,114,115,116,119],{},"所以 CLI 化最适合的场景是：",[54,117,118],{},"开源、版本稳定、操作模式固定的软件","——FFmpeg、Blender、成熟的开发工具链这类。接口不怎么变，CLI 化后长期可用。",[13,121,122,123],{},"而对于迭代快、需求灵活多变的产品，转化成 CLI 可能会产生不少副作用。所以，我们决定：",[54,124,125],{},"不是所有软件都要 CLI 化，而是根据软件的特性选择最合适的方案。",[46,127,129],{"id":128},"有没有比固定-cli-更灵活的-agent-集成方式","有没有比固定 CLI 更灵活的 Agent 集成方式？",[13,131,132],{},"通常我们可以将 CLI 等可由 Agent 执行的逻辑做成一个 Agent Skill。在我们公司的实际项目中，除了 CLI 化，我们也可以直接考虑 Agent Skill 中的原生 Scripts 标准。",[13,134,135,136,139],{},"简单说，就是不把能力打包成固定的 CLI 命令，而是把底层的操作脚本直接放在 Skill 中的 ",[61,137,138],{},"scripts\u002F"," 目录下，让 Agent 自己去读、去理解、去组合调用。",[13,141,142],{},"举个例子。假设你有一个数据处理项目，CLI 化后可能生成这样的命令：",[144,145,150],"pre",{"className":146,"code":147,"language":148,"meta":149,"style":149},"language-bash shiki shiki-themes github-light-default github-dark-default","data-tool export --format csv --date-range 2026-01-01:2026-03-24\ndata-tool analyze --metric retention --group channel\n","bash","",[61,151,152,178],{"__ignoreMap":149},[153,154,157,161,165,169,172,175],"span",{"class":155,"line":156},"line",1,[153,158,160],{"class":159},"sTDnQ","data-tool",[153,162,164],{"class":163},"sSVrQ"," export",[153,166,168],{"class":167},"sHrmB"," --format",[153,170,171],{"class":163}," csv",[153,173,174],{"class":167}," --date-range",[153,176,177],{"class":163}," 2026-01-01:2026-03-24\n",[153,179,181,183,186,189,192,195],{"class":155,"line":180},2,[153,182,160],{"class":159},[153,184,185],{"class":163}," analyze",[153,187,188],{"class":167}," --metric",[153,190,191],{"class":163}," retention",[153,193,194],{"class":167}," --group",[153,196,197],{"class":163}," channel\n",[13,199,200],{},"这些命令好用，但只能做预定义好的事情。如果运营突然说\"我要把导出的数据按渠道分组，再和另一张表交叉分析\"，而这个组合操作没有对应的 CLI 命令，Agent 就卡住了。",[13,202,203],{},"Scripts 方案不一样。你提供的不是固定命令，而是一组可组合的脚本能力：",[144,205,210],{"className":206,"code":208,"language":209},[207],"language-text","scripts\u002F\n  export_data.py      # 导出数据\n  analyze_metric.py   # 分析指标\n  cross_join.py       # 交叉关联\n  format_report.py    # 格式化报告\n","text",[61,211,208],{"__ignoreMap":149},[13,213,214],{},"Agent 拿到这些脚本后，可以自己写代码把它们串起来，灵活组合成任何它需要的工作流。接口变了？Agent 直接读最新的脚本，自己适配。需求没见过？Agent 自己写一段胶水代码，把现有脚本能力拼装成新方案。",[13,216,217],{},[54,218,219],{},"CLI 是一个\"定型的工具包\"——像一套固定菜单，Agent 只能点菜单上有的。Scripts 是一个\"食材库\"——Agent 可以自己看食材、自己搭配、自己炒菜。",[13,221,222],{},"这两种方式的适用场景也很清晰：",[224,225,226,232],"ul",{},[36,227,228,231],{},[54,229,230],{},"软件成熟、接口稳定"," → CLI 化更好。命令固化下来，调用确定、行为可控、维护成本低。",[36,233,234,237],{},[54,235,236],{},"项目在迭代、需求灵活"," → Scripts 方案更好。Agent 自由度高，能跟上变化，覆盖面更广。",[13,239,240],{},"它们不是谁替代谁的关系，而是不同阶段、不同场景下的最优选择。",[46,242,244],{"id":243},"为什么说软件正在长出第二个入口","为什么说软件正在长出「第二个入口」？",[13,246,247],{},"不管是 CLI 化、Scripts 方案，还是我之前做的\"给产品加 AI 对话入口\"，本质上都在做同一件事：",[13,249,250],{},[54,251,252],{},"给软件开一个专门给 Agent 用的入口。",[13,254,255],{},"这意味着未来的软件设计可能会自然地分化出两条通道：",[224,257,258,264],{},[36,259,260,263],{},[54,261,262],{},"人走前门","：GUI，图形界面，视觉交互——感知友好，体验优先",[36,265,266,269],{},[54,267,268],{},"Agent 走快通道","：CLI \u002F API \u002F Scripts——效率优先，结构化调用",[13,271,272],{},"这不是二选一，而是双轨并行。就像一栋大楼，顾客走大堂电梯，货物走后勤通道。各走各的路，各有各的效率。",[46,274,276],{"id":275},"核心不是形式而是思路的转变","核心不是形式，而是思路的转变",[13,278,279,280],{},"CLI-Anything 的爆火，表面上是一个开源项目的成功。但更深层的信号是：",[54,281,282],{},"整个行业正在意识到，软件和 AI Agent 之间的交互方式需要被重新设计。",[10,284,285],{},[13,286,287],{},"别让 Agent 操作界面了，给它一个直达操作层的快通道。",[13,289,290],{},"这个趋势已经悄然发生。",[292,293,294],"style",{},"html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":149,"searchDepth":296,"depth":296,"links":297},3,[298,299,300,301,302],{"id":48,"depth":180,"text":49},{"id":87,"depth":180,"text":88},{"id":128,"depth":180,"text":129},{"id":243,"depth":180,"text":244},{"id":275,"depth":180,"text":276},"\u002Fa\u002Fagent-cli-vs-gui\u002Fcover.png","2026-03-24","CLI-Anything 爆火背后的思考：GUI 是给人设计的慢接口，Agent 需要的是直接触达操作层的快通道",false,"md",[309,312,315,318],{"q":310,"a":311},"为什么不应该让 AI Agent 操作图形界面？","GUI 本质上是为人类视觉设计的'慢接口'，而当前 AI 在文本处理上的能力远强于图片理解。让 AI 看界面操作就像让一个盲人通过翻译看画一样低效，直接给它 CLI 命令或 API 接口才是高效路径。",{"q":313,"a":314},"CLI 化和 Scripts 方案分别适合什么场景？","CLI 化适合开源、版本稳定、操作模式固定的软件（如 FFmpeg、Blender），命令固化后长期可用。Scripts 方案适合迭代快、需求灵活的项目，Agent 可以自由组合脚本能力，像'食材库'一样灵活搭配，而非只能点固定菜单。",{"q":316,"a":317},"CLI-Anything 为什么能在 GitHub 上两周涨到两万 Stars？","因为它精准击中了一个行业共识：AI Agent 需要直达软件操作层的快通道。它把任何桌面软件变成命令行工具，让 Agent 用文本指令而非截图理解来操作软件。这背后的信号是——整个行业正在意识到软件和 AI Agent 之间的交互方式需要被重新设计。",{"q":319,"a":320},"未来软件设计会怎样适应 AI Agent？","软件会自然分化出两条通道：人走前门（GUI 图形界面，感知友好，体验优先），Agent 走快通道（CLI\u002FAPI\u002FScripts，效率优先，结构化调用）。就像一栋大楼，顾客走大堂电梯，货物走后勤通道——各走各的路，各有各的效率。",{},true,"\u002Farticles\u002Fagent-cli-vs-gui",6,{"title":5,"description":305},[327,328,329,330,331,332,333],"AI Agent 交互","CLI-Anything","GUI vs CLI","Agent 操作软件","AI 自动化","Agent Skill","软件设计趋势","articles\u002Fagent-cli-vs-gui",[336,337,338],"AI 洞察","AI 应用","产品思考","article",null,"xJvuVoGgnu9mzPPrbB-Xd7-rDXRJIhOXklJQQvS1HtQ",1782881824584]