前言¶
在 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