前言¶
在 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