dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 运行时看护层:API 调用失败自动续接重试、工具调用失败被吞自动拉回、只输出思考的回合自动重试、修复资源管理器无响应、新增对接 pwsh 的后台 job 工具。
DSH 运行时看护层 —— 让任何一次停止都有明确原因
English · GitHub
run_code 程序的默认预算从平台默认的 120 秒抬到计时器上限(约 24.8 天),关掉立即恢复;主代理与子代理都生效(默认关闭,预算这么大之后写坏的程序不会自己到点结束)会话日志被写坏后,平台会直接报错、整段历史再也打不开;插件在设置页提供一键扫描并修复:
工具调用失败被吞时,插件自动提示模型重新发起,回合不会莫名结束:
模型只输出思考、没有正文就收尾时,插件自动提示模型补充正文,回合不会莫名结束:
三条路选一条,装完还必须把插件注册到 profile —— 这一步是必须的(见下一节)。
npm install dsh-harden到 Releases 下载 dsh-harden-.tgz:
dsh plugin --profile web add file:<tgz 文件的绝对路径>git clone https://github.com/thissensen/dsh-harden.git
cd dsh-harden
pnpm install
node scripts/link-deps.mjs # 把宿主包链进本项目的 node_modules
pnpm build # tsc(host)+ vite(client)首次构建必须在启动 DSH 之前完成(client 壳受启动快照约束)。
上面三条路只是把文件放到位置,还得把 dsh-harden 注册进 profile,DSH 启动时才会加载它。
桌面端:手动改 ~/.dsh/profiles/desktop/package.json 的两个地方:
dependencies 里加 "dsh-harden": "link:/dsh-harden"(从 npm 装的用版本范围);dsh.profile.bundles 数组里加 "dsh-harden"。然后在该目录跑 pnpm install,并重启桌面端(client 壳受启动快照约束)。
Web 端:一条 CLI 命令
dsh plugin --profile web add link:<克隆目录的绝对路径>设置页在「DSH优化」分区下,共 九张卡:
卡片 · 说明 工具调用失败续跑 · 开关。工具调用失败被吞、框架仍把回合当作正常结束时,注入一条提示让模型重新发起。另有 失败提示前缀:只填平台警告的固定开头,整段匹配开头(不拆行)、区分大小写;前缀以 `< 开头时,正文里**成对出现**该标记(开+闭)也算失败。**默认空 —— 留空则规则 H1 不生效。** 例:⚠ Could not execute tool。 **回合无正文收尾** · 开关。最后一步只有思考、既没有回复也没有工具调用的回合,会被拉回再走一步。 **网络请求中断续跑** · 开关 + **网络重试次数**(官方重试耗尽后最多再补几次,0–99;填 0 表示不兜底)+ **触发重试的失败特征**(错误码 SERVER / RATE_LIMIT / TIMEOUT / TRANSPORT 与 HTTP 状态码 502 / 429;留空表示不重试任何失败)。 **上下文自动压缩** · 开关 + **压缩范围**(下拉框:全部压缩 / 仅主代理 / 仅子代理,默认全部压缩)+ **触发阈值**(如 200K / 1M / 100000;插件默认为 200K)+ **摘要指令**(生成摘要时发给模型的指令)。会话超过阈值后,较早的一段历史被浓缩成摘要,并沿用平台自带的「上下文已压缩」提示。 **后台任务工具** · 开关。开启后模型可以用 job_background 起后台命令,再用 job_list / job_output / job_kill 管理;关闭后该工具消失。 **突破 PTC 120 秒限制** · 开关,**默认关闭**。打开后把 PTC 模式 run_code 程序的默认程序预算从 120 秒抬到平台计时器上限(2147483647 毫秒,约 24.8 天),主代理与子代理都生效;关闭或插件卸载时恢复平台默认的 120 秒。只动这一份预算:gitbash 前台命令的 600 秒上限、job_output` 单次等待的 600 秒上限都不变。预算抬这么高之后就没有自动兜底了 —— 死循环的程序几乎不会自己结束,只能你手动停;它也不是安全边界(改配置、别的插件、外部进程都能绕开)。 子代理通知聚合 · 开关,默认关闭。多个子代理并行结束时,中间通知先压住,全部结束后合并成一条统一送达,不再逐个唤醒模型。 子代理会话异常自动修复 · 没有开关,常驻开启。 平台即将写入不合规的重试事件时,插件在落盘前先修正,会话因此不会变得打不开;修正发生时回合尾部显示一行浅色提示,修正痕迹写进会话日志,重启后仍然显示。 修复损坏会话 · 扫描按钮。扫描全部会话日志并修复已知的损坏形态,让打不开的历史重新可用。
页头右侧还有 「检查更新」:点击后经插件自己的 host 端点去 npm 查最新版本(结果缓存 5 分钟)——有新版本时按钮直接显示版本号,点一下打开 npm 包页;离线或挂了代理时显示「检查失败,点击重试」,再点一次重跑。
⚠️ 最要紧的一条:「失败提示前缀」默认为空,装完不填,规则 H1 就不生效。 请打开设置页,把你的平台警告原文的固定开头粘进去(例:⚠ Could not execute tool)。设置页截图取自旧版本面板,与当前卡片文案不完全一致,以实际界面为准。
pnpm install
node scripts/link-deps.mjs # 把宿主包链进本项目的 node_modules
pnpm build # tsc(host)+ vite(client)
pnpm typecheck # 只做类型检查
pnpm test # vitest,368 例(18 个测试文件)