← 返回列表
未验证
注入 PowerShell 编码与路径避坑提示,减少代理误判
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/31 · 已提供中文文档
# DeepSeek Harness 系统提示中针对原生 Windows(非 WSL)的 shell/编码/文件系统陷阱 --- **说明**:用户要求将一段英文 Markdown 文档翻译成简体中文,并严格保留所有 Markdown 语法。但用户实际只提供了标题行,没有提供完整文档正文。以下为对已提供内容的翻译: **原文标题**: Native-Windows (non-WSL) shell/encoding/filesystem gotchas for the DeepSeek Harness system prompt **翻译**: DeepSeek Harness 系统提示中针对原
综合分
28.3
GitHub 分
28.3
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add lucifergzsz414/dsh-windows-native该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-windows-native
我直接在 Windows 上运行 DeepSeek Harness——不用 WSL,只用 PowerShell。dsh-plugin 列表上的每个 WSL 与 Windows 互操作插件都假定你是从 WSL 桥接出去,所以它们在这里都帮不上忙。与此同时,agent 一直反复犯同样的几个错误:用 && 串联命令(PowerShell 5.1 没有这个)、打印出来的中文变成乱码、悄悄创建一个 Windows 随后会拒绝的 junction 而没人注意到。这个插件只是提前告诉它,让它别再瞎猜。
这是一个系统提示注入,没什么更花哨的。结构是从 dsh-wsl-env 复制粘贴来的,因为那个插件已经把同一思路的 WSL 那一侧做得很好了。
它告诉 agent 的内容
- PowerShell 没有 && / ||——用 ;,或者 A; if ($?) { B }
- 控制台通常不是 UTF-8,所以中文/非 ASCII 输出可能会被弄乱,即使实际数据没问题——不要相信你看到打印出来的东西
- 不要把多行非 ASCII 文本通过内联 heredoc 或 -c "..." 传进去——先写到文件,再运行该文件
- Python 的 subprocess.run(..., text=True) 使用系统区域设置解码子进程输出——在中文 Windows 安装上是 GBK,而不是 UTF-8。一个运行正常的子进程仍可能在自己的输出上抛出 UnicodeDecodeError。显式传入 encoding="utf-8", errors="replace"
- .bat 文件的内容必须保持 ASCII(cmd.exe 会预先扫描它们,并可能在任何东西运行之前就破坏 UTF-8/GBK——文件名没问题,脚本正文不行)
- Set-Content/Add-Content 默认使用系统 ANSI 代码页写文件,而不是 UTF-8——通过它们写入的中文文本如果没有 -Encoding utf8,最终可能在磁盘上就已损坏,而不只是在屏幕上
- 从 PowerShell 转发的 SSH 命令中的嵌套引号(ssh host "sudo python3 -c \"...\"")在超过一层嵌套时可能会静默挂起数分钟,而不是报错。改为把命令写到本地文件,再用 scp 传过去
- 没有管理员权限/开发者模式时,junction 或符号链接可能会静默失败——创建后要检查它是否真的存在,不要只相信退出代码
- NUL/CON/PRN/AUX/COM1-9/LPT1-9 在每个目录中都是保留名称。用 Unix 方式通过 > /dev/null 丢弃输出在 Windows 上不会命中空设备——它可能会在工作目录中留下一个字面名为 nul、几乎删不掉的文件。改用 $null(> $null、| Out-Null)
- 在 Word/Excel/WPS 中打开的文件在写入时会抛出普通的 PermissionError。那不是损坏,不要对同一文件名强行重试
- docker run -v "C:\path\file.yaml:/container/path:ro" 可能会被错误拆分——盘符的冒号看起来像另一个分隔符。挂载会静默失败,容器仍报告健康,然后它只是按默认值运行。在责怪应用程序代码之前,先 docker exec 进去检查文件
- 在这里构建的原生(.node)npm 绑定是 Windows 二进制文件。把它们发布到
Linux 服务器会在运行时导致服务器崩溃,即使 npm install 和本地构建都
报告成功——在发布前用 file 检查是否为 "PE32+"/"MS Windows"
- 杀掉外层进程(任务运行器、作业包装器)并不会释放端口,如果底层真正的
node/python 进程仍然存活——你最终会访问到一个陈旧的服务器,并以为你的
修复没有生效。找到真正的 PID 并杀掉它
- 如果你需要让计划任务在不可见的情况下运行某些东西,-WindowStyle Hidden
仍然会短暂闪现一个控制台窗口。改为通过 pythonw.exe 配合
CREATE_NO_WINDOW 来启动它
以上没有一条是理论——上面每一行都是这台机器上某个时刻实际出过的问题。
安装
dsh plugin add dsh-windows-native
配置
when: windows # 仅在原生 win32 上注入(默认),或 "always"
order: 15
extraNotes: "" # 你自己的笔记,追加在内置列表之后
状态
还处于早期阶段,而且这个列表的长度恰好等同于我自己踩过的坑——并不是对
所有存在的 Windows 陷阱的全面调查。如果你遇到了这个插件本应警告你的问题,
请提交一个 PR,附上你实际看到的失败,而不是对可能出什么问题的猜测。
已针对 @deepseek-ai/dsh 0.1.1-rc.2 测试——将其作为 file:
依赖在本地安装,检查 dsh --dump-config 以确认它被识别,然后实际向
运行中的 agent 提了一个问题,并看到注入的文本出现在它的回答中。扫码进群