> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 容器参考

> 容器类型、网络策略和预装包参考。

Agent Session 运行在隔离的沙箱容器中。本文列出容器的操作系统、预装工具、资源限制等参考信息。

## 操作系统

| 项目  | 值                                             |
| --- | --------------------------------------------- |
| 发行版 | Ubuntu 22.04 LTS (Jammy)                      |
| 架构  | x86\_64 (amd64)                               |
| 内核  | Linux 5.10.134（LIFSEA 容器引擎，基于 Linux 5.10 LTS） |

## 预装工具

### 系统工具

| 工具          | 版本           | 说明       |
| ----------- | ------------ | -------- |
| git         | 2.34+        | 版本控制     |
| curl        | 7.81+        | HTTP 客户端 |
| wget        | 1.21+        | 文件下载     |
| jq          | 1.6+         | JSON 处理  |
| vim         | 8.2+         | 文本编辑器    |
| unzip / tar | 系统版          | 压缩/解压    |
| ssh         | OpenSSH 8.9+ | SSH 客户端  |
| make        | 4.3+         | 构建工具     |

### 语言运行时

| 语言      | 版本       | 包管理器    |
| ------- | -------- | ------- |
| Python  | 3.12.x   | pip 24+ |
| Node.js | 20.x LTS | npm 10+ |
| Go      | 1.22.x   | go mod  |

### 包管理

| 工具  | 说明        |
| --- | --------- |
| apt | 系统包管理     |
| pip | Python 包  |
| npm | Node.js 包 |

## 工作目录

```
/app
```

Agent 命令默认 cwd 为 `/app`。注意 `$HOME` 指向 `/data`（不同目录），`~/` 展开后不在 cwd 下。上传的文件挂载路径见 [Files](/zh/cloud-agents/files) 文档。

## 额外软件安装

通过 Environment 配置的 `packages` 字段安装额外依赖：

```json theme={null}
{
  "config": {
    "packages": {
      "apt": ["postgresql-client", "redis-tools", "ffmpeg"]
    }
  }
}
```

容器启动时会根据 `apt`/`pip`/`npm` 键分别安装对应的系统包、Python 包和 Node.js 包。

<Note>
  也可在 Agent system prompt 中指示 Agent 按需安装其他依赖。
</Note>

## 网络配置

网络访问能力由 Environment 的 `config.networking` 字段控制（必须为对象格式）：

| 类型              | 说明                  |
| --------------- | ------------------- |
| `unrestricted`  | 容器可访问公网（默认）         |
| `limited`       | 仅允许访问已知安全的公共服务和包管理器 |
| `allowed_hosts` | 仅允许访问指定主机名（白名单）     |

配置示例：

```json theme={null}
{
  "config": {
    "networking": {
      "type": "allowed_hosts",
      "allowed_hosts": [
        "api.github.com",
        "registry.npmjs.org"
      ]
    }
  }
}
```

详细字段说明请参见 [云端环境 - 网络策略](/zh/cloud-agents/environments#网络策略)。

## 资源限制

| 资源   | 默认限制   | 说明                               |
| ---- | ------ | -------------------------------- |
| CPU  | 4 vCPU | 分配的处理器核心数                        |
| 内存   | 8 GB   | 可用 RAM                           |
| 磁盘   | 25 GB  | 工作区存储空间（overlay 文件系统，约 18 GB 可用） |
| 执行时长 | 30 分钟  | 单次 Turn 最大执行时间                   |

<Note>
  超出内存或磁盘限制时，进程会被 OOM Kill 或写入失败。请在 system prompt 中提醒 Agent 注意资源用量。
</Note>

## 文件持久化

* 同一 Session 内，文件在 Turn 之间保持不变
* **容器临时存储仅保留 24 小时。** 超过 24 小时未活跃的 Session，其容器磁盘可能被回收，磁盘上的文件不保证保留
* 容器磁盘被回收后，Session 本身仍可继续对话——平台会按需重新初始化容器环境，但之前在磁盘上产生的文件（如 git clone 的代码、生成的中间产物）将丢失
* Session 生命周期结束后，容器及其文件立即销毁
* 需要长期保存的文件，应通过 Files API 上传到平台存储

<Warning>
  容器磁盘回收不等于 Session 终止。如果你的工作流依赖磁盘上的中间文件跨天持续，请在每轮结束时将关键产物上传至 Files API，下次对话时重新挂载。
</Warning>

## 执行用户

容器内所有命令以 **root** 用户身份执行。`whoami` 返回 `root`，但 `USER` 环境变量未注入（为空字符串）。

因此 Agent 可以直接安装系统包、写入任意系统目录，无需 `sudo`。如对此有限制需求，请在 Agent 的系统提示词中明确说明。

## 环境变量

容器中预设的环境变量：

| 变量    | 值            | 说明                                           |
| ----- | ------------ | -------------------------------------------- |
| HOME  | /data        | 用户主目录（`~/` 展开到这里，与 cwd `/app` 不同）            |
| USER  | （未设置，为空字符串）  | 注：`USER` 环境变量未注入；获取实际身份请用 `whoami`，返回 `root` |
| SHELL | /bin/bash    | 默认 Shell                                     |
| LANG  | en\_US.UTF-8 | 区域设置                                         |

Vault 中的凭证会以环境变量形式注入（需在 Session 创建时关联 Vault）。

## 下一步

<CardGroup cols={2}>
  <Card title="云端环境配置" icon="server" href="/zh/cloud-agents/environments">
    Environment 配置详解。
  </Card>

  <Card title="文件上传与挂载" icon="paperclip" href="/zh/cloud-agents/files">
    文件管理。
  </Card>

  <Card title="Vaults" icon="key" href="/zh/cloud-agents/vaults">
    Vault 注入机制。
  </Card>

  <Card title="启动 Session" icon="play" href="/zh/cloud-agents/sessions">
    管理会话生命周期。
  </Card>
</CardGroup>
