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

Windows 原生修复 sjh9714/dsh-win32

DeepSeek Harnessv0.17.15
sjh97143 天前有提交已提供中文文档扫描:含敏感能力

此兼容页面保留旧的 /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-win32
npm 源 · dsh-win32 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 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。

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
预览分享卡片长什么样 ↓sjh9714/dsh-win32
分享 · DeepSeek Harness Hub
sjh9714/dsh-win32

此兼容页面保留旧的 /README.zh.md 链接;最新安装方法、限制和安全边界请查看上面的正式文档。

回到顶部