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