项目简介
botsh
是一个创新的软件工具,它为 Docker 容器中的 Ubuntu 系统提供一个聊天代理功能。通过这个代理,botsh
可以访问 APT 软件宇宙的所有功能,同时只限于操作当前目录,这确保了操作的安全性。
功能展示
在项目的一个演示中,botsh
被要求创建一列 100 个 200x200 的图片,每张包含不同的数字,然后用 ffmpeg
将它们转化成一段 30 帧每秒的视频。过程如下:
botsh
首先尝试运行imagemagick
失败(因为是全新的 Ubuntu 系统)。- 它随后自动安装了
imagemagick
。 - 再次尝试运行
ffmpeg
,然而并未成功。 - 自动安装了
ffmpeg
。 - 试图将图像帧转化成视频失败(因为还未生成图像)。
- 紧接着编写了一个
bash
循环,通过imagemagick
生成 100 张图片。 - 最后成功使用
ffmpeg
将这些图片转化为视频。
这个过程展示了 botsh
的强大功能和自动解决问题的能力。
安装与设置
要使用 botsh
,用户需要先安装它:
pip install botsh
此外,用户需提供 OpenAI 的 API key, 通过设置环境变量 OPENAI_API_KEY
来完成。另外,botsh
的运行还需要系统上启用 Docker 服务。
使用示例
以下是一些 botsh
的命令行使用示例:
-
将图片格式从 JPG 转换成 PNG:
botsh "convert cat.jpg into a png file"
-
使用远程服务获取公网 IP 并进行 base64 编码:
botsh "use a remote service to find my public ip and base64 encode it"
-
对代码库进行 Pylint 静态代码分析:
botsh "run pylint on the codebase in src/"
技术细节
botsh
会在当前目录创建一个基础的 Ubuntu Docker 容器,或者在没有容器存在时进行创建。在这个容器中,botsh
会连接到 OpenAI 的 API 并尝试完成指定任务。此外,botsh
被明确赋予权限可以在容器内安装软件,以帮助完成任务。容器内安装的软件将会保持在该容器范围内,不会对外部系统造成影响。
使用观察
根据默认的 text-davinci-003
模型的观察,使用更高级的 GPT-4 模型可能会带来显著提升:
- 明确指定要操作的文件或路径效果更好,因为
botsh
不善于推测用户意图。 - 若任务无法达成,
botsh
可能会陷入循环而不放弃,尽管程序拥有相关提示。 - 有时需要分解步骤,比如将复杂的命令语句化简为多步操作,以避免某些命令中的错误。
容器的复用
每当使用 botsh
运行任务时,当前目录会挂载到容器中,程序所运行的操作可能修改此目录内容。这个容器会被复用以运行同一目录下的任务。用户可以通过 --wipe
选项清除现有容器并重新开始,也可使用 --rm
选项在完成任务后移除容器。
使用方法
以下是一些 botsh
的基本命令使用选项:
- 指定要执行的任务提示。
- 选择使用的 OpenAI 文本补全模型。
- 选择使用的 Docker 镜像。
- 在容器内调用的 Shell。
- 保存任务运行的记录。
- 启动新容器,即便当前目录已有一个容器存在。
通过这些选项,用户可以更灵活地控制 botsh
的运行环境和行为。