dsh-win-native:Windows 上的 DeepSeek Harness 正确性层

前言

在 Windows 上跑 DeepSeek Harness(DSH)时,模型和 agent 经常要靠临时 PowerShell 或正则处理本地问题:猜一段字节是什么编码、判断路径为什么创建失败、从 netstat 输出里抠端口、统计目录占用、找重复文件。这类脚本往往猜错也不说明不确定、输出被截断却像完整结果、编码转换静默丢字。DSH 社区把能力做成可安装的插件;dsh-win-native 由维护者 ax2 发布,在 SkillHub 上归类为「模型推理」,实质是把上述判断做成六个有回执、有边界、只读优先的工具,供 harness 里的 agent 调用。

这是什么

dsh-win-native 是面向 Windows 的 DSH 插件(npm 包名 dsh-win-native,当前版本 0.1.5,MIT 许可证)。README 的定位是:Windows 正确性层——把 agent 平时用 PowerShell 文本解析凑合的那些判断,做成有回执、有边界、说实话的工具。插件包含 6 个工具,无安装期脚本,运行时无网络依赖(README 标注 network: none)。每个工具遵守 DSH 插件契约:返回 { result, meta };结构化输入超预算时拒绝而非截断;领域失败作为成功结果返回(例如路径不存在是数据,不是崩溃)。

与「让模型自己写 pwsh」相比,README 强调这些逻辑由 57 个测试覆盖的固定实现承担,避免一行脚本漏掉保留设备名、编码歧义、junction 跟随等问题。

核心功能:六个工具

编码:encoding_detect 与 encoding_convert

encoding_detect 只分析调用方提供的 base64 字节,不读磁盘。流程为 BOM → 严格 UTF-8 → 打分候选;支持 GBK、GB18030、Big5、Shift_JIS 等场景的评分,并给出 high / medium / low 置信度及得分接近的备选列表。短样本在信息论上可能无法区分(例如 GB18030 与 Big5 在合法双字节对上存在交集),工具会报 low 并在 meta.notes 中说明,而不是假装确定。

encoding_convert 同样只处理 base64 字节。目标编码包括 utf-8、utf-16le、utf-16be、gbk、gb18030、big5、shift_jis、latin1、ascii;from: "auto" 时先检测。有损转换会列出 lossy_characters、lossy_list,并在 meta.notes 中明确标注,不会静默把字符变成 ?。

路径:path_inspect

纯字符串分析,不访问文件系统,因此路径不存在也能检查。覆盖绝对/相对、\\?\ 扩展前缀、UNC 与盘符形态、保留 DOS 设备名(含带扩展名的 CON.txt)、非法与控制字符、尾空格或点、8.3 安全、分段长度与 MAX_PATH(260)等;每条问题带 code、severity、位置。README 示例:路径 C:\temp\CON.txt 会返回 reserved_name 且 safe_for_max_path: false。

网络:netstat_parse

只解析调用方粘贴的 netstat 文本,不碰文件系统、不写磁盘。用于把端口占用类输出从「正则凑合」改为结构化解析(具体字段以插件实现与测试为准)。

只读磁盘:dir_usage 与 file_duplicates

这两个工具会读文件系统,但插件承诺永不删除、移动、重命名或写入任何文件。

工具 读盘 写盘
dir_usage lstat + opendir 遍历指定绝对路径 否
file_duplicates 流式 SHA-256 读内容 否

二者均拒绝相对路径(含义依赖宿主进程工作目录,插件选择拒绝而非猜测)。遍历使用 lstat,符号链接、junction 等 reparse point 跳过并上报(skipped_links),不跟随。输入有预算,超预算拒绝。file_duplicates 只报告重复组与可回收字节,回收由人或上层策略执行。

其余四个工具(两个编码、路径、netstat)不碰文件系统。

安装与启用

在 DSH 环境中,README 给出的安装方式为:

dsh plugin --profile web add dsh-win-native

装完后需要重启应用(bundle 列表在启动时读取)。若希望一次安装 ax2 的四个相关插件(含 dsh-deterministic-tools、dsh-jvm-doctor、dsh-py-doctor),可使用合装包 dsh-toolbox-bundle;README 明确:不要与单独安装混用。家族总览入口见 zicode.com/software。

运行要求(来自 package.json):Node.js >=20.10;peer 依赖 @deepseek-ai/cordis >=4.0.0、@deepseek-ai/dsh-tools >=0.2.0-rc.1。

典型用法

1. 检查路径是否合法

向 agent 提问类似「C:\temp\CON.txt 这个路径能用吗」,模型可调用 path_inspect。README 实测输出片段如下:

{
  "issues": [
    {
      "code": "reserved_name",
      "severity": "error",
      "position": 8,
      "detail": "segment \"CON.txt\" is a reserved DOS device name, even with an extension or a path prefix"
    }
  ],
  "safe_for_max_path": false,
  "canonical_length": 15
}

2. 检测 GBK 类字节流编码

输入为 base64 编码的字节(例如含「配置文件路径:C:\Users\ax2,服务未启动。」的 GBK 文本),调用 encoding_detect:

{ "base64": "..." }

返回最佳候选(如 gb18030)、置信度、BOM 信息,以及 alternatives 中各编码的 score、sample、round_trip 等,便于在歧义时人工或上层策略抉择。

3. 有损转换必须可见

将 UTF-8 的「中文测试」转到 latin1 时,调用 encoding_convert:

{
  "base64": "5Lit5paH5rWL6K+V",
  "from": "utf-8",
  "to": "latin1",
  "bom": "strip"
}

结果中会包含 lossy_characters: 4、lossy_list 逐字列出无法表示的码点,以及 meta.notes 中的 LOSSY 说明。

适用场景与注意

适合谁: 在 Windows 上通过 DSH 做运维、排障、代码仓库分析的开发者;需要稳定处理中文/日文繁体等多字节编码、Windows 路径规则、netstat 输出,或在有边界的前提下做目录用量与重复文件分析的场景。

生态说明: DSH 采用「一切皆插件」的扩展方式;SkillHub(插件目录页)是社区目录站点,与 DeepSeek / 幻方无官方从属关系,不宜当作官方应用商店理解。

安全与权限: 插件以当前 DSH 进程的用户权限运行;dir_usage 与 file_duplicates 会读取你指定的绝对路径下的内容。安装前应查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。插件设计为 offline、local-first、无网络,但读盘范围仍取决于 agent 传入的路径参数。

与相邻插件: 同一维护者还提供 dsh-deterministic-tools、dsh-jvm-doctor、dsh-py-doctor 及合装 dsh-toolbox-bundle,可按需组合,但勿与 bundle 重复混装。

结尾

dsh-win-native 把 Windows 上高频、易错的本地判断收成六个结构化工具:编码检测与可审计的转换、路径合法性、netstat 解析,以及有预算的只读磁盘统计与重复文件报告。若你在 harness 里受够了「看起来像 GBK」和「路径报错再改斜杠」,可以从目录页了解简介与分类,并按 README 安装后在重启 DSH 后让 agent 调用上述工具。

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

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

Xiaoye