1. 先说结论:为什么企业执行 AI Agent 必须要一个“笼子”
聊到 OpenClaw 和 DSH 这套组合之前,我想先讲一个我最近的真实感受。你在本地跑一个 Agent,让它帮你整理文档、读 PDF、归档文件、调浏览器,甚至是操作命令行工具——这些任务看起来都很“无害”。但一旦把它放进企业内部网络,事情就完全变了。Agent 不再是你的个人助理,它变成了一个有权限、有网络通路、有文件系统访问能力的自动化执行体。它跑在你同事的机器上,跑在 CI 服务器上,跑在 Windows 和 WSL2 里,它调用的每一个工具、读到的每一份文档、执行的每一条命令,都不该是“裸奔”的。
OpenClaw 就是那个能干活的 Agent 编排框架,DSH 是它的插件和执行扩展体系,它们解决的是“Agent 能不能做更多事”的问题。而 CubeSandbox 解决的是另一个更底层的问题:Agent 做这些事的时候,凭什么确保它不会乱来?在三年前,我可能觉得沙箱是个可选项;但在企业安全执行面这个课题面前,沙箱不是可选项,是地基。这篇文章就从这套组合的实际部署出发,讲清楚它们各自扮演什么角色,以及你如何在企业环境里把这三者拼起来,让 Agent 既能干活,又出不了圈。
这篇文章适合两类人:一类是把 OpenClaw 部署到 Windows、Ubuntu 甚至安卓 Termux 上的个人用户,想知道怎么把安全执行面补上;另一类是在企业内部推动 AI Agent 落地、但被安全合规卡住的工程负责人——你们需要的就是一个能解释清楚“执行边界在哪里”的方案。
2. 把三个组件的关系理顺:OpenClaw、DSH、CubeSandbox 各自的分工
2.1 OpenClaw:Agent 的“大脑”和任务编排中枢
OpenClaw 本质上是一套 Agent 编排框架。你可以把模型 API 或者本地模型(比如 Ollama 里的 qwen2.5-3b)接进去,然后给 Agent 定义工具、任务循环和技能。它的核心能力是把“大模型的意图”转成“可执行的行动”,比如调用 DSH 插件去归档文件、去读网页、去解析 PDF,或者通过 shell 执行命令。
在企业环境里,OpenClaw 通常不是跑在个人笔记本上就完事的,它更像一个需要长期驻留的服务。热词里出现的“openclaw windows companion 怎么配置”“ubuntu 安装 openclaw”“openclaw 安卓部署”都说明一件事:大家希望在一个常驻设备上部署它,让 Agent 随时待命。这就带来了第一道安全课题:OpenClaw 的进程权限不能无限放大,它应该尽可能跑在受限账号或容器里。这也是为什么后来我会把执行面拆出去交给 CubeSandbox,而不是让 OpenClaw 直接拥抱宿主机的一切权限。
2.2 DSH:插件体系与执行 harness 的定位
DSH 如果只看热词,很容易让人误会成单纯的数据处理工具。实际上它是 OpenClaw 的扩展生态,包含插件市场(dsh market)、归档管理插件、浏览器插件、文档读取插件,以及一套通过命令行接入的机制(比如dsh plugin --profile web add dshmarket)。也就是说,DSH 负责的是“Agent 的双手”——具体去操作某类工具、读取某类格式、完成某个领域动作。
DSH 还有一个值得注意的角色:harness。热词里有“dsh harness”,这通常意味着它不只是被动地提供插件,它还会主动承接一些执行动作的封装。比如说把一个文档读取任务封装成标准接口,让 OpenClaw 只需要通过 skill 调用,而不需要每次重新写解析逻辑。这个思路在企业里特别实用,因为给 Agent 暴露的工具越多,出问题的面就越大——用 DSH 这种标准化插件层把工具收敛起来,比让 Agent 直接拼命令要稳得多。
2.3 CubeSandbox:执行面的隔离边界
CubeSandbox 是这套体系里真正负责“兜底”的组件。它做的事情可以类比成“给 Agent 一个容器化的临时办公室”:Agent 可以在这个办公室里干活,用文件、跑命令、访问网络,但办公室的墙是硬隔离的,里面的破坏不会漫延到整个楼层。
在企业安全执行面这个概念里,有几个默认必须成立的假设:第一,Agent 的每一次系统调用都必须经过沙箱的管控;第二,Agent 能看到的文件系统范围是受限的;第三,Agent 产生的所有痕迹要被记录下来,出了问题可以回放。CubeSandbox 的价值就在于把这三条假设变成基础设施,而不是靠人的自律。OpenClaw 负责决策,DSH 负责扩展能力,而 CubeSandbox 负责确保这些能力不会变成灾难。这个组合的逻辑就一句话:让 Agent 足够强大,但永远限制在一个可控的笼子里。
| 组件 | 核心定位 | 企业中的关键职责 |
|---|---|---|
| OpenClaw | Agent 编排与任务调度 | 决策中心、任务循环、模型接入 |
| DSH | 插件体系与执行 harness | 工具封装、文档解析、归档操作 |
| CubeSandbox | 执行面隔离 | 命令、文件、网络受限,审计回放 |
3. 企业安全执行面的设计思路:不是“会不会出事”而是“出了事怎么追”
3.1 最小权限模型:Agent 只需要“刚好够用”的权限
在企业里做安全执行面设计,第一原则就是最小权限。很多个人用户在本地跑 OpenClaw 的时候,习惯直接给它一个管理员账户或者 root 权限,反正自己电脑出了问题也能修。但在企业环境里,这个习惯必须戒掉。Agent 的最小权限模型应该分成三个维度:文件系统权限、命令执行权限、网络访问权限。
文件系统权限方面,CubeSandbox 可以给 OpenClaw 挂载一个只读的“知识目录”,里面放它需要阅读的 PDF、world 文档、归档资料;同时给一个可写的“工作目录”,让它输出结果。除此之外,宿主机的其他目录一律不可见。命令执行权限方面,白名单机制比黑名单可靠得多。你可以允许 Agent 执行python、node这类编程环境命令,但绝不允许它直接对宿主机跑sudo apt install或者改系统配置。网络访问权限则需要分级:有的任务允许访问外网,有的只允许访问内网 API,有的干脆全禁。我在实际项目里见过太多因为没做网络隔离,Agent 在沙箱里偷偷访问了不该访问的内网端口的情况。
3.2 隔离的层次:从命令隔离到文件系统再到网络策略
CubeSandbox 的隔离不应该是一刀切,而应该分层次。最底层是命令隔离,也就是 Agent 执行的命令跑在沙箱进程中,无法直接操作宿主机的系统调用。往上走是文件系统隔离,Agent 看到一个虚拟目录树,它以为自己在操作“本地文件”,实际上这些文件要么是只读挂载,要么是临时副本。最上层是网络策略隔离,沙箱里有一个独立的网络命名空间,外发流量必须经过代理或者规则过滤。
分层的好处是显而易见的:即使某一层被突破了,后面还有一层兜底。举个例子,如果一条 prompt 注入让 Agent 跑了一个恶意脚本,脚本可能能拿到沙箱里的 shell,但它的文件读取范围仍然被限制在伪造的目录树里;就算它想外传数据,网络层策略也会拦住不常见的出站流量。我在设计自己的执行面时,最常跟团队讲的一句话是:别指望 Agent 不犯错,要假设它一定会犯错,然后在每一层都留好后手。
3.3 审计与回放:安全执行面的核心不是为了“防”而是为了“追”
把 CubeSandbox 引进来之后,很多人会下意识地把它当成一个“边界防火墙”,但我觉得它更像一个“监控摄像头+隔离舱”。隔离是必要的,可审计才是长期价值所在。企业里出问题不可怕,可怕的是出了问题根本不知道 Agent 当时做了什么。
所以我在接入 CubeSandbox 的时候,一定会开启完整的执行日志:记录每一次命令调用、每一次文件读取、每一次网络请求。OpenClaw 的 skill 调用记录和 DSH 的工具调用记录也要对齐到同一个时间轴上,这样一旦发现异常行为,就能从“这个 Agent 在什么时间点调了哪个插件”一路追到“它当时读走了哪些文件”。这种回放能力在企业合规审计里非常关键——安全部门问你“这个 Agent 碰过那份客户数据吗”的时候,你要能给出确定性的答案,而不是“应该没有吧”。
4. 实操:从零搭一套 CubeSandbox + OpenClaw + DSH
4.1 环境准备:WSL2、Node.js、PowerShell 的那些坑
先讲环境。OpenClaw 的核心依赖是 Node.js,所以第一步是装一个 LTS 版本的 Node.js,我建议直接从官网下载,别用包管理器里那种版本不明的旧版本。Windows 上我们通常把 OpenClaw 装在 WSL2 里,因为 WSL2 的 Linux 环境跑 Agent 相关的生态工具更顺。但这里就有个经典问题:OpenClaw 会去验证 WSL2 环境,如果验证失败,报错可能是“无法安全验证 sl2 环境”。这时候你需要在 PowerShell 里跑wsl --status查看当前 WSL 状态,确认版本是 2,确认没有处于 Stopped 状态。
PowerShell 还有一个高频问题:使用商店版 PowerShell 时,执行策略限制导致 OpenClaw 的安装脚本跑不起来。解决思路是在管理员模式下设置当前用户的执行策略为 RemoteSigned,或者改用 Windows Terminal 配合系统自带的 PowerShell 5.1。我自己踩过的坑是:明明设置了策略,但因为是商店版 PowerShell 的 profile 配置问题,命令就是不生效,后来发现得同时把$PSHOME下面的配置文件权限检查一遍,很折腾。所以如果你只是想快速验证,直接用系统自带的 PowerShell 反而问题少。
4.2 安装 OpenClaw 与 WSL 环境验证流程
OpenClaw 的安装本身不复杂,复杂的是安装前的环境检查。安装完成后,它通常会有一步环境自检,会检查 WSL 状态、Node 版本、网络连通性等。这里我强烈建议你把验证流程拆开做,不要依赖它的单条指令判断。
第一步,打开 PowerShell(建议用 Windows Terminal),执行:
wsl --status wsl --list --verbose确认默认版本是 2,如果显示 VERSION 是 1,那就要wsl --set-default-version 2来升级。第二步,检查 Node.js 版本:
node -v npm -v确保 Node 版本在 OpenClaw 要求的区间内,太旧的版本某些依赖装不上。第三步,确认 WSL 发行版能正常访问网络,尤其是能访问模型 API 或者 Ollama 服务的地址。如果 Ollama 跑在 Windows 宿主机上,WSL2 里访问宿主机要用host.docker.internal或者宿主机的局域网 IP,这一步很多人会卡住。
注意:WSL2 的网络模式比较特殊,如果你在 WSL 里访问不到 Windows 本地的 Ollama 服务,优先检查是不是防火墙拦截了 WSL 虚拟网卡的入站请求,而不是先怀疑 Ollama 配错了。
4.3 模型接入:Ollama 本地模型与 API 两种路径
OpenClaw 不直接产生算力,它的推理能力来自模型。所以你需要决定接哪种模型服务。最省事的是接 OpenAI 兼容的 API,比如 DeepSeek、硅基流动(SiliconFlow)这类平台上提供的模型接口。在 OpenClaw 的配置里填上 API 地址、密钥和模型名,它就能工作。硅基流动的 API 兼容性做得不错,我在 DSH 里接它的时候基本上没遇到格式问题,只注意一个点:需要给它配好模型名称,比如Qwen/Qwen2.5-7B-Instruct,别只填一个组织名。
如果想完全离线,就走 Ollama 路径。本地部署 qwen2.5-3b 这类小模型,对个人机器很友好。但要注意:3b 模型在复杂任务上的推理能力有限,用来关联 OpenClaw 做一些简单文档整理、摘要类任务还行,如果要让 Agent 执行多步骤任务循环,建议至少用 7b 或更大参数的模型。Ollama 接入 OpenClaw 时,通常需要把 Ollama 的地址暴露到局域网或者 localhost,并且在 OpenClaw 配置里指定ollama作为 provider,模型名填你在 Ollama 里拉取的那个 tag。
4.4 DSH 插件生态:必装插件与市场管理
DSH 装好之后,第一件事是添加插件市场。命令行形式类似于:
dsh plugin --profile web add dshmarket这条命令的意思是把 DSH 的插件市场注册到你的 profile 里,之后你就能搜索和安装插件了。我自己的“必装清单”有三类:归档管理插件、文档读取插件、浏览器插件。
归档管理插件负责对文件做分类、归档和检索,它和 OpenClaw 配合起来的效果是,你给 Agent 一个任务说“把最近一个月的报告归档”,它不只是把文件移动一下,还会生成索引信息。文档读取插件解决的是“读取 world、pdf 等文档内容”的问题,这里要注意的是,PDF 解析质量取决于底层解析器,扫描版 PDF 基本无解,文字版 PDF 没问题。浏览器插件则让 Agent 能访问网页内容、抓取数据,这个插件在企业里要谨慎开权限,因为浏览器访问面太广了,建议只在 CubeSandbox 里启用。
DSH 还有一个“破甲插件”的说法,我理解的意思应该是专门用来“拆开”复杂任务目标的工具集合,实际上是把多步骤任务拆成可执行的子任务,再逐个交给沙箱去完成,而不是让 Agent 一步到位。这种拆解思路在企业里非常重要,因为它让每一步都变得可审计。
4.5 把工具调用强制路由进 CubeSandbox
接下来是最核心的一步:把 OpenClaw 和 DSH 的工具调用全部收编进 CubeSandbox。不要直接让 OpenClaw 的本机 shell 去执行命令,而是通过 CubeSandbox 暴露出来的执行接口来跑。配置上,你需要三层:CubeSandbox 创建一个受控的沙箱实例,挂载一个只读的知识库目录和一个可写的工作目录;OpenClaw 的 skill 配置里,把涉及命令执行的 action 都指向沙箱的执行端点;DSH 的插件调用同理,比如浏览器插件必须跑在沙箱的网络策略内。
我分享一下我的实际配置思路:在 OpenClaw 的 skill 配置文件里,定义一个sandboxed_exec工具,类型标记为http,地址指向 CubeSandbox 的本地网关。这样 OpenClaw 看起来只是发了一个 http 请求,实际执行发生在沙箱里。文件类操作也走同样的路径——OpenClaw 想读某个 PDF,它不能直接fs.readFile,而是给沙箱发一个read_document请求,沙箱去挂载目录里取文件、解析,然后把结果返回。这个过程对 Agent 来说是透明的,但它永远碰不到宿主机真实文件路径。
4.6 落一个真实任务:读取 PDF 并汇总全流程走查
纸上谈兵没用,我实际跑一个任务:让 Agent 读取指定目录里的三份 PDF 报告,提取核心指标,然后生成一份汇总 Markdown 文件。
第一步,在 DSH 里调用文档读取插件读取 PDF。OpenClaw 把需求发给 DSH skill,DSH 通过 CubeSandbox 的read_document接口去沙箱挂载的只读目录里读取文件。第二步,解析结果返回给 OpenClaw 的模型上下文,模型归纳指标,生成 Markdown 内容。第三步,OpenClaw 再调用沙箱的write_document接口,把 Markdown 写在沙箱的可写工作目录。全程宿主机上没有出现过任何临时文件,Agent 也没有碰过宿主机文件系统。
这个流程的每一步都能在 CubeSandbox 的日志里查到完整记录:读了哪个文件、解析耗时多少、生成了什么内容。最后你可以通过一个同步命令把工作目录的结果导出到宿主机指定位置,导出的动作由你手动控制,而不是由 Agent 直接控制。这种做法牺牲了一点便利性,但换来的是“Agent 永远不能自行外泄文件”的确定性。
5. 常见问题与排查实录
5.1 OpenClaw 报“无法安全验证 SL2 环境”怎么处理
这个报错我在一开始提过,基本上就是 WSL 环境状态不对。处理流程很固定:先跑wsl --status看状态,再跑wsl --list --verbose看发行版列表。如果发行版停在 Stopped,用wsl --shutdown重启 WSL 服务;如果版本还是 1,那就升级到 2。有一类特殊情况是 WSL2 不是通过wsl --install装的,而是手动启用了 Windows 功能,这种情况下内核更新和默认版本设置经常对不上,建议直接用官方的一键安装流程重装一遍内核组件。
5.2 商店版 PowerShell 执行策略报错的解决方案
用商店版 PowerShell 跑 OpenClaw 或 DSH 脚本时,遇到执行策略限制是家常便饭。Set-ExecutionPolicy RemoteSigned -Scope CurrentUser是常见解法,但我在实践里发现商店版 PowerShell 因为自带 profile 的加载机制不同,有时候策略改了却不生效。更稳妥的办法是直接换到系统自带 PowerShell 5.1 或者 Windows Terminal 里的默认配置,跑完命令再切回来。另外,DSH 在使用商店版 PowerShell 时报错,还可能是 DSH 脚本本身依赖了一些兼容性不强的 PowerShell 模块,优先检查脚本开头有没有用到 Windows 专属模块。
5.3 手机端 Termux 部署 OpenClaw 的取舍
用 Termux 在安卓上部署 OpenClaw 这件事,能做,但不建议作为企业方案。手机端的优势是方便,比如出门在外给 Agent 发个任务;劣势是 Termux 环境受限、进程容易被系统杀掉、存储权限也是一锅粥。如果你只是个人尝鲜,可以装 Termux 后把 Node.js 和 OpenClaw 装上,但别把重要数据放在手机上跑。企业里真要跑,还是放 Ubuntu 服务器或者 Windows 工作站上,至少能保证 Agent 进程稳定在线。
5.4 彻底卸载 OpenClaw 的正确姿势
热词里有人问“怎么卸载 OpenClaw”,这个我提一下。不要只删除目录,因为 OpenClaw 和 DSH 会在用户目录下写入配置文件和 profile 数据。卸载步骤应该是:先停掉 OpenClaw 进程,再移除 DSH 插件配置,然后删除安装目录和用户目录下的.openclaw、.dsh配置目录,最后清理 PATH 里的相关条目。Windows 上还要检查服务注册,如果装成了后台服务,得先从服务管理器里停掉再删。
5.5 模型接入异常与插件权限过大的隐患
模型接入方面最常见的坑有两个。一个是用硅基流动 API 时,商店版 PowerShell 执行某个动作报错,这种情况通常是环境变量没对齐,检查一下 API key 是否真的传到了 OpenClaw 的 provider 配置里。另一个是把 qwen2.5-3b 关联到 OpenClaw 后,发现 Agent 经常“呆住”,看起来像死循环,实际上是模型太小、上下文理解能力跟不上,这时候换 API 或者升级本地模型就能解决。
插件权限过大的问题就严重多了。我给 DSH 装完浏览器插件之后,实测发现如果不去沙箱里限制网络,它能访问的范围非常大。后来我在 CubeSandbox 的配置里给浏览器插件单独开了一个 profile:允许访问内网白名单域名,禁止访问所有外网;允许读取页面文本,禁止下载文件。这个操作直接砍掉了 80% 的风险面。
6. 最后:从实际落地中学到的三件事
第一件事是,OpenClaw 和 DSH 这套组合的能力本身非常强,但能力越强,越需要安全边界。我个人在部署中最大的体会是:与其事后再排查 Agent 干了什么坏事,不如一开始就把它的执行面放进 CubeSandbox。第二件事是,在沙箱里“约束” Agent,并不会显著降低它的任务完成质量,因为大部分任务的瓶颈在模型的推理能力,而不在系统权限的大小。真正降低的是它的破坏上限——这个上限一旦降下来,企业安全团队那边就好交代多了。第三件事是,安全执行面这个设计不是一次性的配置,它需要跟着插件生态走,每加一个新 DSH 插件,就要重新审查一遍它在沙箱里的权限边界。这套组合后续还可以继续扩展,比如把多个 OpenClaw 实例接到同一个 CubeSandbox 集群里,做统一的策略下发和日志归集——那基本就是企业内部 Agent 平台的雏形了。