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編寫,但作者提供了大量方向指導並進行了廣泛測試,最終功能性和穩定性足以説明問題。