AI编程助手的确好用,直到它不小心删掉你的项目文件、泄露API密钥,或者把你的代码库搞得一团糟。
每个项目需要不同的工具、凭证和配置文件。可大多数开发者都让AI代理直接跑在宿主机上,给了它们不受限的文件系统访问权限、未过滤的网络调用,而且完全没有审计记录。
aienv就是来解决这个问题的。
这个工具的思路很直接:用一个YAML文件定义代理需要的所有东西。包括要运行的二进制文件、挂载哪些目录、允许访问哪些API接口,以及注入哪些环境变量。aienv会基于这个YAML文件构建Docker镜像,启动一个沙盒化的容器,运行HTTP代理来强制实施网络策略,并且把每一次网络请求都写入JSONL格式的审计日志。
代理被当成黑箱处理。aienv不关心你用的是Claude Code、OpenCode、Cursor、Pi,还是自己写的脚本。只要是能在命令行跑的程序,它就能管。
安装也很简单。先执行go install github.com/kapilratnani/aienv@latest,然后用aienv create my-coding-env创建一个环境。这一步会走一遍交互式设置流程,最后在~/.local/share/aienv/my-coding-env/env.yaml生成YAML配置文件。文件里会定义环境名称、描述信息,以及代理的安装和启动命令,比如通过npm安装opencode-ai后执行opencode。
环境变量通过env字段配置,值前面加上"env:"前缀就表示在运行时从宿主机环境透传,而不是写死在镜像里。像是GITHUB_TOKEN: "env:GITHUB_TOKEN"这种写法,能让镜像保持可移植性,也方便利用哈希缓存。挂载点默认全是只读的。你可以把项目目录挂到/workspace并设为可写,把.agents目录下的技能文件以只读方式挂进去,只有那些代理真正需要修改的路径才打开writable: true标记。
需要系统包或者自定义安装的依赖,也能在deps字段里声明。nodejs、git、curl、golang-go、ripgrep这些系统包列在packages下面,go install或cargo install这类自定义安装命令放在custom部分。aienv会在构建镜像时把这些都装好,镜像按照整个YAML文件的SHA-256哈希来缓存。只要配置文件有任何改动,下次激活时镜像会自动重新构建。
还有一点值得注意:单次执行模式。不用进入交互式会话,直接把提示词发给代理,让它独立完成任务、提交变更、创建PR,然后退出。这个模式让代理的工作方式更接近自动化脚本,而非需要你坐在旁边盯着看的交互式工具。
热门跟贴