00:00:00如果你最近有关注新闻头条,可能已经看到了各种关于
00:00:04运行自主 AI 智能体危险性的警告。可能是意外的数据泄露,也可能是像
00:00:10OpenClaw 那样备受瞩目的安全漏洞。现实情况是,给予 AI 智能体
00:00:15访问宿主机终端的完整权限是非常危险的。但我们总不能因为安全考量
00:00:21就停止使用这些工具,对吧?我们需要的是一个更好的沙箱。刚好有这么一个
00:00:28非常出色的工具叫做 Code on Incus,它能让你在完全隔离的
00:00:34Incus 容器中运行 CLAUDE Code,这样你就可以安全地运行编程智能体,而不必担心
00:00:40你的 SSH 密钥或环境变量被泄露。在今天的视频中,我们将深入了解
00:00:46Code on Incus 的工作原理,接着我会向你展示如何自行配置,以便你能安全地
00:00:51开始运行你自己的自主 AI 智能体集群。这一定会很有趣,让我们开始吧。
00:00:58首先,什么是 Incus?其实我在之前的一期视频中
00:01:07更详细地介绍过 Incus,如果你想深入了解它的工作原理,可以去看看。但简单来说,
00:01:12Incus 是一个开源的系统容器和虚拟机管理器,允许你
00:01:18在隔离环境中运行完整的 Linux 系统。而 Code on Incus 将这一理念进一步升华,
00:01:24它让你能够部署预装了 CLAUDE Code 的完全隔离的微型 Linux 机器,
00:01:31从而将它们用作沙箱化的 CLAUDE Code 智能体。这是一个非常酷的想法。它基本上
00:01:36为 CLAUDE 提供了专属的 Linux 环境。与 Docker 的特权模式不同,Incus 的系统
00:01:43容器表现得就像完整的 Linux 机器,而且它们还拥有持久化状态,所以你可以随时
00:01:49停止和启动会话,而不会丢失进度或对话历史。这个方案最棒的一点在于
00:01:54它解决了权限地狱的问题。通常当容器创建一个文件时,
00:02:00它归 root 所有,你不得不运行 chown 命令才能编辑自己的代码。但 Incus 使用了 UID
00:02:08映射技术,它能有效地欺骗系统,使得 CLAUDE 在沙箱中创建的所有内容
00:02:14在你的本地机器上原生就归你所有。在我之前的视频中,我展示了如何
00:02:20在 Linux 机器上设置 Incus 容器。但这次,我将教你如何在 Mac 上设置。
00:02:26我们会使用一个叫 Colima 的工具,它本身就是一个容器。然后我们将
00:02:31在它内部运行 Incus,这是另一个容器。接着在 Incus 里面运行 CLAUDE
00:02:36Code,这简直是真正的“盗梦空间”式嵌套场景。首先,请确保
00:02:42你已经下载了 Colima。在右边这里,我设置了一个名为 my test app 的简单文件夹,
00:02:48用来存储 CLAUDE Code 通过 Incus 容器生成的所有内容。现在让我们
00:02:55启动一个简单的 Colima 实例。我们会传递 mount 标志,以允许对
00:03:00我刚刚创建的文件夹拥有写入权限。完成之后,我们将通过 SSH 进入 Colima 容器。
00:03:06从这里开始,我们基本上只需要按照 Code on Incus
00:03:11代码库中列出的说明操作即可。复制这些行来安装和配置 Incus。然后
00:03:17说明中说我们应该运行 bash 命令。但在我之前的测试中,这并没有达到预期效果。
00:03:23所以,你可以改将内容复制到 install.sh 文件中,然后运行它。接着
00:03:29设置脚本会开始运行,它检测到 Incus 已经安装好了,这很好,但我们仍
00:03:35需要配置防火墙。稍后我们会处理。现在只需按 1 选择从源码构建,
00:03:42让脚本自动执行。完成这一步后,我们就可以继续运行防火墙
00:03:47配置命令了。根据说明,接下来的步骤应该是
00:03:52运行 koi build。但在我之前的测试中,我遇到了一些网络连接问题。
00:03:58由于 Incus 运行在 Colima 虚拟机内部,它会创建自己的虚拟网桥。
00:04:04通常它被称为 incusbr0,目的是让 CLAUDE 容器能够访问互联网。但麻烦之处就在这里。
00:04:10默认情况下,Linux 防火墙甚至 Docker 自身的网络规则有时会
00:04:16与这个网桥发生冲突。为了解决这个问题,我们需要确保 Colima 虚拟机允许
00:04:22流量在 Incus 网桥和外部世界之间自由流动。我们的做法是将
00:04:28Incus 网桥添加到受信任的防火墙区域,并启用 IPv4 转发。一旦你
00:04:34在终端看到打印出两次 success,我们就正式准备好构建 Code on Incus 了。
00:04:40现在的文档可能有点让人困惑,因为要构建这个工具,你需要运行代码库内部的一个
00:04:46设置脚本。所以最简单的方法是直接克隆 Code on Incus
00:04:52代码库,然后进入目录,再从那里运行 koi build。至少我是这样搞定的。
00:04:59构建过程大约需要一两分钟来编译所有内容。一旦完成,
00:05:04好戏就开始了。我们终于可以在各自的 Incus 隔离舱中启动自主 CLAUDE Code 智能体了。
00:05:11现在让我们看看。为了展示实际效果,我设置了两个终端
00:05:16窗口。我在插槽 1 启动第一个实例,传入工作区路径,这样 CLAUDE 就知道
00:05:23把文件存放在哪里。我还添加了 network open 标志。这一点至关重要,因为它
00:05:28允许智能体访问互联网、下载依赖项,并在功能需要时调用 API。
00:05:35我对插槽 2 进行了同样的操作,基本上创建了一个“双人组”。
00:05:40一个智能体将完全专注于后端,另一个则专注于前端部分。
00:05:45在这个演示中,我将让他们构建一个星球大战全息记录仪应用,这是一个
00:05:51从 SWAPI API 获取角色数据的工具。为了让它更有趣,我还要求前端
00:05:57智能体给 UI 加上蓝色的全息闪烁效果,灵感来自 1977 年经典的星球大战
00:06:04终端外观。然后就让他们自由发挥。几分钟后,我们看到两个智能体
00:06:10在同一个工作区协作成功。它们已经创建好了后端
00:06:16和前端界面。现在让我们打开浏览器看看效果。好的,看起来
00:06:22非常棒。我们已经实现了那种经典的星战全息发光效果。现在如果我查询
00:06:28达斯·维达的数据,可以看到它成功获取了。尤达也是一样。还有卢克·
00:06:34天行者。这就是安全编排 AI 智能体的强大之处,你永远不必担心
00:06:40你的主宿主机会暴露在未知的依赖项或混乱的代码库中。现在我想给你们展示
00:06:46另一个例子,这种安全性在其中非常有用。假设你下载了一个文件,
00:06:52而你怀疑这个文件可能包含恶意软件。为了演示,我将
00:06:56实际使用一个由 EICAR 研究所提供的恶意软件样本文件,它通常被用作
00:07:02模拟真实计算机病毒的演示文件。虽然该文件本质上不会造成任何伤害,
00:07:09但它确实包含了一个恶意软件特征码。现在假设你拿到了那个文件,
00:07:14但你不想在本地机器上解压它。这时你就可以再次利用
00:07:19Code on Incus 来帮你进行归档提取。然后我们可以使用 CLAUDE Code 对
00:07:25该文件的内容运行全面的分析。在这个第二个例子中,我启动了一个新的
00:07:30Colima 实例。这次我将包含 EICAR 文件的文件夹作为工作区传入,
00:07:37这样我们就可以把它传递给 Incus。我已经再次执行了安装
00:07:41Koi 并进行配置的整个过程。现在我们已经启动了一个新的 AI 智能体。我们现在可以
00:07:48在另一个终端窗口中,将文件推送到 Incus 实例上。你可以通过使用 incus
00:07:54file push 命令并指定该特定 Koi 实例的容器 ID 来实现。传输完成后,
00:08:00我现在可以要求 CLAUDE Code 检查内容并运行一份详尽的分析报告。
00:08:06片刻之后,我们看到 CLAUDE Code 已经完成了分析。正如预期的那样,
00:08:11它判定这个文件是完全安全且没有恶意企图的。它确实识别出
00:08:17这确实是一个 EICAR 恶意软件测试文件。它在分析报告中
00:08:24列出了所有的细节。这真的很酷。如果你是一名安全研究员,或者
00:08:29经常接收大量不可信文件的开发者,你完全可以使用同样的流程来安全、
00:08:34可靠地检查它们,通过 Incus 系统容器的坚固盾牌,获得 CLAUDE 的全套分析能力。
00:08:40以上就是 Code on Incus 的简要介绍。总的来说,
00:08:47这个工具还提供了许多我在视频中没来得及展示的其他实用命令。
00:08:52比如,你可以使用自定义镜像启动实例,还可以管理快照和会话。
00:08:57所以一定要去看看整个项目以深入了解。我认为在当今
00:09:03网络数字角落充满了安全威胁的时代,像这样的工具真的有助于
00:09:09安全地管理 AI 智能体编排。而且它是基于 Incus 实现的,
00:09:16我非常推崇这点。所以它得到了我的认可。但你对这个工具有什么看法?
00:09:21你试过了吗?你会用吗?请在下方的评论区告诉我们。另外,
00:09:26如果你觉得这个视频有帮助,请点个赞。别忘了
00:09:31订阅我们的频道,这样你就不会错过我们未来的任何技术解析。
00:09:36我是来自 Better Stack 的 Andris,我们下期视频再见。