🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

中文编码桥 jxb01/dsh-shell-bridge

DeepSeek Harness
jxb0125 天前有提交已提供中文文档扫描:无法判定

修复 Windows 中文乱码与转义,稳定跑脚本

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/7 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jxb01/dsh-shell-bridge
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · dev
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 包内无可扫 JS
  • · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/10/31(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • WindowsCJK转码
  • shell转义桥接

为 DeepSeek Harness 的 pwsh 工具提供 Windows CJK(cp936)转码与 shell 转义桥接

README

由 DeepSeek 最新模型翻译生成
dsh-shell-bridge 给 DeepSeek Harness(DSH)的 pwsh 工具用的 Windows 中文编码 / 转义桥。 在真实的中文 Windows(控制台代码页 936)上,DSH 的 pwsh 工具会出现下面这些问题;这个桥把它们一次修掉,并把「写脚本 -> 跑脚本」变成一条不会踩转义坑的固定工作流。 实测的问题 | # | 现象 | 复现 | 根因 | | 1 | 原生工具输出乱码 | ipconfig、python -c "print('中文')" | 子进程没有控制台,[Console]::OutputEncoding=UTF8 改不动代码页;工具按 cp936 输出,被按 UTF-8 解码 | | 2 | 中文管道进原生工具乱码 | '中文' \| python -c "..." | pwsh 用 UTF-8 写管道,原生工具按 cp936 读 | | 3 | param() / using 直接报错 | param([string]$x='hi'); ... | DSH 会在命令前拼编码语句,二者不再是第一句;解析期错误还早于编码设置,所以错误也是乱码 | | 4 | 长脚本 spawn ENAMETOOLONG | 约 36 KB 的命令 | 整段脚本作为一个 argv,撞 Windows 32K 命令行上限 |
展开完整文档(README 剩余 1 节)
dsh-shell-bridge

给 DeepSeek Harness(DSH)的 pwsh 工具用的 Windows 中文编码 / 转义桥。

在真实的中文 Windows(控制台代码页 936)上,DSH 的 pwsh 工具会出现下面这些问题;这个桥把它们一次修掉,并把「写脚本 -> 跑脚本」变成一条不会踩转义坑的固定工作流。

实测的问题

| # | 现象 | 复现 | 根因 |
| 1 | 原生工具输出乱码 | ipconfig、python -c "print('中文')" | 子进程没有控制台,[Console]::OutputEncoding=UTF8 改不动代码页;工具按 cp936 输出,被按 UTF-8 解码 |
| 2 | 中文管道进原生工具乱码 | '中文' \| python -c "..." | pwsh 用 UTF-8 写管道,原生工具按 cp936 读 |
| 3 | param() / using 直接报错 | param([string]$x='hi'); ... | DSH 会在命令前拼编码语句,二者不再是第一句;解析期错误还早于编码设置,所以错误也是乱码 |
| 4 | 长脚本 spawn ENAMETOOLONG | 约 36 KB 的命令 | 整段脚本作为一个 argv,撞 Windows 32K 命令行上限 |
| 5 | 转义层级过多 | 路径 \、正则 \d、引号 | 模型 JSON -> PowerShell -> cmd 三层转义;DSH 不做 JSON 修复,出格即 tool input is invalid JSON |
| 6 | 标点语义坑 | @('a',)、[1]、"“”" | 尾逗号是 PS 语法错误;[] 是通配符(要用 -LiteralPath);中文弯引号被 PowerShell 当引号分隔符 |
| 7 | 退出码丢失 | 子进程退出 3,工具报 1 | pwsh -Command "& script" 结束时按 $? 给码 |

完整的复现命令与观察结果见 docs/diagnosis.md。

安装

git clone https://github.com/<you>/dsh-shell-bridge.git
cd dsh-shell-bridge
pwsh -NoProfile -File ./install.ps1

默认装到 $env:DSH_HOME(没有就 ~/.dsh):

- tools/dsh-shell.ps1 —— 桥本身
- tools/revert-dsh-shell.ps1 —— 卸载脚本
- tasks/main.ps1 —— 示例任务(已存在则不覆盖)
- AGENTS.md —— 插入一段带标记的 DSH-SHELL-BRIDGE 规则,之后每个会话都会自动走桥

选项:

./install.ps1 -DshHome D:/dsh-home # 指定 DSH home ./install.ps1 -SkipInstructions # 不动 AGENTS.md ./install.ps1 -Force # 覆盖已有 bridge/tasks/main.ps1

卸载:

pwsh -NoProfile -File ./revert.ps1
或 pwsh -NoProfile -File (Join-Path $env:DSH_HOME 'tools/revert-dsh-shell.ps1')

用法

两步:

1. 用 DSH 的 write 工具把脚本原样写到 $DSH_HOME/tasks/main.ps1(cmd 任务写 main.cmd)。
文件内容是字面写入的,反斜杠、引号、中文标点不需要再套一层转义。
2. 用 pwsh 工具执行,结尾必须带 ; exit $LASTEXITCODE,退出码才会原样传回:

& 'C:\Users\<you>\.dsh\tools\dsh-shell.ps1'; exit $LASTEXITCODE

其它形式(同样以 ; exit $LASTEXITCODE 结尾):

| 场景 | 命令 |
| 默认任务 tasks/main.ps1 | & '<bridge>'; exit $LASTEXITCODE |
| 指定任务 | & '<bridge>' -Name build; exit $LASTEXITCODE |
| cmd 批处理 | & '<bridge>' -Shell cmd -Name build; exit $LASTEXITCODE |
| 指定目录 / 超时 | & '<bridge>' -Name build -WorkDir 'D:/repo' -TimeoutSec 600; exit $LASTEXITCODE |
| 小命令内联 | & '<bridge>' -Command 'Get-Date'; exit $LASTEXITCODE |

写脚本时的标点规则

- 路径优先用正斜杠 D:/work/_lab,完全绕开 JSON 反斜杠转义。
- 含 [ ] & # % ! ^ , ; = + @ ~ 或空格的路径必须配 -LiteralPath。
- 数组/哈希最后一项不要尾逗号:@('a',) 会语法报错。
- 中文弯引号 “ ” ‘ ’ 会被 PowerShell 当引号分隔符:“ ” 放进单引号串,‘ ’ 放进双引号串,或用 [char]0x201C 构造。
- cmd 内建命令用 -Shell cmd,不要在 PowerShell 里套 cmd /c。

原理

桥做三件事:

1. 脚本落盘再执行:把 payload 交给子 shell 以脚本文件方式运行,消掉外层引号/转义、param()/using 与 32K 长度限制。
2. 隐藏控制台 + 代码页 65001:用 CreateNoWindow 起子 shell,让 chcp 真正生效,再设 [Console]::OutputEncoding、$OutputEncoding,并注入 PYTHONUTF8/PYTHONIOENCODING。
这样 PowerShell、cmd.exe 和所有原生子进程对「UTF-8」达成一致,输入输出都能往返。
3. 原始字节透传:子进程 stdout/stderr 用 CopyToAsync 直接泵到桥的流上,不做二次编码,保留流式输出,后台任务照常;退出码原样返回。

目录结构

dsh-shell.ps1 桥 install.ps1 安装到 $DSH_HOME revert.ps1 卸载 samples/main.ps1 示例任务 docs/instructions-block.md 写进 AGENTS.md 的规则块(含 @@BRIDGE@@ / @@TASKS@@ 占位符) docs/diagnosis.md 问题复现与根因

已验证

在 Windows 11 / PowerShell 7.6 / 代码页 936 上实测:

- 中文:你好, 世界、python中文输出、node中文、ipconfig 的「以太网适配器」
- param()、using namespace、40000 字符脚本
- cmd 模式:中文 + dir /b + 特殊字符路径
- 退出码:0 / 3 / 9 / 124(超时)
- write / read 对反斜杠、引号、中文标点逐字节一致

限制

- 面向 Windows + PowerShell 7(pwsh);PowerShell 5.1 未验证(桥会取当前进程的可执行文件,5.1 下部分语法可用性未测)。
- 依赖能被创建隐藏控制台;若宿主禁止,会退化成普通子进程,编码问题可能回来。
- 需要每个会话都带规则时,规则块写在 $DSH_HOME/AGENTS.md(DSH 的用户级指令文件)。

License

MIT
预览分享卡片长什么样 ↓jxb01/dsh-shell-bridge
分享 · DeepSeek Harness Hub
jxb01/dsh-shell-bridge

修复 Windows 中文乱码与转义,稳定跑脚本

回到顶部