zephyrrtos.cnZephyr 生态 · 中国驱动软件系统
DSH 插件 · 工作组的工具

工作组插件

四个已发布的 DSH 插件:远端开发沙盒(把 Ubuntu/Armbian 主机当成命令行工作区)、 Lead/Worker 模型路由(一轮里 strong 模型规划、便宜模型执行)、 合规门禁(让每个「已完成」的结论都带可复现的反证)、 会话交接(上下文真的用尽时,换一条干净会话接着干)。

共性:MIT 许可 · 需要 DSH ≥ 0.1.2-rc.1 · 都是 host 侧插件(新增 bundle 需重启 DSH 才挂载)· 目录源只携带元数据,安装动作始终由你确认。

该装哪个

我想……装哪个
让代理直接在远端 Linux 主机上编译、调试、读写文件dsh-ubuntu-sandbox(默认 tmux 持久会话)
把「规划」和「执行」分给不同价位的模型,同时保住 prompt cachedsh-llm-router(Lead/Worker 路由)
防止「做了≠做对」「门禁自己会撒谎」「放宽边界不留痕」dsh-compliance(校验器 + 生成器 + CI 片段)
上下文真的用尽、连压缩都压不动时,让任务换一条干净会话接着跑dsh-handoff(三重门 + 交接简报)
先看四个插件的安装通道差异见下面每个小节的「分发」一行

dsh-ubuntu-sandbox 0.1.1

把远端 Ubuntu / Debian / Armbian 主机变成 agent 的命令行工作沙盒:默认 tmux 持久会话 + 远程读写工具; 与 @linxin666/dsh-ssh 共享主机库(~/.dsh/dsh-ssh.json)。

三个要点

  • 会话跨调用与断线保持:cd / export / 后台任务都不丢
  • 六个工具:sb_cwd / sb_session / sb_exec / sb_ls / sb_read / sb_write
  • 超时不杀进程;sb_session action:reset 恢复干净 shell

分发

dsh-llm-router 0.1.1

把 Lead/Worker 模型路由做成 harness 的一等公民:在 ctx.llm 上注册一条虚拟提供方路由(默认 lead-worker), 并提供可观察、可拦截、可替换的 ctx.llmRouter 服务。

三个要点

  • 虚拟模型 auto / lead / worker / worker:<id>,选择器与日志无需改动
  • 一轮一次 lead 规划、其余步骤交给 worker;失败连击达阈值再升级回 lead
  • 无配置时休眠不报错;写了一半的路由会明确报错

分发

入口

dsh-compliance 0.1.1

场景:车规 / 工业功能安全一类项目把 AI 代理放进开发流程——最怕的不是写错,而是说不清(谁实现、按哪条判据验证、放宽过什么边界、发布快照里还有哪些 open 偏差)。它把「每一个『已完成』的结论都带可复现的反证」变成机器的默认动作:校验器、生成器、空模板与 CI 片段。只发机制,不发结论。

三个要点

  • 七个检查:secrets / requirements / tcl / fmea / permissions / traceability / release
  • 跳过不是通过:SKIP 与 PASS 分列,并写明跳过的检查未被执行
  • 代理侧四个工具:compliance_list / check / gen / audit

分发(与其他两个不同)

  • 不在公共 npm:同名包已被他人占用 · 不构成任何功能安全合规声明(TCL 借用 ISO 26262-8 第 11 章方法论,L4 硬约束)
  • 私有 Gitea registry:https://zephyrrtos.cn:3000/api/packages/hakehuang/npm/(匿名 401)
  • 或 git 依赖并钉标签 #pkg-v0.1.1(会把整个仓库交出去)

入口

dsh-handoff 0.1.0

场景:一次跑很久的任务(大型迁移、反复失败重试、无人值守的长期目标)把上下文顶到窗口上限,而同会话压缩已经压不动——装了大型工具集的 envelope 本身就占掉一块、一次超大工具调用是个不可分单元、或者「摘要的摘要」逐轮失真。这时候要的不是把历史摘要得更狠,而是换一条干净会话接着干,并说清楚为什么换、换过去的是什么。

三个要点

  • 三重门同时打开才动手:压力 ≥ 0.92 × 窗口 且 观测到压缩已失败 且 agent 处于空闲边界
  • 交接简报 = 模型摘要 + 确定性回退(模型不可用时从日志重建,永远可用)+ 按优先级裁剪
  • 后继会话从 root context 建立——实测:从插件自己的 context 建立会随插件重载一起死

分发(与 compliance 同通道)

  • 不在公共 npm:dsh-handoff 已被他人占用,故使用 @hakehuang/dsh-handoff
  • 私有 Gitea registry:https://zephyrrtos.cn:3000/api/packages/hakehuang/npm/(匿名 401)
  • 零运行时依赖 · 或 git 依赖并钉标签 #pkg-v0.1.0

入口

装插件时通用的两件事

挂载清单要自己确认dsh plugin --profile desktop add <包名> 只是把参数转发给 profile 里的 pnpm——它不写挂载清单。装完必须确认 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles 含该包名,否则依赖装了也不加载(不报错,只是工具不出现)。
pnpm store 版本冲突若报 ERR_PNPM_UNEXPECTED_STORE:profile 的 node_modules 由 pnpm 10 建立、而 DSH 强制使用自带 pnpm 11。完全退出 DSH 后在 profile 目录执行一次 DSH 自带 pnpm 的 install 迁移 store 即可根治;或用与现有 store 匹配的 pnpm 手工安装。详见排错表。
装完要重启四个插件都是 host 侧插件(没有浏览器半),新增 bundle 不会热加载;重启后工具才出现。
问智能体 Zephyr 问题问答 · 直接问智能体