KeyFrame內部研究專用

Building an ACP-Compatible Agent Live — Bennet Fenner, Zed

AI Engineer·7月8日週三·18 min英文

三句話摘要

Agent Client Protocol (ACP):統一AI編碼代理與編輯器通信的開源JSON RPC協議。 ACP透過統一的JSON RPC協議,使AI代理與編輯器實現無縫集成,開發者可快速構建支援多種客戶端的智能編碼代理,解決行業碎片化問題。 統一介面解決碎片化問題

重點整理

重點
  • 1

    統一介面解決碎片化問題

  • 2

    Zed面臨的核心痛點是每個AI模型供應商都推出自己的編碼代理,導致編輯器需要為每個代理單獨開發整合方案。ACP透過定義統一的JSON RPC協議,讓任何代理都能與任何支持ACP的客戶端通信,已有超過40個客戶端和多個主流代理支持該協議。

  • 3

    基於Session和非同步Updates的設計

  • 4

    ACP引入session概念,每次客戶端連接建立新的session並獲得唯一ID。代理不再侷限於傳統request-response模式,可透過session updates在任何時候向客戶端發送notifications,包括文本chunks、工具調用進展、執行結果等,特別適合流式處理。

  • 5

    代理透過Capabilities存取客戶端資源

  • 6

    ACP允許客戶端透過capabilities協商來宣告其支援的功能(如檔案系統proxy、終端管理等)。代理可利用這些能力存取編輯器buffer中未保存的內容,執行shell命令,甚至為自己動態添加新工具,大幅增強代理的互動性和靈活性。

  • 7

    最少四個核心函數實現完整代理

  • 8

    實現ACP代理只需要四個函數:initialize(協商協議版本)、create_session(生成session ID)、prompt(運行代理循環和工具調用)、cancel(支持取消操作),大幅降低開發複雜度。

實用技巧與重點

乾貨
  • 官方資源:
  • 網站:agentclientprotocol.com
  • 技術基礎:JSON RPC協議
  • 已支持的代理:
  • OpenCode(內建ACP模式)
  • Cursor(內建ACP模式)
  • 其他代理通過adapter支持
  • 已支持的客戶端(40+):
  • OpenClaw(同時是客戶端和代理)
  • JetBrains
  • Obsidian
  • Zed
  • 核心概念與API:
  • Session:每次連接的對話執行緒
  • Session Updates類型:agent_message_chunk、tool_call、tool_call_update
  • 代理需實現的四個函數:initialize、create_session、prompt、cancel
  • Capabilities:檔案系統proxy、終端管理
  • 支援的操作:
  • 檔案系統:readFile(native)、proxy through ACP(編輯器buffer)
  • 文本流:real-time streaming chunks
  • 工具調用:初始化→執行→返回結果
  • 終端:命令執行與輸出流式傳輸

結論

結論

ACP透過統一的JSON RPC協議,使AI代理與編輯器實現無縫集成,開發者可快速構建支援多種客戶端的智能編碼代理,解決行業碎片化問題。

完整解析

詳細

Zed是用Rust編寫的AI編碼編輯器,在去年面臨了一個日益嚴重的問題。隨著Claude、Gemini、OpenCode等主流AI模型供應商都開始推出自己的編碼代理和CLI工具,編輯器需要為每個代理單獨開發支援,導致集成工作碎片化且難以維護。Zed團隊認識到業界需要一個統一的協議,於是決定創建Agent Client Protocol (ACP)。

ACP的設計理念源自MCP和LSP的成功,採用JSON RPC作為通信基礎。其核心目標是建立一套統一的interface,使任何AI代理都能與任何支持ACP的客戶端(編輯器、IDE等)進行通信。這個想法獲得了業界廣泛支持——目前已有超過40個客戶端實現ACP支持,包括OpenClaw、JetBrains和Obsidian等知名編輯工具。許多代理也在參與,有的通過adapter將其原生協議轉換為ACP,有的直接在CLI中內建ACP模式。

在會議現場,講者Bennett進行了一場實時演示,展示如何從零開始在15分鐘內構建一個ACP兼容的編碼代理。他從一個最小化的TypeScript代理開始,該代理只支持讀檔案和編輯檔案兩個基本工具。實現ACP支持只需要四個核心函數:initialize用於協商協議版本和功能、create_session用於為每個客戶端連接生成唯一的session ID並初始化內部狀態、prompt用於接收用戶提示並運行代理循環(調用LLM、處理工具調用等)、cancel用於支持取消操作。

ACP的創新設計在於其session和非同步updates的機制。傳統的request-response模式中,客戶端必須等待代理的完整回應。但ACP允許代理在任何時候透過session updates向客戶端發送notifications,包括文本chunks(用於流式輸出)、tool_call updates(標記工具執行的開始和完成)等。這對於長時間運行的操作和實時反饋至關重要。

演示中,Bennett首先展示了如何整合Anthropic API的流式輸出。每當收到一個文本chunk時,代理發送一個type為agent_message_chunk的session update到客戶端,客戶端(Zed編輯器)即時顯示這些chunks。隨後,他為檔案操作添加了工具調用支持,分別在工具執行開始和結束時發送tool_call和tool_call_update,客戶端據此顯示工具執行的進度和結果。

特別值得注意的是ACP對Capabilities的支持。客戶端可以向代理宣告其支持的功能,例如檔案系統proxy和終端管理。檔案系統proxy允許代理存取編輯器buffer中未保存的內容,而不僅限於磁盤上的檔案——這對於編輯器的使用場景至關重要。演示的最後,Bennett展示了一個自舉(bootstrap)例子:他要求代理讀取自己的源碼,然後自動為自己添加一個新的終端工具來執行shell命令。代理成功地修改了自己的代碼,這清楚地展示了ACP的強大和靈活性。整個過程證明了實現一個功能完整的、支持流式輸出、多種工具調用和終端管理的AI編碼代理,並不需要複雜的工程工作。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「AI 技術」的內容

Between Two Nerds: Attribution is dead, long live attribution
32 min
AI 技術英文PODCAST8月25日

Between Two Nerds: Attribution is dead, long live attribution

Risky Business

  • 工具成本的破壞性下降 — 傳統上,攻擊者必須重複使用昂貴自製的惡意軟體或工具組,因為開發和維護成本極高。這種成本結構使得安全研究人員可以通過工具特徵和程式碼簽名來追蹤攻擊者。LLM 自動化了代碼生成與維護工作流,使得攻擊者可以輕易為每個目標生成新工具,或改用通用系統工具,導致傳統的工具特徵分析失效。
  • 所有取證證據都在攻擊者掌控之中 — 無論是使用的 IP 位址、惡意軟體類型或戰術流程,這些都是攻擊者的主動選擇。即使看似是隨機巧合,攻擊者仍有能力在事前決定留下什麼痕跡。因此,所有可恢復的取證證據本質上都是攻擊者願意暴露的信息。
  • LLM 削弱工具簽名但保留高階行為特徵 — LLM 經過公開駭客技術訓練,使不同使用者產生相似的攻擊模式。然而,勒索軟體集團、國家級行為者的受害者選擇、贖金要求方式或目標模式等高階特徵仍具有識別價值。例如,鎖定加密交易所的攻擊幾乎只能指向朝鮮。
Everything Goldman Sachs Taught Me About AI (In 10 minutes)
AI 技術英文8月24日

Everything Goldman Sachs Taught Me About AI (In 10 minutes)

Nate Herk

  • 驗證優於相信:看起來完整的AI輸出不等於正確答案,需在提示中要求模型重新檢查數字、引用來源,並對無把握的部分標記。
  • 區分AI與自動化:確定步驟且答案已知的任務用傳統自動化更便宜快速;只在需要判斷力、靈活性或處理複雜資訊時才用AI,兩者結合效果最佳。
  • 以問題驅動選型:先寫清楚「要解決的問題是什麼、成功的樣子是什麼」,再決定用什麼工具,許多失敗項目是從技術而非問題出發。
Mu: a self-hosted personal agent where the interface is an email address you can write to
AI 技術英文8月23日

Mu: a self-hosted personal agent where the interface is an email address you can write to

GitHub Awesome

  • Mu 是自主代理人系統,具有實際網址與獨立伺服器,用戶可透過多種方式與其互動——網頁應用、電子郵件或程式化介面。
  • 架構完整覆蓋日常工作流程的多個層面,整合郵件收發(SMTP/IMAP)、檔案管理、行事曆、新聞聚合、市場數據與搜尋功能於一個 Go 伺服器內。
  • 支援自帶模型與多種通訊協定,用戶可選擇不同的 AI 模型,並透過 MCP、HTTP API 或命令列工具整合到其他系統。