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