CI/CD:Continuous Integration and Continuous Delivery or Continuous Deployment,这种系统要求频繁合并、最小化release循环、自动化部署,通过软件构建、测试和部署流程的自动化,标准化软件的发布过程。
一个可靠的长期运行的Agent系统可能需要以下部件:
- Task Orchestration
- Environment Execution
- Reproducible Deployment
1. Task Orchestration
Github Actions
由Github事件驱动的CI/CD编排系统,核心是Github的在线事件触发机制和用户预定义Workflow。Workflow以YAML形式存储在远端仓库的.github/workflows中,用于声明任务依赖、执行步骤和权限。事件发生后,Github Actions调度Runner执行这些步骤。Runner可以是Github提供的临时虚拟机,也可以是用户部署的Self-hosted机器。任务执行结果通过Github API和权限控制机制反馈到仓库的Github在线页面。
典型PR Review工作流:
1 | |
生产示例:self-hosted-llm-pr-review.yml
2. Reproducible Deployment
Harbor
Harbor是一个自动化Agent Benchmark评测框架,通过统一构建docker镜像和安装依赖来标准化、可复现化Benchmark评测流程。比如SWE benchmark任务有以下文件:
task/
|— issue.md # 描述问题
|— repository
|— environment.yaml # 描述环境,包括docker_image、denpendencies、commands等
|— test.sh
|— evaluator.py
Harbor会先生成一个Dockerfile、Build Image、启动Container、注入任务、启动Agent,会记录Agent调用的Tool记录、Benchmark的正确率、所消耗的资源等,但其最重要的功能还是标准化Benchmark环境部署方式,其次自动化部署、评测、记录。
3. Environment Execution
Sandbox是一个受限制的执行环境,它需要能够:
- 隔离文件系统、进程、网络、用户权限和内核能力
- 提供可复现的任务执行环境
- 对环境内可用机器资源进行限制
进程级Sandbox如Linux namespace通过PID Namespace、Mount Namespace、Network Namespace分别限制沙箱内可见的进程树、文件系统和网络地址;Seccomp可以禁止程序调用内核能力。
Container Sandbox的典型为Docker,它通过Linux namespace和Seccomp、Cgroup实现上述能力,然而会和Host共享Linux Kernel,导致container内的内核操作可能会影响整台机器,因此不适合单独作为sandbox。
MicroVM Sandbox如Firecraker则在机器层面彻底隔离环境,通过套皮Kernel杜绝了Docker的隐患。
OpenSandbox
OpenSandbox是一个面向AI Agent的开源sandbox平台,它为Agent提供一系列沙箱操作API从而隔离其工作环境。Agent可以用它请求创建sandbox、管理文件、执行命令,它则返回相应的结果,功能类似于runtime,支持Docker和Kubernetes(集群内动部署服务),更支持大规模集群GPU任务、企业自建平台。
E2B
E2B是一个面向AI Agent的商业化开源sandbox平台,它为Agent提供云端安全执行环境,同样提供SDK/API,与OpenSandbox相比启动更快、状态可保存,实现上比较依赖Firecracker MicroVM,更支持高性能单机服务。