ACP 整合

將任何支援 ACP 的編輯器連接至 Bob Shell,作為一流的 AI 助手。

Bob Shell 可作為 Agent Client Protocol (ACP) 伺服器運行。連接後,編輯器負責管理執行緒介面、權限對話方塊和差異比較,而 Bob 負責管理執行環境: 模型存取、工具、MCP 伺服器和 shell 執行。

注意:

ACP 對程式設計智能體的作用,與 Language Server Protocol 對語言工具的作用相同:一份 JSON-RPC 契約,多個編輯器,多個智能體。本機智能體透過 stdin 和 stdout 與編輯器通訊。

支援的編輯器

你可以透過 Bob Shell 連接至以下編輯器:

  • Zed
  • IntelliJ IDEA
  • Neovim
  • Xcode

Xcode

設定你的 Xcode ACP agent 以執行 bob acp。Xcode 會以子程序方式啟動該程序,並透過 stdin 和 stdout 與其通訊。

注意:

Xcode 在受限環境中啟動 bob acp。如果 Bob Shell 找不到專案工具,你可能需要在第一次使用時傳入 --trust。有關取捨,請參閱命令選項。

快速開始

將 Bob Shell 作為 ACP 伺服器啟動:

bob acp

該程序在 stdin 上等待 JSON-RPC。請透過編輯器的 ACP 設定來啟動它: 直接在終端機中執行會看起來像是卡住了。

依照編輯器的 ACP 設定說明連接至 bob acp 程序。有關協定的詳細資訊,請參閱 ACP 規範。

身分驗證

Bob 在 ACP 初始化期間進行身分驗證。如果啟動 bob acp 的環境中已設定 BOBSHELL_API_KEY,Bob 將使用該金鑰,無需進一步操作。

沒有 API 金鑰或已儲存的權杖時,編輯器會提示你透過 SSO 進行身分驗證。完成一次瀏覽器流程即可; Bob 會儲存權杖,以便同一台機器上的後續 ACP 工作階段重複使用。

工作區信任

Bob 在建立工作階段之前檢查工作區信任狀態。不受信任的工作區會導致工作階段建立失敗。若要信任某個工作區,請在該目錄中開啟終端機,並以互動方式執行 Bob Shell:

cd /path/to/project
bob

信任記錄儲存後,退出並透過編輯器重新連接。

對於臨時或一次性環境,可在 ACP 參數中傳入 --trust。有關取捨,請參閱命令選項。

MCP 伺服器

編輯器和 Bob 都可以向工作階段提供 MCP 伺服器。兩組伺服器都在同一個 Bob 工作階段 harness 中初始化,因此容易忽略重複設定。

每台 MCP 伺服器只設定一個擁有者。如果某個 MCP 工具意外缺失,請同時檢查編輯器的 MCP 設定和 Bob 的原生 MCP 設定。

重要:

每個 ACP 工作階段都會建立自己的 harness 及其設定的 MCP 伺服器。本機 MCP 伺服器可能針對每個作用中的 Bob 執行緒啟動一次。在開啟多個平行執行緒之前,請監控資源使用情況,尤其是當伺服器啟動 JVM、容器或本機模型時。

Bob Shell 與編輯器終端機的比較

Bob Shell 在其自身的子程序中執行命令,而非在編輯器終端機中。如果 bob acp 程序繼承了不同的 PATH、工作目錄或環境變數,在編輯器終端機中有效的命令可能對 Bob Shell 失效。

你在執行中的編輯器終端機裡所做的變更(例如 cd 或 export)不會傳遞至 Bob Shell。如果你更新了啟動環境,請重新啟動 ACP 執行緒。

命令選項

從 bob acp 開始,僅在有明確原因時新增選項:

選項說明
--log-level <level>設定日誌詳細程度:debug、info、warn、error 或 silent。也可透過環境變數 BOB_LOG_LEVEL 進行設定。
--trust信任此 ACP 伺服器開啟的所有工作區。此選項會移除專案層級的邊界,不要將其加入永久編輯器設定。
--auto-approve核准每次工具呼叫,不顯示權限提示。此選項比為單個工具選擇一律允許更為寬泛。
--disable-mcp跳過 MCP 伺服器初始化。使用此選項可隔離工作階段啟動失敗問題。
--disable-subagents當任務不需要委派時,省略 Bob 的子智能體工具註冊。
--accept-license在伺服器啟動前記錄授權同意。請先執行 bob --show-license acp 查看授權檔案。
警告:

同時使用 --trust 和 --auto-approve 會移除工作區存取控制和個別工具的審核。提示詞可以在伺服器開啟的任何工作區中操作,無需進一步確認。請勿在預設編輯器設定中同時包含這兩個選項。

這個主題如何?