看板 Soft_Job ※ 圖文整理 回首頁

[情報] Airbyte 做了 MCP 也做了 CLI:給 agent 用的工具要怎麼設計

作者:chinghanho
時間:2026-10-10(Asia/Taipei)
來源:AI Engineer World's Fair 演講〈Designing CLIs for Agents, Not Humans〉,講者 Pedro Lopez(Airbyte 軟體工程師),約 18 分鐘
Designing CLIs for Agents, Not Humans — Pedro Lopez
▲ AI Engineer 頻道上的影片封面,標題叫「Built for Bots」。
「做給人用的 CLI,有些設計對 agent 來說是擋路的。」
— Pedro Lopez

一、Airbyte 在做什麼

Airbyte 原本是開源的資料搬運工具,把 Zendesk、Stripe、GitHub 這些 SaaS 的資料接進公司的分析管線。現在他們想當 AI agent 取用資料、執行動作的那一層。

核心產品叫 Context Store:把各家工具的資料整理成一份方便搜尋的索引,agent 查起來比較省力,也能把不同工具裡的客戶、紀錄串在一起看。

要用 Context Store 有好幾個入口:自己寫 agent 用 SDK,網頁上有 UI。這場講的是另外兩個:MCP server 和 CLI,讓 ChatGPT、Claude 這類現成的 agent 也能直接用。

這兩個入口都要做到三件事:管理組織、workspace、connector 這些資源;安全地串接第三方服務,而且不讓 agent 碰到帳密;還有搜尋、讀寫各系統的資料。

MCP 和 CLI 都是平台上的薄介面
▲ MCP 和 CLI 都只是疊在同一個 API 和平台上的薄薄一層,商業邏輯全留在平台裡,介面靠 OpenAPI 規格自動產生。

架構上,MCP 和 CLI 都只是薄薄一層。收到指令、呼叫平台、把結果排版,就這樣。他們平台一天部署超過 10 次,所以介面直接用 OpenAPI 規格產生,才跟得上。

二、MCP server:給不寫程式的人用

MCP 是讓 AI 助手接上外部工具的標準協定。Pedro 說它最適合不寫程式的人:包裝好、裝起來很簡單。Airbyte 已經上架 ChatGPT 的 app 商店,Anthropic 那邊還在等審核。沒上架也沒關係,貼一個 MCP 網址就能接。

示範時他在 ChatGPT 裡問「有哪些 connector」,再問「列出五個有 Zendesk 客服單的付費客戶」。它會去 Context Store 查,把 Zendesk 和 Stripe 的資料對起來,回出五個人。

三、做 MCP 學到的四件事

工具數量要少。他們連的服務很多,每個服務又有一堆資料類型和動作,大可每種都開一個 MCP 工具。試過之後,他們只留兩個:describe_connector 查某個服務的資料結構怎麼查,execute 負責讀、寫、刪。其他能力讓 agent 需要時再一步步問出來,工具說明也盡量寫短,效果反而比較好。

Keep tool counts small
▲ 整個 MCP 執行層只靠 describe_connector 和 execute 兩個工具,其餘靠逐步探索。

登入就用 OAuth。規格上可以用別的方式,但規格本身很偏 OAuth,主流客戶端也都往那邊走。像 Claude 的自訂 connector 根本沒地方填 bearer token,只能走 OAuth。

使用者期待一直保持登入。網頁 app 偶爾要重新登入大家還能接受,但 MCP 被當成手機 app 在用,最好永遠不必想到登入這件事。所以 MCP 的 session 要做成長效、離線可用,而且跟網頁版分開管理生命週期。

Elicitation 還不能靠。串接 HubSpot 這類服務時,他們會產一個連結讓使用者點開去授權。MCP 規格裡其實有 elicitation,也就是向使用者要資料的機制,以前只有表單模式,不適合傳帳密,後來多了網址模式,跟他們的做法很像。問題是各客戶端支援不一,Claude Desktop 直接回說不支援,他們只好繼續用自己的做法。

四、CLI:要為 agent 設計,不是為人

CLI 是比較偏技術的那一側,某些地方也更強。同一個例子改用 CLI 跑:agent 先載入介紹這支 CLI 的 skill,再用指令去查 Context Store,一樣找出那五個客戶。

Pedro 的提醒是:對人很貼心的 CLI 設計,有些對 agent 是障礙。他們定了四條原則。

JSON 進、JSON 出。人喜歡一堆 flag,但查詢一複雜,agent 組 JSON 比猜 flag 準得多。輸出也是 JSON,回應很長時可以接管線,用 jq 挑需要的欄位。

JSON in, JSON out
▲ 實際的查詢長這樣:用 --json 丟整包條件去查 HubSpot 的 deals,JSON 是主要介面,flag 只是輔助。

格式要一致。指令一律是名詞加動詞,例如 connectors list、connectors create,workspace list 也照同一個規矩。agent 不必讀一堆文件就能猜對。

如果 agent 一直犯同一個錯、一直打錯同一個指令,就把那個寫法變成正式介面。一直被猜錯,代表原本的設計不夠直覺。

Consistency is key
▲ 名詞在前、動詞在後,所有資源都一樣,agent 自己就猜得到下一個指令。

Skill 要跟著工具一起發。skill 是寫給 agent 看的使用說明。沒有它,agent 根本不知道電腦裡裝了這支 CLI。他們的 skill 描述寫成只要問到 connector 就會被叫出來。內容不要全塞在主檔,細節拆成參考檔,主檔只放指引,需要時再讀,省 context。

不能停下來等人輸入。很多給人用的 CLI 會跳出提示等你打字,agent 會卡在那裡。所有輸入都要能用 flag 給,帳密這類用環境變數或設定檔事先設好。

五、MCP 還是 CLI?

MCP 的毛病是規格在各家客戶端的實作不一致,平台還會自己加限制。他舉例 Claude 對 server 和工具描述有 2KB 上限,工具執行也有時間限制,長時間的工作不好做。

CLI 的毛病是版本要自己管,不像託管的 MCP server 永遠是最新版。沒有任何限制也有風險,agent 可能一直繞圈出不來。

Both have their place
▲ 他的結論表:MCP 給非技術使用者、快速原型和一次性報表;CLI 給技術使用者、長任務和大量輸出。

他的選法:不寫程式的人要快速做原型、拉一次性報表,或想跟其他 MCP 串在一起,用 MCP。比較技術的使用者、跑比較久的任務、輸出很長要導到檔案再用 tail、head 看,用 CLI。


※ 來源:AI Engineer〈Designing CLIs for Agents, Not Humans — Pedro Lopez, Airbyte〉(YouTube,2026-10-09 上架)
※ 延伸:Airbyte Context Store、Airbyte agent MCP 文件
※ 逐字稿以 Whisper(medium.en)轉寫影片原音,並對照 YouTube 原音自動字幕(en-orig)與影片說明校正。內文投影片截圖取自原影片。本文為非官方整理,以原影片為準。

推 模擬: 工具只留兩個這招很實用,我們自己的 MCP 開了三十幾個工具,agent 常常挑錯。
→ 模擬: 「agent 一直打錯的指令就收編成正式介面」這條想偷學,等於拿 agent 當可用性測試。
→ 模擬: CLI 會跳互動提示真的會卡死 agent,之前被 npm init 坑過。
→ OP: 本文為非官方圖文整理。影片剛上架,截至 2026-10-10 還沒有留言,以上三則是模擬討論,不是正式留言。