fire-disposal/dsh-mojibake-interceptor ↗★ 0
dsh-mojibake-interceptor
Mojibake interceptor for DeepSeek Harness: feature-based garbled-text detection that interrupts garbled writes and asks for review (an identical retry passes).
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:fire-disposal/dsh-mojibake-interceptor说明文档
阅读完整 README ↗dsh-mojibake-interceptor — DeepSeek Harness 乱码拦截器
在 AI 把乱码写进文件之前打断,要求复查;若 AI 复查后仍执意(原样重试同一次写入)则放行。 纯特征值/算法检测——不维护任何关键词表。
- insert:
- id: mojibake-interceptor
name: 'dsh-mojibake-interceptor'
config:
mode: warn
resultWatchTools: [pwsh, bash, bash_persistent, read]
工作原理
两个挂载点
| 挂载点 | 事件 | 行为 |
|---|---|---|
| 写入前拦截 | tools/pre-execute | write / edit / str_replace_editor 的待写入文本,以及 pwsh / bash / bash_persistent 的命令文本,在落盘/执行前被扫描;命中乱码特征或危险编码则返回 deny 并附复查说明 |
| 输出监视 | tools/post-execute | pwsh / bash / bash_persistent / read 的捕获结果被扫描;输出本身乱码时注入一条通知,警告模型「别把这段输出抄进文件」(Windows 上最常见的污染源) |
pwsh 命令执行前审计(Windows 批量乱码悲剧的主防线)
AI 用 pwsh 写文件/替换内容时,命令文本在执行前被双重检查:
- 内容层:命令内嵌文本直接跑全部乱码特征(
Set-Content -Value '䏿–‡'、heredoc 等执行前即命中)。 - 编码层(
pwshEncodingGuard: warn,默认):命中「写入原语 + 含非 ASCII 内容」时校验编码声明——- 危险编码(
-Encoding Default/ANSI/OEM/Unicode、[Text.Encoding]::Default、GetEncoding(936/950/…)、[Console]::OutputEncoding=、chcp非 65001)→ 严重拦截; - 未声明编码(PS 5.1
Set-Content默认 ANSI/GBK、Out-File/>默认 UTF-16LE)→ 中等拦截,提示显式-Encoding utf8; - 知情编码(
-Encoding utf8、[Text.Encoding]::UTF8、.NETWriteAllText两参重载默认 UTF-8)→ 放行。 - 纯 ASCII 命令永不触发编码审计;
if ($a > $b)的比较运算符不会被误判为重定向。
- 危险编码(
误报控制(正常操作不拦)
- 注释剥离:
# 中文注释/ `` 先剥离再审计,注释里的中文不会触发; - 文件名豁免:
-Path/-LiteralPath/-Destination等参数值、读取命令(Get-Content 中文.txt)后的中文文件名不算内容; - 知情写法全识别:
-Enc utf8参数缩写、、 全限定类型名均视为安全;