envd AI/ML 开发环境
用 Python 式清单构建可复现、可缓存并能跨本地与 Kubernetes 运行的容器开发环境。
- Star 数
- ★ 2.2k
- 最近更新
- 16 天前
- License
- Apache-2.0
- 主语言
- Go
- FA 评分
- 62/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 需要统一 Python、Conda、CUDA 和系统依赖的 AI/ML 团队,用 build.envd 代替分散的安装脚本。
- 不适合
- 没有 Docker 20.10.0 或更高版本运行时的团队
- 仍在使用 v0 语法、不愿迁移 build.envd 的项目
- 需要完全离线、无法访问容器镜像仓库的环境
这个 Agent 能做什么,适合哪些场景?
envd 是面向 AI/ML 工作流的命令行开发环境工具,以 build.envd 文件声明基础环境、语言、软件包、Shell 和 Jupyter 等配置。它解析清单,通过 BuildKit 构建隔离的容器环境,并生成兼容 OCI 规范的镜像。开发者可以用 envd up 在本地启动环境,也可以切换 context,以相同操作方式在 Kubernetes 集群中运行。它支持远程构建,并利用 PyPI、APT 等缓存减少重复下载和构建时间。团队还能通过 include 从 Git 仓库导入可复用的 envd 函数;采用前需准备 Docker 20.10.0 或更高版本。
用户在 build.envd 中定义 build(),调用 base、install.conda、install.python、install.python_packages、shell、config.jupyter 等接口描述环境。envd up 解析该文件及其依赖,借助 BuildKit 构建容器镜像、创建工作目录并连接到隔离环境;--detach 可让环境在后台运行。envd envs ls 列出环境状态、容器 ID、镜像、SSH 目标以及 Jupyter 地址。envd context use local 和 envd context use cluster 分别选择本机与 Kubernetes 集群执行边界。远程构建可以在另一台机器上完成镜像构建并推送到容器注册表,include 则可从 Git 仓库加载团队共享函数。
- 需要统一 Python、Conda、CUDA 和系统依赖的 AI/ML 团队,用 build.envd 代替分散的安装脚本。
- 希望在隔离环境中训练、微调或提供模型服务的开发者,用 OCI 兼容镜像封装运行环境。
- 本地机器资源有限的工程师,把构建任务交给性能更高的远程机器,再将镜像推送到注册表。
- 同时使用个人工作站和 Kubernetes 集群的团队,通过切换 envd context 保持一致的启动体验。
- 频繁重建依赖环境的项目,利用 BuildKit 以及 PyPI、APT 缓存减少重复下载。
- 需要共享 TensorBoard 等标准环境组件的团队,通过 include 导入 Git 仓库中的 envd 函数。
如何安装或部署这个 Agent?
运行时要求为 Docker 20.10.0 或更高版本。使用 pip 安装或升级 envd:
pip install --upgrade envd安装后执行引导:
envd bootstrap如需配置 docker.io 镜像源,可执行:
envd bootstrap --dockerhub-mirror https://docker.mirrors.sjtug.sjtu.edu.cn文档还说明可以直接下载二进制 release,但给定材料未提供具体下载命令。
如何使用这个 Agent?
克隆示例项目:
git clone https://github.com/tensorchord/envd-quick-start.git示例 build.envd:
def build():
base(dev=True)
install.conda()
install.python()
# Configure the pip index if needed.
# config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple")
install.python_packages(name = [
"numpy",
])
shell("fish")构建并进入环境:
cd envd-quick-start && envd up若要启用 Jupyter,在 build() 中加入:
config.jupyter()后台启动并查看 Jupyter 地址:
envd up --detach
envd envs ls在本地与集群之间切换:
envd context use local
envd up
envd context use cluster
envd up这个 Agent 有哪些优点和局限?
- build.envd 使用 Python 风格接口,能直接声明 Conda、Python 包、Shell 和 Jupyter,无需再学习一种独立 DSL。
- 输出兼容 OCI 镜像,可通过 Harbor、Docker Hub 等容器注册表分发。
- 同一 CLI 可面向本地机器和 Kubernetes 集群,并支持远程构建。
- BuildKit 与 PyPI、APT 缓存能够复用已下载的软件包,减少重复构建成本。
- include 可从 Git 仓库导入团队函数,避免复制粘贴 Dockerfile 指令。
- 必须具备 Docker 20.10.0 或更高版本,容器运行时是明确的采用前提。
- 本地与集群之间虽然保持相似操作方式,但 Kubernetes 集群配置和运行条件未在给定材料中完整展开。
- v1.0 起默认语法和默认构建器发生变化;从 v0 升级时需处理语法及构建器迁移。
- 远程构建和镜像分发依赖远程机器及容器注册表等外部基础设施。
- 材料没有证明它原生集成 ChatGPT、Codex、Claude 或相应模型 API;仓库主题中的 codex 不能视为产品兼容性证据。
这个 Agent 与同类方案有什么区别?
与 Dockerfile v1 相比,envd 明确提供 PyPI 缓存能力,并用 Python 风格的 build.envd 声明开发环境。envd v1 还支持 moby 构建器;其对开发模式、CUDA、服务、自定义基础镜像和多语言安装的支持比表中所列的 envd v0 更完整。envd v0 和 v1 都支持开发模式与 CUDA,但 v0 对服务、自定义基础镜像和多语言安装仅标为有限支持,且不支持 moby 构建器。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| envd AI/ML 开发环境 当前 | 62 · 存在缺口 | 命令行工具免费 | ★ 2.2k | 16 天前 | Go | — |
| Cynative 安全代理框架 | 74 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 223 | 今天 | Go | OpenAI API · Claude API |
| Sico 数字员工平台 | 72 · 存在缺口 | 自托管服务免费 + 模型费 | ★ 283 | 1 个月前 | Python | OpenAI API · Claude API |
| Archestra | 71 · 存在缺口 | 自托管服务免费版 + 付费版 | ★ 4.4k | 今天 | TypeScript | Codex · Claude Code · OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README明确展示容器隔离、主机目录挂载、端口暴露、SSH密钥安装、远程构建、镜像仓库及集群交互,许可证和贡献者列表也提供了来源归属,因此透明度和归属并非完全缺失。但示例环境显示以sudo运行,未见最小权限模型、危险操作确认、权限清单或回滚流程;遥测仅通过CI中的禁用变量间接显现,未说明收集内容、目的地或默认状态;敏感凭据、SSH密钥和仓库认证的处理保障也未展开。Go依赖有明确版本,但依赖面很大,CI还使用master、latest及非提交摘要固定的Actions,所给文件中没有漏洞扫描、锁定策略或供应链缓解说明。
产品定位、build.envd示例、envd up工作流及CI中的构建、单元测试和两类端到端测试相互一致,普通使用路径有较好的静态支持。Docker最低版本和主要Go依赖均有记录,但运行依赖Docker、BuildKit、包索引、Git仓库、镜像仓库及可选云端服务,离线或服务不可用时的行为未说明。用户侧失败诊断、错误分类和恢复建议很少,展示内容主要是成功日志,故失败消息仅获部分分。
材料清楚覆盖AI/ML开发者、团队复用、Python/R/Julia、本地、远程构建、Kubernetes、Jupyter、训练和服务等场景,受众与应用面描述充分。Docker 20.10+要求、v0/v1能力差异及部分权限提示界定了一些边界,但支持平台矩阵、资源要求、网络限制及不适用场景仍不完整。操作由明确的envd bootstrap、envd up、context use和清单函数触发,触发精度高;本地与集群上下文、OCI兼容、Linux CI及macOS构建为环境适配提供了较强证据。
README按概念、价值、安装、快速开始、Jupyter、语法迁移、文档、路线图和贡献组织,且包含可直接使用的命令与配置,信息架构和安装说明完整。envd、build.envd及命令命名稳定清楚,但v0到v1存在默认语法和构建器变化,只通过迁移提示缓解。示例丰富但没有实际FAQ;已知限制只零散出现在Docker要求、权限提示和v0/v1表中。Apache-2.0全文及TensorChord版权声明完整。标签触发的CHANGELOG生成流程表明存在版本记录机制,但未提供CHANGELOG内容或兼容承诺。贡献渠道、社区和署名明确,不过发布者未获企业注册验证,且材料没有明确的安全联系人、支持承诺或单一维护责任人。
输出是可进入的容器开发环境、OCI镜像、Jupyter端点及可复用构建清单,README给出了具体、可操作的结果形态,因此输出可用性高。相对于手写Dockerfile,声明式多语言环境、缓存、远程构建、团队函数复用及本地/集群上下文具有明确增量价值。缓存可减少重复下载,但速度、资源消耗和维护成本的优势主要由项目自述,且庞大依赖、Docker引导、镜像传输和集群基础设施会产生额外成本,所以成本收益未获满分。
多数核心能力都关联到具体命令、build.envd片段、终端输出、依赖清单或CI任务,具有中等可追溯性;README、go.mod和CI在Go实现、容器构建、测试及外部依赖方面能够交叉印证。不过没有执行结果或独立验证,CI徽章和示例日志也不能在本次静态审查中证明当前修订通过。关于更快、更高效、无缝和可复现性的表述多为宣传性结论,未明确区分已证事实、推断和基准结果。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- envd可挂载主机目录、安装SSH密钥、暴露端口、推送镜像并操作远程或Kubernetes环境;在使用不受信任的build.envd或include仓库前应进行人工审查并限制凭据和主机路径。
- CI中出现ENVD_ANALYTICS禁用开关,但所给用户文档没有说明遥测的默认状态、数据字段、接收方或保留策略。
- 依赖及CI Action数量较多,且存在master、latest和标签固定;采用前应另行核查依赖来源、摘要固定和已知漏洞。
- 未见一等的预览、确认或回滚流程;对镜像发布、集群部署、挂载和缓存修改应使用外部变更控制及恢复措施。
- 本评估仅依据给定文件进行静态审查,未执行构建、测试或安全扫描,也未验证示例输出。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Changelog Bug Fix 🛠 * 9d575b354ce17a02ef9698b6ff0d5d14296c5734: fix: prevent TOCTOU in requirements file reads (#2119) (@kemingy) Documentation 🖊️ * 64bfe688f2a55173366a3eccb877622991dae41d: docs: updated CHANGELOG.md (#2117) (@github-actions[bot]) Others: * 968bc49d577e6c3c5bbb9e6587542c9ddfe66dad: chore(deps): bump the all-dependencies group across 1 directory with 2 updates (#2118) (@dependabot[bot])在 GitHub 查看 ↗ -
发布说明摘录
Changelog Bug Fix 🛠 * 4ca4fdd262d266e446484522a117033765d54f43: fix: always create the compdef before r-w-o zshrc (#2084) (@kemingy) * f576c92c1e6dcb9b00b60995534aeb2a83b0b407: fix: restrict install.python_packages paths to the build context (#2112) (@kemingy) Documentation 🖊️ * 376d0713fdc27abe63e23af59f047169fb51ecc6: docs: add AGENTS.md with repo layout and development guide (#2115) (@kemingy) * e8254329e9f338c221cc0d1c54b2a3032349c05e: docs: updated CHANGELOG.md (#2077) (@github-actions[bot]) Others: …在 GitHub 查看 ↗ -
发布说明摘录
Changelog Exciting New Features 🎉 * c49ed2cb7fdeaa5d966ca36181b7ce27bc6fdf6a: feat: add the build.envd file to this repo (#2082) (@kemingy) * 3cac99fd121961eae2ce0bb634a026891b8e77df: feat: get the latest github release tag for codex (#2081) (@kemingy) * d7379df920a3305191f834e1539f3b4bfd9f084f: feat: support --cap for envd up (#2078) (@kemingy) Others: * 38015c99198dc8490301c9662c1bdce7d650e4df: chore(deps): bump pypa/cibuildwheel from 3.3.0 to 3.3.1 in the all-actions group (#2079) (@dependabot[bot])在 GitHub 查看 ↗