环境
环境是 AI 队友工作的地方。芝士在频道「综合」里读写文件、运行命令、打开浏览器,都发生在它自己的环境里。每位 AI 队友在每个频道、每个任务里各有一个环境,换一位的环境不影响别的队友。
两种环境#
环境要么是一个沙箱,要么是指定的一台电脑。
沙箱只看得到自己的工作目录和本项目的包缓存,看不到别的 AI 队友。沙箱有几种规格,选的是规格,不是哪台机器:
| 规格 | 是什么 | 适合 | 算力费用 |
|---|---|---|---|
| 标准沙箱 | 放在平台的机器上 | 大多数工作,默认使用 | 按运行时长计 |
| 虚拟机沙箱 | 一整台虚拟机,有 sudo,能跑 Docker | 要用 Docker、虚拟化或安装系统软件 | 按规格和运行时长计 |
| 某人的设备 | 放在这个人接入项目的某一台电脑上(名字写作「alice的设备」) | 数据只能留在这个人的电脑上,或要用那里的软件、显卡、校园网 | 不计 |
部署没有提供平台的机器时,选项里没有标准沙箱和虚拟机沙箱;没有提供虚拟机时,没有虚拟机沙箱。某人的设备只在这个人有一台在线、能做沙箱的电脑时出现,Windows 电脑还做不了沙箱。
指定我的电脑是「一定要用那台电脑」时的选择:AI 队友直接在那台电脑上运行,不隔离,看得到并能操作整台电脑。只有这台电脑的主人本人能指定,AI 队友自己不能选。电脑怎么接入见自有设备。
沙箱在第一次运行时自动准备,虚拟机沙箱要等几分钟。沙箱一段时间没有活动后,平台把它删掉,下一条消息会准备新的;放在谁的电脑上都一样,某人的设备上的沙箱也会被删掉,电脑离线时等它回来再删。AI 队友换到别的环境后,原来的沙箱也按同样的规则删掉。虚拟机沙箱闲置 30 分钟后,先把改动推送到分支再释放。费用的计算见云端环境怎么计算。
环境怎么选#
每位 AI 队友第一次运行时,用它所在地方的「新会话默认」,之后这个默认再改,它也不跟着换:
项目「项目设置 → 环境」里的「新 AI 队友默认使用」。
频道频道成员名册里的「新会话默认」,不设就用项目的。
任务任务页头的「新会话默认」,不设就用频道的。
改任何一个默认都只影响尚未开始运行的 AI 队友,已在运行的继续用各自的环境。
换一位 AI 队友的环境
点频道顶部的成员头像打开名册,每位 AI 队友一行写着它现在的环境;还没开始运行的写着「还没开始运行,开工时用新会话默认」。点那一行的「改」打开「〈名字〉 的环境」,选一种沙箱规格,或「指定我的电脑」再选哪台,点「使用这个环境」。
更换时,平台先把这位 AI 队友的改动推送到它的分支。推送没有成功也仍然更换,新环境从分支取回代码继续。每一轮结束时的改动都有快照保存,推送失败时,丢失的只是上一轮结束之后的改动。AI 队友自己也能换自己的沙箱规格,规则相同。
任务的环境
任务负责人点任务页头的「〈名字〉 负责」,可以改任务里每位 AI 队友的环境,也可以改这个任务的「新会话默认」。
项目的环境
「项目设置 → 环境」中的「当前分布」列出每种沙箱规格、每台被指定的电脑上各有几个 AI 队友。
项目所有者和团队管理员能把一台自有设备上的 AI 队友整批换走:点那一行的「查看并更换…」,勾选 AI 队友,在「换到」中选新的环境,再点「推送并更换」。正在运行任务的 AI 队友会跳过,写着「正在运行任务,稍后再换」。
同一页还有「脚本与环境变量」:「安装工具(初始化脚本)」「准备项目(启动脚本)」和「环境变量」,以及项目的「额度」。
提示执行环境准备失败#
频道里出现「执行环境准备失败,出错在准备脚本。修好并重试后,这里会接着处理」(或「出错在启动脚本」)时,项目的「安装工具(初始化脚本)」或「准备项目(启动脚本)」运行出错,AI 队友暂时用不了这个环境。
点这行提示上的「去环境设置」,打开「项目设置 → 环境」。页面上方的「准备失败 · 〈时间〉」写明退出码、有几段对话在等,以及日志末尾。项目所有者和团队的所有者、管理员可以处理:
- 自己修改:改好「安装工具(初始化脚本)」或「准备项目(启动脚本)」,点「保存配置」,再点「重试」。
- 让 AI 队友找原因:点「让〈队友名字〉看看」,它读日志和脚本后给出原因和改法。核对后点「采用并重试」,使用它的改法。
环境重新准备好后,频道里出现「环境配置已修复,正在继续之前的消息」,在等的对话里 AI 队友接着处理。其他成员看得到失败记录,不能修改脚本。
提示云端资源紧张#
提示「云端资源紧张,暂时无法准备环境,稍后再试。对话和平台工具仍可用。」表示平台的云端到了容量上限,此刻没有空位准备新的环境;云虚拟机的提示是「云端资源紧张,暂时无法准备云虚拟机,请稍后再试。对话和平台工具仍可用。」
这个上限属于平台,与团队或项目的额度无关,不需要释放任何环境。稍后再让芝士继续。
接下来#
docs/manual/environment.md