
AutoGPT
用 Docker 部署 AutoGPT 并让它自主拆解执行目标
AutoGPT 能在终端里接收一个目标,自行拆解任务、调用搜索与代码执行并逐步推进。本文用 Docker Compose 完成部署,讲清 .env 与 compose 配置、启动参数、交互确认(y / y-N)的用法,并用一个选品调研的完整示例走通流程,同时说明成本、死循环与中文支持等实际限制。
AutoGPT 是一个基于大语言模型的自主任务代理:你在终端里给它一个最终目标,它会自己把目标拆成任务,为每一步设定角色、目标、推理与行动计划,然后调用搜索、写文件、执行脚本等能力一步步推进,直到给出结果或卡住。它适合想了解自主代理工作方式、愿意为实验性任务付出调用成本的技术读者;如果你需要的是稳定可交付的生产流程,它目前并不合适。想先了解这类工具的定位,可以看站内的 AutoGPT 条目。
下面按「准备 → 部署 → 交互 → 完整示例 → 限制」的顺序讲。所有命令都在终端里执行,配置文件放在同一个项目目录中。
准备工作
开始之前需要确认三件事:
- Docker 与 Docker Compose:本文采用容器方式运行,不直接在宿主机装 Python 依赖。确认
docker与docker-compose命令可用。 - OpenAI API Key:在 OpenAI 的密钥管理页面生成一个 key,后面写进
.env。注意这是按调用量计费的付费接口,不是免费聊天额度。 - 一个专用项目目录:AutoGPT 需要读写配置文件、工作区文件和运行日志,建议单独建一个空目录,不要和别的项目混在一起。
另外要提前想清楚:AutoGPT 会连续发起大量模型调用,单次任务的费用取决于模型、步数和重试次数,可能远高于一次普通对话。开始前先确认账户余额与用量上限,具体价格与配额以 OpenAI 官网当前信息为准。
操作步骤
第一步:拉取镜像
先把 AutoGPT 的镜像拉到本地:
docker pull significantgravitas/auto-gpt
镜像体积不小,首次拉取需要等一会儿。拉取完成后可以用 docker images 确认镜像已经在本地列表中。
第二步:创建项目目录并加入 Docker 的文件共享范围
新建一个目录,例如 auto-gpt-demo,后续的 .env、docker-compose.yml、工作区与日志都放在这里。
如果使用 Docker Desktop,需要把这个目录加入 File sharing(文件共享)列表,否则容器挂载宿主机目录时会失败或看不到文件。命令行版 Docker 在 Linux 上一般不需要这一步,但要注意目录权限。
第三步:写 .env 配置文件
在项目目录里创建 .env,至少写入 API Key 与插件白名单/黑名单两个变量:
OPENAI_API_KEY=【写入你的 OpenAI key】
ALLOWLISTED_PLUGINS=
DENYLISTED_PLUGINS=
说明一下各行的作用:
OPENAI_API_KEY:必填,AutoGPT 所有推理与生成都走这个 key。ALLOWLISTED_PLUGINS:允许加载的插件列表,留空表示不额外指定。DENYLISTED_PLUGINS:禁止加载的插件列表,留空表示不禁用任何插件。
.env 里是明文密钥,不要提交到版本库,也不要放进会被同步到公共位置的目录。
第四步:写 docker-compose.yml
同一个目录下创建 docker-compose.yml,内容如下:
version: "3.9"
services:
auto-gpt:
image: significantgravitas/auto-gpt
depends_on:
- redis
env_file:
- .env
environment:
MEMORY_BACKEND: ${MEMORY_BACKEND:-redis}
REDIS_HOST: ${REDIS_HOST:-redis}
profiles: ["exclude-from-up"]
volumes:
- ./auto_gpt_workspace:/app/autogpt/auto_gpt_workspace
- ./data:/app/data
- ./logs:/app/logs
redis:
image: "redis/redis-stack-server:latest"
这份配置里几个关键点值得逐条对照:
- 两个服务:
auto-gpt是主程序,redis提供记忆后端,depends_on保证 redis 先起来。 - env_file:把上一步的
.env注入容器,所以 API Key 不需要写进 compose 文件。 - MEMORY_BACKEND 与 REDIS_HOST:默认值分别是
redis和redis,即用 redis 存记忆、连接名为redis的服务。想换后端时在.env里覆盖这两个变量即可,不用改 compose 文件。 - profiles: ["exclude-from-up"]:给服务打上 profile 标记,避免直接
docker-compose up时把整套服务一起拉起来;本文用run方式启动,正好配合这个设置。 - 三个挂载卷:
auto_gpt_workspace是 AutoGPT 读写文件的沙箱工作区,data存数据,logs让日志落到宿主机磁盘,方便事后排查。
配置里还预留了 azure.yaml 与 ai_settings.yaml 的挂载注释。如果你要用 Azure 端点或预置的 AI 设置文件,把对应注释取消,并确保这两个文件与 docker-compose.yml 位于同一目录,否则容器启动时会因为找不到文件而报错。
第五步:启动 AutoGPT
用 run 方式启动主程序,并加上只使用 GPT-3 级别模型的参数:
docker-compose run --rm auto-gpt --gpt3only
参数含义:
run --rm:一次性运行指定服务,退出后自动删除容器,不留下停止状态的容器。--gpt3only:只使用 GPT-3 级别模型,避免自动切到更贵的模型。想用更高阶模型时去掉这个参数,但费用会明显上升。
看到控制台开始输出启动信息与交互提示,就说明部署成功,可以输入目标了。
一个完整示例
下面用一个「童装选品调研」的目标,把从输入目标到观察执行的全过程走一遍。这个例子的价值不在于结果多准确,而在于让你看清 AutoGPT 每一步到底在做什么、什么时候该干预。
输入目标
启动后按提示输入目标,例如「帮我做童装选品调研,找出当前市场上值得关注的品类」。回车后 AutoGPT 开始规划。
读懂它的任务拆解
对每一个任务,AutoGPT 会输出一组固定字段,理解这些字段是使用它的前提:
- Name:任务名称。
- Role:给模型设定的角色,例如市场分析师。
- Goals:这一步要达成的目标。
- THOUGHTS:当前想法,例如「先分析市场流行趋势,有助于选品」。
- REASONING:推理过程,说明为什么这么做。
- PLAN:行动计划,通常是一串编号步骤,例如先用搜索引擎查趋势、再分析数据、最后把结果写入本地文件。
- CRITICISM:自我批评,例如「需要保证数据正确,否则结论不可靠」。
- NEXT ACTION:下一步要执行的具体动作,例如调用搜索工具查询童装市场趋势。
用 y 与 y-N 控制推进节奏
每一步执行前,AutoGPT 会等你确认:
- 输入
y:只执行当前这一步,然后再次停下来等你确认。 - 输入
y -N:连续执行 N 步不再逐步确认,例如y -20表示让它自己跑 20 步。
建议前几步一定用 y 逐步看,确认它的方向没跑偏、工具调用符合预期之后,再用 y -N 放它跑一段。这个习惯能省下不少冤枉钱。
观察执行结果
确认执行后,控制台会显示它调用了什么工具、拿到了什么返回。以搜索为例,它会拿到一批 JSON 格式的市场数据,然后进入下一轮:想法是「已有市场数据,需要先存起来再分析」,推理是「存下来便于后续回顾」,计划是「分析数据并存储」,下一步动作是把数据写入本地文件。
再输入 y,就能在宿主机的 auto_gpt_workspace 目录里看到它写出的文件。这一步很关键:工作区目录是你检查它产出的唯一可靠入口,不要只看控制台输出。
它开始写代码时会发生什么
继续推进,AutoGPT 往往会决定写一个 Python 脚本来做数据分析。这时常见的连锁反应是:
- 脚本要读取某个 CSV 文件,但该文件并不存在。
- 它转而写一个下载数据的脚本,去网上找数据。
- 下载脚本本身报错,它开始调试下载脚本。
- 依赖缺失,例如没有 pandas,它会去搜索如何安装,然后尝试安装。
- 依赖装好后继续执行,又回到「CSV 文件不存在」。
如果放任它自己跑,很容易在第 4、5 步之间反复循环:执行分析脚本 → 文件不存在 → 下载文件(实际没成功)→ 再执行分析脚本。这就是自主代理最典型的失败模式——它不会主动跳出循环重新审视目标,只会沿着当前计划不断重试。
遇到这种情况的正确做法是中断,而不是继续加步数。可以按提示退出,或者直接停掉容器,然后回到工作区检查它到底写出了哪些文件、缺的是哪一份数据,把缺失的输入手动补进工作区,再重新启动并给出更具体的目标。
注意事项
以下限制来自实际使用中暴露的问题,部署前值得逐条评估:
- 非异步执行,周期长:任务是一步一步串行推进的,一个稍复杂的目标可能要跑很久,而且不保证能完整跑完。把它当成需要盯着看的实验,而不是后台批处理。
- 每次从零开始,成本高:没有跨任务的积累,每次都要重新规划、重新搜索、重新试错。单次任务的费用可能达到数美元量级,用 GPT-3 级别模型尚且如此,换更强的模型只会更贵。具体单价与账户额度以 OpenAI 官网当前信息为准。
- 重复动作多:同一份数据可能被反复搜索、反复写入,既拉长耗时也持续消耗额度,严重时形成死循环。
- 中文支持有限:中文通常只体现在你输入的第一句目标上,后续的思考、计划与执行基本是英文,阅读时需要一定的英文能力。
- 产出需要人工校验:它写出的脚本可能有明显错误(读取不存在的文件、缺少依赖),生成的结论也不能直接采信。工作区里的文件要逐个检查。
- 密钥与目录安全:
.env中的 API Key 是明文,工作区目录里的文件由模型生成,不要把项目目录指向含有敏感资料的位置。
综合来看,AutoGPT 更适合用来观察自主代理如何拆解目标、如何调用工具、在什么条件下会失控,而不是直接承担生产任务。真正要落地时,把目标拆得更小、给足输入文件、用 y 逐步确认、随时准备中断,是控制成本和避免死循环最有效的几个手段。