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