AI News HubLIVE
站內改寫2 分鐘閱讀

將任何CLI代理無縫整合到終端中

一位開發者建立了Terminai,一個透明包裹器,允許使用者在終端中按需呼叫AI編碼代理,而無需切換上下文或更換終端模擬器。該專案用Rust編寫,透過修改ratatui和rat-salsa解決了TUI渲染問題,並提供了MCP伺服器和CLI工具與AI互動。

來源Hacker News AI作者: emosenkis

一位軟體工程師在工作和個人生活中都遇到了同樣的難題:在終端中工作時,希望藉助AI理解最近的輸出或編寫命令,但手動複製貼上上下文到聊天視窗非常繁瑣,而預先執行完整的CLI編碼代理又破壞了終端工作的效率。他想要的是,讓已經使用的編碼代理在需要時彈出到終端中,其餘時間保持不可見。

現有的工具無法滿足這一需求:iTerm2的AI功能不允許使用已有的AI訂閱,Warp需要更換整個終端模擬器和工作流程,並訂閱新的服務。因此,他決定開發一個透明包裹器,能夠與現有工具協同工作,僅在透過快捷鍵召喚時才顯現。

專案從pvolok優秀的mprocs專案程式碼庫起步,負責終端模擬和渲染。使用Claude和Codex剝離了mprocs特定程式碼,新增了按需覆蓋的AI終端介面和一個MCP伺服器。透過CLI標誌,MCP伺服器被注入到AI代理的配置中,並在系統提示中新增指令,解釋AI如何與終端互動。

代理可以檢索終端內容、後設資料和歷史記錄,併傳送使用者批准後的輸入到被控終端。此外,還提供了一個CLI命令,具備MCP伺服器的全部功能,以便不支援MCP的代理使用,或將輸出管道化而非直接送入AI上下文。

實現真正透明化的最大挑戰在於TUI渲染。為了讓覆蓋層完全無縫,必須分叉ratatui TUI工具包和rat-salsa元件庫,解決三個底層問題:終端滾動回退、損壞的複製貼上以及空行末空白字元。透過採用傳統方式——在螢幕頂部寫入內容並追加足夠換行符強制原生終端滾動——解決了滾動回退問題。對於複製貼上,修復了末尾空字元和換行導致的複製錯誤,確保ratatui利用宿主終端進行換行而非移動游標。

該工具採用MIT許可證,用Rust編寫,注重效率、顯式錯誤處理,並利用型別系統來強制不變性。隱私方面,零遙測、零跟蹤、無資料收集,日誌僅本地儲存用於除錯。安全方面,MCP伺服器執行在127.0.0.1的HTTP伺服器上,透過執行時生成並傳遞給AI代理的Bearer令牌保護。AI代理可以直接使用環境變數中的認證資訊,或者透過stdio MCP伺服器代理請求。

專案大部分程式碼由Claude和Codex編寫,但作者提供了大量方向指導並進行了廣泛測試,最終功能性和穩定性足以說明問題。