dsh-tool-pwsh-safe
Elbow-proof PowerShell for DeepSeek Harness: pwsh_safe tool runs scripts via base64 -EncodedCommand, immune to quoting/escaping pain, sandbox-seam based
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 20, 2026
- Updated
- Aug 25, 2026
Introduction
🥊 dsh-tool-pwsh-safe
你是否见过 dsh 疯狂肘击 PowerShell?
单引号、双引号、反斜杠、$ 展开、反引号、换行、中文……
每个 AI agent 都曾在 PowerShell 转义地狱里被肘击到怀疑人生。
这是什么
dsh-tool-pwsh-safe 是一个 DSH 工具插件:模型要跑 PowerShell 时,把整个脚本原样交给我,剩下的转义问题我来扛。
你的脚本(多行随便写)
↓
base64 编码(纯 ASCII,引号/$/反斜杠全部变安全字符)
↓
走 DSH 沙箱化 pwsh 执行器(ctx.shell,和内置 pwsh 同一条通道)
↓
结果带沙箱标记 / 完整输出 spill 落盘路径 / 退出码
对比:肘击 vs 不肘击
| 场景 | 内置 pwsh 的日常 | pwsh_safe |
|---|---|---|
想输出 他说:"你好" | 转义套转义,祈祷能跑 | 原样写,原样跑 |
| 多行脚本 | 每行拼接、层层转义 | 整段直接贴 |
$env:PATH -replace ';',';' | 连环事故 | 没事发生 |
| 中文输出 | 乱码/编码错误 | UTF-8 编码,稳 |
特性
- 走 DSH 沙箱通道:和内置
pwsh工具同一执行器,沙箱策略 / ConstrainedLanguage / 权限升级全部生效 - 长输出自动 spill:超限不丢,完整输出落盘并报告路径
- 超时保护:默认 120s,可自定义
- 脚本长度守卫:脚本转 base64 后超过 24000 字符会直接报错提示拆分,避免撞上 Windows 命令行 32KB 上限
- 结果规范化:执行器返回形状异常时也会被归一化,不会因缺字段崩渲染
- 中文友好:UTF-8 全链路
- 零依赖:无 @deepseek-ai 依赖,纯 Node 内置
安装
cd $DSH_HOME/profiles/<你的profile>
pnpm add dsh-tool-pwsh-safe@github:sryimnoob123/dsh-tool-pwsh-safe
# 或本地开发:pnpm add link:/绝对路径/dsh-tool-pwsh-safe
然后把它加进 profile 的 package.json bundles 列表,重启 DSH。
使用
{
"script": "Write-Host \"这是中文 + 引号 + $env:USERNAME\"; Get-Location",
"description": "演示转义免疫"
}
配置
| 参数 | 默认 | 说明 |
|---|---|---|
script | (必填) | 完整 PowerShell 脚本,多行随便 |
description | (必填) | 一句话说明(UI 显示用) |
workdir | 会话工作目录 | 脚本工作目录 |
timeoutMs | 120000 | 超时自动 kill |
License
MIT