本文全面概述了 Open Interpreter 的代码执行环境——它是负责在不同编程语言中运行由语言模型生成的代码的关键组件。有关解释器在代码执行之外如何与操作系统交互的信息,请参阅操作系统交互(视觉、鼠标、键盘)。
Open Interpreter 中的代码执行环境充当语言模型输出与用户系统上代码实际执行之间的桥梁。它负责处理多种编程语言的语言检测、代码预处理、执行和输出捕获。
Computer 类是代码执行的中央协调器,管理 Terminal 组件,该组件根据检测到的语言将代码路由到相应的语言处理程序。每个语言处理程序都实现了一个标准化接口,用于执行其各自语言的代码。
来源:interpreter/core/computer/computer.py interpreter/core/core.py119-120
代码执行过程遵循从代码生成到输出显示的明确流程
当语言模型生成代码时,会通过其消息类型和格式进行识别。然后,解释器会提取语言和代码内容,执行任何必要的预处理,并将其路由到 Computer 组件进行执行。
来源:interpreter/core/respond.py167-174 interpreter/core/respond.py290-343
Open Interpreter 通过模块化的语言处理程序架构支持多种编程语言。每个语言处理程序都实现了一个通用接口,同时提供特定于语言的执行机制。
每个语言处理程序负责
来源:interpreter/core/computer/terminal/languages/jupyter_language.py36-45 interpreter/core/computer/terminal/base_language.py
Python 代码通过 Jupyter 内核执行,Jupyter 内核为交互式代码执行提供了一个强大的环境。JupyterLanguage 类管理 Jupyter 内核和客户端,以执行 Python 代码并捕获其输出。
| 功能 | 描述 |
|---|---|
| 执行方法 | 通过 jupyter_client 的 Jupyter 内核 |
| 输出类型 | 控制台输出、富媒体(图像、HTML)、错误消息 |
| 特殊功能 | 活动行追踪、代码预处理、matplotlib 集成 |
| 超时处理 | 内置超时检测和用户输入监控 |
Jupyter 内核执行支持富输出,包括可视化内容,这些内容被捕获并转换为适当的格式(图像、HTML 等)以供用户显示。
来源:interpreter/core/computer/terminal/languages/jupyter_language.py89-132 pyproject.toml55-56
当代码提交执行时,系统会
来源:interpreter/core/respond.py173
在执行之前,代码会经过预处理
来源:interpreter/core/respond.py176-243 interpreter/core/respond.py309-336
每个语言处理程序都会设置相应的执行环境
对于 Python,这包括启动 Jupyter 内核并对其进行配置,以在 Open Interpreter 中获得最佳使用体验,包括设置用于可视化支持的 matplotlib 后端。
来源:interpreter/core/computer/terminal/languages/jupyter_language.py41-84
代码执行的输出会根据其类型进行捕获和处理
| 输出类型 | 处理方式 |
|---|---|
| 文本/控制台 | 直接捕获为文本 |
| 图像 | 编码为 base64 并包含在输出中 |
| HTML | 作为格式化的 HTML 内容包含 |
| 错误(Errors) | 格式化为可读的错误消息 |
| 活动行 | 用于实时代码执行高亮显示 |
对于 Python(通过 Jupyter),输出从 Jupyter 内核的 IOPub 通道捕获,该通道提供包括文本、图像和 HTML 在内的富输出格式。
来源:interpreter/core/computer/terminal/languages/jupyter_language.py227-277
Open Interpreter 为 Python 实现了活动行追踪功能,使其能够显示当前正在执行的代码行。此功能通过提供代码执行进度的实时反馈来增强用户体验。
这是通过代码预处理和指示当前执行行的特殊输出标记实现的。
来源:interpreter/core/computer/terminal/languages/jupyter_language.py228-236
auto_run 设置决定代码是否应在未经用户确认的情况下自动执行。禁用此设置时,系统会提示用户批准代码执行,从而提供额外的安全层。
if not interpreter.auto_run:
# OI is about to execute code. The user wants to approve this
code_to_run = chunk["content"]
language = code_to_run["format"]
code = code_to_run["content"]
# Ask user for permission
response = input("Would you like to run this code? (y/n)")
来源:interpreter/terminal_interface/terminal_interface.py187-226
Open Interpreter 实现了一个安全模式功能,可以在执行前扫描代码中潜在的安全问题。此功能可以配置为
| 模式 | 行为 |
|---|---|
| “off”(关闭) | 不执行代码扫描 |
| “ask”(询问) | 提示用户是否扫描代码 |
| “auto” | 自动扫描所有代码 |
当启用代码扫描时,scan_code 函数会使用模式匹配和静态分析来分析代码中的潜在安全问题。
来源:interpreter/terminal_interface/terminal_interface.py203-216 interpreter/core/utils/scan_code.py
代码执行环境以运行 Open Interpreter 的用户相同的权限运行代码。这意味着
auto_run 被禁用时,用户应在执行前审查代码主要的安全性机制是代码执行前的用户确认,这允许用户在代码运行前审查和批准代码。
来源:interpreter/terminal_interface/terminal_interface.py217-226
代码执行环境可以通过以下几个设置进行配置
| 设置 | 描述 | 默认 |
|---|---|---|
auto_run | 在未经确认的情况下自动执行代码 | 否 |
safe_mode | 代码扫描级别(“off”、“ask”或“auto”) | “off”(关闭) |
max_output | 捕获输出的最大长度 | 2800 |
highlight_active_line | 执行时是否高亮显示活动行 | True |
这些设置可以通过命令行界面、API 或直接在解释器实例上进行配置。
来源:interpreter/core/core.py41-103 interpreter/terminal_interface/start_terminal_interface.py53-59
代码执行环境与更广泛的 Computer API 集成,允许代码
当导入 Computer API 时,代码执行环境会确保已执行代码与 API 功能之间的正确集成。
来源:interpreter/core/respond.py309-336 interpreter/core/computer/skills/skills.py51-95
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(21babb)