Venv-manager:面向人類和AI代理的Python虛擬環境執行時
Venv-manager是一個用Go編寫的Python虛擬環境管理工具,提供簡潔的CLI和Model Context Protocol(MCP)伺服器,支援檔案監控自動安裝缺失依賴、沙盒化臨時執行以及完整的虛擬環境生命週期管理,有效解決人類開發者與環境混亂以及AI代理包管理失誤的問題。
Venv-manager 是一個創新的 Python 虛擬環境管理工具,由 Go 語言編寫,編譯為單個靜態二進位制檔案,執行時僅需要系統中安裝有 Python 3(如果可用,也可利用 uv 加速)。它的設計初衷是解決兩個核心痛點:人類開發者面臨的虛擬環境混亂問題,以及 AI 代理(如大型語言模型)在生成和執行 Python 程式碼時頻繁出現的環境管理錯誤。
對於人類使用者,venv-manager 提供了一個清晰的命令列介面,支援建立、列出、刪除、克隆虛擬環境,以及安裝、升級、清理包等常用操作。它還包含一個用於發現配置的 config init 命令,以及一個基於 Bubble Tea 的終端介面(TUI),方便瀏覽環境。更重要的是,它引入了“檔案監視”模式:透過 watch app.py --venv myenv 命令,工具會監視指定檔案的變化,使用輕量級的 AST 解析器掃描其 import 語句,自動解析第三方庫別名(如 cv2 → opencv-python),並與當前虛擬環境中的已安裝包進行對比,然後自動安裝缺失的依賴。這使得虛擬環境始終與指令碼的需求保持同步,非常適合在 LLM 迭代式開發場景中使用。
對於 AI 代理,venv-manager 提供了 Model Context Protocol(MCP)伺服器,透過標準輸入輸出暴露 JSON-RPC 2.0 介面。代理可以呼叫包括 list_venvs、create_venv、describe_venv、install_packages、run_in_venv 和 exec_ephemeral 在內的多個工具。其中 exec_ephemeral 支援建立臨時虛擬環境、安裝依賴、執行命令,然後自動銷燬,整個過程在一個呼叫中完成。此外,該工具還支援沙盒執行(在 macOS 上使用 sandbox-exec,在 Linux 上使用 bubblewrap),預設拒絕網路訪問,只允許對臨時目錄和虛擬環境路徑的寫入,適合執行不受信任的指令碼。
另一個關鍵特性是 JSON 快照功能。describe 命令返回虛擬環境的完整快照,包括 Python 版本、包列表、磁碟用量、凍結雜湊以及各 shell 的啟用命令。凍結雜湊使代理能夠在 O(1) 時間內檢測環境漂移。快照可以標記並用於回滾,確保環境狀態的可追溯性。
專案配置儲存在 ~/.config/venv-manager/config.json,支援設定基礎目錄、預設 Python 版本、是否使用 uv 等。如果系統中安裝了 uv 並啟用配置,建立虛擬環境的速度可提升 10 到 100 倍。
Venv-manager 的程式碼結構清晰,包括 cobra CLI、核心操作管理器、MCP 伺服器、TUI 等內部包。該專案在 GitHub 上開源(MIT 許可證),由 Jacopo Bonomi 開發,目前獲得 35 顆星,已有 7 個版本釋出。