执行环境是gpt-engineer中的一个核心子系统,它为运行生成的代码提供了一个标准化的接口。它抽象了代码执行的地点和方式,为上传代码、运行命令和下载结果提供了统一的API。这使得代理可以在不关心底层执行基础设施的情况下操作代码。
有关代码文件如何存储和管理的信息,请参阅内存和存储。
执行环境系统遵循清晰的接口-实现模式,允许在保持一致API的同时进行多种实现。
来源:gpt_engineer/core/base_execution_env.py8-42 gpt_engineer/core/default/disk_execution_env.py36-111 gpt_engineer/core/default/file_store.py10-62 gpt_engineer/core/default/simple_agent.py27-58
BaseExecutionEnv 抽象基类定义了所有执行环境实现必须遵循的约定。此接口为在不同环境中运行代码提供了基础。
| 方法 | 目的 | 返回类型 |
|---|---|---|
run(command, timeout) | 执行命令并捕获输出 | Tuple[str, str, int] (stdout, stderr, returncode) |
popen(command) | 运行命令并返回进程 | Popen |
upload(files) | 将文件上传到执行环境 | BaseExecutionEnv (self) |
download() | 从执行环境中下载文件 | FilesDict |
来源:gpt_engineer/core/base_execution_env.py8-42
下图说明了文件如何在执行环境中流动
来源:gpt_engineer/core/default/disk_execution_env.py55-60 gpt_engineer/core/default/file_store.py39-62
DiskExecutionEnv 类是gpt-engineer中BaseExecutionEnv的主要实现。它在本地文件系统上执行代码,使用FileStore捕获输出和管理文件存储。
DiskExecutionEnv 可以使用可选的工作目录路径进行初始化。如果未提供路径,则会创建一个临时目录。
来源:gpt_engineer/core/default/disk_execution_env.py52-53
run方法在工作目录中执行命令,并捕获标准输出、标准错误和返回码。它还处理超时和键盘中断。
来源:gpt_engineer/core/default/disk_execution_env.py72-111
DiskExecutionEnv 使用 FileStore 来处理文件操作。
upload(files):将文件写入工作目录。download():从工作目录读取文件,并将其作为 FilesDict 返回。来源:gpt_engineer/core/default/disk_execution_env.py55-60 gpt_engineer/core/default/file_store.py39-62
gpt-engineer中的代理,例如SimpleAgent,在工作流中会使用执行环境来运行和测试代码。
来源:gpt_engineer/core/default/simple_agent.py27-88
这是一个代理如何使用执行环境来生成、测试和迭代代码的基本示例
FilesDict 中这个模式是gpt-engineer工作流的核心,使代理能够执行和评估生成的代码。
来源:gpt_engineer/core/default/simple_agent.py70-88
DiskExecutionEnv 在管理子进程时,会仔细考虑以下因素:
来源:gpt_engineer/core/default/disk_execution_env.py72-111
FileStore 类负责低级文件操作。
push 将文件写入磁盘。pull 从磁盘读取文件。来源:gpt_engineer/core/default/file_store.py10-62
执行环境与gpt-engineer系统中的几个其他组件进行交互
FilesDict 类用于在系统之间传输文件。来源:gpt_engineer/core/default/simple_agent.py27-88 gpt_engineer/core/default/disk_execution_env.py36-111