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 个版本发布。