dsh-harden:DSH 运行时看护层

前言

在 DSH 里跑 agent,常见的问题不是「模型答错了」,而是回合在不该结束的地方结束:API 因限流或网关错误中断、工具失败被框架当成正常收尾、模型只输出思考没有正文就停住。会话日志一旦被写坏,历史往往整段打不开。单靠换模型或手动重试,很难在每次异常点都留下可解释的原因。

下面介绍社区插件 dsh-harden(维护者 thissensen)。它在 agent 生命周期的关键节点做防护,目标是让停止有明确原因,而不是静默变成「正常结束」。插件分类为工作流,npm 包名 dsh-harden,当前资料中版本为 0.0.2,许可证 MIT,要求宿主 DSH >= 0.1.7-rc.1。

这是什么

dsh-harden 自定位为「DSH 运行时看护层」。它不替换 DSH 核心,而是通过 Cordis patch 与设置页能力,在 API 失败、工具失败、空回合、上下文膨胀、子代理并行通知、会话落盘异常等场景上补一层兜底与修复。

目录页:SkillHub — thissensen/dsh-harden
源码与说明:GitHub — thissensen/dsh-harden

核心功能

资料中列出的能力如下,按设置页卡片与 README 用途对应说明。

API 与回合续跑

  1. 网络请求中断续跑(设置页可开关):在官方重试耗尽后,按配置再补试;可设 网络重试次数(0–99,0 表示不兜底)和 触发重试的失败特征(错误码 SERVER / RATE_LIMIT / TIMEOUT / TRANSPORT 与 HTTP 状态码 502 / 429;留空则不重试任何失败)。
  2. 工具调用失败续跑(需开关,且必须配置 失败提示前缀):当工具调用失败被吞、框架仍把回合当作正常结束时,注入提示让模型重新发起。前缀默认为空时,该规则不生效;需粘贴平台警告的固定开头,整段匹配开头、区分大小写。例:⚠ Could not execute tool;前缀以 < 开头时,正文里成对出现该标记也算失败。
  3. 回合无正文收尾(可开关):最后一步只有思考、既没有回复也没有工具调用时,拉回再走一步,应对「只输出思考直接中断」类问题。

上下文与子代理

  1. 上下文自动压缩(可开关):会话超过 触发阈值(插件默认 200K,也支持如 1M、100000 等形式)后,较早历史被浓缩成摘要,界面沿用平台自带的「上下文已压缩」提示。压缩范围三档:全部压缩 / 仅主代理 / 仅子代理(默认全部压缩);可自定义 摘要指令。
  2. 子代理通知聚合(可开关,默认关闭):多个子代理并行结束时,中间通知先压住,全部结束后合并成一条送达,避免逐个唤醒主代理。
  3. 子代理会话异常自动修复(常驻开启,无开关):平台即将写入不合规的重试事件时,在落盘前修正,减少会话无法打开;修正时回合尾部有一行浅色提示,痕迹写入会话日志,重启后仍可见。

工具与会话修复

  1. 后台任务工具(可开关):开启后模型可使用 job_background 启动后台命令,并用 job_list / job_output / job_kill 管理;对接 pwsh,用于缓解仅 Git Bash 时难以创建超过约 120 秒后台任务的限制。关闭后相关工具从模型侧消失。
  2. 修复损坏会话:设置页提供扫描按钮,扫描全部会话日志并修复已知损坏形态,使「stored session is corrupt」类历史重新可加载。

设置入口在 DSH 界面 「DSH优化」 分区下,共八张卡;截图可能与旧版文案略有差异,以实际界面为准。

安装与启用

安装只是把包放到位,还必须注册到 profile,DSH 启动时才会加载。

安装包(三选一)

从 npm:

npm install dsh-harden

从 GitHub Releases: 下载 dsh-harden-<版本>.tgz 后:

dsh plugin --profile web add file:<tgz 文件的绝对路径>

从源码构建: 需在首次启动 DSH 之前完成构建(client 壳受启动快照约束)。步骤见仓库 README:依赖安装、node scripts/link-deps.mjs、pnpm build(tsc host + vite client)。

注册到 profile

Web 端(link 路径示例,npm 安装时改用对应 link 或版本范围):

dsh plugin --profile web add link:<克隆目录的绝对路径>

桌面端:编辑 ~/.dsh/profiles/desktop/package.json 两处——在 dependencies 增加 "dsh-harden": "link:<目录>/dsh-harden"(npm 安装则用版本范围);在 dsh.profile.bundles 数组增加 "dsh-harden"。在该目录执行 pnpm install 并 重启桌面端。

典型用法与配置顺序

  1. 按上面路径安装并完成 profile 注册,重启 DSH。
  2. 打开 DSH优化 设置,至少按需打开:网络续跑、回合无正文、上下文压缩、后台任务等开关。
  3. 务必填写「失败提示前缀」(若需要工具失败续跑):不填则工具失败被吞时的规则不会生效。将你在界面里看到的平台警告原文固定开头粘贴进去。
  4. 网络续跑:设置重试次数与失败特征;留空失败特征表示不对任何失败做额外重试。
  5. 上下文压缩:确认阈值与压缩范围(主代理 / 子代理 / 全部),必要时改摘要指令。
  6. 若历史无法打开,在 修复损坏会话 卡执行扫描修复。

插件以当前 DSH 进程权限运行;安装前建议阅读 仓库源码 与 MIT 许可证,确认符合你的环境与合规要求。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-harden 把 API 中断、工具失败被吞、空思考回合、日志损坏、长上下文与子代理通知等「莫名停住」收敛到可配置、可扫描的看护逻辑。装完后记得注册 profile,并在设置页补全 失败提示前缀 等关键项。

  • 目录页:https://www.skillhub.cn/plugins/thissensen/dsh-harden
  • GitHub:https://github.com/thissensen/dsh-harden
羽毛球分组比赛记分
小程序二维码

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

Xiaoye