dsh-workflow-isolate:DeepSeek Harness 的 QuickJS/WASM 隔离工作流引擎

前言

DeepSeek Harness 的官方 workflow-worker-thread 引擎使用 node:vm 作为 API 形状机制。其文档指出这不是安全边界,当脚本不可信时,需要使用不同的引擎。dsh-workflow-isolate 探索了这一接口,同时不改变面向模型的 workflow 工具。

核心功能

该插件是一个 QuickJS/WASM 隔离工作流引擎,主要解决模型编写的工作流脚本需要 JavaScript 能力,但又不应继承 Node.js 权限的问题。它提供以下能力:

  1. 提供 WorkflowEngine 服务提供者。
  2. 运行 QuickJS/WASM 脚本。
  3. 限制资源(内存、堆栈、中断燃料、时间)。
  4. 阻止 Node.js API(process、require、文件系统、网络、计时器)。
  5. 保留 DSH 工作流钩子和生命周期事件。
  6. 独立的 JavaScript 运行时和 realm。
  7. 限制并发和子代理预算。

安装与配置

安装插件需要将生成的 tarball 添加到 DSH profile 中。

dsh plugin --profile web add ./dsh-workflow-isolate-0.1.0.tgz

插件通过 cordis.patch.yml 配置生效。该配置会禁用默认的 workflow-worker-thread 并插入 workflow-isolate。DSH 允许每个上下文只有一个 ctx.workflowEngine 服务提供者,因此这两个引擎不能同时挂载。

若需本地源码迭代,可以使用以下命令:

dsh plugin --profile web add .

使用注意事项

在部署和使用时,需注意以下事实:

  • 语言边界:QuickJS/WASM 是比 node:vm 更强的语言边界,但并非完美的隔离。
  • 主机信任:主机子代理提供者仍然受信任,可以使用配置的模型、工具、网络和凭证。
  • 脚本编写:工作流正文必须使用可移植的 JavaScript,不能依赖 Node.js API、V8 特有行为或动态模块加载。
  • 通信机制:子代理通过 RPC 桥连接到主机。
  • 安全风险:运行时漏洞、侧信道和供应链妥协仍然相关。
  • 提供者限制:ctx.workflowEngine 提供者每上下文只能有一个。

总结

dsh-workflow-isolate 为 DeepSeek Harness 提供了一个基于 QuickJS/WASM 的隔离环境,配合资源限制和钩子保留机制,适合需要在工作流中执行不受信任脚本的场景。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜