dsh-plugin-weaknet-adaptor:DeepSeek Harness 的弱网适配插件

前言

用 DSH 跑长任务时,网络抖动是个绕不开的问题:模型流跑到一半断掉,回复链条中断,重开会话要从头再来;如果重试不做约束,等待和重发还会持续消耗 token。DSH 的理念是「一切皆插件」,网络这一层的问题同样可以交给插件统一处理。与其在断流后手动补救,不如让插件在网络层把重试、缓存、重连接管起来——下面介绍的 dsh-plugin-weaknet-adaptor 做的就是这件事。

这是什么

dsh-plugin-weaknet-adaptor 是一个 DeepSeek Harness 弱网适配插件,作者 jiay98528-dev,MIT 许可证,要求 Node >= 18。它解决的核心问题是:弱网环境下模型回复链条断裂、重试烧 token。

它以 npm 包的形式分发,在 cordis.yml 中静态加载。相比会话内用 cordis_define 创建的动态插件(只存在于进程内存,进程崩溃或重启即丢失),静态加载的包重启后依然生效。截至 2026 年 9 月,package.json 中的版本号为 1.0.5,仓库 CHANGELOG 详细记录到 1.0.3。

核心功能

模型流透明重试

插件以 prepend 方式挂载在 llm/stream 瀑布层,透明拦截模型流。进入降级模式后,插件对响应做全缓冲,失败即按指数退避重试,默认最长等待 10 分钟。重试等待期间零模型调用,也就是零 token。

本地响应缓存

完整成功的响应会缓存到本地,key 是请求指纹,采用 LRU 淘汰,TTL 可配置。指纹由以下字段组成,只有逐字节一致的请求才命中,命中后零 token 本地重放:

provider + model + reasoningEffort + temperature + maxTokens
+ stop + system + tools + messages + purpose

心跳自动重连

断网后,本地心跳任务按指数退避自动探测重连,间隔上限默认 10 分钟;任意模型流成功也会立即被动恢复在线状态。composer 底部状态栏显示网络状态:绿为正常,黄为弱网,红为中断。

降级省 token

重连后有两个可选的省 token 手段:输出上限降级(reduceMaxTokens)和会话 tool-result 的确定性裁剪(pruneToolResults)。注意后者不可逆,开启前需要确认可以接受。

结构化设置页

24 个参数全部结构化(分组、类型、范围、默认值),集中在设置页「弱网适配」,可全部实时调整。每个参数的说明与预期效果均为中英双语,UI 跟随系统语言。参数持久化到 <workspaceRoot>/.dsh/weaknet-params.json

设置页底层通过 @Remote(dsh-typert-protocol)的 SRC markers 机制调用 weaknet/* 命名空间(getParamDefs / getParams / setParams / getStatus / resetStats),无需手写 typert 生成物。

设计取舍

重试挂在 llm/stream,而不是 agent/request-error

宿主的 llm-retry 默认已接管 agent/request-error,后注册的监听器会被短路;而 llm/stream 是每个模型请求必经的瀑布,可以确定性接管。因此重试放在 llm/streamagent/request-error 仅作降级观察。

明确不做的事

  • 不做工具集裁剪:裁剪工具集会改变模型的能力面,插件保持克制。
  • 不做流中断的「前缀续传」:LLM API 不支持续传,重试即重新生成。

安装与启用

先用 npm 安装:

npm install dsh-plugin-weaknet-adaptor

包依赖 @deepseek-ai/dsh-typert-protocol@deepseek-ai/*cordis 等对等依赖由 npm 自动安装。

再在你运行的 DSH 配置的 cordis.yml 中静态加载:

plugins:
  - name: dsh-plugin-weaknet-adaptor

Host 半区自动激活;浏览器半区(设置页与状态栏)经包内 dsh.client 声明由 client-modules 提供,无需额外接线。重启 dsh 后插件依然生效。

快速验证

经过上面的步骤,插件已经在运行。可以按下面三步确认工作状态:

1、打开 设置 → 弱网适配,能看到状态卡与分组参数,每项带双语说明与预期效果。
2、把「心跳探测地址」改为 http://127.0.0.1:1/x 并保存,composer 底部状态栏会依次变黄(弱网)、变红(连续 3 次探测失败、中断);改回默认地址后变绿,自动恢复在线。
3、切换界面语言(中/英),设置页文案即时跟随。

适用场景与注意

适合两类使用者:网络不稳定环境下跑长任务的 DSH 用户,以及在意 token 消耗、希望相同请求直接本地重放的使用者。心跳探测地址可自定义,内网或代理环境可以指向自己的轻量端点。

使用前有几点需要留意:

1、pruneToolResults 对会话 tool-result 的裁剪不可逆,确认后再开启。
2、缓存只在请求逐字节一致时命中,messages 或任何参数有差异都会重新调用模型。
3、插件以当前 dsh 进程的权限运行,安装第三方插件前建议先阅读源码与许可证;本项目的许可证为 MIT,源码与依赖清单在 GitHub 仓库可见。

结语

dsh-plugin-weaknet-adaptor 把弱网下的重试、缓存、重连和省 token 收进一个可实时调整的设置页,参数全部结构化,行为边界(重试挂载层、明确不做的事)写得清楚。网络不稳的环境里,它能让回复链条尽量不断。

  • GitHub 仓库:https://github.com/jiay98528-dev/dsh-plugin-weaknet-adaptor
  • 社区插件目录(独立站点,与 DeepSeek / 幻方无官方从属关系):https://www.skillhub.cn/plugins/jiay98528-dev/dsh-plugin-weaknet-adaptor
羽毛球分组比赛记分
小程序二维码

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

Xiaoye