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

桌面主题合集 Sovero/dsh_plugins

DeepSeek Harness
Sovero21 天前有提交已提供中文文档扫描:含敏感能力

给 DSH Desktop 用的插件:主题、工具、扩展。每个插件都放在自己的文件夹里,用 DSH 官方命令安装。

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

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

自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 4 份 dsh 插件清单(dsh-client-voice-eternia/package.json、dsh-ocean-theme/package.json、dsh-poslanik-deep-space/package.json 等),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Sovero/dsh_plugins
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录无 package.json,浅层子目录有 4 份 dsh 插件清单(dsh-client-voice-eternia/package.json、dsh-ocean-theme/package.json、dsh-poslanik-deep-space/package.json 等),无法唯一定位安装名

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh_plugins(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:22:49

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 141 处,展示前 94 条)
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/lib/capture.js:84
    execFile(bin, args, { timeout: timeoutMs, windowsHide: true, maxBuffer: 4 << 20 }, (error, stdout, stderr) => {
  • 写入本地文件
    dsh-client-voice-eternia/lib/capture.js:206
    mkdirSync(WORK_DIR, { recursive: true })
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/lib/capture.js:223
    const child = spawn(bin, [
  • 写入本地文件
    dsh-client-voice-eternia/lib/capture.js:233
    const sink = createWriteStream(file)
  • 读取本地文件
    dsh-client-voice-eternia/lib/capture.js:428
    raw = readFileSync(session.file)
  • 执行外部命令固定命令
    dsh-client-voice-eternia/lib/capture.js:492
    spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'], { windowsHide: true, stdio: 'ignore' })
  • 删除本地文件
    dsh-client-voice-eternia/lib/capture.js:580
    rmSync(file, { force: true })
  • 发起网络请求
    dsh-client-voice-eternia/lib/client.js:1011
    const response = await fetch(url, {
  • 发起网络请求
    dsh-client-voice-eternia/lib/client.js:1045
    const response = await fetch(`${API_PREFIX}/record/phrase`, { method: 'GET' })
  • 发起网络请求
    dsh-client-voice-eternia/lib/client.js:1077
    const response = await fetch(`${API_PREFIX}/record/status`, { method: 'GET' })
  • 发起网络请求
    dsh-client-voice-eternia/lib/client.js:1095
    const response = await fetch(`${API_PREFIX}/config`, { method: 'GET' })
  • 发起网络请求
    dsh-client-voice-eternia/lib/client.js:1116
    const response = await fetch(`${API_PREFIX}/config`, {
  • 发起网络请求
    dsh-client-voice-eternia/lib/client.js:1137
    const response = await fetch(`${API_PREFIX}/transcribe`, {
  • 写入剪贴板
    dsh-client-voice-eternia/lib/client.js:2974
    void navigator.clipboard?.writeText(pending).catch(() => {})
  • 读取本地文件
    dsh-client-voice-eternia/lib/index.js:194
    if (!existsSync(file)) return {}
  • 读取本地文件
    dsh-client-voice-eternia/lib/index.js:197
    text = readFileSync(file, 'utf8')
  • 发起网络请求
    dsh-client-voice-eternia/lib/index.js:301
    const response = await fetch(`${base}/chat/completions`, {
  • 发起网络请求
    dsh-client-voice-eternia/lib/index.js:358
    const response = await fetch(`${base}/chat/completions`, {
  • 读取本地文件
    dsh-client-voice-eternia/lib/index.js:494
    if (existsSync(file)) {
  • 读取本地文件
    dsh-client-voice-eternia/lib/index.js:496
    const parsed = JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    dsh-client-voice-eternia/lib/index.js:575
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    dsh-client-voice-eternia/lib/index.js:602
    writeFileSync(file, JSON.stringify(flat, null, 2), 'utf8')
  • 读取本地文件
    dsh-client-voice-eternia/lib/index.js:727
    text = readFileSync(join(profileDir, file), 'utf8')
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/lib/speech.js:95
    execFile(shell, ['-NoProfile', '-NonInteractive', '-Command', script],
  • 写入本地文件
    dsh-client-voice-eternia/lib/speech.js:125
    mkdirSync(WORK_DIR, { recursive: true })
  • 写入本地文件
    dsh-client-voice-eternia/lib/speech.js:129
    writeFileSync(file, `${clean}`, 'utf8')
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/lib/speech.js:148
    const child = spawn(shell, ['-NoProfile', '-NonInteractive', '-Command', script],
  • 删除本地文件
    dsh-client-voice-eternia/lib/speech.js:155
    rmSync(file, { force: true })
  • 执行外部命令固定命令
    dsh-client-voice-eternia/lib/speech.js:181
    spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'],
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/src/capture.js:84
    execFile(bin, args, { timeout: timeoutMs, windowsHide: true, maxBuffer: 4 << 20 }, (error, stdout, stderr) => {
  • 写入本地文件
    dsh-client-voice-eternia/src/capture.js:206
    mkdirSync(WORK_DIR, { recursive: true })
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/src/capture.js:223
    const child = spawn(bin, [
  • 写入本地文件
    dsh-client-voice-eternia/src/capture.js:233
    const sink = createWriteStream(file)
  • 读取本地文件
    dsh-client-voice-eternia/src/capture.js:428
    raw = readFileSync(session.file)
  • 执行外部命令固定命令
    dsh-client-voice-eternia/src/capture.js:492
    spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'], { windowsHide: true, stdio: 'ignore' })
  • 删除本地文件
    dsh-client-voice-eternia/src/capture.js:580
    rmSync(file, { force: true })
  • 读取本地文件
    dsh-client-voice-eternia/src/index.js:194
    if (!existsSync(file)) return {}
  • 读取本地文件
    dsh-client-voice-eternia/src/index.js:197
    text = readFileSync(file, 'utf8')
  • 发起网络请求
    dsh-client-voice-eternia/src/index.js:301
    const response = await fetch(`${base}/chat/completions`, {
  • 发起网络请求
    dsh-client-voice-eternia/src/index.js:358
    const response = await fetch(`${base}/chat/completions`, {
  • 读取本地文件
    dsh-client-voice-eternia/src/index.js:494
    if (existsSync(file)) {
  • 读取本地文件
    dsh-client-voice-eternia/src/index.js:496
    const parsed = JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    dsh-client-voice-eternia/src/index.js:575
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    dsh-client-voice-eternia/src/index.js:602
    writeFileSync(file, JSON.stringify(flat, null, 2), 'utf8')
  • 读取本地文件
    dsh-client-voice-eternia/src/index.js:727
    text = readFileSync(join(profileDir, file), 'utf8')
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/src/speech.js:95
    execFile(shell, ['-NoProfile', '-NonInteractive', '-Command', script],
  • 写入本地文件
    dsh-client-voice-eternia/src/speech.js:125
    mkdirSync(WORK_DIR, { recursive: true })
  • 写入本地文件
    dsh-client-voice-eternia/src/speech.js:129
    writeFileSync(file, `${clean}`, 'utf8')
  • 执行外部命令来自配置/变量
    dsh-client-voice-eternia/src/speech.js:148
    const child = spawn(shell, ['-NoProfile', '-NonInteractive', '-Command', script],
  • 删除本地文件
    dsh-client-voice-eternia/src/speech.js:155
    rmSync(file, { force: true })
  • 执行外部命令固定命令
    dsh-client-voice-eternia/src/speech.js:181
    spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'],
  • 读取本地文件
    dsh-ekspert/src/bootstrap.ts:25
    return JSON.parse(readFileSync(pkgPath, "utf-8")).version || "0.0.0";
  • 读取本地文件
    dsh-ekspert/src/bootstrap.ts:52
    if (!existsSync(root)) mkdirSync(root, { recursive: true });
  • 写入本地文件
    dsh-ekspert/src/bootstrap.ts:52
    if (!existsSync(root)) mkdirSync(root, { recursive: true });
  • 读取本地文件
    dsh-ekspert/src/bootstrap.ts:53
    if (!existsSync(zhRoot)) mkdirSync(zhRoot, { recursive: true });
  • 写入本地文件
    dsh-ekspert/src/bootstrap.ts:53
    if (!existsSync(zhRoot)) mkdirSync(zhRoot, { recursive: true });
  • 读取本地文件
    dsh-ekspert/src/bootstrap.ts:56
    if (existsSync(SNAPSHOT_DIR)) {
  • 读取本地文件
    dsh-ekspert/src/bootstrap.ts:57
    for (const division of readdirSync(SNAPSHOT_DIR, { withFileTypes: true })) {
  • 读取本地文件
    dsh-ekspert/src/bootstrap.ts:65
    if (!existsSync(dstDiv)) mkdirSync(dstDiv, { recursive: true });
  • 写入本地文件
    dsh-ekspert/src/bootstrap.ts:65
    if (!existsSync(dstDiv)) mkdirSync(dstDiv, { recursive: true });
  • 写入本地文件
    dsh-ekspert/src/bootstrap.ts:66
    if (!existsSync(zhDiv)) mkdirSync(zhDiv, { recursive: true });
  • 读取本地文件
    dsh-ekspert/src/catalog.ts:107
    if (!existsSync(root)) return { experts: 0, divisions: 0 };
  • 读取本地文件
    dsh-ekspert/src/catalog.ts:111
    for (const div of readdirSync(root, { withFileTypes: true })) {
  • 读取本地文件
    dsh-ekspert/src/catalog.ts:116
    for (const file of readdirSync(divPath)) {
  • 读取本地文件
    dsh-ekspert/src/catalog.ts:201
    return readFileSync(path, "utf-8");
  • 读取本地文件
    dsh-ekspert/src/catalog.ts:248
    if (existsSync(labelsPath)) {
  • 读取本地文件
    dsh-ekspert/src/catalog.ts:250
    labels = JSON.parse(readFileSync(labelsPath, "utf-8"));
  • 读取本地文件
    dsh-ekspert/src/fetch-assets.ts:40
    const content = readFileSync(ROSTER_PATH, "utf-8");
  • 读取本地文件
    dsh-ekspert/src/fetch-assets.ts:72
    if (!existsSync(marker)) return "missing";
  • 读取本地文件
    dsh-ekspert/src/fetch-assets.ts:74
    const content = readFileSync(marker, "utf-8");
  • 读取本地文件
    dsh-ekspert/src/fetch-assets.ts:97
    if (!existsSync(packDir)) mkdirSync(packDir, { recursive: true });
  • 写入本地文件
    dsh-ekspert/src/fetch-assets.ts:97
    if (!existsSync(packDir)) mkdirSync(packDir, { recursive: true });
  • 发起网络请求
    dsh-ekspert/src/fetch-assets.ts:99
    const response = await fetch(url);
  • 写入本地文件
    dsh-ekspert/src/fetch-assets.ts:105
    const writer = createWriteStream(tarballPath);
  • 删除本地文件
    dsh-ekspert/src/fetch-assets.ts:126
    rmSync(tarballPath);
  • 写入本地文件
    dsh-ekspert/src/fetch-assets.ts:129
    writeFileSync(join(packDir, ".assets-ready"), JSON.stringify({
  • 读取本地文件
    dsh-ekspert/src/index.ts:288
    return statSync(path).mtimeMs;
  • 写入本地文件
    dsh-ekspert/src/index.ts:492
    mkdirSync(dirname(path), { recursive: true });
  • 读取本地文件
    dsh-ekspert/src/index.ts:508
    const content = readFileSync(path, "utf-8");
  • 读取本地文件
    dsh-ekspert/src/index.ts:542
    if (existsSync(labelsPath)) labels = JSON.parse(readFileSync(labelsPath, "utf-8"));
  • 读取本地文件
    dsh-ekspert/src/index.ts:542
    if (existsSync(labelsPath)) labels = JSON.parse(readFileSync(labelsPath, "utf-8"));
  • 读取本地文件
    dsh-ekspert/src/index.ts:547
    if (existsSync(zhLabelsPath)) zhLabels = JSON.parse(readFileSync(zhLabelsPath, "utf-8"));
  • 读取本地文件
    dsh-ekspert/src/index.ts:547
    if (existsSync(zhLabelsPath)) zhLabels = JSON.parse(readFileSync(zhLabelsPath, "utf-8"));
  • 删除本地文件递归
    dsh-ekspert/src/index.ts:577
    rmSync(divPath, { recursive: true });
  • 发起网络请求
    dsh-poslanik-deep-space/lib/client.js:3364
    const request = () => window.fetch(STATE_PATH, { method: 'GET' }).then((response) => {
  • 发起网络请求
    dsh-restart-buttons/lib/client.js:175
    fetch('/dsh-restart-buttons/status')
  • 发起网络请求
    dsh-restart-buttons/lib/client.js:243
    fetch('/dsh-restart-buttons/restart', {
  • 写入本地文件
    dsh-restart-buttons/lib/paths.mjs:47
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    dsh-restart-buttons/lib/paths.mjs:48
    appendFileSync(file, `${text}\n`)
  • 写入本地文件
    dsh-restart-buttons/lib/restart.mjs:90
    mkdirSync(dirname(logPath), { recursive: true })
  • 写入本地文件
    dsh-restart-buttons/lib/restart.mjs:93
    appendFileSync(logPath, `${JSON.stringify(entry)}\n`)
  • 执行外部命令固定命令
    dsh-restart-buttons/lib/restart.mjs:182
    const result = spawnSync('tasklist', ['/FI', `PID eq ${pid}`, '/FO', 'CSV', '/NH'], {
  • 执行外部命令来自配置/变量
    dsh-restart-buttons/lib/restart.mjs:199
    child = spawn(executable, argv, { detached: true, stdio: 'ignore', windowsHide: true, ...options })
  • 执行外部命令固定命令
    dsh-restart-buttons/lib/restart.mjs:347
    const result = spawnSync('taskkill', quitArgv, { stdio: 'ignore', windowsHide: true })
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 主题合集
  • 工具与扩展
  • 独立文件夹安装

dsh 桌面插件主题

README

由 DeepSeek 最新模型翻译生成
DSH 插件 给 DSH Desktop 用的插件:主题、工具、扩展。每个插件都放在自己的文件夹里,用 DSH 官方命令安装。 | 插件 | 做什么 | 版本 | | dsh-poslanik-deep-space | 「深空」主题:星星、星云、矮星、恒星、黑洞、行星、拖着尾迹的飞船、彗星、流星。鼠标移动会给空间带来电磁扰动。设置面板支持双语。 | 1.4.0 | | dsh-ocean-theme | 「海洋」主题:成群的小鱼、鲸鱼、鲨鱼、水母、海带、珊瑚,还有沉在海底的船。鼠标移动会在水里荡开涟漪。深色和浅色两套配色。 | 1.0.1 | | dsh-client-voice-eternia | 「Eternia 之声」语音输入:输入面板上有两个按钮——麦克风用来听写,对话按钮用来语音聊天。识别俄语语音,不用按 Enter 就能发送句子,用本地音色朗读回复,还有语音波形图。界面支持三种语言。 | 0.2.1 | | dsh-restart-buttons | 侧边栏底部的「重启」按钮:重启界面,以及在 Windows 上通过独立 worker 完整重启 DSH Desktop。两步确认,四重安全防护,双语标签。 | 1.0.0 | | dsh-veil-of-ulgard | 「乌尔加德之幕」主题:死城上空的夜——三层塔楼、帷幕后的月亮、迷雾、乌鸦与灰烬。
展开完整文档(README 剩余 1 节)
DSH 插件

给 DSH Desktop 用的插件:主题、工具、扩展。每个插件都放在自己的文件夹里,用 DSH 官方命令安装。

| 插件 | 做什么 | 版本 |
| dsh-poslanik-deep-space | 「深空」主题:星星、星云、矮星、恒星、黑洞、行星、拖着尾迹的飞船、彗星、流星。鼠标移动会给空间带来电磁扰动。设置面板支持双语。 | 1.4.0 |
| dsh-ocean-theme | 「海洋」主题:成群的小鱼、鲸鱼、鲨鱼、水母、海带、珊瑚,还有沉在海底的船。鼠标移动会在水里荡开涟漪。深色和浅色两套配色。 | 1.0.1 |
| dsh-client-voice-eternia | 「Eternia 之声」语音输入:输入面板上有两个按钮——麦克风用来听写,对话按钮用来语音聊天。识别俄语语音,不用按 Enter 就能发送句子,用本地音色朗读回复,还有语音波形图。界面支持三种语言。 | 0.2.1 |
| dsh-restart-buttons | 侧边栏底部的「重启」按钮:重启界面,以及在 Windows 上通过独立 worker 完整重启 DSH Desktop。两步确认,四重安全防护,双语标签。 | 1.0.0 |
| dsh-veil-of-ulgard | 「乌尔加德之幕」主题:死城上空的夜——三层塔楼、帷幕后的月亮、迷雾、乌鸦与灰烬。探求者的活灯笼跟着光标走,驱散黑暗,它照到的灰烬会重新燃起。月亮细节丰富,带环形山,窗户里有灯光,黑暗分层。左侧栏有自己的设置面板,支持俄语和英语。深色和浅色两套配色。 | 1.3.0 |

Claude Code 模组

除了 DSH 插件,这里还有一套 Claude Code 模组。

| 套装 | 做什么 | 版本 |
| claude-code-sovero-mods | 市场 sovero-mods,包含五个模组:pulse(Claude 在忙什么、忙了多久)、next-step(「下一步」「运行」「提交」按钮)、course(项目优先级摆在眼前也记在心里)、key-vault(消息里的密钥送进加密存储)、expert-teams(用 /team 调用专家团队)。接入方式和详情见套装 README。 | 0.1.0 |

安装 DSH 插件

从这个仓库安装(要指定插件的子路径):

dsh plugin --profile web add github:Sovero/dsh_plugins#path:dsh-poslanik-deep-space
dsh plugin --profile web add github:Sovero/dsh_plugins#path:dsh-ocean-theme
dsh plugin --profile web add github:Sovero/dsh_plugins#path:dsh-client-voice-eternia
dsh plugin --profile web add github:Sovero/dsh_plugins#path:dsh-restart-buttons
dsh plugin --profile web add github:Sovero/dsh_plugins#path:dsh-veil-of-ulgard

安装后重启 DSH Desktop:主机在启动时才会组装配置档配置。卸载用 dsh plugin --profile web remove <插件标识符>。
如果 DSH 版本不支持子路径,解压发布包,从本地路径安装:

dsh plugin --profile web add /absolute/path/to/dsh-poslanik-deep-space
dsh plugin --profile web add /absolute/path/to/dsh-ocean-theme
dsh plugin --profile web add /absolute/path/to/dsh-client-voice-eternia
dsh plugin --profile web add /absolute/path/to/dsh-restart-buttons
dsh plugin --profile web add /absolute/path/to/dsh-veil-of-ulgard

许可证

MIT — 见插件旁边的 LICENSE。
预览分享卡片长什么样 ↓Sovero/dsh_plugins
分享 · DeepSeek Harness Hub
Sovero/dsh_plugins

给 DSH Desktop 用的插件:主题、工具、扩展。每个插件都放在自己的文件夹里,用 DSH 官方命令安装。

这是你的仓库?认领条目

回到顶部