<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>KVM on KnightLi的博客</title>
        <link>https://knightli.com/tags/kvm/</link>
        <description>Recent content in KVM on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 12 Jul 2026 10:35:00 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/kvm/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CubeSandbox 怎么给 AI Agent 配置隔离环境：并发执行、权限与成本取舍</title>
        <link>https://knightli.com/2026/07/12/cubesandbox-ai-agent-isolation-concurrency-permission-cost-guide/</link>
        <pubDate>Sun, 12 Jul 2026 10:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/07/12/cubesandbox-ai-agent-isolation-concurrency-permission-cost-guide/</guid>
        <description>&lt;p&gt;当 AI Agent 需要运行代码、安装依赖、访问网页、调用工具或持续执行较长任务时，问题不再只是“能不能跑”，而是“这段不可信或不完整的指令应当在哪儿跑、能访问什么、出错后如何停止和回滚”。CubeSandbox 是一个面向 Agent 的沙箱服务，主打快速启动、高并发和 KVM 硬件级隔离。&lt;/p&gt;
&lt;p&gt;它适合把 Agent 的执行面从宿主机和生产环境中拆出来。它不是让所有操作自动安全：挂载目录、网络出口、注入的凭据、镜像模板和调度配额仍需要由团队明确配置。&lt;/p&gt;
&lt;h2 id=&#34;先判断是否真的需要-cubesandbox&#34;&gt;先判断是否真的需要 CubeSandbox
&lt;/h2&gt;&lt;p&gt;不是每个 Agent 都需要微虚拟机。可以按风险和任务类型选择：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;更合适的方式&lt;/th&gt;
          &lt;th&gt;原因&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;只读代码问答、静态搜索&lt;/td&gt;
          &lt;td&gt;本地只读工具或受限 MCP&lt;/td&gt;
          &lt;td&gt;不需要启动独立执行环境&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;运行单元测试、安装依赖、执行生成代码&lt;/td&gt;
          &lt;td&gt;CubeSandbox 或其他强隔离沙箱&lt;/td&gt;
          &lt;td&gt;代码和依赖可能不可信，且会写入文件系统&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;高并发 Agent 评测、批量任务、浏览器自动化&lt;/td&gt;
          &lt;td&gt;CubeSandbox 集群&lt;/td&gt;
          &lt;td&gt;需要快速创建、回收和隔离多个执行单元&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;操作生产数据库、发邮件、部署&lt;/td&gt;
          &lt;td&gt;人工审批加受控专用系统&lt;/td&gt;
          &lt;td&gt;沙箱不能替代业务授权和变更流程&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果 Agent 只需要检索文件和提出补丁，先从只读权限和 diff 审查开始。只有任务确实需要执行不可信代码或大量并发时，再引入完整沙箱，避免用基础设施复杂度解决一个本可由权限策略处理的问题。&lt;/p&gt;
&lt;h2 id=&#34;cubesandbox-的隔离模型是什么&#34;&gt;CubeSandbox 的隔离模型是什么
&lt;/h2&gt;&lt;p&gt;CubeSandbox 基于 RustVMM 和 KVM，为每个沙箱提供独立的 Guest OS 内核。与共享宿主内核的普通容器相比，它的目标是减少容器逃逸带来的影响范围；仓库还提供 eBPF 网络隔离、出口控制、审计和凭据保险库等组件。&lt;/p&gt;
&lt;p&gt;这几个概念需要分开理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;计算隔离&lt;/strong&gt;：限制 Agent 在自己的沙箱内运行代码，不直接获得宿主机进程和内核权限。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件隔离&lt;/strong&gt;：决定沙箱能看到哪些挂载目录、模板和持久卷。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络隔离&lt;/strong&gt;：决定它能访问哪些域名、API 和内部服务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;身份隔离&lt;/strong&gt;：决定凭据是否直接进入环境、日志或模型上下文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务隔离&lt;/strong&gt;：决定 Agent 是否有权修改真实数据、发送消息或触发部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;KVM 能改善前四层，但不能自动完成最后一层。即使代码在独立虚拟机里执行，拿到了高权限生产 token 仍可能造成真实业务影响。&lt;/p&gt;
&lt;h2 id=&#34;部署前的基础条件&#34;&gt;部署前的基础条件
&lt;/h2&gt;&lt;p&gt;官方快速开始要求 &lt;strong&gt;支持 KVM 的 x86_64 Linux 环境&lt;/strong&gt;。它支持单节点部署，也能扩展为多节点集群；没有 KVM 时可以使用开发环境方案，但官方将其标为性能较差，不应直接当作高并发生产基准。&lt;/p&gt;
&lt;p&gt;准备环境时先确认：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CPU 虚拟化已在 BIOS 和宿主机系统中启用，KVM 设备可用。&lt;/li&gt;
&lt;li&gt;控制节点、计算节点和存储位置的职责已划分，不把控制面与业务数据混在一起。&lt;/li&gt;
&lt;li&gt;镜像或模板来源可追溯，包含固定版本的运行时、包管理器和基础工具。&lt;/li&gt;
&lt;li&gt;日志、指标和审计数据有独立存储与保留策略，不依赖 Agent 自己解释发生了什么。&lt;/li&gt;
&lt;li&gt;有能力在异常时停止单个沙箱、停止队列或切断出口，而不是只能停掉整个集群。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;安装完成后，官方 Web 控制台默认使用控制节点的 &lt;code&gt;:12088&lt;/code&gt; 端口。控制台应放在受限网络中，不要直接暴露到公网；为管理员设置独立身份认证和网络访问规则。&lt;/p&gt;
&lt;h2 id=&#34;并发怎么规划&#34;&gt;并发怎么规划
&lt;/h2&gt;&lt;p&gt;CubeSandbox 的优势之一是快速创建和高密度运行。官方基准将冷启动描述为单并发平均低于 60ms，并给出小规格实例低于 5MB 的基础内存开销；但这些是特定环境下的性能数据，不应直接等同于你的业务容量。&lt;/p&gt;
&lt;p&gt;规划并发时，把容量拆成四个变量：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;变量&lt;/th&gt;
          &lt;th&gt;要问的问题&lt;/th&gt;
          &lt;th&gt;常见误区&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;队列长度&lt;/td&gt;
          &lt;td&gt;同时有多少 Agent 任务等待执行？&lt;/td&gt;
          &lt;td&gt;只看平均请求量，不看高峰突发&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;单任务资源&lt;/td&gt;
          &lt;td&gt;每个任务的 CPU、内存、磁盘、运行时长是多少？&lt;/td&gt;
          &lt;td&gt;只估模型 token，不估编译和依赖安装&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模板命中&lt;/td&gt;
          &lt;td&gt;任务是否使用预热模板或频繁重新安装依赖？&lt;/td&gt;
          &lt;td&gt;所有任务从空镜像启动&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;外部瓶颈&lt;/td&gt;
          &lt;td&gt;网络、LLM API、数据库或浏览器服务能否承受并发？&lt;/td&gt;
          &lt;td&gt;沙箱够快就认为整条链路够快&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;建议从少量并发开始，用真实任务测量创建延迟、执行时长、失败率、内存峰值和出口请求量，再设置每租户、每项目和每任务类型的上限。不要把“可在单节点运行大量实例”理解为可以无限制接受外部请求。&lt;/p&gt;
&lt;h2 id=&#34;权限配置要遵循最小范围&#34;&gt;权限配置要遵循最小范围
&lt;/h2&gt;&lt;p&gt;最安全的默认状态是：没有挂载、没有凭据、没有网络出口、没有持久化。然后按任务逐项增加能力。&lt;/p&gt;
&lt;p&gt;一个可执行的权限分层可以是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;只读分析沙箱&lt;/strong&gt;：只读代码快照，无网络、无密钥，允许静态分析和测试规划。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;构建与测试沙箱&lt;/strong&gt;：可写临时工作目录，允许从内部制品源下载依赖，不挂载宿主机项目目录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;受控集成沙箱&lt;/strong&gt;：只允许访问列入白名单的测试 API，凭据由保险库按请求注入并设置最短有效期。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人工审批任务&lt;/strong&gt;：涉及外发、生产数据、付费资源或基础设施变更时，先暂停并要求审批，不让 Agent 直接获得能力。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要挂载整个用户主目录、Docker socket、SSH 私钥目录、云凭据目录或生产配置。挂载比提示词更有决定性：一旦目录可写，Agent 生成的代码或工具就可能影响其中所有内容。&lt;/p&gt;
&lt;h2 id=&#34;网络出口和凭据如何处理&#34;&gt;网络出口和凭据如何处理
&lt;/h2&gt;&lt;p&gt;CubeSandbox 提供 CubeEgress 用于域名过滤、凭据注入和访问审计，目标是让 API key 不直接进入沙箱、模型上下文或普通日志。使用时仍要验证自己的策略，而不是把“凭据保险库”当成免审计标志。&lt;/p&gt;
&lt;p&gt;建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认拒绝外网，只允许任务必需的域名和端口；&lt;/li&gt;
&lt;li&gt;把包仓库、模型 API、测试服务和内部文档分别列入白名单；&lt;/li&gt;
&lt;li&gt;为每类任务使用最小权限、短生命周期、可撤销的凭据；&lt;/li&gt;
&lt;li&gt;记录请求目标、时间、任务 ID 和结果码，不记录完整密钥或敏感请求体；&lt;/li&gt;
&lt;li&gt;对出现未知域名、异常流量或反复失败认证的任务自动停止并告警。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;网络允许列表能减少无关外联，但不能判断业务请求是否正确。对支付、用户数据和生产控制面，仍应在业务系统一侧实施鉴权、审批和速率限制。&lt;/p&gt;
&lt;h2 id=&#34;自动暂停快照与回滚怎样降低成本&#34;&gt;自动暂停、快照与回滚怎样降低成本
&lt;/h2&gt;&lt;p&gt;长任务不等于要让每个环境永远运行。CubeSandbox 提供自动暂停/恢复，以及快照、克隆和回滚能力，可以用于降低空闲成本和加快相似任务的启动。&lt;/p&gt;
&lt;p&gt;合理的使用方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对闲置的开发或评测环境设置自动暂停；&lt;/li&gt;
&lt;li&gt;在安装完稳定依赖、配置好运行时后制作模板或快照；&lt;/li&gt;
&lt;li&gt;用克隆启动相同任务的并发副本，而不是反复从零安装；&lt;/li&gt;
&lt;li&gt;在 Agent 修改出现异常时回滚到已知检查点；&lt;/li&gt;
&lt;li&gt;为快照、日志、持久卷和长时间暂停环境单独计算存储成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自动暂停会节省计算资源，但会带来恢复延迟；快照和持久卷提升可复现性，也会增加存储与生命周期管理负担。成本模型应同时包含计算、存储、网络出口、模板构建、观测和人工审查时间。&lt;/p&gt;
&lt;h2 id=&#34;一个-agent-任务的安全执行流程&#34;&gt;一个 Agent 任务的安全执行流程
&lt;/h2&gt;&lt;p&gt;可以把高风险任务按以下顺序运行：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;接收任务后先分类：只读、构建测试、受控集成或需要审批。&lt;/li&gt;
&lt;li&gt;为任务选择最小模板、资源配额、有效期和网络白名单。&lt;/li&gt;
&lt;li&gt;创建独立沙箱，记录任务 ID、模板版本和策略版本。&lt;/li&gt;
&lt;li&gt;在沙箱内运行命令，实时收集标准输出、退出码、资源使用和网络审计。&lt;/li&gt;
&lt;li&gt;对写入外部系统、使用敏感凭据或超出预算的动作暂停并请求审批。&lt;/li&gt;
&lt;li&gt;输出结果、diff、测试记录和引用来源，而不是只输出“完成”。&lt;/li&gt;
&lt;li&gt;回收临时沙箱；需要复用时按策略暂停或保存快照。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套流程也适用于 &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/07/10/ai-agent-long-task-resume-guide/&#34; &gt;AI Agent 长任务中断后怎么恢复&lt;/a&gt;：恢复时先验证快照、任务输入和权限策略是否仍有效，不要盲目从旧状态继续执行。&lt;/p&gt;
&lt;h2 id=&#34;常见误区&#34;&gt;常见误区
&lt;/h2&gt;&lt;h3 id=&#34;用了-kvm-就不需要权限控制&#34;&gt;“用了 KVM 就不需要权限控制”
&lt;/h3&gt;&lt;p&gt;错误。KVM 主要隔离计算环境；挂载、网络、凭据和业务 API 权限仍由你的配置决定。最危险的组合往往是隔离很强的 VM 加上过度授权的生产 token。&lt;/p&gt;
&lt;h3 id=&#34;并发越高成本越低&#34;&gt;“并发越高，成本越低”
&lt;/h3&gt;&lt;p&gt;不一定。高并发会放大 LLM API、数据库、带宽、镜像拉取和日志系统的压力。先设置配额、队列和退避策略，再逐步压测，而不是在真实用户任务上试错。&lt;/p&gt;
&lt;h3 id=&#34;自动暂停后就没有成本&#34;&gt;“自动暂停后就没有成本”
&lt;/h3&gt;&lt;p&gt;暂停环境仍可能占用快照、持久卷、日志和控制面资源。应设置过期清理规则，并统计恢复频率，避免把短期缓存变成永久闲置资产。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;CubeSandbox 适合需要运行不可信代码、工具调用或高并发 Agent 的执行环境。它的价值在于把计算、文件、网络和凭据分层隔离，并用暂停、模板、快照和克隆控制启动与资源成本。真正安全的配置不是“开一个沙箱”，而是为每类任务设定最小权限、可观测执行、明确审批和可回收生命周期。&lt;/p&gt;
&lt;p&gt;官方仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/TencentCloud/CubeSandbox&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/TencentCloud/CubeSandbox&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
