DeepSeek Harness 插件

dsh-silent-pwsh

Self-healing DeepSeek-Harness plugin: keeps confined pwsh/bash console windows invisible (SW_HIDE) on Windows — no black console flash on every sandboxed command.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
chengyimingvb/dsh-silent-pwsh
最近更新
2026年8月15日
分类
工具与能力
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/chengyimingvb/dsh-silent-pwsh
插件名:dsh-silent-pwsh
作者:chengyimingvb

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-silent-pwsh

A DeepSeek-Harness plugin for Windows that makes sandboxed (confined) pwsh / bash calls spawn their console window hidden (SW_HIDE) — no black console window flashes on every command.

!dsh

Problem

Every sandboxed pwsh call in DeepSeek-Harness runs through the windows-acl runner (dsh-sandbox-windows-acl/lib/runner.js), which spawns the confined child with a fresh console window unless STARTF_USESHOWWINDOW | SW_HIDE is set in the child's STARTUPINFOW. The shipped package omits it, so every confined command flashes a black console window on the desktop. (CREATE_NO_WINDOW is not an option: under the restricted token it makes the child die with STATUS_DLL_INIT_FAILED (0xC0000142) — verified by the DSH maintainers. SW_HIDE keeps the console alive and simply never shows it.)

Two related flashes are also fixed: the process-tree taskkill termination and the one-time sandbox capability probe, whose spawns lacked windowsHide.

How it works

DSH's plugin model is loader-config patches plus Cordis plugins; no config seam can change those native spawn flags. So this plugin is a self-healing patch plugin: on every host start (before any confined command runs) it idempotently checks and re-applies a three-file patch:

File (under <host>\node_modules)Patch
@deepseek-ai/dsh-sandbox-windows-acl/lib/types-CNjZgO4h.jsboth encodeStartupInfo calls: dwFlags: 256257 (+STARTF_USESHOWWINDOW), add wShowWindow: 0 (SW_HIDE)
@deepseek-ai/dsh-subprocess-local/lib/index.jstaskkill spawnSync gets windowsHide: true
@deepseek-ai/dsh-sandbox-local/lib/index.jswindows-acl capability probe spawnSync gets windowsHide: true

The patch only rewrites files that are in the expected pre-patch shape; if an upgrade changes them, it warns and skips instead of corrupting them. Reinstall or upgrade the app and the patch is re-applied automatically on the next boot.

Install

Requirements: DeepSeek-Harness desktop app, node and pnpm on PATH.

From GitHub (recommended)

dsh plugin --profile web add github:chengyimingvb/dsh-silent-pwsh
# or with a full URL
dsh plugin --profile web add https://github.com/chengyimingvb/dsh-silent-pwsh

From a local folder / zip

# extract the zip, cd into dsh-silent-pwsh, then:
.\install.ps1                      # installs into the 'web' profile
.\install.ps1 -Profile headless    # or another profile
# if blocked by execution policy:  powershell -ExecutionPolicy Bypass -File .\install.ps1

Then restart DeepSeek Harness. The host log will show [silent-pwsh] up to date (or [silent-pwsh] patched … when it had to heal).

> Gotcha: if pnpm fails with a supply-chain policy error (minimumReleaseAge), add the reported package@version to the profile's pnpm-workspace.yaml minimumReleaseAgeExclude list and re-run.

Uninstall

dsh plugin --profile web remove dsh-silent-pwsh

The patched files are left as-is. To restore the shipped files manually:

$chunk = "$env:ProgramFiles\DeepSeek Harness\resources\host\node_modules\@deepseek-ai\dsh-sandbox-windows-acl\lib\types-CNjZgO4h.js"
(Get-Content $chunk -Raw) -replace 'dwFlags: 257,`n`t`twShowWindow: 0,', 'dwFlags: 256,' | Set-Content $chunk -NoNewline -Encoding utf8
# likewise remove ', windowsHide: true' from the taskkill and probe spawnSync calls.

Configuration

  • DSH_INSTALL_ROOT — point at the directory containing node_modules when the host root cannot be auto-detected. Default detection: <app dir>\resources\host derived from process.execPath, with cwd and plugin-location fallbacks.

Development / verification

node test.mjs   # idempotence against the real host files + heal-a-reverted-copy round trip

Verified: confined pwsh still executes correctly through the runner (exit 0, output flows through inherited stdio, no 0xC0000142 regression).

Notes for maintainers

The packaged app already ships a fixed-but-unused chunk (types-C1ecepac.js); wiring the entry imports to it is the upstream fix. This plugin exists so users on shipped builds get the behavior now, self-healing across reinstalls.

License

MIT