# AutoGPT 自主智能体

## 概览

[AutoGPT](https://github.com/Significant-Gravitas/AutoGPT) 是开创性的开源自主 AI 代理平台，拥有 **175K+ GitHub 星标** —— 是 GitHub 上星标最多的仓库之一。最初是 2023 年走红的 Python CLI 工具，AutoGPT 已演变为具有 Web 前端、可视化工作流构建器、多代理编排以及自我改进代理基准套件的全功能平台。

当前的 AutoGPT 平台由以下部分组成：

* **前端** —— Next.js 可视化代理构建器（端口 3000）
* **后端 / API** —— 处理代理执行的 FastAPI 服务（端口 8000）
* **代理执行器** —— 运行自治任务循环的 Python 工作进程
* **Postgres** —— 用于代理状态与运行的持久化存储
* **Redis** —— 作业队列与发布/订阅
* **Minio** —— 用于代理产物的兼容 S3 的对象存储

在 **Clore.ai**，AutoGPT 完全在 CPU 上运行（将 LLM 调用委托给云端 API），使其在以下成本下实惠可用： **每小时 $0.05–0.20**。您可以选择通过其兼容 OpenAI 的提供者支持集成本地模型。

**主要功能：**

* 🤖 **自治代理** —— 代理将任务分解为子目标并迭代执行它们
* 🌐 **网页浏览** —— 代理可以搜索网络、抓取页面并综合信息
* 💻 **代码执行** —— 为编程代理提供沙箱化的 Python 执行环境
* 📁 **文件操作** —— 在任务执行过程中读取、写入和管理文件
* 🔗 **多代理** —— 生成专门的子代理并分层编排它们
* 🧠 **长期记忆** —— 基于向量的记忆，跨会话持久化
* 📈 **代理基准测试** —— 内置的 AgentBenchmark 套件用于评估代理性能

***

## 要求

AutoGPT 的计算需求取决于您是使用云端 LLM API（默认）还是本地模型。平台本身是轻量的。

| 配置                   | GPU        | 显存    | 系统内存  | 磁盘     | Clore.ai 价格     |
| -------------------- | ---------- | ----- | ----- | ------ | --------------- |
| **最小** （云端 API）      | 无 / 仅 CPU  | —     | 4 GB  | 20 GB  | 约 $0.05/小时（CPU） |
| **标准**               | 无 / 仅 CPU  | —     | 8 GB  | 40 GB  | 约 $0.08/小时      |
| **推荐**               | 无 / 仅 CPU  | —     | 16 GB | 60 GB  | 约 $0.12/小时      |
| **+ 本地 LLM（Ollama）** | 速度         | 24 GB | 16 GB | 80 GB  | \~$0.20/小时      |
| **+ 大型本地 LLM**       | A100 40 GB | 40 GB | 32 GB | 100 GB | 约 $0.80/小时      |

> **注意：** AutoGPT 默认使用基于 API 的 LLM（如 OpenAI GPT-4、Anthropic Claude 等）。只有在您通过 Ollama 或其他兼容 OpenAI 的服务器配置本地模型端点时，GPU 才有用。

### 需要 API 密钥

您至少需要以下其中之一：

* **OpenAI API 密钥** （建议使用 GPT-4o 以获得最佳代理性能）
* **Anthropic API 密钥** （Claude 3.5 Sonnet 对代理非常出色）
* **Google AI 密钥** （支持 Gemini 模型）

***

## 快速开始

### 1. 租用 Clore.ai 服务器

登录到 [clore.ai](https://clore.ai) 并启动具有以下配置的服务器：

* **2+ 个 CPU 内核，8 GB 内存** 最低要求
* 暴露的端口 **8000** （后端 API）和 **3000** （前端）
* 启用 SSH 访问
* **20+ GB 磁盘空间**

### 2. 连接到服务器

```bash
ssh root@<clore-server-ip> -p <ssh-port>

# 更新软件包
apt-get update && apt-get upgrade -y

# 验证 Docker 和 Compose
docker --version
docker compose version   # 必须是 v2.x
```

### 3. 克隆并配置 AutoGPT

```bash
# 克隆仓库
git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT/autogpt_platform

# 复制环境模板
cp .env.example .env

# 编辑环境文件
nano .env
```

### 4. 设置必需的环境变量

```bash
# .env 中的最低要求：

# ── LLM 提供者（至少选择一个） ────────────────────────────────────────
OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...

# ── 密钥（请更改这些） ──────────────────────────────────────────────────
APP_SECRET_KEY=$(openssl rand -hex 32)
JWT_SECRET_KEY=$(openssl rand -hex 32)

# ── 数据库 ─────────────────────────────────────────────────────────────────
DATABASE_URL=postgresql://postgres:password@db:5432/autogpt

# ── 后端 URL（设置为您的 Clore 服务器 IP） ────────────────────────────────
NEXT_PUBLIC_AGPT_SERVER_URL=http://<clore-server-ip>:8000/api
```

### 5. 构建并启动

```bash
# 构建镜像并启动所有服务（第一次运行需 5-10 分钟）
docker compose up -d --build

# 观察构建和启动进度
docker compose logs -f

# 启动后，验证所有容器均在运行
docker compose ps
```

### 6. 验证服务健康状态

```bash
# 检查每个服务
docker compose ps

# 预期的运行服务：
# autogpt_platform-db-1        Up (healthy)
# autogpt_platform-redis-1     Up
# autogpt_platform-minio-1     Up
# autogpt_platform-backend-1   Up
# autogpt_platform-frontend-1  Up
# autogpt_platform-executor-1  Up

# 测试后端 API
curl http://localhost:8000/api/health
# 预期：{"status": "ok"}
```

### 7. 访问 AutoGPT

在浏览器中打开：

* **前端：** `http://<clore-server-ip>:3000`
* **后端 API：** `http://<clore-server-ip>:8000`
* **API 文档（Swagger）：** `http://<clore-server-ip>:8000/docs`

在前端创建账号，在设置中配置您的 LLM 提供者，然后开始构建代理。

***

## 配置

### 完整 `.env` 参考

```bash
# ── 应用配置 ──────────────────────────────────────────────────────────────
ENVIRONMENT=production
APP_SECRET_KEY=<使用 openssl rand -hex 32 生成>
JWT_SECRET_KEY=<使用 openssl rand -hex 32 生成>
ALLOWED_ORIGINS=http://<clore-server-ip>:3000

# ── LLM 提供者 ────────────────────────────────────────────────────────────
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GROQ_API_KEY=gsk_...

# ── 兼容 OpenAI（用于通过 Ollama/vLLM 使用本地模型） ────────────────────
OPENAI_API_BASE=http://localhost:11434/v1   # Ollama 的兼容 OpenAI 端点
OPENAI_API_KEY=ollama                        # Ollama 用的虚拟密钥

# ── 数据库 ─────────────────────────────────────────────────────────────────
DATABASE_URL=postgresql://postgres:password@db:5432/autogpt
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password    # 在生产环境中请更改！
POSTGRES_DB=autogpt

# ── Redis（作业队列） ────────────────────────────────────────────────────────
REDIS_URL=redis://redis:6379/0

# ── Minio（对象存储） ──────────────────────────────────────────────────
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin   # 在生产环境中请更改！
MINIO_URL=http://minio:9000

# ── 前端 ─────────────────────────────────────────────────────────────────
NEXT_PUBLIC_AGPT_SERVER_URL=http://<clore-server-ip>:8000/api
NEXTAUTH_SECRET=<使用 openssl rand -hex 32 生成>
NEXTAUTH_URL=http://<clore-server-ip>:3000
```

### 自定义代理能力

```bash
# 启用网页浏览功能
WEB_BROWSER_ENABLED=true
SELENIUM_CHROME_DRIVER_URL=http://selenium:4444/wd/hub

# 在 docker-compose 中添加 Selenium 以启用网页浏览：
# services:
#   selenium:
#     image: selenium/standalone-chrome:latest
#     shm_size: 2gb
#     ports:
#       - "4444:4444"

# 文件系统访问（代理工作区）
WORKSPACE_PATH=/workspace
RESTRICT_TO_WORKSPACE=true
```

### 管理代理执行器扩展

```bash
# 为并行代理运行扩展执行器工作进程
docker compose up -d --scale executor=4

# 监控执行器日志
docker compose logs -f executor
```

***

## GPU 加速

AutoGPT 默认将所有 LLM 推理委托给外部提供者。要使用本地 GPU 加速模型：

### 连接到与服务器相同主机上的 Ollama

```bash
# 在 Clore 服务器上安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 拉取可用模型（Llama 3 70B 需要 A100，8B 可在 RTX 3090 上运行）
ollama pull llama3:8b
# 为获得最佳代理性能：
ollama pull llama3.1:70b   # 需要 A100 40GB 及以上

# 使 Ollama 可被 Docker 容器访问
OLLAMA_HOST=0.0.0.0 ollama serve &

# 测试兼容 OpenAI 的端点
curl http://localhost:11434/v1/models
```

在 `.env`，将 AutoGPT 指向 Ollama：

```bash
OPENAI_API_BASE=http://host.docker.internal:11434/v1
OPENAI_API_KEY=ollama
OPENAI_DEFAULT_MODEL=llama3.1:70b
```

> **性能说明：** 自治代理会进行大量连续的 LLM 调用。RTX 3090 上的本地模型（约 30 tok/s）可用，但 A100 80GB 可实现更快的迭代。参见 [GPU 对比](/guides/guides_v2-zh/ru-men/gpu-comparison.md).

### 针对代理的本地模型推荐

| A100                  | 代理质量 | 显存    | Clore GPU |
| --------------------- | ---- | ----- | --------- |
| Llama 3 8B            | 一般   | 8 GB  | RTX 3080  |
| Llama 3.1 8B Instruct | 良好   | 8 GB  | RTX 3080  |
| Llama 3.1 70B         | 优秀   | 40 GB | 按日费率      |
| Mixtral 8x7B          | 良好   | 24 GB | 速度        |
| Qwen 2.5 72B          | 优秀   | 40 GB | 按日费率      |

***

## 提示与最佳实践

### 在 Clore.ai 上的成本管理

```bash
# AutoGPT 最大的成本通常是 LLM API 调用，而非计算资源
# 在代理配置中设置 token 预算限制：
# MAX_TOKENS_PER_RUN=100000
# MAX_COST_PER_RUN=1.00   # 美元

# 在停止 Clore 实例前备份代理状态
docker exec autogpt_platform-db-1 \
  pg_dump -U postgres autogpt | gzip > autogpt-backup-$(date +%Y%m%d).sql.gz

# 复制到本地机器
scp -P <port> root@<ip>:autogpt-backup-*.sql.gz ./
```

### 更新 AutoGPT

```bash
cd AutoGPT

# 拉取最新更改
git pull origin master

cd autogpt_platform

# 使用新代码重建
docker compose down
docker compose up -d --build

# 如有需要，运行数据库迁移
docker compose exec backend alembic upgrade head
```

### 监控代理运行

```bash
# 观察后端日志以了解代理活动
docker compose logs -f backend executor

# 在代理运行期间监控系统资源
htop
# 或
docker stats

# 通过 API 查看代理运行历史
curl http://localhost:8000/api/v1/runs | python3 -m json.tool
```

### 安全加固

```bash
# 切勿在无认证的情况下将端口 8000/3000 直接暴露到互联网
# 使用 Nginx 或 Caddy 作为带 HTTPS 的反向代理：

# Caddyfile：
# autogpt.yourdomain.com {
#     reverse_proxy localhost:3000
# }
# api.autogpt.yourdomain.com {
#     reverse_proxy localhost:8000
# }

# 限制代理的文件系统访问
RESTRICT_TO_WORKSPACE=true
WORKSPACE_PATH=/agent-workspace

# 初始设置完成后禁用用户注册
ALLOW_SIGNUP=false
```

### 优化构建时间

```bash
# 首次构建较慢（约 10 分钟）；后续构建会使用缓存
# 使用 BuildKit 以加快构建：
DOCKER_BUILDKIT=1 docker compose up -d --build

# 预拉取基础镜像以加快构建速度
docker pull python:3.11-slim
docker pull node:20-alpine
```

***

## # 使用固定种子以获得一致结果

### 构建因内存不足失败

```bash
# Docker 构建需要足够内存（4GB+）
# 如有需要，添加交换空间：
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# 使其永久生效
echo '/swapfile none swap sw 0 0' >> /etc/fstab
```

### 后端返回 500 / “数据库未就绪”

```bash
# 检查数据库健康状态
docker compose ps db
docker compose logs db

# 手动运行数据库迁移
docker compose exec backend alembic upgrade head

# 如果迁移失败，请检查 .env 中的 DATABASE_URL
docker compose exec backend printenv DATABASE_URL
```

### 前端显示“无法连接到后端”

```bash
# 验证 NEXT_PUBLIC_AGPT_SERVER_URL 是否设置正确
grep NEXT_PUBLIC_AGPT_SERVER_URL .env

# 必须是公网 IP，而不是 localhost（浏览器会发起该请求）
NEXT_PUBLIC_AGPT_SERVER_URL=http://<clore-server-ip>:8000/api

# 更改该环境变量后需重建前端
docker compose up -d --build frontend
```

### 代理执行器崩溃 / 被 OOM 杀死

```bash
free -h
docker stats autogpt_platform-executor-1

# 限制执行器内存并添加重启策略
# 在 docker-compose.yaml 中：
#   executor:
#     mem_limit: 2g
#     restart: unless-stopped

# 或减少并发代理运行数
MAX_CONCURRENT_RUNS=2
```

### Redis 连接被拒绝

```bash
# 检查 Redis 是否在运行
docker compose ps redis
docker compose logs redis

# 从后端测试连通性
docker compose exec backend redis-cli -h redis ping
# 预期：PONG

# 如果 Redis 需要认证，请设置：
REDIS_URL=redis://:password@redis:6379/0
```

### 代理陷入循环

```bash
# AutoGPT 代理有时会进入无限循环
# 设置最大循环次数限制：
MAX_AGENT_CYCLES=50

# 或通过 API 中断正在运行的代理：
curl -X POST http://localhost:8000/api/v1/runs/<run-id>/stop
```

***

## 延伸阅读

* [AutoGPT 官方文档](https://docs.agpt.co)
* [AutoGPT GitHub 仓库](https://github.com/Significant-Gravitas/AutoGPT)
* [AutoGPT 平台安装指南](https://docs.agpt.co/platform/getting-started)
* [在 Clore.ai 上运行 Ollama](/guides/guides_v2-zh/yu-yan-mo-xing/ollama.md)
* [在 Clore.ai 上运行 vLLM](/guides/guides_v2-zh/yu-yan-mo-xing/vllm.md)
* [Clore.ai GPU 对比](/guides/guides_v2-zh/ru-men/gpu-comparison.md)
* [AutoGPT Discord 社区](https://discord.gg/autogpt)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-zh/ai-ping-tai-yu-zhi-neng-ti/autogpt.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
