Corv: 為AI代理(及人類)打造的SSH客戶端
Corv 是一款專為AI代理設計的SSH客戶端,支援結構化JSON輸出、連線複用和安全憑據管理,同時為人類使用者提供互動式終端。
Corv 是一款專為AI代理和人類設計的SSH客戶端,旨在解決傳統SSH在代理驅動基礎設施中的不足。傳統SSH會向呼叫方暴露憑據,返回需要代理解析的終端文本,每次命令都需要重新認證,並依賴tmux、nohup或自定義指令碼管理長時間執行的任務。Corv 透過允許代理按名稱連線、執行命令並接收結構化JSON輸出、複用已認證的連線、以及分離和恢復長時間執行的作業,徹底改變了這一模式。同時,人類使用者也可以透過互動式終端UI使用完全相同的連線。
安裝Corv非常簡單。Linux/macOS使用者只需執行一行curl命令,Windows使用者可以使用PowerShell,同時也支援透過Go安裝。Corv還提供了更新和解除安裝功能,並且只在使用者主動執行時才進行更新,不會在後臺自動更新。
在用法方面,Corv支援互動式連線管理和命令列操作。使用者可以透過corv add新增主機,指定使用者、地址、金鑰甚至跳板機。新增時,密碼會被安全地儲存在本地加密保險庫中,絕不會作為命令列引數傳遞。連線後,可以執行互動式會話或非互動式命令(代理路徑)。非互動式命令支援--json標誌以輸出結構化資料,便於工具處理。對於長時間執行的命令,Corv會自動分離任務,並允許使用者透過重複相同命令來繼續監控,而不會啟動第二個副本。透過CORV_WAIT環境變數可以控制等待時間。
連線複用是Corv的核心特性之一。一個本地代理程序為每臺機器保持一個已認證的SSH連線,每個corv --命令作為新通道在該連線上執行,從而只需支付一次連線和認證成本。代理程序在首次使用時自動啟動,空閒15分鐘後退出,不會在伺服器上安裝任何內容。需要注意的是,這是連線複用而非遠端會話持久化,每個命令執行在自己的shell中,工作目錄等狀態不會在命令間保持。
輸出處理方面,Corv針對程式化消費者對命令輸出進行了規範化:進度條等回車重繪被壓縮為最終狀態,ANSI控制序列被移除,stdout和stderr按寫入順序交錯捕獲並返回在stdout中。已完成命令返回完整輸出,僅對真正的大輸出進行截斷,而仍在執行的命令則返回簡短預覽。傳輸失敗會被分類,遠端退出碼作為程序退出碼傳播。
安全模型上,Corv完全在客戶端執行,透過Go SSH庫實現SSH。目標伺服器上不安裝任何東西。連線配置檔案使用作業系統保護的保險庫金鑰進行加密儲存,密碼和金鑰密碼儲存在本地加密保險庫中。認證按順序嘗試:配置的身份檔案、ssh-agent、預設~/.ssh金鑰,最後是密碼。跳板機(ProxyJump)跳轉的每個主機都單獨驗證主機金鑰。主機金鑰根據~/.ssh/known_hosts進行驗證,未知主機需互動式批准,更改的主機金鑰始終被拒絕。代理程序使用作業系統許可權的本地IPC(Unix套接字或Windows命名管道)加上端點令牌進行深度防禦。
架構方面,Corv由多個獨立的小模組組成,包括連線配置檔案、加密保險庫、SSH傳輸、代理程序、輸出處理器、審計日誌、互動式TUI、命令列路由和檔案路徑等。這樣設計使得SSH後端或輸出處理器可以在不影響其他部分的情況下進行替換。
Corv還提供了與AI編碼代理(如Claude、Codex)的整合,可直接複製整合資料夾中的指令檔案供代理使用。開發方面,Corv使用Go語言,支援Linux、macOS和Windows平臺。
總的來說,Corv為AI代理和人類提供了一種更安全、高效且結構化的SSH連線方式,特別適合需要頻繁執行遠端命令的自動化場景。