肀?CLI)
過(guò)去命令行常被看成程序員的專屬工具黑色窗口、精確參數(shù)、輸錯(cuò)一個(gè)字符就報(bào)錯(cuò)。到了 AI Agent 時(shí)代這套看似古老的交互方式反而重新站到了臺(tái)前。原因并不玄乎。大語(yǔ)言模型以文本為輸入和輸出CLI 也是文本進(jìn)、文本出命令可組合結(jié)果可解析成功或失敗還能用退出碼明確表示。對(duì)人來(lái)說(shuō)不夠直觀的界面對(duì) AI 來(lái)說(shuō)可能恰好合適。一、為什么行業(yè)重新關(guān)注 CLI2025 年底至 2026 年初行業(yè)對(duì) MCP 和 CLI 的討論明顯增多。Vercel CEO rauchg 曾用一句話概括這種趨勢(shì)CLIs are the de-facto MCPs for agents即 CLI 正在成為 Agent 事實(shí)上的工具接口。Perplexity CTO、Y Combinator 的 Garry Tan 也公開(kāi)表達(dá)過(guò)對(duì) CLI 路線的支持。一個(gè)很有代表性的例子是 Playwright。微軟先推出 Playwright MCP Server讓 Agent 通過(guò) MCP 操作瀏覽器。功能沒(méi)有問(wèn)題但長(zhǎng)鏈路任務(wù)會(huì)帶來(lái)很高的上下文成本。在一組 15 步瀏覽器自動(dòng)化任務(wù)的對(duì)比中MCP 方案大約消耗 114,000 Token換成專為 Agent 設(shè)計(jì)的 Playwright CLI 后同類任務(wù)約消耗 27,000 Token差距超過(guò)四倍。這不是說(shuō) MCP 沒(méi)有價(jià)值而是說(shuō)明工具協(xié)議并非越重越好。一個(gè) Agent 如果只需先看--help再按需執(zhí)行命令就沒(méi)有必要在會(huì)話開(kāi)始時(shí)把所有工具 Schema 全部塞進(jìn)上下文。大廠和辦公平臺(tái)的 CLI 動(dòng)作幾個(gè)有代表性的行業(yè)動(dòng)態(tài)如下Google 在 2025 年 6 月發(fā)布開(kāi)源的 Gemini CLI把 Gemini 模型帶入終端隨后又推進(jìn) Gemini CLI 向 Antigravity CLI 整合。Microsoft 推動(dòng) GitHub Copilot CLI并在真實(shí)工程工作流中與 Claude Code 做評(píng)估和基準(zhǔn)測(cè)試。即使縮減 Claude Code 工具本身的使用Anthropic 模型仍可經(jīng)由 Copilot CLI 提供。飛書(shū)開(kāi)源 Lark CLI用命令行封裝消息、日歷、文檔、多維表格、郵箱、任務(wù)和會(huì)議等開(kāi)放平臺(tái)能力并提供大量命令及 Agent Skills可接入 Claude Code、Codex、Cursor 等工具。釘釘 CLI 開(kāi)放 AI 表格、日歷、日志、待辦、機(jī)器人、通訊錄、DING、考勤等能力原生支持 Claude Code、Cursor、Qoder 等 Agent 環(huán)境。企業(yè)微信 CLI 開(kāi)放消息、日程、文檔、會(huì)議、待辦、通訊錄、智能表格等能力并支持 Claude Code、Codex、WorkBuddy、QClaw 調(diào)用。這些動(dòng)作指向同一件事辦公平臺(tái)爭(zhēng)奪的已不只是人類用戶的桌面入口還包括 AI Agent 的執(zhí)行入口。誰(shuí)能把平臺(tái)能力包裝成穩(wěn)定、節(jié)省 Token、容易發(fā)現(xiàn)的命令誰(shuí)就更容易進(jìn)入 Agent 的工具箱。二、GUI、傳統(tǒng) CLI 與 Agent CLI理解 Agent CLI先要把三種界面分開(kāi)。形態(tài)主要使用者交互方式輸出形式設(shè)計(jì)目標(biāo)GUI普通用戶鼠標(biāo)、觸控、點(diǎn)擊和拖拽窗口、圖標(biāo)、動(dòng)畫(huà)、進(jìn)度條直觀、易學(xué)、所見(jiàn)即所得傳統(tǒng) CLI程序員、運(yùn)維和系統(tǒng)管理員人在終端中輸入精確命令面向人閱讀的日志、顏色和提示批處理、管道組合、腳本自動(dòng)化Agent CLI大語(yǔ)言模型和自動(dòng)化 Agent程序傳入命令、參數(shù)或函數(shù)調(diào)用JSON、XML、純文本、退出碼少歧義、低 Token、可自動(dòng)決策和重試傳統(tǒng) CLI 的使用者仍然是人。例如ls-lafindstrerrortest.logAgent CLI 則把人從逐條敲命令的位置上移開(kāi)。人只描述目標(biāo)Agent 負(fù)責(zé)選命令、填參數(shù)、讀取結(jié)果并決定下一步。為了讓機(jī)器可靠解析Agent CLI 應(yīng)減少顏色、動(dòng)畫(huà)和情緒化報(bào)錯(cuò)優(yōu)先返回穩(wěn)定、精簡(jiǎn)的結(jié)構(gòu)化數(shù)據(jù)。三、用 Playwright CLI 操作瀏覽器下面用 Playwright CLI 跑一條完整的瀏覽器自動(dòng)化鏈路打開(kāi) B 站搜索“C語(yǔ)言”切換結(jié)果標(biāo)簽頁(yè)并保存全頁(yè)截圖。1. 安裝并確認(rèn)命令可用npminstall-gplaywright/clilatest playwright-cli--help能正常打印幫助信息說(shuō)明安裝成功。--help不只是給人看的說(shuō)明書(shū)也是 Agent 發(fā)現(xiàn)工具能力的入口。2. 打開(kāi)頁(yè)面并獲取快照playwright-cliopenhttps://www.bilibili.com/--headedplaywright-cli snapshot--headed會(huì)顯示瀏覽器窗口。snapshot返回頁(yè)面快照其中的元素會(huì)帶有類似e43的引用 ID。Agent 不必靠坐標(biāo)猜輸入框在哪而是可以直接引用這個(gè) ID。3. 輸入關(guān)鍵詞并搜索playwright-cli fill e43C語(yǔ)言playwright-cli press Enter這里的e43來(lái)自上一步快照。頁(yè)面變化后實(shí)際 ID 可能變化所以穩(wěn)妥的做法是重新獲取快照而不是把某個(gè) ID 永久寫(xiě)死。4. 切換標(biāo)簽頁(yè)并截圖playwright-cli tab-select1playwright-cli screenshot --full-page--filenamefull-page.png接下來(lái)把 Playwright CLI 安裝成項(xiàng)目技能playwright-cliinstall--skills安裝后可以直接向 Agent 描述目標(biāo)使用項(xiàng)目下面的 playwright-cli 技能打開(kāi) B 站搜索C語(yǔ)言 將搜索結(jié)果頁(yè)面完整截圖保存文件名是 full-page-agent.png。Agent 會(huì)把自然語(yǔ)言拆成打開(kāi)頁(yè)面、進(jìn)入搜索結(jié)果、截圖和關(guān)閉會(huì)話等步驟。一段實(shí)際調(diào)用可能包含playwright-cliopenhttps://www.bilibili.com playwright-cli gotohttps://search.bilibili.com/all?keyword鵬哥C語(yǔ)言playwright-cli screenshot--filenamebilibili-penggc-c.png playwright-cli close這段演示的重點(diǎn)不是某個(gè)網(wǎng)站而是工作方式人給目標(biāo)Agent 通過(guò)技能了解命令再把任務(wù)落實(shí)成可檢查的 CLI 調(diào)用。四、為什么 LLM 天生適配 CLI把模型的工作方式與命令行放在一起看大致可以歸納出五個(gè)原因。1. 訓(xùn)練語(yǔ)料里有大量命令行文本Stack Overflow、GitHub Issues、技術(shù)博客、man pages、Shell 腳本和終端記錄都包含在大模型常見(jiàn)的訓(xùn)練語(yǔ)料中。模型早已見(jiàn)過(guò)大量“命令—輸出—修正”的模式。相比識(shí)別一張模糊截圖理解下面這條命令通常更直接gitlog--oneline2. 文本輸入輸出與模型的工作方式一致GUI 要求 Agent 識(shí)別按鈕位置、顏色、彈窗和頁(yè)面狀態(tài)。界面一改原來(lái)的視覺(jué)定位就可能失效。CLI 的輸入是確定的命令輸出是確定的文本歧義更少。3. 命令結(jié)構(gòu)接近自然語(yǔ)言大部分命令可以抽象成command [options] [arguments]命令名像動(dòng)詞選項(xiàng)負(fù)責(zé)修飾參數(shù)則是操作對(duì)象。它比完整編程語(yǔ)言簡(jiǎn)單又比自由文本更有約束--help、man page 和退出碼還能幫助模型自行校正。4. 反饋容易形成閉環(huán)CLI 通常給出三類信號(hào)stdout正常結(jié)果stderr警告和錯(cuò)誤exit code執(zhí)行狀態(tài)。Agent 可以據(jù)此寫(xiě)出很清楚的控制邏輯退出碼為 0 就繼續(xù)非 0 就讀stderr并修正stdout為空則換一種查詢方式。GUI 的失敗狀態(tài)往往藏在按鈕變灰、彈窗出現(xiàn)或頁(yè)面未跳轉(zhuǎn)這些視覺(jué)變化里判斷成本更高。5. 上下文利用率更高CLI 可以返回短 ID 和結(jié)構(gòu)化 JSON不必把整棵 DOM、像素坐標(biāo)或大量界面描述交給模型。省下來(lái)的上下文可以保留更長(zhǎng)的執(zhí)行歷史或者用于真正需要推理的步驟。五、CLI 與 GUI、MCP 怎么選用一句直白的話概括GUI 是給人點(diǎn)的CLI 是給機(jī)器說(shuō)的。CLI 相比 GUICLI 的第一項(xiàng)優(yōu)勢(shì)是可組合。管道可以把多個(gè)小工具接成一條工作流playwright-cli snapshot|jq.buttons|xargs-I{}playwright-cli click{}第二項(xiàng)優(yōu)勢(shì)是批量執(zhí)行效率。重復(fù)操作、數(shù)據(jù)處理和調(diào)試任務(wù)可以腳本化無(wú)需反復(fù)點(diǎn)擊。第三項(xiàng)是資源占用較低。TUI 應(yīng)用常見(jiàn)內(nèi)存占用約 1050 MB而完整 IDE 加大型插件可能達(dá)到 500 MB 甚至更高。對(duì)容器、服務(wù)器和遠(yuǎn)程環(huán)境中的 Agent這個(gè)差距很實(shí)際。CLI 相比 MCP兩種方案放在一起比較CLI 的優(yōu)勢(shì)主要落在三處CLI 可以按需讀取幫助并執(zhí)行命令減少一開(kāi)始加載大量 Schema 的 Token 成本。命令通常是一次調(diào)用、一次結(jié)束不依賴長(zhǎng)期連接出錯(cuò)后的重試邊界也更清楚。Agent 可以先運(yùn)行--help探索再?zèng)Q定具體參數(shù)工作流更接近日常調(diào)試。但 MCP 仍有自己的位置。它適合用統(tǒng)一協(xié)議連接標(biāo)準(zhǔn)化 API 和外部資源尤其適合快速集成與原型驗(yàn)證。GUI 則繼續(xù)服務(wù)于人類操作和可視化瀏覽。三者不是簡(jiǎn)單的替代關(guān)系。維度Agent CLIMCPGUI交互主體AI 優(yōu)先人也能用AI 專用人類優(yōu)先工作方式逐步探索、命令式、按需取用注入工具 Schema聲明式調(diào)用點(diǎn)擊和瀏覽Token 消耗較低15 步對(duì)比任務(wù)約 27K較高15 步對(duì)比任務(wù)約 114K視覺(jué)編碼和界面描述成本高可靠性調(diào)用邊界清楚執(zhí)行較確定長(zhǎng)連接和大型工具集可能增加超時(shí)風(fēng)險(xiǎn)UI 變化會(huì)影響視覺(jué)定位可組合性管道、腳本和批處理能力強(qiáng)每個(gè)工具需聲明調(diào)用很難程序化串聯(lián)資源占用較低需要維護(hù)會(huì)話狀態(tài)完整桌面應(yīng)用占用較高適用場(chǎng)景自動(dòng)化、后臺(tái)任務(wù)、CI/CD、批處理標(biāo)準(zhǔn) API 接入、原型驗(yàn)證人機(jī)操作、數(shù)據(jù)可視化六、CLI 的四種形態(tài)和調(diào)用分層當(dāng)前常見(jiàn)的 CLI 可以分為四類。1. 傳統(tǒng) CLI代表工具有 Git、Docker、GitHub CLI、curl。人的精確命令經(jīng)過(guò) CLI 交互層最后由具體軟件執(zhí)行精確命令 → 交互界面 CLI → 具體工具執(zhí)行它們各自解決一個(gè)明確問(wèn)題再通過(guò)管道和腳本組合。生態(tài)成熟缺點(diǎn)是人需要記住語(yǔ)法。2. 面向 Agent 的工具型 CLIPlaywright CLI 是典型代表。它仍使用傳統(tǒng)命令行語(yǔ)法但目標(biāo)使用者變成了 Claude Code、Copilot 等 Agent。它強(qiáng)調(diào)原子操作、機(jī)器可讀輸出、Token 控制和技能注入。調(diào)用鏈路是自然語(yǔ)言 → AgentLLM→ CLI飛書(shū) CLI、企業(yè)微信 CLI 也可以放在這一大類中討論。這些平臺(tái)型工具把云服務(wù) API 包裝成統(tǒng)一命令順便解決鑒權(quán)和 HTTP 請(qǐng)求拼裝問(wèn)題自然語(yǔ)言 → AgentLLM→ CLI → 云服務(wù)3. Agent 型 CLIClaude Code、Codex CLI、Gemini CLI、Cursor 屬于 AI 原生的終端 Agent。用戶不需要先掌握每條底層命令只需說(shuō)明目標(biāo)Agent 會(huì)規(guī)劃并執(zhí)行多步驟任務(wù)。它的完整分層更像這樣自然語(yǔ)言 ↓ Agent CLI 交互界面 ↓ AgentLLM自主決策 ├─ Skill固化流程 ├─ CLI執(zhí)行本地工具 └─ MCP連接外部接口這張分層圖也解釋了 CLI、Skill 和 MCP 的關(guān)系它們不是互斥選項(xiàng)而是 Agent 在不同任務(wù)中選擇的執(zhí)行手段。七、常見(jiàn)的 CLI 產(chǎn)品與框架產(chǎn)品或框架定位地址Hermes Agent有持久記憶和自動(dòng)創(chuàng)建技能能力的自學(xué)習(xí) CLI Agent支持多種模型及 Telegram、Slack 等平臺(tái)GitHubTraeCode CLI運(yùn)行在本地終端里的編碼智能體文檔Claude Code能理解代碼庫(kù)、讀寫(xiě)文件、執(zhí)行命令和管理 Git 工作流的終端 Agent官網(wǎng)Codex CLIOpenAI 的終端 Agent使用 Rust 實(shí)現(xiàn)可承擔(dān)持續(xù)時(shí)間較長(zhǎng)的自主任務(wù)GitHubGemini CLIGoogle 的終端 Agent支持長(zhǎng)上下文和多模態(tài)輸入GitHubOpenCode終端原生編碼 Agent可接入多種 LLM 提供商GitHub飛書(shū) CLI面向 Agent 設(shè)計(jì)的飛書(shū)平臺(tái)命令行工具官網(wǎng)釘釘 CLI釘釘官方 CLI文檔企業(yè)微信 CLI企業(yè)微信官方 CLI文檔OpenCLI把網(wǎng)站和瀏覽器會(huì)話轉(zhuǎn)化為確定性 CLI 接口GitHubbrowser-use讓 AI Agent 操作瀏覽器的 Python 開(kāi)源庫(kù)GitHubPlaywright CLI微軟推出的瀏覽器自動(dòng)化 CLI強(qiáng)調(diào) Token 效率和 Skill 架構(gòu)GitHubCLI-Anything把現(xiàn)有軟件能力包裝成 AI 可調(diào)用 CLI 的工具GitHubQwen Code 也采用了類似思路它支持終端交互可以理解整個(gè)項(xiàng)目上下文完成代碼生成、調(diào)試、優(yōu)化和功能模塊構(gòu)建。八、怎樣寫(xiě)一個(gè)適合 AI Agent 的 CLICLI 能不能被 Agent 穩(wěn)定使用取決于接口細(xì)節(jié)。下面七條設(shè)計(jì)原則值得優(yōu)先處理。1. 支持靜默和無(wú)人值守模式任何可能被自動(dòng)化調(diào)用的命令都不應(yīng)強(qiáng)制等待交互式輸入??梢蕴峁?-yes --force --quiet --no-input程序還應(yīng)在非 TTY 環(huán)境中自動(dòng)關(guān)閉交互并允許通過(guò) flag、stdin、配置文件或環(huán)境變量傳入必填項(xiàng)。否則當(dāng)子 Agent 調(diào)起 CLI 后卡在y/n提示上最上層用戶很可能根本看不到。2. 把--help寫(xiě)成工具發(fā)現(xiàn)文檔幫助信息至少要說(shuō)明參數(shù)用途、使用時(shí)機(jī)和默認(rèn)值而不是只給一句模糊的 Usage。--input file 輸入的文本文件必須 --output file 輸出的 Word 文件路徑默認(rèn)同目錄/output.docx --format [basic|academic] 排版風(fēng)格默認(rèn)basicAgent 讀完就能知道哪些值必須提供、哪些可以采用默認(rèn)值。幫助信息離線可用也不需要額外協(xié)議協(xié)商。3. 支持漸進(jìn)式發(fā)現(xiàn)Agent 往往不會(huì)先讀完整手冊(cè)而是逐步探索tool--helptool subcommand--help頂層幫助負(fù)責(zé)告訴它“有什么”子命令幫助再解釋“怎么用”。這種分層能避免一次輸出過(guò)多文檔。4. 為破壞性操作提供--dry-run刪除或批量寫(xiě)入前先返回將發(fā)生什么clean_notes --older-than 30d --dry-run示例輸出將刪除以下文件2024-03-01_化學(xué).txt、2024-03-02_化學(xué).txt…… 共 12 個(gè)文件。未做任何實(shí)際修改。Agent 的日期理解或篩選條件可能出錯(cuò)。--dry-run給人或上層審核流程留下攔截機(jī)會(huì)。5. 錯(cuò)誤信息要告訴 Agent 下一步怎么修只有Permission denied不夠。錯(cuò)誤應(yīng)同時(shí)說(shuō)明缺少什么以及修復(fù)命令Error: missing permission wechat:send:file Fix: run study-agent auth add --scope wechat:send:file這樣 Agent 才能補(bǔ)權(quán)限并重試而不是反復(fù)執(zhí)行同一條失敗命令。6. 數(shù)據(jù)輸出應(yīng)穩(wěn)定且可解析適合 Agent 的 CLI 應(yīng)提供--json或等價(jià)選項(xiàng)。正常結(jié)果寫(xiě)到stdout警告、進(jìn)度和錯(cuò)誤寫(xiě)到stderr字段名也要保持穩(wěn)定。list_docs--since7d--outputjson--filtersize0{files:[{name:empty.docx,size:0}]}Agent 可以直接讀取字段不必從ls -l一類給人看的表格中猜列寬和數(shù)據(jù)含義。7. 控制輸出邊界一次輸出 500 行日志很容易擠占上下文并淹沒(méi)真正的錯(cuò)誤。CLI 應(yīng)默認(rèn)分頁(yè)或限量并提供篩選參數(shù)--limit --page --since如果結(jié)果被截?cái)噙€應(yīng)提示怎樣縮小范圍或讀取下一頁(yè)。九、Cursor CLI 實(shí)戰(zhàn)生成、審查并修復(fù)網(wǎng)頁(yè)再來(lái)看一個(gè)完整的 Cursor CLI 開(kāi)發(fā)流程先生成企業(yè)官網(wǎng)落地頁(yè)再用非交互模式做代碼審查和修復(fù)。1. 在 Windows PowerShell 安裝Windows PowerShell 可以使用下面的安裝命令irmhttps://cursor.com/install?win32true|iex其中irm是Invoke-RestMethod的別名用來(lái)下載響應(yīng)內(nèi)容iex是Invoke-Expression的別名會(huì)把下載到的字符串當(dāng)作 PowerShell 命令執(zhí)行。這類“下載后直接執(zhí)行”的命令很方便但也意味著你在運(yùn)行遠(yuǎn)程腳本。正式環(huán)境中最好先下載并檢查腳本內(nèi)容再?zèng)Q定是否執(zhí)行。安裝完成后創(chuàng)建工作目錄mkdir cursorcli輸入agent進(jìn)入交互模式。首次使用時(shí)可能要求登錄并詢問(wèn)是否信任當(dāng)前工作目錄。Agent 可以在被信任的目錄中讀取文件、執(zhí)行命令和修改代碼所以不要對(duì)來(lái)源不明的目錄隨意授權(quán)。2. 先讓 Agent 制訂計(jì)劃先用/plan提交需求要求生成一個(gè)響應(yīng)式的一頁(yè)式企業(yè)官網(wǎng)并寫(xiě)入landing.html/plan 請(qǐng)生成一個(gè)現(xiàn)代企業(yè)官網(wǎng)的落地頁(yè)保存為 landing.html。完整需求包括極簡(jiǎn)現(xiàn)代風(fēng)格、滾動(dòng)時(shí)變化的導(dǎo)航欄、帶 CTA 的 Hero 區(qū)、三張服務(wù)卡片、公司數(shù)據(jù)指標(biāo)、頁(yè)腳、移動(dòng)端適配、中文注釋以及 CSS 動(dòng)畫(huà)。Agent 先給出計(jì)劃用戶審核后再執(zhí)行遇到高權(quán)限操作時(shí)工具會(huì)請(qǐng)求確認(rèn)。3. 用非交互模式做代碼審查生成頁(yè)面后可以使用-p讓 Agent 以--print也就是非交互模式運(yùn)行--force允許它無(wú)需逐項(xiàng)確認(rèn)便修改文件。agent-p--force請(qǐng)對(duì) landing.html 進(jìn)行代碼質(zhì)量審查。檢查規(guī)范var/命名/未使用、性能滾動(dòng)防抖/動(dòng)畫(huà)/重排、安全eval/innerHTML、可維護(hù)性重復(fù)代碼/魔法數(shù)字/函數(shù)長(zhǎng)度、可訪問(wèn)性alt/語(yǔ)義標(biāo)簽。輸出 Markdown 格式報(bào)告寫(xiě)入 landing-review.md按嚴(yán)重/警告/建議分級(jí)標(biāo)注行號(hào)和修復(fù)建議。4. 根據(jù)報(bào)告自動(dòng)修復(fù)cursor-agent-p--force--output-format stream-json根據(jù) landing-review.md 中的審查報(bào)告修復(fù) landing.html 中所有嚴(yán)重和警告級(jí)別的問(wèn)題保持原有功能和樣式不變Cursor CLI 在不同版本或安裝方式下可能使用agent或cursor-agent作為可執(zhí)行文件名應(yīng)以當(dāng)前安裝版本的提示和--help輸出為準(zhǔn)agent--help這里也能看到前文幾條設(shè)計(jì)原則的實(shí)際作用先規(guī)劃危險(xiǎn)操作要授權(quán)批處理使用非交互模式執(zhí)行過(guò)程輸出結(jié)構(gòu)化流最后再根據(jù)報(bào)告修復(fù)。結(jié)語(yǔ)CLI 的回歸意味著命令行的主要消費(fèi)者開(kāi)始從人擴(kuò)展到 AI Agent。一個(gè)好用的 Agent CLI 不需要花哨界面但必須有清楚的--help、穩(wěn)定的 JSON、嚴(yán)格的退出碼、可恢復(fù)的錯(cuò)誤、--dry-run和有限的輸出。做到這些模型就能自己發(fā)現(xiàn)能力、執(zhí)行任務(wù)、判斷結(jié)果并修正錯(cuò)誤。GUI 仍然適合人MCP 仍然適合標(biāo)準(zhǔn)化連接。CLI 的優(yōu)勢(shì)在于簡(jiǎn)單、確定、容易組合。當(dāng)任務(wù)需要長(zhǎng)鏈路自動(dòng)化、后臺(tái)執(zhí)行、批處理或低成本工具調(diào)用時(shí)它往往是最順手的工具。