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 的隔離環境,配合資源限制和鉤子保留機制,適合需要在工作流中執行不受信任腳本的場景。

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

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

小夜