# AI-Agent-Container
**Repository Path**: OpenCloudOS/ai-agent-container
## Basic Information
- **Project Name**: AI-Agent-Container
- **Description**: 本仓库用于社区贡献者提交基于 OpenCloudOS 9 的 AI / AI Agent 容器镜像。您可以挑选感兴趣的项目,为其编写基于 OpenCloudOS 9 的 Dockerfile 和容器镜像,并通过 PR 提交适配成果。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 19
- **Created**: 2026-03-31
- **Last Updated**: 2026-04-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🚀 OC9 AI 容器镜像共建
**OpenCloudOS 9 × 主流 AI/AI Agent 框架容器镜像适配仓库**
[](https://www.opencloudos.org/)
[](./LICENSE)
[](https://gitee.com/OpenCloudOS/ai-agent-container/pulls)
[](https://gitee.com/OpenCloudOS/ai-agent-container)
---
>本仓库用于社区贡献者提交**基于 OpenCloudOS 9 的 AI / AI Agent 容器镜像**。您可以挑选感兴趣的项目,为其编写基于 OpenCloudOS 9 的 Dockerfile 和容器镜像,并通过 PR 提交适配成果。
>
## 📖 目录
- [参与贡献前必读](#参与贡献前必读)
- [仓库结构](#仓库结构)
- [贡献流程](#贡献流程)
- [自动化 CI/CD 流水线](#自动化-cicd-流水线)
- [适配框架清单](#适配框架清单)
## 参与贡献前必读
### 环境要求
| 项目 | 要求 |
|------|------|
| 构建工具 | Docker(≥ 20.10)或 Buildah / Podman |
| Python | ≥ 3.11(推荐 3.11) |
| CUDA | 推荐 12.8(GPU 场景,非 GPU 可忽略) |
| 硬件 | CPU 镜像无特殊要求;GPU 镜像需 NVIDIA GPU |
### Dockerfile 规范
不同类型的框架使用不同的基础镜像:
| 场景 | 基础镜像 | 适用框架 |
|------|---------|---------|
| **纯 Python / CPU** | `opencloudos/opencloudos9-minimal:latest` | LangChain、CrewAI、Dify、FastGPT 等 |
| **需要 GPU / CUDA** | `opencloudos/opencloudos9-cuda-devel:12.8` | vLLM、DeepSpeed、TensorRT-LLM、PyTorch 等 |
> 详细硬件要求和 Dockerfile 规范请阅读 👉 [CONTRIBUTING.md](./CONTRIBUTING.md)
## 仓库结构
```
ai-agent-container/
├── README.md # 本文件
├── CONTRIBUTING.md # 贡献指南(详细版)
├── FRAMEWORKS.md # 可适配的 AI 框架完整清单
├── LICENSE
├── cuda_test.sh # GPU 基础环境检查参考模板
└── frameworks/ # 各框架适配目录(按 PR 提交)
├── vllm/
│ └── 0.10.2/
│ ├── Dockerfile
│ ├── README.md
│ ├── test.sh # 可选,基础功能验证脚本
│ └── build.conf # 可选,构建参数配置
├── langchain/
│ └── 1.2.14/
│ └── ...
└── ...
```
## 贡献流程
> 详细规范请阅读 👉 [CONTRIBUTING.md](./CONTRIBUTING.md)
### 快速上手(4 步完成)
**① Fork & Clone**
```bash
git clone https://gitee.com/<你的用户名>/ai-agent-container.git
cd ai-agent-container
```
**② 创建框架适配目录**
```bash
mkdir -p frameworks/vllm/0.19.0
```
**③ 编写 Dockerfile & 验证**
```bash
# 构建镜像
docker build -t oc9-vllm:0.19.0 frameworks/vllm/0.19.0/
# 运行基础验证
docker run --rm --gpus all oc9-vllm:0.19.0 python3.11 -c "import vllm; print(vllm.__version__)"
```
**④ 提交 PR**
```bash
git checkout -b feat/add-vllm
git add frameworks/vllm/0.19.0/
git commit -m "feat: add vllm v0.19.0 container image for OC9"
git push origin feat/add-vllm
# 在 Gitee 上发起 Pull Request
```
### PR 提交要求
每个 PR **必须包含**:
| 文件 | 说明 |
|------|------|
| `frameworks/<框架名>/<版本号>/Dockerfile` | 基于 OC9 基础镜像(minimal、cuda-devel 或其他) |
| `frameworks/<框架名>/<版本号>/README.md` | 框架简介、版本、构建命令、使用示例、已知问题 |
每个 PR **推荐包含**:
| 文件 | 说明 |
|------|------|
| `frameworks/<框架名>/<版本号>/test.sh` | 基础功能验证脚本(宿主机运行,接收 `$1` 为镜像名:标签) |
| `frameworks/<框架名>/<版本号>/build.conf` | 构建参数配置(镜像名、标签、是否需要 GPU 测试等) |
### 验收标准
- ✅ 基于 OpenCloudOS 9 基础镜像构建成功(`opencloudos9-minimal` `opencloudos9-cuda-devel` 或其他)
- ✅ 可正常运行
- ✅ GPU 镜像需验证 CUDA 驱动兼容性(如适用)
- ✅ Dockerfile 规范,无硬编码密钥或个人信息
- ✅ README 文档完备
- ✅ 包含 test.sh 和运行成功截图
## 自动化 CI/CD 流水线
本仓库配有两条自动化流水线,贡献者提交 PR 后无需手动操作,流水线会自动完成检查与发布,并将结果以评论形式反馈到 PR。
### 🔍 CI 门禁(PR 阶段)
**触发时机**:PR 创建、更新(新 push)时自动触发;也可在 PR 评论中输入 `/retest` 手动重触发。
流水线仅检查**本次 PR 修改的目录**,分三个阶段依次执行:
#### 阶段一:格式与配置校验
| 检查项 | 通过条件 | 失败影响 |
|--------|---------|---------|
| **必需文件** | 每个提交目录必须包含 `Dockerfile` 和 `README.md` | ❌ 阻断,PR 无法合并 |
| **build.conf 必填** | `frameworks/<框架>/<版本>/` 三级目录**必须**提供 `build.conf`,否则无法推断镜像名 | ❌ 阻断 |
| **IMAGE_NAME 格式** | 只允许小写字母、数字、`.`、`_`、`-`,且以字母或数字开头(`^[a-z0-9][a-z0-9._-]*$`) | ❌ 阻断 |
| **IMAGE_TAG 格式** | 允许字母、数字、`.`、`_`、`-`,且以字母或数字开头(`^[a-zA-Z0-9][a-zA-Z0-9._-]*$`) | ❌ 阻断 |
| **BUILD_CONTEXT 格式** | 若声明,须符合 `key=路径` 格式 | ❌ 阻断 |
| **GPU_TEST 合法值** | 只能是 `true` 或 `false` | ❌ 阻断 |
| **Hadolint lint** | Dockerfile 最佳实践检查(忽略 DL3008/DL3013/DL3059) | ⚠ 警告,不阻断 |
> **提前规避**:`build.conf` 字段说明与示例见 [CONTRIBUTING.md §2.2.1](./CONTRIBUTING.md);常见 Hadolint 警告可在本地用 `hadolint Dockerfile` 提前检查。
#### 阶段二:构建验证
在 GPU 机器上执行 `docker build`,确认 Dockerfile 可以成功构建。
- 构建失败(语法错误、基础镜像拉取失败、依赖安装报错等)→ ❌ 阻断
#### 阶段三:功能测试
| 步骤 | 说明 |
|------|------|
| **基础测试** | 若提交了 `test.sh`,CI 会在 GPU 机器上执行 `bash test.sh <镜像名:标签>`,非零退出码即为失败 |
| **GPU 测试** | `build.conf` 中声明 `GPU_TEST=true` 时,额外运行 `torch.cuda.is_available()` 验证 CUDA 可用性 |
> **test.sh 编写规范**:脚本必须以第一个参数 `$1` 接收镜像名:标签,通过 `docker run --rm "$1" ...` 验证容器功能,验证通过 `exit 0`,失败 `exit 1`。详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
#### CI 结果反馈
PR 页面将收到评论通知,同时打上状态标签:
| 结果 | 标签 | 说明 |
|------|------|------|
| 检查中 | `ci_running` | 流水线运行中 |
| 全部通过 | `ci_passed` | 可以申请合并 |
| 存在失败 | `ci_failed` | 请查看评论中的日志链接,修复后重新 push 或评论 `/retest` |
---
### 🚀 Publish 发布(合并后)
**触发时机**:PR 被合并到 `master` 后自动触发。
流水线执行以下操作:
1. **重新构建**本次合并引入的镜像
2. **推送**到 Docker Hub(命名空间 `ocpub`),镜像名和 tag 来自 `build.conf` 中的 `IMAGE_NAME` 和 `IMAGE_TAG`
3. **防覆盖保护**:若该 tag 在 Docker Hub 上已存在,跳过推送并在日志中告警
> **注意**:若 PR 合并时该 tag 已在 Docker Hub 存在(如之前有同名同版本发布),镜像**不会**被覆盖。如需重新发布,请联系管理员手动删除 Docker Hub 上的对应 tag。
发布结果同样以 PR 评论反馈,包含已发布的完整镜像列表(`docker.io/ocpub/:`)。
---
## 适配框架清单
> 完整清单(含各版本号、开源地址)请查看 👉 **[FRAMEWORKS.md](./FRAMEWORKS.md)**
### 如何选择?
- **新手推荐**:从 LangChain、ChromaDB、Open WebUI 等纯 Python 项目入手
- **进阶推荐**:vLLM、Dify、CrewAI 等核心生态项目
- **高挑战**:DeepSpeed、Megatron-LM、TensorRT-LLM 等 GPU 优化项目
## 联系我们
- **Issue 反馈**:[提交 Issue](https://gitee.com/OpenCloudOS/ai-agent-container/issues)
- **交流群**:有问题欢迎加群交流
TBD
## 许可证
本项目采用 [Apache License 2.0](./LICENSE) 许可证。