自动加载编码守则并拦截危险写命令,避免乱码与踩坑
27.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Pasumao/dsh-plugin-windows-guard.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 66 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
- 读取本地文件lib/index.js:72
if (!existsSync(SKILLS_DIR)) { - 读取本地文件lib/index.js:76
for (const file of readdirSync(SKILLS_DIR)) { - 读取本地文件lib/index.js:79
const fm = parseFrontmatter(readFileSync(join(SKILLS_DIR, file), 'utf8')) - 读取本地文件lib/index.js:226
if (!existsSync(p)) throw new Error(`文件不存在:${args.path}(已解析为 ${p})`) - 读取本地文件lib/index.js:280
if (!existsSync(p)) throw new Error(`文件不存在:${args.path}(已解析为 ${p})`) - 读取本地文件lib/encode.js:165
const st = statSync(path) - 读取本地文件lib/encode.js:169
const buf = readFileSync(path) - 读取本地文件lib/encode.js:182
const buf = readFileSync(path) - 写入本地文件lib/encode.js:214
copyFileSync(path, backupPath) - 写入本地文件lib/encode.js:216
writeFileSync(path, text, { encoding: 'utf8' })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 自动加载编码守则
- 拦截危险写命令
- 乱码检测与修复
README
由 DeepSeek 最新模型翻译生成dsh-plugin-windows-guard
npm version
License
AI Assisted
DeepSeek Harness (dsh) 的 Windows 环境防坑插件——*源自 255 个真实会话归档的高频踩坑,守则(skill)+ 主动防护(hooks/工具)两层能力:
- 守则层(0.1.0 起):两个自包含 skill 按场景自动加载——「一次写对」的预防性守则;
- 主动防护层(0.2.0 起,自 dsh-plugin-pwsh-guard 合并,该插件已删除): pwsh 结果乱码自动检测提示、危险写命令拦截、编码诊断/修复工具。
零运行时依赖、零构建。
展开完整文档(README 剩余 1 节)
dsh-plugin-windows-guard
npm version
License
AI Assisted
DeepSeek Harness (dsh) 的 Windows 环境防坑插件——*源自 255 个真实会话归档的高频踩坑,守则(skill)+ 主动防护(hooks/工具)两层能力:
- 守则层(0.1.0 起):两个自包含 skill 按场景自动加载——「一次写对」的预防性守则;
- 主动防护层(0.2.0 起,自 dsh-plugin-pwsh-guard 合并,该插件已删除): pwsh 结果乱码自动检测提示、危险写命令拦截、编码诊断/修复工具。
零运行时依赖、零构建。
功能
守则层:两个自动加载的技能
按触发场景拆成两个自包含技能( 按 description 匹配自动加载正文):
windows-enc —— 编码与 PowerShell 解析(命令/文件内容出错类)
| 章节 | 内容 | 来源问题(历史实录) |
| 1 环境事实卡 | pwsh 5.1/7 差异、-Command 单 argv 无 shell 转义层、OutputEncoding 已钉、退出码权威 | stderr 误判(git 红色进度、NativeCommandError) |
| 2 编码三铁律 | 读必带 -Encoding UTF8;写结构化文件用 WriteAllText(UTF8Encoding($false));查 BOM/转码命令模板 | GBK 误解码(鎻掍欢/鈥?)、BOM 写坏 package.json(启动事故二)、UTF-16 写坏 |
| 3 引号转义速查 | PS '' 转义(反斜杠无效)、双引号插值、node -e/python -c 引号地狱 → 写临时文件 | SyntaxError: unterminated string literal、实测引号嵌套失败 |
| 4 乱码三不原则 | 乱码特征表(鈥?/??OK??/\uFFFD)+ 不猜/不引用/先重读 | ??OK??、??? skill ???? 乱码当答案 |
windows-sys —— 系统环境(排查类)
| 章节 | 内容 | 来源问题 |
| 1 路径与文件系统 | MAX_PATH/长路径、空格路径、EACCES/EBUSY 文件占用、junction 与 link: realpath、路径格式 | EACCES: realpath '...sock'、npm-cache 深层路径 |
| 2 进程与端口 | netstat 查端口、Stop-Process/taskkill、先查后杀 | 3080/39090 端口占用、孤儿进程 |
| 3 跨平台杂项 | CRLF 陷阱、.cmd 脚本宿主/ExecutionPolicy、时区、大小写 | 小说文件 CRLF 检查、run.bat chcp 65001 |
主动防护层(0.2.0 起,均可配置开关,默认全开)
| 层 | 机制 | 作用 |
| L2 | tools/post-execute 监听 | pwsh 工具结果出现 GBK 误解码/FFFD 洪水/中文变问号时,自动在结果后附加 [windows-guard] 修复提示(不中断、不改写结果本体) |
| L3 | tools/pre-execute 监听 | 拦截「不带 -Encoding 的 Set-Content/Add-Content/Out-File 写 JSON/YAML/TOML/GD」与「> 重定向写结构化文件」命令,deny 并给出 [System.IO.File]::WriteAllText(...) 正确写法 |
| L4 | windows_encode_detect / windows_encode_fix 工具 | 文件编码诊断(BOM/UTF-8/GBK/UTF-16 + 置信度)与修复(→ UTF-8 无 BOM,自动备份 .windowsguard.bak);dryRun 只诊断不写入 |
历史:原 pwsh-guard 的 L1 系统提示词段不再注入——由上面的守则技能取代(按需加载、更省常驻 token)。
配置
cordis.patch.yml 全部可开关(默认全开):
- insert:
- id: dsh-plugin-windows-guard
name: dsh-plugin-windows-guard
config:
enabled: true # 总开关(false = 只保留守则技能,退化为 0.1.0 纯守则形态) postCheck: true # L2 pwsh 结果乱码检测+提示 preCheck: true # L3 危险写命令拦截 detectTools: true # L4 编码诊断/修复工具
安装
npm(推荐)
dsh plugin --profile web add dsh-plugin-windows-guard
或 GitHub
dsh plugin --profile web add github:Pasumao/dsh-plugin-windows-guard
装完重启 dsh web 即生效。包自带 cordis.patch.yml 挂载行,自动应用,无需手动改配置;配置开关见「配置」节。
源码安装(本地开发 / 调试):
git clone https://github.com/Pasumao/dsh-plugin-windows-guard.git
cd dsh-plugin-windows-guard # 目录放在任意位置(如你的插件收集目录)
npm install
以 link: 依赖挂载进 profile:在 profile 的 package.json dependencies 中加 "dsh-plugin-windows-guard": "link:/dsh-plugin-windows-guard" 并加入 dsh.profile.bundles(或 cordis.patch.yml 手动 insert)之后 pnpm install + 重启 dsh web
装完你会看到什么
- pwsh 工具输出出现乱码(鈥?/鎻掍欢/锟斤拷)时,结果末尾自动附加 [windows-guard] 修复提示;
- 不带 -Encoding 的 Set-Content/Add-Content/Out-File 写 JSON/YAML/TOML
等危险写命令被直接拦截(deny),并附 [System.IO.File]::WriteAllText(...)
正确写法;
- 工具列表多出 windows_encode_detect / windows_encode_fix(编码诊断与修复);
- 技能目录多出 windows-enc / windows-sys 两个防坑守则技能。
使用
安装后无需任何配置。模型遇到 Windows 命令/编码/乱码/路径/进程/端口任务时,
skill({ name: "windows-enc" | "windows-sys" }) 自动加载对应守则;也可手动让模型
加载查看全文。
用户:读一下 D:\dsh\config\comfy_prompt.json 看看配置模型:读取前先按守则用 Get-Content -Encoding UTF8……
用户:帮我修一下 config.json,JSON.parse 报错模型:先 windows_encode_detect 查 config.json → "utf-8-bom(可信度 high)" → windows_encode_fix config.json → 已转换为 UTF-8 无 BOM(备份 .windowsguard.bak) → 验证 JSON 解析通过
模型被告知(守则技能),且此类命令会被 L3 拦截并给出正确写法: Set-Content -Path data.json -Value $json ← deny(PS5.1 写 UTF-16LE/BOM)
[System.IO.File]::WriteAllText("data.json", $json, [System.Text.UTF8Encoding]::new($false)) ← 正确
为何拆成两个技能(设计说明)
- 常驻目录成本:两条 description(~300 token)几乎不涨;
- 触发精度:windows-enc 管「命令/文件内容出错」(编码/转义/乱码), windows-sys 管「系统环境排查」(路径/进程/端口/跨平台),边界清晰、互不牵连;
- 正文按需减半:Windows「内容出错」类任务不再加载「系统环境」整章;
- 预留给未来主题(WSL/winget/容器…)归入 windows-sys 扩展。
实现说明
- 守则注册走 ctx.skills.register(官方 skill 子系统),content 为 SKILL.md 正文;
- L2/L3 走 ctx.on('tools/post-execute' | 'tools/pre-execute');L4 走 ctx.tools.register(原始 definition 形状);不 import 任何 @deepseek-ai/ 运行时包(link: realpath 解析,外部依赖从插件目录解析不到);
- L2 只对工具名 pwsh 且成功结果生效;L3 仅拦截「确定会写坏」的窄模式,读操作与显式 -Encoding 的写操作放行;乱码词表基于历史会话实测(11/12 正/负例通过);
- 依赖 Node ≥22.5(TextDecoder('gbk') 需要 full-icu,官方构建默认满足);
- 技能正文/工具/守卫改动需重启 dsh(host 插件 apply 时读取 skills/ 目录);
- 各层注册均有 ctx 能力守卫:任何一层不可用时降级并警告,绝不让插件挂载失败。
相关插件
已发布插件互相引用(更多 DSH 插件生态):
- dsh-plugin-workbench — VS Code 风格工作区文件浏览器 + 可编辑预览
- dsh-notify — agent 停止/出错的 Windows 原生通知 + 托盘图标
- dsh-plugin-image-tools — 图片选择卡 / 回复内嵌图片 / 聊天图片放大
- dsh-plugin-dev-kb — dsh 官方文档完整 Markdown 镜像(插件开发知识库)
- dsh-plugin-choice-refresh — 选择卡「重新生成选项」/「更多选项」
- dsh-plugin-table-zoom — 聊天表格浮窗查看 + 一键复制 Markdown预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Pasumao/dsh-plugin-windows-guard
自动加载编码守则并拦截危险写命令,避免乱码与踩坑
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7