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

自定皮肤 Chang-An2002/dsh-diy-skin

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

上传壁纸与动图,调色并保存专属界面方案

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Chang-An2002/dsh-diy-skin
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 57 处,展示前 50 条)
  • 读取本地文件
    analysis/blue-audit.mjs:74
    const source = readFileSync(clientPath, 'utf8');
  • 读取本地文件
    analysis/embed-consumers.mjs:152
    const source = readFileSync(CLIENT, 'utf8');
  • 读取本地文件
    analysis/embed-consumers.mjs:213
    const docStale = !existsSync(REACH) || readFileSync(REACH, 'utf8') !== doc;
  • 读取本地文件
    analysis/embed-consumers.mjs:213
    const docStale = !existsSync(REACH) || readFileSync(REACH, 'utf8') !== doc;
  • 写入本地文件
    analysis/embed-consumers.mjs:222
    writeFileSync(CLIENT, next);
  • 写入本地文件
    analysis/embed-consumers.mjs:223
    writeFileSync(REACH, doc);
  • 读取本地文件
    analysis/fix-css-backticks.mjs:24
    const source = readFileSync(CLIENT, 'utf8');
  • 写入本地文件
    analysis/fix-css-backticks.mjs:49
    writeFileSync(
  • 读取本地文件
    analysis/lib/asar-css.mjs:166
    const source = readFileSync(clientPath, 'utf8');
  • 读取本地文件
    analysis/palette-defaults.mjs:168
    const client = readFileSync(CLIENT, 'utf8');
  • 读取本地文件
    analysis/plugin-guards.mjs:31
    const client = readFileSync(join(root, 'client.js'), 'utf8');
  • 读取本地文件
    analysis/plugin-guards.mjs:88
    check(existsSync(reachPath), 'KNOB-REACH.md is present');
  • 读取本地文件
    analysis/plugin-guards.mjs:89
    if (existsSync(reachPath)) {
  • 读取本地文件
    analysis/plugin-guards.mjs:90
    const reach = readFileSync(reachPath, 'utf8');
  • 读取本地文件
    analysis/plugin-guards.mjs:136
    const raw = readFileSync(join(root, 'package.json'));
  • 读取本地文件
    analysis/pubcheck.mjs:47
    const read = (relative) => readFileSync(join(ROOT, relative), 'utf8');
  • 读取本地文件
    analysis/pubcheck.mjs:63
    if (!existsSync(MANIFEST)) {
  • 读取本地文件
    analysis/pubcheck.mjs:67
    const raw = readFileSync(MANIFEST);
  • 读取本地文件
    analysis/pubcheck.mjs:89
    if (!existsSync(path)) {
  • 读取本地文件
    analysis/pubcheck.mjs:93
    const text = readFileSync(path, 'utf8');
  • 写入本地文件
    analysis/pubcheck.mjs:99
    writeFileSync(path, text.split(previous).join(next));
  • 读取本地文件
    analysis/pubcheck.mjs:105
    return existsSync(path) && readFileSync(path, 'utf8').includes(previous);
  • 读取本地文件
    analysis/skin-desktop-audit.mjs:7
    const catalog = JSON.parse(readFileSync(CATALOG, 'utf8'));
  • 读取本地文件
    analysis/theme-surface.mjs:187
    `${(statSync(ASAR).size / 1024 / 1024).toFixed(1)} MB)`,
  • 读取本地文件
    analysis/theme-surface.mjs:293
    return readFileSync(
  • 写入本地文件
    analysis/theme-surface.mjs:365
    writeFileSync(OUT, lines.join('\n') + '\n', 'utf8');
  • 读取本地文件
    dsh-diy-skin/preview/embed-logo.mjs:31
    if (!existsSync(asarPath)) throw new Error(`asar not found: ${asarPath}`);
  • 读取本地文件
    dsh-diy-skin/preview/embed-logo.mjs:66
    const client = readFileSync(CLIENT, 'utf8');
  • 写入本地文件
    dsh-diy-skin/preview/embed-logo.mjs:82
    writeFileSync(CLIENT, client.slice(0, start) + block + client.slice(end + END.length), 'utf8');
  • 读取本地文件
    preview/check-host-import.mjs:37
    const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
  • 读取本地文件
    preview/check-host-import.mjs:40
    console.log('client bundle :', clientRel, existsSync(clientPath) ? '(exists)' : '(MISSING)');
  • 读取本地文件
    preview/check-host-import.mjs:42
    const client = readFileSync(clientPath, 'utf8');
  • 读取本地文件
    preview/check-host-import.mjs:54
    if (bootJson && existsSync(bootJson)) {
  • 读取本地文件
    preview/check-host-import.mjs:55
    const boot = JSON.parse(readFileSync(bootJson, 'utf8'));
  • 读取本地文件
    preview/check-patch.js:9
    const raw = fs.readFileSync(patchPath);
  • 读取本地文件
    preview/check-patch.js:37
    const stat = fs.existsSync(name) ? fs.statSync(name) : undefined;
  • 读取本地文件
    preview/check-patch.js:47
    if (fs.existsSync(candidate)) { pkgJson = candidate; break; }
  • 读取本地文件
    preview/check-patch.js:52
    const pkg = JSON.parse(fs.readFileSync(pkgJson, 'utf8'));
  • 读取本地文件
    preview/check-patch.js:58
    ` client bundle: ${clientRel} ${clientPath && fs.existsSync(clientPath) ? '(exists)' : '(MISSING)'}`,
  • 读取本地文件
    preview/check_install.js:6
    const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'));
  • 读取本地文件
    preview/check_install.js:7
    const has = (rel) => fs.existsSync(path.join(dir, rel));
  • 读取本地文件
    preview/check_install.js:17
    const src = fs.readFileSync(path.join(dir, 'client.js'), 'utf8');
  • 读取本地文件
    preview/check_install.js:32
    const host = fs.readFileSync(path.join(dir, 'index.js'), 'utf8');
  • 读取本地文件
    preview/probe-server.js:10
    const raw = fs.readFileSync(CRED, 'utf8');
  • 发起网络请求
    preview/probe-server.js:39
    const res = await fetch(url, { headers });
  • 读取本地文件
    preview/show-tokens.js:3
    const text = fs.readFileSync(process.argv[2], 'utf8');
  • 读取本地文件
    preview/show-tokens.js:42
    if (dir && fs.existsSync(dir)) {
  • 读取本地文件
    preview/show-tokens.js:43
    for (const file of fs.readdirSync(dir)) {
  • 读取本地文件
    preview/show-tokens.js:45
    if (!fs.statSync(p).isFile() || !file.endsWith('.js')) continue;
  • 读取本地文件
    preview/show-tokens.js:46
    const src = fs.readFileSync(p, 'utf8');
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

DSH插件:可添加壁纸、图片、GIF,自定义并保存UI配色方案(零运行时依赖)

README

由 DeepSeek 最新模型翻译生成
dsh-diy-skin 一个给 DSH 用的皮肤插件:可以自己上传静态图片、GIF、壁纸(位于整个界面底部),图片可以调整位置、大小、模糊、透明度、去白底;22 个配色旋钮、可以把自定义的UI配色保存为独立方案;左下角显示当前账户余额,每15分钟刷新。零依赖,即装即用。 安装 前提:DeepSeek Harness 桌面端应用(Web 端没有测试过,见下)。 1. 侧栏打开「插件」面板 → 添加插件 → 输入包名 dsh-diy-skin → 确认 2. 重启应用 3. 左下角出现「背景」入口,点它开始编辑 也可以手动改 profile 的 package.json:加一行 "dsh-diy-skin": "^1.30.3",然后在 profile 目录跑 pnpm install。 实测范围 下面这些是真的跑过的,不是"理论上应该可以": - 平台:Windows + 桌面端应用,以及本机已安装的那个 DSH 版本 - 功能:界面挂载、背景图片(拖动 / 滚轮 / 四角拉伸)、去白底(容差与收边)、22 个配色旋钮与自定义方案的存取、余额芯片、右键图片小窗、动图(GIF)、存储读数与上限测量 Web 端(浏览器里的 DSH)从未运行验证过,表现未知;代码里有一部分是桌面端专属的(例如 Windows 标题栏那条修正),在 Web 端不生效。
展开完整文档(README 剩余 1 节)
dsh-diy-skin

一个给 DSH 用的皮肤插件:可以自己上传静态图片、GIF、壁纸(位于整个界面底部),图片可以调整位置、大小、模糊、透明度、去白底;22 个配色旋钮、可以把自定义的UI配色保存为独立方案;左下角显示当前账户余额,每15分钟刷新。零依赖,即装即用。

安装

前提:DeepSeek Harness 桌面端应用(Web 端没有测试过,见下)。

1. 侧栏打开「插件」面板 → 添加插件 → 输入包名 dsh-diy-skin → 确认
2. 重启应用
3. 左下角出现「背景」入口,点它开始编辑

也可以手动改 profile 的 package.json:加一行 "dsh-diy-skin": "^1.30.3",然后在 profile 目录跑 pnpm install。

实测范围

下面这些是真的跑过的,不是"理论上应该可以":

- 平台:Windows + 桌面端应用,以及本机已安装的那个 DSH 版本
- 功能:界面挂载、背景图片(拖动 / 滚轮 / 四角拉伸)、去白底(容差与收边)、22 个配色旋钮与自定义方案的存取、余额芯片、右键图片小窗、动图(GIF)、存储读数与上限测量

Web 端(浏览器里的 DSH)从未运行验证过,表现未知;代码里有一部分是桌面端专属的(例如 Windows 标题栏那条修正),在 Web 端不生效。

从这里去哪

- dsh-diy-skin/README.md —— 插件自己的文档:它做了什么、怎么装、怎么用、有哪些限制
- dsh-diy-skin/DESIGN.md —— 设计记录:每个决定的理由、量出来的数字、踩过的坑
- dsh-diy-skin/KNOB-REACH.md —— 每个旋钮对应界面上哪一处(实测)
- dsh-diy-skin/THEME-SURFACE.md —— 应用自身的可调 token 与消费方全景

仓库结构

| 目录 | 是什么 |
| dsh-diy-skin/ | 插件本体(发布到 npm 的就是这个目录) |
| analysis/ | 校验脚本:发布检查、主题守卫、冻结色审计、从已安装应用里实测 token |
| preview/ | 插件加载检查、探针、logo 提取 |

每次改动后跑这几条

node analysis/fix-css-backticks.mjs --check # 只检查;去掉 --check 才会真的修
node dsh-diy-skin/test/client.test.mjs # 74 条测试
node analysis/plugin-guards.mjs # 结构守卫
node analysis/blue-audit.mjs # 没有游离的蓝色
node analysis/palette-defaults.mjs # 旋钮默认值 vs 已安装应用
node analysis/embed-consumers.mjs --check # 文档里的数字还与代码一致
node analysis/pubcheck.mjs # 发布就绪清单

许可

MIT。
预览分享卡片长什么样 ↓Chang-An2002/dsh-diy-skin
分享 · DeepSeek Harness Hub
Chang-An2002/dsh-diy-skin

上传壁纸与动图,调色并保存专属界面方案

这是你的仓库?认领条目

回到顶部