前言¶
在 Windows 上,DeepSeek Harness(DSH)为受限工作区会把目录完整性降到 Low,并写入显式的 S-1-4-* 沙箱授权 ACE,好让受限令牌能写入。这些标记写在磁盘 ACL 里,不随会话结束而消失;工作区从 DSH 移除或 DSH 升级之后,目录上仍可能留着 Low 标签和沙箱 ACE。安装器、IDE、备份工具再访问这些路径时,可能触发权限检查失败或表现异常。手动用 icacls 逐目录排查既费事,又容易误改正常授权。下面介绍社区插件 dsh-file-integrity-check,它按 DSH 实时工作区列表做只读扫描、确认后修复、复扫校验,并为每个工作区保留一条可替换的 ACL 回滚记录。
这是什么¶
dsh-file-integrity-check 由维护者 Dofang-C 发布,分类为 admin-security,当前 package 版本为 1.2.0(MIT 许可证)。它是 仅 Windows 的 DSH 插件:侧边栏提供白色工作区映射页,底层还有可脱离 DSH 单独运行的 PowerShell 引擎。插件不扫全盘,只读 DSH 工作区注册表里的路径;扫描阶段不改 ACL,修复前需确认,默认行为等价于只读 dry run。
核心功能¶
插件只处理与 DSH 沙箱残留相关的三类发现:
- Low 完整性标签(SACL Mandatory Label,
S-1-16-4096) - 非继承的显式
S-1-4-*沙箱授权 ACE Everyone:(DENY)(DC),且仅当同一目录已命中 Low 或 S-1-4 时才纳入修复
正常的 X2\<用户名>:(F) 等工作区授权不会被修改;单独出现的 Everyone 拒绝项不算命中,也不会被碰。
已核实的能力包括:
- 扫描:单个工作区,或 扫描全部工作区 一次请求覆盖当前列表。
- 修复:确认后保存当前 ACL,再改标签与 DACL;未确认时只读。
- 校验:修复后复扫,报告剩余 Low / S-1-4 数量。
- 回滚:每个工作区最多一条回滚记录;下一次成功修复会原子替换旧记录。无发现时不产生备份与记录。
- 工作区映射:来自 DSH 实时列表;在 DSH 中删除工作区后,插件页面对应卡片消失。
- 无第三方依赖:引擎为 Windows PowerShell 5.1 / PowerShell 7,配合内联 C# P/Invoke 与
icacls。
重目录(如 node_modules、.git、dist、.venv、AppData\Local\Temp)会跳过;重解析点与 junction 不跟随;长路径使用 \\?\ 前缀。
安装与启用¶
catalog 条目合并后,可在 dsh-market 中搜索 文件完整性检查 / File Integrity Check 并安装。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
从源码安装时,通过 Plugin Manager 将插件目录作为本地 bundle 安装,例如使用 DSH agent 工具:
plugin_manager action=install_bundle target="<path-to>\dsh-file-integrity-check"
安装后刷新 DSH Web GUI。侧边栏会出现盾牌图标 文件完整性检查。若 Host 半有变更,需完全退出并重新打开 DSH,而不是仅刷新页面。
环境要求:
- Windows 10 或 Windows 11
- DSH 0.2.1 或更新(桌面或 Web)
- Windows PowerShell 5.1 或 PowerShell 7
典型用法¶
侧边栏¶
- 打开侧边栏 文件完整性检查。
- 每个 DSH 工作区对应一张卡片。
- 扫描 (Scan):只读。
- 修复 (Fix):确认后保存 ACL 并修改。
- 校验 (Verify):复扫并报告计数。
- 扫描全部工作区 (Scan all):一次扫描当前全部工作区。
修复成功后卡片显示 可回滚 (Rollback available);详情里可 回滚到上次状态 或 删除记录(删除记录需确认,会永久移除记录目录)。
回滚记录路径(仅 ACL 元数据,不含文件内容):
%LOCALAPPDATA%\dsh-lowlabel-fix\rollback\<first-16-hex-of-path-sha256>\
独立 PowerShell CLI¶
不依赖 DSH 界面时,可调用仓库内 scripts/DshWorkspaceAcl.ps1:
# 扫描单个工作区目录树
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action scan -Path "D:\project" -Deep
# 修复(无 -Apply 时为 dry run)
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action fix -Path "D:\project" -Apply
# 校验
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action verify -Path "D:\project"
# 列出回滚记录
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action records
# 回滚
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action rollback -Path "D:\project"
# 永久删除一条记录
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action delete-record -Path "D:\project"
加 -Json 时,机器可读结果写到 stdout,进度与阶段信息写到 stderr。
适用场景与注意¶
适合在 Windows 上长期使用 DSH、且工作区目录曾以受限模式运行、又希望在不误伤正常授权的前提下清理 Low 标签与 S-1-4-* 残留的用户。修复逻辑有明确边界:只移除非继承的 S-1-4-* allow ACE;只把 Low 标签恢复为可继承的 Medium(icacls /setintegritylevel "(OI)(CI)M");改前会保存 SDDL 与 icacls /save 的 .acl 到回滚目录。
对当前用户拥有的目录,通常不需要管理员权限;受保护的系统位置可能仍不可读或不可写,插件会报告并跳过,不会强行修改。不可读目录同样会报告并跳过,批次内其余路径继续处理。
插件以 当前 DSH 进程权限 运行;安装前应自行查看源码与 MIT 许可证,确认行为符合预期。DSH 生态理念是「一切皆插件」;本插件 GitHub 仓库当前约 2 stars,可作为 admin-security 类补充工具使用。
结尾¶
经过上面的步骤,你可以在 DSH 侧边栏或 PowerShell 里对工作区做扫描、确认修复、校验与回滚,避免沙箱 ACL 长期留在磁盘上干扰其他工具。目录页与源码: