安全地执行本地命令
在桌面应用中,助理可以在你聊天的工作目录里执行命令和测试。聊天中的具体工作方式请参见本地文件访问。本页说明你可以设置在什么情况下无需询问即可执行,以及命令会以多强的隔离方式运行。
打开命令设置
在聊天中打开 命令 面板,选择 此文件夹的命令设置。这些设置按文件夹生效。
什么时候允许助理执行命令?
可选以下三种模式之一:
- 总是询问:你需要批准每个命令。
- 自动执行受信任的命令:你保存过的命令会在不询问的情况下启动。其他命令仍会请求许可。
- 始终在沙箱中自动执行:所有命令都会在不询问的情况下启动,但会在受隔离的环境中运行。
在任何模式下,还适用以下规则:
- 无害命令会直接启动:
mkdir、ls、cat、head、tail、wc、grep、find(不带-exec或-delete)、touch、pwd、tree,以及版本检查(node、npm、npx、python、pip和aischool-python的--version、-v或-V)。它们的功能不超过内置文件工具在无需询问时所做的操作。它们会在无网络的沙箱中运行,并且只允许使用工作目录内的路径,即使跟随链接后也是如此(不允许绝对路径、~或..)。如果链接指向目录外,仍会显示卡片。为此需要沙箱(macOS)和本地命令,但不需要管理员启用的 允许自动执行。此时在 命令 面板中会显示 自动(无害命令)。像mkdir -p src/{components,utils}这样的花括号列表也会直接启动:应用会将其拆分为多个路径并逐一检查。 - 每张卡片都会显示精确命令,以及在联网操作时显示精确地址。下方还会以较小字号显示助理的说明。
- 如果沙箱可用且你的管理员允许自动执行,那么针对在沙箱中运行的命令,卡片上还会有 以后在此文件夹中始终在沙箱中自动执行 按钮。点击后会将该文件夹设置为 始终在沙箱中自动执行,这样后续命令就会在不显示卡片的情况下启动。需要网络的命令仍会再询问一次,除非允许安装包。
- 在某个文件夹中,首次出现且在沙箱中运行、并且不需要网络的卡片,会一次性显示 信任此项目。该操作会执行命令,将文件夹设为 始终在沙箱中自动执行,并开启 允许无需询问安装包。之后像
npm test、npm run build和node --test这样的测试和构建会在无网络的沙箱中直接启动,不再显示卡片。其他仍然需要网络或在沙箱外运行的命令,仍会继续询问。点击 执行 或 拒绝 后,此文件夹不会再次询问该问题;你可以在命令设置中更改模式。如果关闭自动执行,则每张卡片都会注明是由你的管理员还是这台电脑的管理策略执行的。
保存受信任的命令
在某条命令上选择 在此文件夹中始终允许,然后选择 仅此命令 或 所有以前缀开头的命令。已保存的命令今后会直接启动,不再询问。包含特殊字符(如 ; | > $)的命令始终需要许可。
已保存的规则会出现在命令设置中的 此文件夹中始终允许 下方,你也可以在那里删除它们。
沙箱和网络
- 使用沙箱:命令只能写入此文件夹。此选项在 macOS 上默认开启。
- 允许网络:决定命令是否可访问互联网。此选项默认关闭。没有沙箱时,命令始终可访问网络。
每张命令卡都会显示沙箱和网络是否已开启。
如果 允许网络 关闭,而助理想要下载内容,例如使用 npm install,命令卡会询问你是否要让该精确命令使用网络执行。因此你不必为整个文件夹开启网络。
Windows 目前尚不支持沙箱。
安装包
应用内置了自己的 Node.js 和 npm。因此,即使你的电脑没有安装 Node.js,node、npm 和 npx 也能工作。如果你自己安装了 Node.js,应用会使用那个版本。例外:自己启动 Electron 的项目(electron .)需要你自行安装的 Node.js。
允许无需询问安装包
在 此文件夹的命令设置 中打开开关 允许无需询问安装包。之后,按名称安装的软件包会直接启动,不再显示卡片:npm install <名称>、从 package.json 执行的 npm install、以及带 install 或 add 的 pnpm、yarn 或 bun,还有 pip install <名称>(也可通过 uv)。它们始终在带网络的沙箱中运行。其他命令则遵循你为该文件夹选择的模式。
以下安装仍会显示卡片:
- 项目脚手架,如
npm create vite@latest和npx create-…,因为它们会执行自己的代码; pip install .、pip install -r requirements.txt、来自其他注册表的安装(--registry、-i、--index-url),以及来自 git 地址、URL 或路径的软件包。
该开关仅在沙箱可用(macOS)且你的管理员允许自动执行时可用。否则无法开启。
以这种方式安装的软件包绝不会执行自己的安装脚本(npm 会以 --ignore-scripts 运行)。Python 软件包只会以预构建 wheel 的形式安装。
本地服务器和内置浏览器
助理也可以启动并持续运行开发服务器,例如为一个使用 Vite 的小型 React 项目运行 npm run dev。这遵循与其他命令相同的规则:你批准精确命令,或者它通过已保存规则启动,或自动在沙箱中启动。卡片上不会显示最长运行时间,而是显示“作为本地服务器持续运行,直到你停止它”。
服务器会在助理回答后继续运行。在 命令 面板中,卡片会显示状态 服务器正在运行,并带有 在浏览器中打开 和 停止 按钮。最多可同时运行 4 个服务器。你停止它们或关闭应用时,服务器会停止。
在无网络的沙箱中,服务器只能在本机(localhost)上监听。关于助理如何安装包,请参见安装包。
显示一个简单网页
对于普通网页(一个带 CSS 和 JavaScript 的 index.html,且没有构建步骤),不需要命令。此时助理会使用应用内置的网页服务器:
- 该文件夹只能在这台电脑上访问,地址为
http://127.0.0.1,端口随机分配。 - 隐藏文件,例如
.git和.env,永远不会显示。 - 当文件发生变化时,页面会自动重新加载。
这不会显示批准卡片。服务器会出现在 命令 面板中,带有 在浏览器中打开 和 停止,并计入最多 4 个服务器的上限。
你可以在内置浏览器中查看结果:点击右上方工具栏中的 浏览器 按钮(地球图标)。面板会在聊天旁打开,包含后退、前进、重新加载(加载时可停止)、地址栏,以及 在默认浏览器中打开。
- 助理会自动打开浏览器以显示本地服务器的结果。这仅适用于本地地址,例如
http://localhost:5173。 - 如果你在回复中点击 localhost 链接,它会在内置浏览器中打开。其他链接会在你的默认浏览器中打开。
- 你也可以自行输入任何网页地址。
- 浏览器有自己独立的会话:你不会在其中登录 AI-Corporate,网站也不会获得摄像头或麦克风等权限,并且无法下载文件。
- 只要应用的菜单或对话框处于打开状态,页面就会暂时隐藏。
示例:
在这个文件夹中创建一个带计数器的小型 React 应用,使用 Vite。安装依赖,启动开发服务器,并在浏览器中显示结果。
让助理查看页面
如果你让助理查看内置浏览器中的页面,它会读取页面地址、标题、可见文本、截图以及最新错误消息,并将这些内容发送给 AI 模型。
- 对于这台电脑上的页面(
localhost或127.0.0.1),助理会直接查看,无需询问。 - 对于其他任何网站,例如你已登录的页面,助理会先显示一张卡片:“助理想查看 onedrive.live.com。”点击 允许查看 或 拒绝。每次都会再次询问。
- 如果页面在你允许后跳转到另一个网站,助理将不会再读取任何内容。
- 只有在这台电脑上的页面,助理才会自行点击和输入,以测试它创建的内容。在其他网站上,它不会点击、输入或导航。它不会获得 cookies 或密码。
- 在离线模式下,助理只会查看这台电脑上的页面。
版本和 GitHub
助理内置了 git。因此你不需要安装 git,即使在 Windows 上也不需要。助理可以保存版本、显示更改内容、创建分支并将项目上线。
- 此文件夹中的操作,例如保存版本,会在不询问的情况下启动。看起来像机密的文件(例如
.env文件、代码中的密钥或 token,包括以AIza开头的 Google API 密钥)绝不会被纳入版本。若助理跳过了某些内容,它会通知你。 - 在线操作(下载项目、获取最新版本、上线以及创建 GitHub 仓库)会先显示一张卡片,其中包含精确地址以及 内置于应用中 和 网络开启 标签。如果地址不是 github.com,或者要创建的是公开仓库,卡片会发出警告。上线时,卡片会显示将发送哪些文件。选择 执行 或 拒绝。
- 连接 github.com 之外的仓库也需要先获得许可。
关于如何连接 GitHub 并将项目上线,请参见通过 Vibe 编码。
在离线模式下,命令始终在无网络的沙箱中运行。需要网络的包安装以及内置 git 的在线操作(下载、获取、上线和 GitHub)都无法工作。保存版本和显示简单网页仍然可用。
管理员设置
管理员可以为环境中的所有人关闭本地命令或自动执行。这在管理环境的 功能(环境级别)中,在 桌面应用 卡片里设置:
- 允许本地命令:如果关闭,助理将无法执行任何命令。内置 git 的在线操作也将无法工作。不过,保存版本和分支仍可正常使用:它们只会修改文件夹中的文件,就像文件工具一样。
- 允许自动执行:如果关闭,每个命令都需要许可,而且你无法开启 允许无需询问安装包。
- 允许应用内的 Python 用于 Office 文件:用于模板、图表和分析。该 Python 不联网,只能写入工作目录,且不能启动其他程序。如果未设置,则遵循 允许本地命令。没有沙箱(Windows)时,它仅在本地命令开启时可用,并且每次都会请求许可。