Cursor智能体开发:Agent终端
Agent 会直接在你的终端中运行 shell 命令,并在 macOS、Linux 和 Windows 上通过安全沙箱执行。
沙盒
默认情况下,Agent 会在受限环境中运行终端命令,以防止未授权的文件访问和网络活动。命令会自动执行,并始终被限制在你的工作区内。
要深入了解各平台上沙盒的具体实现方式,请参阅 Implementing a secure sandbox for local agents。
平台要求
macOS
- Cursor v2.0 或更高版本
- 开箱即用,无需额外配置
Windows
- 必须安装并配置 WSL2
- 沙箱在 WSL2 内运行,施加与 Linux 相同的限制
Linux
- 6.2 或更高版本的内核,并支持 Landlock v3 (
CONFIG_SECURITY_LANDLOCK=y) - 已启用非特权用户命名空间(大多数发行版默认启用)
如果你的内核不满足这些要求,Agent 会回退为在运行命令前请求批准。
AppArmor 设置
一些发行版通过 AppArmor 限制用户命名空间。Cursor 桌面版软件包随附所需的配置文件,因此本地安装无需额外设置。
远程环境和独立的 CLI 不包含此配置文件。如果由于与用户命名空间相关的权限错误导致沙盒创建失败,请为你的发行版安装 AppArmor 软件包:
Debian / Ubuntu:
curl -fsSL https://downloads.cursor.com/lab/enterprise/cursor-sandbox-apparmor_0.6.0_all.deb -o cursor-sandbox-apparmor.debsudo dpkg -i cursor-sandbox-apparmor.debRHEL / Fedora:
curl -fsSL https://downloads.cursor.com/lab/enterprise/cursor-sandbox-apparmor-0.6.0-1.noarch.rpm -o cursor-sandbox-apparmor.rpmsudo rpm -i cursor-sandbox-apparmor.rpm安装完成后,重启 Cursor 或你的 CLI 会话,以使沙盒正常工作。
沙盒的工作方式
沙盒在允许工作区操作的同时防止未经授权的访问:
| Access Type | Description |
|---|---|
| File access | 对文件系统的只读访问 对工作区目录的读写访问 |
| Network access | 默认被阻止。可通过 sandbox.json 或在设置中进行配置。 |
| Temporary files | 对/tmp/或等效的系统临时目录拥有完全访问权限 |
无论允许列表如何设置,.cursor配置目录始终受到保护。
某些命令需要对系统的完全访问权限,因此会绕过沙盒。当命令在沙盒外运行时,Agent 会进行提示并请求你的批准。
允许列表
允许列表中的命令会跳过沙盒限制并立即运行。当沙盒中的命令失败后出现提示时,你可以选择“Add to allowlist”将命令添加到允许列表。
当沙盒中的命令因限制而失败时,你可以:
| Option | Description |
|---|---|
| Skip | 取消该命令,让 Agent 尝试其他操作 |
| Run | 在不受沙盒限制的情况下执行该命令 |
| Add to allowlist | 无限制运行该命令,并自动批准其供后续使用 |
默认网络允许列表
启用网络访问后,出站连接将被限制在一组精心挑选的域名范围内。它们涵盖常见的软件包仓库、云服务商和语言工具链,因此大多数开发工作流无需额外配置即可运行。
查看默认允许的域名
Sandbox 配置
通过放在~/.cursor/sandbox.json(按用户生效) 或<workspace>/.cursor/sandbox.json(按仓库生效) 的sandbox.json文件自定义沙箱行为。可控制网络访问、文件系统路径、构建缓存等。
有关完整的 schema、网络匹配模式语法、合并规则和受保护路径,请参见 sandbox.json 参考。
环境变量
Cursor 会向每个沙箱化的子进程注入环境变量。这些环境变量可供在沙箱内运行的脚本、构建工具和自动化使用。
| 变量 | 平台 | 描述 |
|---|---|---|
CURSOR_SANDBOX | macOS, Linux, Windows | 当进程在沙箱内运行时,其值为"seatbelt"(macOS) 或"native"(Linux/Windows) 。 |
CURSOR_ORIG_UID | macOS, Linux | 启动 Cursor 的用户 UID,在沙箱应用任何命名空间或身份更改之前记录。 |
CURSOR_ORIG_GID | macOS, Linux | 启动 Cursor 的用户 GID,在沙箱身份更改之前记录。 |
CURSOR_SANDBOX_LANDLOCK_STATUS | Linux | 报告当前生效的沙箱后端:fully_enforced(Landlock) 或bubblewrap(Bubblewrap 回退) 。可用于诊断。 |
Linux:沙箱内的 UID 可能与您的实际用户不一致
在 Linux 上,沙箱会创建一个用户命名空间,并将进程重新映射为该命名空间内的 UID 0 (root) 。这意味着在沙箱化命令中,id -u和$UID返回的是 0,而不是您的实际用户 ID。如果您的脚本或自动化需要 真实的宿主用户——例如设置文件所有权或向 Docker 传递--user——请改为读取CURSOR_ORIG_UID和CURSOR_ORIG_GID。
Docker 和容器自动化
在自动化规则和脚本中,一种常见做法是运行需要与主机用户身份保持一致的 Docker 容器。由于沙盒在 Linux 上会重新映射 UID,依赖$(id -u)会得到错误的值。请改用CURSOR_ORIG_*变量:
docker run --rm \ --user "${CURSOR_ORIG_UID:-$(id -u)}:${CURSOR_ORIG_GID:-$(id -g)}" \ -v "$PWD:/work" -w /work \ my-image build${CURSOR_ORIG_UID:-$(id -u)}这一后备写法可确保该命令在沙盒之外也能运行,因为那里没有设置这些变量。
编辑器配置
在Settings > Cursor Settings > Agents > Auto-Run中配置 Agent 运行终端命令的方式。
自动运行模式
选择 Agent 如何运行命令执行、MCP 和文件写入等工具:
| 模式 | 说明 |
|---|---|
| 在沙盒中运行 | 在可能的情况下,工具和命令会在沙盒中自动在沙盒内运行。适用于 macOS、Linux 和 Windows (通过 WSL2) 。 |
| 每次确认 | 所有工具和命令在运行前都需要用户确认。 |
| 全部自动运行 | Agent 会自动运行所有工具和命令,无需用户确认。 |
自动运行的网络访问
选择在沙盒中运行的命令如何访问网络:
| Mode | Behavior |
|---|---|
| sandbox.json Only | 网络仅限于sandbox.json允许列表中的域名。不添加任何 Cursor 默认配置。 |
| sandbox.json + Defaults | 你的允许列表加上 Cursor 的内置默认配置(常见包管理器等)。这是默认选项。 |
| Allow All | 在沙盒中允许所有网络访问,不受sandbox.json限制。 |
保护设置
| Setting | Description |
|---|---|
| Command Allowlist | 可在沙盒之外自动运行的命令。 |
| MCP Allowlist | 可在沙盒之外自动运行的 MCP 工具。 |
| Browser Protection | 防止 Agent 自动运行 Browser 工具。 |
| File-Deletion Protection | 防止 Agent 自动删除文件。 |
| Dotfile Protection | 防止 Agent 自动自动修改诸如 .gitignore 之类的点文件。 |
| External-File Protection | 防止 Agent 自动在工作区之外创建或修改文件。 |
Enterprise controls
仅适用于 Enterprise 订阅。
Enterprise 管理员可以覆盖编辑器配置,或更改终端用户可见的设置。前往 web dashboard 的Settings > Auto-Run查看和更改这些设置。
| Setting | Description |
|---|---|
| Auto-Run Controls | 启用对自动运行和沙盒模式的控制。禁用时,命令会在可用时在沙盒中自动运行,否则会请求权限。 |
| Sandboxing Mode | 控制沙盒是否对终端用户可用。启用后,即使命令不在允许列表中,也会在沙盒中自动运行。 |
| Sandbox Networking | 选择在沙盒中运行的命令是否具有网络访问权限。 |
| Delete File Protection | 防止 Agent 自动删除文件。 |
| MCP Tool Protection | 防止 Agent 自动运行 MCP 工具。 |
| Terminal Command Allowlist | 可在不使用沙盒的情况下自动运行的命令。启用沙盒后,不在此列表中的命令会在沙盒模式下自动运行。 |
| Enable Run Everything | 赋予终端用户启用 "Run Everything" 自动运行模式的能力。 |
故障排查
某些 shell 主题 (例如 Powerlevel9k/Powerlevel10k) 可能会干扰 内联终端输出。如果你的命令输出出现截断或 格式错乱,请在 Agent 运行时禁用该主题或切换到更简洁的提示符。
为 Agent 会话禁用重量级提示符
在你的 shell 配置中使用CURSOR_AGENT环境变量来检测 Agent 是否正在运行,并在此情况下跳过初始化复杂的提示符或主题。
# ~/.zshrc — 当 Cursor Agent 运行时禁用 Powerlevel10kif [[ -n "$CURSOR_AGENT" ]]; then # 跳过主题初始化以提高兼容性else [[ -r ~/.p10k.zsh ]] && source ~/.p10k.zshfi# ~/.bashrc — 在 Agent 会话中回退到简单提示符if [[ -n "$CURSOR_AGENT" ]]; then PS1='\u@\h \W \$ 'fi《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。
