前言¶
在 Windows 上使用 DeepSeek Harness(DSH)进行文件写入时,经常遇到 ReplaceFileW 调用失败,返回 Win32 错误 1175。此时整个工具调用会直接中断,即使重试一次就能成功。该插件的目标是在 DSH 服务边界拦截这类失败,通过退避重试将成功率提升至接近 100%。
这是什么¶
dsh-fs-retry 是一个运行在 DSH profile 中的插件,用于对 ctx.fs.writeText 调用进行包装。当底层文件系统在 Windows 上通过 ReplaceFileW 执行替换写入时,如果目标文件被短暂占用而返回错误 1175,插件会自动重试最多 8 次。插件由 ShioUmiusi(维护者:塩漬けウミウシ)维护,许可证为 MIT。
核心功能¶
- 仅包装
writeText操作,对read、edit、diff不做改动。 - 仅拦截错误消息匹配
Win32 1175或ReplaceFileW的异常。 - 重试策略为 8 次尝试,每次间隔
12 ms × attempt,最坏情况约 340 ms 后抛出原始错误。 - 参数与返回值保持原样,最终失败时抛出原始异常类型。
安装与启用¶
插件不包含在 app.asar 中,需要手动部署到 DSH profile。安装步骤如下:
- 将插件包放置在稳定目录,例如
D:\tools\dsh-fs-retry。 - 在 DSH profile 中创建一个目录级 junction 或 symlink,使 profile 能解析该路径:
mklink /J "%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-fs-retry" "D:\tools\dsh-fs-retry"
- 在 profile 的
cordis.patch.yml中注册插件行:
- id: fs-retry
name: dsh-fs-retry
- 重启 DSH 使插件生效。
典型用法¶
启动 DSH 后,日志应显示:
[fs-retry] 已装载(原型 ok / 实例 ok,重试 8 次)
然后在受影响的卷上反复执行文件写入操作,确认不再出现 Win32 1175 错误。每次重试会在日志中输出 第 N 次遇到 1175,退避后重试。
要验证插件行为,可以在插件目录下运行自测脚本:
node selftest.mjs
该脚本会覆盖三种情况:重试后成功、非 1175 不重试、8 次尝试后放弃。
适用场景与注意¶
- 适合在 Windows 环境下使用
dsh-fs-local进行文件写入的 DSH 插件开发者。 - 插件以当前 DSH 进程的权限运行,请确保安装来源可信并阅读源码。
- 插件仅解决 1175/ReplaceFileW 相关错误,其他文件系统错误不会触发重试。
短结尾¶
dsh-fs-retry 通过在服务边界对 writeText 进行重试,显著降低了 Windows 上因短暂文件占用导致的写入失败。安装后即可在日志中看到重试行为,适合需要在 Windows 上稳定写入文件的 DSH 插件。项目主页与目录页见下方链接。