此兼容页面保留旧的 /README.zh.md 链接;最新安装方法、限制和安全边界请查看上面的正式文档。
60.4/100
综合分
152
GitHub 星标
2,083
npm 周下载
—/5
用户评分
数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-win32npm 源 · dsh-win32 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-win32 @ 0.17.15
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 17:40:56
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 87 处,展示前 67 条)
- 执行外部命令固定命令lib/index.js:41
spawnSync('taskkill', ['/PID', String(pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true }); - 读取本地文件bin/cli.mjs:28
readFileSync(join(dirname(fileURLToPath(import.meta.url)), '..', 'package.json'), 'utf8'), - 执行外部命令来自配置/变量bin/cli.mjs:38
return execFileSync(file, args, { encoding: 'utf8', windowsHide: true, stdio: ['ignore', 'pipe', 'ignore'] }) - 读取本地文件bin/cli.mjs:47
if (existsSync(candidate)) return candidate - 执行外部命令来自配置/变量bin/cli.mjs:80
const output = execFileSync(WIN ? 'npm.cmd' : 'npm', ['view', '@deepseek-ai/dsh', 'version', 'dependencies', '--json'], { - 执行外部命令来自配置/变量bin/cli.mjs:101
execFileSync(WIN ? 'corepack.cmd' : 'corepack', ['enable', 'pnpm'], { - 读取本地文件bin/cli.mjs:116
if (!existsSync(profilesDir)) return results - 读取本地文件bin/cli.mjs:117
for (const profile of readdirSync(profilesDir)) { - 读取本地文件bin/cli.mjs:119
if (!existsSync(manifest)) continue - 读取本地文件bin/cli.mjs:121
const version = JSON.parse(readFileSync(manifest, 'utf8')).version - 执行外部命令来自配置/变量bin/cli.mjs:389
const output = execFileSync(WIN ? 'npm.cmd' : 'npm', ['view', spec, ...fields, '--json'], { - 执行外部命令来自配置/变量bin/cli.mjs:499
execFileSync(WIN ? 'npx.cmd' : 'npx', ['--yes', '@deepseek-ai/dsh', 'plugin', ...args], { - 写入本地文件bin/cli.mjs:563
mkdirSync(root, { recursive: true }) - 写入本地文件bin/cli.mjs:565
renameSync(targetDir, backup) - 写入本地文件bin/cli.mjs:582
mkdirSync(dirname(target), { recursive: true }) - 发起网络请求bin/cli.mjs:585
response = await fetch(BUSYBOX_URL) - 写入本地文件bin/cli.mjs:592
writeFileSync(target, Buffer.from(await response.arrayBuffer())) - 执行外部命令固定命令bin/cli.mjs:610
execFileSync('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', script], { windowsHide: true }) - 读取本地文件lib/console-list.js:78
if (existsSync(utils)) - 写入本地文件lib/console-list.js:97
writeFileSync(path, [ - 执行外部命令来自配置/变量lib/console-list.js:173
run: (helper, shellPid, timeoutMs) => execFileSync(process.execPath, [helper, String(shellPid)], { - 执行外部命令来自配置/变量lib/inspector.js:16
exec: (file, args) => execFileSync(file, args, { - 读取本地文件lib/preset-install.js:38
if (explicit !== undefined && existsSync(explicit)) - 读取本地文件lib/preset-install.js:50
if (existsSync(candidate)) - 读取本地文件lib/preset-install.js:59
if (existsSync(join(targetDir, 'agent.cordis.yml'))) { - 写入本地文件lib/preset-install.js:64
mkdirSync(targetDir, { recursive: true }); - 读取本地文件lib/preset-install.js:65
const roster = readFileSync(join(sourceDir, 'agent.cordis.yml'), 'utf8') - 写入本地文件lib/preset-install.js:67
writeFileSync(join(targetDir, 'agent.cordis.yml'), roster); - 读取本地文件lib/preset-install.js:68
writeFileSync(join(targetDir, 'preset.yml'), readFileSync(join(sourceDir, 'preset.yml'), 'utf8')); - 写入本地文件lib/preset-install.js:68
writeFileSync(join(targetDir, 'preset.yml'), readFileSync(join(sourceDir, 'preset.yml'), 'utf8')); - 读取本地文件lib/preset-install.js:93
if (!existsSync(busybox)) { - 删除本地文件lib/shell-decode.js:54
unlinkSync(this.spillFile); - 写入本地文件lib/shell-decode.js:71
mkdirSync(dir, { recursive: true, mode: 0o700 }); - 执行外部命令固定命令lib/terminal-wrap.js:24
spawnSync('taskkill', ['/PID', String(pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true }); - 执行外部命令来自配置/变量bin/setup-consent.mjs:24
return execFileSync(file, args, { encoding: 'utf8', windowsHide: true, stdio: ['ignore', 'pipe', 'ignore'] }) - 写入本地文件bin/setup-consent.mjs:44
mkdirSync(home, { recursive: true }) - 写入本地文件bin/setup-consent.mjs:45
writeFileSync(marker, `${new Date().toISOString()} yes\n`, { flag: 'wx' }) - 读取本地文件bin/setup-consent.mjs:64
if (existsSync(marker)) { - 读取本地文件bin/setup-consent.mjs:69
if (existsSync(marker)) { - 读取本地文件lib/verify.js:89
const manifest = JSON.parse(readFileSync(canonical, 'utf8')); - 执行外部命令来自配置/变量lib/verify.js:114
return execFileSync(file, args, { - 读取本地文件lib/verify.js:136
if (existsSync(profiles)) { - 读取本地文件lib/verify.js:137
for (const entry of readdirSync(profiles, { withFileTypes: true })) { - 读取本地文件lib/verify.js:158
if (npxCache !== undefined && existsSync(npxCache)) { - 读取本地文件lib/verify.js:159
const cached = readdirSync(npxCache, { withFileTypes: true }) - 读取本地文件lib/verify.js:162
.filter(path => existsSync(path)) - 写入本地文件lib/verify.js:287
mkdirSync(path, { recursive: true }); - 写入本地文件lib/verify.js:341
mkdirSync(path, { recursive: true }); - 删除本地文件递归lib/verify.js:534
cleanup: root => rmSync(root, { recursive: true, force: true }), - 写入本地文件lib/verify.js:803
writeFileSync(progressFile, JSON.stringify({ stage }), 'utf8'); - 写入本地文件lib/verify.js:831
writeFileSync(outsideFile, 'control', 'utf8'); - 删除本地文件lib/verify.js:834
unlinkSync(outsideFile); - 读取本地文件lib/persona-diagnostic.js:60
stat = lstatSync(directory); - 读取本地文件lib/persona-diagnostic.js:75
const file = lstatSync(path); - 读取本地文件lib/persona-diagnostic.js:80
const source = readFileSync(path, 'utf8'); - 读取本地文件lib/profile-disable.js:8
const stat = lstatSync(path); - 读取本地文件lib/profile-disable.js:27
const stat = lstatSync(path); - 读取本地文件lib/profile-disable.js:31
const bytes = readFileSync(path); - 读取本地文件lib/profile-disable.js:85
const stat = lstatSync(file); - 读取本地文件lib/profile-disable.js:89
else if (/dsh-win32|subprocess-windows|minimal-windows/.test(readFileSync(file, 'utf8'))) { - 写入本地文件lib/profile-disable.js:127
writeFileSync(lock, `${process.pid}\n`); - 写入本地文件lib/profile-disable.js:134
writeFileSync(saved, original); - 写入本地文件lib/profile-disable.js:144
writeFileSync(pending, next); - 写入本地文件lib/profile-disable.js:152
renameSync(replacement, manifestPath); - 删除本地文件lib/profile-disable.js:157
unlinkSync(lockPath); - 读取本地文件lib/preflight.js:67
if (statSync(path).size > MAX_BYTES) - 读取本地文件lib/preflight.js:69
return JSON.parse(readFileSync(path, 'utf8'));
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-fs@deepseek-ai/dsh-fs-local@deepseek-ai/dsh-fs-sandbox@deepseek-ai/dsh-sandbox-local@deepseek-ai/dsh-sandbox-policy@deepseek-ai/dsh-session@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-subprocess-local@deepseek-ai/dsh-terminal@deepseek-ai/dsh-terminal-bash给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 工作区写入与快捷方式
在原生 Windows 上修复和诊断 DeepSeek Harness。官方 PowerShell、工作区写入、快捷方式,以及旧版预设修复。不用 WSL。
最近更新
在 GitHub 查看全部 →v0.18.02026-11-01
为 dsh-win32 加上 preflight,在升级前只读检查某个配置档能否迁到某个 DSH 版本。
· preflight 用 --target 判断目标版本,默认 latest。它能在 Windows、macOS 和 Linux 上运行,不安装任何东西,也从不启动目标版本。
· 第三方插件按宿主自己的兼容规则检查,包括 engines.dsh、DSH 对等依赖、预发布版和精确版本豁免。CI 会把这一判断与已安装的 dsh-app-boot 对比。
· 它还会检查目标版本的 Node 要求、PowerShell 7 以及 PATH 上的 pwsh,并在升级跨越已保存模型 ID、API key 来源或 SSH 协议的已知行为变更时给出警告。
· 目标版本比这些规则最后审核过的版本更新时,会给出 release_notes 警告,这样未审核的变更就不会看起来像干净结果。
· 退出码沿用 doctor:全部通过为 0,任何警告为 1,任何失败或未完成的检查为 2。--json 输出 dsh-preflight/v1。
验证。319 项测试、构建和 npm audit(0 漏洞)。PR CI 在四条官方 npm/pnpm-strict × Node 22.19/24 实时验收通道中全部通过。在 pnpm-strict 上,CI 将 306 项判断与已安装宿主对比,并在 Windows 上用一次性配置档对已安装技术栈和实时 registry 运行了真实命令行。尚未在真实用户的 Windows 配置档上运行过。通过只覆盖已声明的要求和已知变更,所以升级后请运行 verify。本次发布不修复 Desktop 受限子进程退出码 0xC0000142(#97)。
PR 和
v0.17.152026-10-21
修复新版原版 DSH 主机上的独立验证。
· 当所选 @deepseek-ai/dsh-base 声明 @deepseek-ai/dsh-working-directory 时,dsh-win32 verify 现在会挂载原版文件系统和工作目录服务。缺少这些服务,新版主机无法挂载持久 PowerShell 终端,powershell_launch 的实机验收会失败。
· 这些包只通过所选 base 的 owner 解析,绝不从 dsh-win32 自身的 peers 解析。旧版主机保持原有路径;声明了服务却缺少文件系统依赖时会报错,而不是静默跳过。
· 文档澄清了 PowerShell 发现、Desktop 启动排查、Windows 主机标识和验收边界。
验证:280 项测试、构建和 npm audit(0 漏洞)。PR 和 master CI 在全部四条官方 npm/pnpm-strict × Node 22.19/24 实机验收通道中通过。本次不修复 Desktop 受限子进程退出 0xC0000142(#97),该问题源自上游沙箱运行器;也不把旧版 bundle 兼容性扩展到 0.1.7 主机(#89)。
PR:
v0.17.142026-09-24
即使 DSH 无法启动,也能从不兼容的旧版 bundle 中恢复。
· dsh-win32 disable --profile NAME 可预览离线停用。停止 DSH 后加上 --apply,把原始清单原样存进唯一备份,只从活动 bundle 列表里移除 dsh-win32。应用自有的配置档可用 --profile-dir。
· 该命令不加载 DSH 和已安装插件,保留依赖、策略、自定义补丁、预设和会话。它与宿主打包写入锁协同,拒绝格式错误、有歧义或带链接的目标。
· 新增中英文指南,涵盖不用命令行的手动恢复、直接移除配置档包、停用旧版预设和还原备份。Doctor 现在会指向离线预览。
验证:253 项测试、构建/类型检查与完整 npm 审计(0 漏洞);跨平台测试和现有官方 Windows 组件验收。PR CI 在全部四条 npm/pnpm-strict × Node 22.19/24 通道中使用已安装的 DSH 0.1.5-rc.3。测试覆盖无法加载的宿主、精确备份、写入失败和并发编辑。这不会把旧版运行时兼容性扩展到 0.1.7-rc.1,也未实现报告者定制会话的端到端恢复;请检查其余自定义补丁/预设引用。
PR:
Issue:
中文恢复指南:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-win32 中文说明
中文 README 已移至 docs/README.zh.md。
此兼容页面保留旧的 /README.zh.md 链接;最新安装方法、限制和安全边界请查看上面的正式文档。
English README
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
sjh9714/dsh-win32
此兼容页面保留旧的 /README.zh.md 链接;最新安装方法、限制和安全边界请查看上面的正式文档。
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 422,036已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,619已汉化MCP
71.8
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 1,004已汉化DSH
71.6
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 653已汉化DSH
70.7
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,762已汉化DSH
70.7