dsh-runtime-kit:DSH 通用運行時(上下文治理、快路徑、沙箱與審計)

前言

在 DSH 裏跑智能體循環時,常見問題是:工具返回體不斷撐大上下文、重複套路任務仍要走完整 LLM 回合、文件與命令缺乏統一邊界、出了問題難以覈對「誰調了什麼」。不少做法會把業務腳本、賬號或瀏覽器邏輯寫進運行時插件,耦合面難以收口。

dsh-runtime-kit(維護者 daoyan2142)走的是另一條路:只提供「上下文治理 + 快路徑 + PTC 編排 + 沙箱隔離 + 審計」的通用能力,零業務依賴;業務只通過 registry 註冊工具、模板和工作區。插件在 SkillHub 目錄分類爲 admin-security,當前 GitHub 星標爲 0,版本 0.1.0,許可證 MIT(見倉庫 package.json)。對標說明見倉庫引用的《DSH 快速執行與沙箱方案》v2.1(§0–§8)。

  • 目錄頁:https://www.skillhub.cn/plugins/daoyan2142/dsh-runtime-kit
  • 倉庫:https://github.com/daoyan2142/dsh-runtime-kit

這是什麼

一句話:給 DSH 裝上模塊化運行時中間層,統一治理 context、規則化快路徑、PTC 批量調工具、細粒度沙箱與 append-only 審計;不內置業務邏輯,不讀業務文件,不驅動瀏覽器,不管理賬號或登錄態。

交付形態:單一插件包 dsh-runtime-kit,入口爲 dist/index.js,配置 schema 爲 config.schema.json;宿主側通過 DSH profile 的 plugins 段啓停。與使用方的唯一耦合面是 registry:註冊工具、快路徑模板、沙箱工作區三類結構,插件不關心 handler 內部是 HTTP、瀏覽器還是純計算。

不是什麼:不含具體任務模板或業務參數;不允許插件核心 import 使用方代碼;默認不把大對象、二進制或日誌全文塞進 context;策略異常時採用 fail-closed,而非降級放行。


核心能力(對標 v2.1 §4)

下面按倉庫 README 中的能力矩陣歸納,驗收指標在倉庫 §6 以通用夾具(如 echo、file_read/file_write、http_probe 等)自測,不依賴真實業務系統。

上下文治理(C1)

對工具返回做預算與裁剪:默認返回體預算 4096 字節(maxReturnBytes),支持字段投影、pruner/compaction,以及延遲加載工具描述,目標是把每輪進入 context 的 tool result 控制在約定上限內(驗收 M3:≤4 KB)。

快路徑(C2)

通過 registry.registerTemplate 註冊匹配規則與固定 plan;命中後按規則鏈執行工具,0 次 LLM 調用(驗收 M4),可配冪等鍵與狀態機。

PTC 封裝(C3)

在腳本容器內批量調用已註冊工具,中間結果留在容器內,僅摘要進入 context;受 registry 約束,避免把批量中間態灌回對話。

編排裁剪(C4)

loop 預設可對官方編排層做補丁:默認關閉 plan / todo / goal / subagent 等層(disabledLayers),可用 runtime_kit_config 應用 minimal-no-orchestration 或 code-ptc-friendly 等預設,並用 --dump-config 覈對。

併發與恢復(C5,可選)

只讀工具併發上限默認 8;變更類工具走屏障串行;支持 turn/step 持久化與一鍵回退,崩潰隔離(驗收含 M5、M9、M10、M12)。

沙箱(C6)

三檔基線 + 文件讀/寫/刪、命令前綴、網絡域名的細粒度規則;網絡默認拒絕(networkDefault: "deny");支持變更快照與回收站、工作區信任/受限、注入防護與敏感脫敏;Windows 側 shell 抽象爲 pwsh。策略損壞時 fail-closed(M8)。

審計與指標(C7)

append-only 流水、脫敏、可導出;覆蓋 token、工具調用、拒絕與審批等指標,對應 M1–M14 的觀測面。


對外契約:Registry

使用方在宿主進程中向 registry 註冊三類對象(類型與字段以 README 爲準):

工具:name、schema、handler,以及 isStateChanging(是否觸發屏障/審批)、returnBudget、timeout 等。

模板(快路徑):match 函數、plan 步驟數組、idempotencyKeyFn 等。

工作區(沙箱邊界):profile、root 絕對路徑、networkAllowlist、permissionMode、envPrefix、trusted 等。

倉庫 README 給出了 TypeScript 形態的完整示例;實現時以你項目中的 registry API 與編譯產物爲準。


配置要點

完整 schema 見倉庫根目錄 config.schema.json。README 中的示例結構如下,啓用時可按需裁剪:

{
  "context": {
    "maxReturnBytes": 4096,
    "fieldsProjection": true,
    "prunerEnabled": true,
    "compactionEnabled": true,
    "lazyLoadTools": true
  },
  "loop": {
    "preset": "code",
    "disabledLayers": ["plan", "todo", "goal", "subagent"],
    "maxParallelToolCalls": 8,
    "enableCustomLoop": false
  },
  "sandbox": {
    "mode": "workspace-write",
    "approval": "ask",
    "rules": {
      "files": [{ "pattern": "**/*.secret", "read": "deny", "write": "deny", "delete": "deny" }],
      "commands": [{ "prefix": "rm -rf", "action": "ask" }],
      "network": [{ "domain": "api.github.com", "action": "allow" }]
    },
    "networkDefault": "deny",
    "backupEnabled": true,
    "deletionProtection": true,
    "injectionGuard": true,
    "sensitiveProtection": true,
    "shell": "pwsh",
    "workspaceTrust": false,
    "toolControl": { "dangerous_tool": false }
  },
  "audit": {
    "mode": "append-only",
    "desensitize": true,
    "exportable": true,
    "retentionDays": 90
  }
}

注意:不要把 danger-full-access 設爲默認;toolControl 可對高危工具顯式關閉。


安裝與啓用

從源碼構建(倉庫 README)

插件爲 TypeScript 工程,要求 Node.js ≥ 20。在已獲取倉庫源碼的目錄中執行:

pnpm install
pnpm build

產物包含 dist/、patch.yml 與 config.schema.json,與 package.json 中 dsh.plugin.entry 一致。

在 DSH profile 中啓用

將構建或分發得到的插件包按你環境中的 DSH 插件加載方式就位後,在 profile 中打開開關並傳入配置:

{
  "plugins": {
    "dsh-runtime-kit": {
      "enabled": true,
      "config": {}
    }
  }
}

config 字段填入上一節的 JSON(或經 runtime_kit_config 覈對後的結果)。package.json 聲明 dsh.bundle 可通過 patch.yml 以可移除 bundle 形式掛載,具體以當前 DSH 宿主文檔爲準。

安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限 運行,沙箱與審批策略不能替代你對主機與網絡邊界的判斷。


典型用法:管理命令

README 列出以下運行時管理入口(在已啓用插件的 DSH 環境中調用):

# 健康檢查
runtime_kit_health

# 配置覈對 / 應用預設
runtime_kit_config [minimal-no-orchestration|code-ptc-friendly]

# 指標查看
runtime_kit_metrics

# 審計日誌
runtime_kit_audit_logs [profile] -t <tool> -a <action> -r <result> -s <date> -l 50

# 隔離驗證
runtime_kit_isolation <profile>

# 快路徑執行
runtime_kit_fastpath "echo-chain:test" [profile]

# PTC 執行
runtime_kit_ptc 'callTool("echo", {"text":"hi"})' [profile]

# 註冊表查看
runtime_kit_registry_tools
runtime_kit_registry_templates
runtime_kit_registry_workspaces

建議順序:先 runtime_kit_health 與 runtime_kit_config 覈對預設,再用 runtime_kit_isolation 驗證工作區策略,最後在註冊工具與模板後試 runtime_kit_fastpath / runtime_kit_ptc。審計排查用 runtime_kit_audit_logs 按工具、動作、結果與時間過濾。

倉庫提供 pnpm test(vitest)與 pnpm test:smoke(test/smoke.mjs),可在改動配置或 registry 後做本地冒煙。


內部結構(便於讀源碼)

src/
├── types.ts
├── registry/
├── context/
├── sandbox/
├── audit/
├── loop/
├── preset/
└── index.ts

index.ts 組裝各模塊;業務邏輯不應出現在這些目錄內,耦合應停留在 registry 註冊階段。倉庫 §7 將交付劃分爲 P0 上下文與編排裁剪、P1 沙箱與審計、P2 快路徑與 PTC、P3 可選併發恢復,各階段可用夾具獨立驗收。


適用場景與注意

更適合誰:需要在 DSH 上自建工具鏈、又希望把「上下文體積、重複任務、沙箱邊界、審計流水」從業務代碼裏抽出來的開發者;SkillHub 分類 admin-security 也表明其側重治理與隔離而非具體業務自動化。

實施約束(倉庫 §8.2 摘要):禁止在插件內引用業務腳本、記憶文件、賬號或選擇器;禁止在驗收夾具中使用真實業務 URL 或憑據;禁止依賴繞開受限令牌的 shell 適配;未經驗證的第三方 loop 不宜直接在主力 profile 試用。

生態說明:DSH 強調「一切皆插件」;SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。星標、Issue 與版本以 GitHub 頁面爲準。


結尾

dsh-runtime-kit 把運行時 concerns 收成可配置、可驗收的一層:registry 是唯一對接面,context 有預算,快路徑可零 LLM,沙箱默認收緊網絡與路徑,審計可導出追溯。若你在做 DSH 插件或宿主集成,可從目錄頁瞭解概覽,在倉庫 README 與 config.schema.json 中核對配置與驗收線。

  • https://www.skillhub.cn/plugins/daoyan2142/dsh-runtime-kit
  • https://github.com/daoyan2142/dsh-runtime-kit
羽毛球分组比赛记分
小程序二维码

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

小夜