Open Terminal
为AI代理和自动化工具提供可通过REST API访问的轻量级自托管终端环境。
证据显示:README 明确警告 Docker socket 挂载和裸机运行的风险,提供多用户隔离选项,但未提供用户确认机制或回滚方案。API 密钥通过环境变量配置,但未说明密钥存储和传输安全。依赖版本范围宽松,未提供锁文件或漏洞扫描证据。外部影响(如 Docker socket)有警告但无强制限制。来源归属:作者和许可证明确,但发布者未验证。扣分:缺少用户确认、回滚、依赖安全细节。
证据显示:README 和配置文档一致,Docker 镜像变体说明清晰,依赖列表完整。但未提供错误消息示例或故障排除指南。扣分:失败消息不明确。
证据显示:明确面向 AI 代理和自动化工具,提供 Docker 和裸机两种部署方式,支持多种镜像变体,配置灵活。能力边界(如文件浏览器根目录)有说明,但未明确限制终端命令。触发精度:通过 API 密钥和配置控制,但未提供细粒度权限。环境适配:支持多平台和 OpenShift。扣分:能力边界和触发精度可更明确。
证据显示:README 结构清晰,安装说明详细,命名稳定(open-terminal),提供示例和 FAQ(通过 README 中的提示),已知限制(如多用户模式警告)有说明,许可证 MIT,版本号在 pyproject.toml 中,有 CHANGELOG 和发布工作流。维护责任:作者明确,但发布者未验证。扣分:维护责任仅基于作者信息。
证据显示:输出为 REST API,文档提供交互式 API 文档,易于使用。边际价值:为 AI 代理提供远程终端,有独特价值。成本效益:Docker 镜像较大,但提供 slim 变体。扣分:无性能或资源使用数据。
证据显示:README 中的声明(如功能、镜像大小)与代码和配置部分一致,但未提供测试结果或独立验证。扣分:缺乏测试证据和独立来源。
- 发布者未验证,身份未知,需谨慎评估供应链风险。
- Docker socket 挂载和裸机运行具有高风险,仅应在完全可信环境中使用。
- 依赖版本范围宽松,未提供锁文件或漏洞扫描,建议自行审计。
- 多用户模式不适用于生产环境,缺乏硬隔离。
这个 Agent 能做什么,适合哪些场景?
Open Terminal是一个轻量级、自托管的终端服务器,为AI代理和自动化工具提供专用的命令执行、文件管理和代码运行环境。它通过简单的REST API暴露功能,支持两种运行方式:Docker(沙箱隔离)和裸机(pip安装)。Docker镜像提供多种变体,包括包含完整工具链的完整版和精简版,满足不同需求。它集成了Open WebUI,允许AI助手直接执行命令和管理文件。该项目采用MIT许可证。
Open Terminal提供REST API端点,用于执行命令、管理文件和浏览目录。它通过/exec等端点接收命令,在服务器上执行并返回输出。它支持文件上传、下载、编辑和删除,以及获取当前工作目录和文件列表。它可通过OPEN_TERMINAL_PACKAGES、OPEN_TERMINAL_PIP_PACKAGES和OPEN_TERMINAL_NPM_PACKAGES环境变量自定义环境。在Docker模式下,它提供隔离环境;在裸机模式下,命令直接在主机上运行。它支持多用户模式,每个用户拥有独立的Linux账户和主目录。
- AI开发者在本地运行Open Terminal,让AI代理直接访问项目文件和执行命令,进行代码测试和调试。
- 系统管理员在服务器上部署Open Terminal,为自动化脚本提供远程执行环境,而无需暴露SSH。
- 团队在Open WebUI中集成Open Terminal,成员可以通过界面浏览、上传和编辑文件,同时AI助手可以执行运维任务。
- 安全研究人员使用Docker沙箱运行Open Terminal,安全地执行不可信代码,与主机隔离。
- 持续集成系统通过Open Terminal的API调用命令,在容器中运行构建和测试步骤。
- 教育场景中,教师设置Open Terminal实例供学生练习Linux命令,而无需在本地安装虚拟机。
这个 Agent 有哪些优点和局限?
- 提供多种Docker镜像变体,从完整工具链到极小尺寸,适应不同场景。
- 支持通过环境变量在启动时安装apt、pip和npm包,无需fork镜像。
- 与Open WebUI紧密集成,提供文件浏览器和用户/组级访问控制。
- 支持内置多用户隔离,每个用户独立账户和主目录。
- 通过API授权保护,且可作为独立服务运行。
- 裸机模式直接暴露主机权限,存在安全风险,需谨慎使用。
- 多用户模式的生产安全性有限,不适合大型或不可信部署。
- slim和alpine变体不支持运行时包安装,需自定义镜像。
- OpenShift镜像功能受限,不支持运行时安装和Docker socket。
- 创建时未设置API密钥时会自动生成,需要从容器日志中获取,可能麻烦。
如何安装或部署这个 Agent?
使用Docker安装:运行docker run -d --name open-terminal --restart unless-stopped -p 8000:8000 -v open-terminal:/home/user -e OPEN_TERMINAL_API_KEY=your-secret-key ghcr.io/open-webui/open-terminal。Docker镜像变体包括latest、slim、alpine和openshift。裸机安装:pip install open-terminal,然后运行open-terminal run --host 0.0.0.0 --port 8000 --api-key your-secret-key。
如何使用这个 Agent?
启动后,API文档在http://localhost:8000/docs。使用API密钥进行身份验证。可通过环境变量定制环境:例如OPEN_TERMINAL_PACKAGES="cowsay figlet"。在Open WebUI中,通过用户设置或管理员设置添加Open Terminal连接,提供URL和API密钥。调用API时,使用/exec端点执行命令,使用/files端点管理文件。
常见问题
Open Terminal是否支持多用户同时使用?
OPEN_TERMINAL_MULTI_USER=true可以启用多用户模式,每个用户自动获得独立的Linux账户和主目录。但注意,这种隔离基于Unix权限,不提供强隔离边界,不适合生产环境。如何添加额外的软件包?
OPEN_TERMINAL_PACKAGES、OPEN_TERMINAL_PIP_PACKAGES和OPEN_TERMINAL_NPM_PACKAGES环境变量在容器启动时自动安装软件包。对于slim和alpine变体,需要构建自定义镜像。是否支持文件上传和下载?
Open Terminal是否支持非Docker环境?
pip install open-terminal在裸机上安装,但注意裸机模式下命令以当前用户权限直接运行,没有沙箱隔离。