D

dsh-sm-version-display

github.com/hjj345/dsh-sm-version-display

v1.2.24 界面与主题 可执行外部程序以 shell 执行命令写入文件
认证 L2已扫描 ✓健康 S/100周下载 430

`@hjj345345/dsh-sm-version-display` 是一个面向 DeepSeek Harness(DSH)Web 界面的客户端 + host 双半区插件。它在侧边栏「设置」按钮上方显示当前已安装的 DSH 版本,并检测 npm registry 与官方 GitHub Release 的新版本。

作者原文(英文)

DeepSeek Harness Web plugin with a DSH version card, settings page, npm checks, and safe update guidance.

中文简介由 DeepSeek 模型翻译,仅供参考。

deepseekharnessdshdsh-pluginversionversion-displayweb-ui
发布
2026-09-30
源仓库无法访问 多次尝试都没连上,可能是网络问题,也可能是仓库不可达。

检测报告

关注度高。命中了不少能力模式,其中可能有需要留意的。逐条看下面的清单。
2高关注5需留意3一般14未命中
高关注需留意一般

能力清单

  • 可执行外部程序spawns-processes高关注4 处命中
    • lib/index.js:7import { spawn } from "node:child_process";
    • lib/update-runtime.mjs:2import { spawn } from 'node:child_process';
    • lib/update-worker.mjs:4import { spawn, execFileSync } from "node:child_process";
    • lib/update-worker.mjs:157const parentCode = `const child = require('node:child_process').spawn(${JSON.stringify(process.execPath)}, ['-e', ${JSON…
    • 看它调用哪些程序。调用本机已有的工具是常见做法。
  • 以 shell 执行命令shell-exec高关注2 处命中
    • lib/update-worker.mjs:280const directory = execFileSync("powershell.exe", ["-NoProfile", "-NonInteractive", "-Command", "[bool]((Get-Item -Litera…
    • lib/update-worker.mjs:358execFileSync(join(process.env.SystemRoot ?? "C:\\Windows", "System32", "taskkill.exe"), ["/PID", String(child.pid), "/T"…
    • 看命令字符串是拼出来的还是写死的。拼接用户输入才是真正的风险。
  • 写入文件writes-files需留意61 处命中
    • lib/index.js:305mkdirSync(dirname(UPDATE_STATE_FILE), { recursive: true });
    • lib/index.js:308writeFileSync(temporary, JSON.stringify(state), "utf8");
    • lib/index.js:311renameSync(temporary, UPDATE_STATE_FILE);
    • lib/index.js:319try { rmSync(temporary, { force: true }); } catch { /* best-effort cleanup after a failed rename */ }
    • 看写入位置。写自己的配置目录是正常的,写系统目录不是。
  • 发起网络请求network需留意9 处命中
    • client/client.js:133checkStore.request = fetch(url, { headers: { accept: "application/json", "x-dsh-sm-version-display-token": typeof window…
    • client/client.js:149const response = await fetch(UPDATE_STATUS_ROUTE, { headers: { accept: "application/json", "x-dsh-sm-version-display-tok…
    • client/client.js:166const response = await fetch(UPDATE_STATUS_ROUTE, { headers: { accept: "application/json", "x-dsh-sm-version-display-tok…
    • client/client.js:178const response = await fetch(UPDATE_ACTION_ROUTE, { method: "POST", headers: { accept: "application/json", "content-type…
    • 看请求发往哪些域名。发往作者自己的后端是常见做法。
  • 可终止进程kills-processes需留意3 处命中
    • lib/index.js:624process.kill(pid, 0);
    • lib/update-runtime.mjs:19try { process.kill(pid, 0); return true; } catch (e) { return e.code !== 'ESRCH'; }
    • lib/update-worker.mjs:540try { process.kill(state.hostPid, 0); throw new Error("DSH is still running; close it before changing profiles"); }
    • 看它终止的是自己启动的进程,还是按名字匹配到的任意进程。
  • 运行时改写自身配置modifies-own-manifest需留意3 处命中
    • lib/update-worker.mjs:71writeFileSync(join(activePackage, "package.json"), JSON.stringify({ name: "@deepseek-ai/dsh", version: "0.0.2", bin: { d…
    • lib/update-worker.mjs:76writeFileSync(join(profileRoot, "package.json"), JSON.stringify({ name: "dsh-profile-web", private: true, dependencies: …
    • lib/update-worker.mjs:81writeFileSync(join(location, "package.json"), JSON.stringify({ name, version: state.version }));
    • 运行时改写自身配置会让下次启动的行为和你看过的源码不一致。
  • 启动伪终端spawns-pty需留意1 处命中
    • lib/update-worker.mjs:280const directory = execFileSync("powershell.exe", ["-NoProfile", "-NonInteractive", "-Command", "[bool]((Get-Item -Litera…
    • 伪终端等于给了一个完整 shell。确认这是插件的核心功能。
  • 读取文件reads-files一般44 处命中
    • lib/index.js:66const pkg = JSON.parse(readFileSync(join(state.globalRoot, "node_modules", "@deepseek-ai", "dsh", "package.json"), "utf8…
    • lib/index.js:118const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
    • lib/index.js:138const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
    • lib/index.js:154const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
    • 读文件是绝大多数插件的正常工作方式,本身不构成顾虑。
  • 读取环境变量reads-env一般10 处命中
    • lib/index.js:46const UPDATE_STATE_FILE = join(process.env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local"), "dsh-sm-version-display"…
    • lib/index.js:222function classifyDshInstall(path, hasPnpmStore = false, globalRoot, env = process.env) {
    • lib/index.js:290return process.env.DSH_HOME ?? join(homedir(), ".dsh");
    • lib/update-runtime.mjs:88const ps = join(process.env.SystemRoot ?? 'C:\\Windows', 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe');
    • 环境变量里常混有密钥。看它是否把整个 env 都读走。
  • 文中出现远程脚本地址remote-url-reference一般2 处命中
    • lib/index.js:30"win32-x64": { url: "https://download.deepseek.com/desktop/dsh-latest-windows-x64.exe", fileName: "dsh-latest-windows-x6…
    • lib/update-worker.mjs:48assert.equal(installerUrl("https://download.deepseek.com/desktop/dsh-latest-windows-x64.exe").hostname, "download.deepse…
    • 只是文本里出现了远程脚本地址,没有看到加载它的调用。多半是文档或注释;若确实可疑,搜一下这个地址在包里的其他出现位置。
逐条扫描明细
能力标识关注度命中次数
可执行外部程序spawns-processes高关注4
以 shell 执行命令shell-exec高关注2
写入文件writes-files需留意61
发起网络请求network需留意9
可终止进程kills-processes需留意3
运行时改写自身配置modifies-own-manifest需留意3
启动伪终端spawns-pty需留意1
读取文件reads-files一般44
读取环境变量reads-env一般10
文中出现远程脚本地址remote-url-reference一般2

这份报告的口径

扫描读的是包里的源码,全程不执行第三方代码。 本次读了 10 个文件,扫描于 2026-10-16。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。

依赖安全公告

已查询这个插件声明的全部依赖,没有匹配到已公开的安全公告。(含 DSH 框架包在内的 @deepseek-ai/* 不作查询——那是运行时自己的问题,不是插件的。)

可信度

100 健康分 S 扣分项下方逐条附证据
  • 0没有可扣分的项

认证等级 L2

  • L0内容完整性✓sha512-FED6VVqhPe9OlaRh… 与本地 tarball 复算一致
  • L1来源✓维护者 hjj345,仓库 hjj345/dsh-sm-version-display(未做仓库审计)
  • L2发行✓隔离 profile 安装成功,7.8s,层已挂载
  • L3生态—还没有契约/启动记录
  • L4多方独立验证—本站不做第三方独立背书
评分口径与作者信息

从 100 分开始按规则扣减:fail −20 / major −10 / warn −5 / minor −2;star 数、下载量、LLM 输出都不参与评分

维护者
hjj345
仓库
https://github.com/hjj345/dsh-sm-version-display
许可
MIT
最后发布
2026-09-30
周下载
430
star
1

扫描状态:已扫描。能力是事实,不是缺陷; 周下载与 star 只作参考,不参与评分。

认证等级核验的是这个包本身(内容指纹、来源、能否安装、声明是否属实);依赖漏洞是独立标注的,两者正交、不互相掩盖。可信 ≠ 无漏洞,上架 ≠ 推荐。

← 返回首页