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

opencode 护眼配色 FeatherHunter/dsh-opencode-palette

DeepSeek Harnessv2.1.10
FeatherHunter5 天前有提交已提供中文文档扫描:含敏感能力

🎨 为长时间编程而生:38 款 opencode 护眼配色,一键换上 DSH | 38 款护眼 opencode 主题,专为 DeepSeek Harness 打造,一键切换

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add FeatherHunter/dsh-opencode-palette
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明

展开查看检查明细 ↓

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

✓npm 包dsh-opencode-palette @ 2.1.10
✓Node 引擎要求 >=22.18.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 09:03:23

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)
查看扫描证据(共 40 处,展示前 40 条)
  • 读取本地文件
    prototypes/evangelion-extraction/validate.ts:28
    const cand = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 写入本地文件
    prototypes/generate-combo-prototypes.mjs:245
    await mkdir(dirname(OUT), { recursive: true })
  • 写入本地文件
    prototypes/generate-combo-prototypes.mjs:246
    await writeFile(OUT, html)
  • 读取本地文件
    prototypes/generate-group-boundary-68.mjs:81
    const code = readFileSync(join(ROOT, 'package', 'lib', 'client.js'), 'utf8')
  • 写入本地文件
    prototypes/generate-group-boundary-68.mjs:254
    writeFileSync(join(HERE, 'group-boundary-68.html'), H.join('\n'))
  • 写入本地文件
    prototypes/generate-prototypes.mjs:300
    await mkdir(dirname(OUT), { recursive: true })
  • 写入本地文件
    prototypes/generate-prototypes.mjs:301
    await writeFile(OUT, html)
  • 读取本地文件
    prototypes/genshin-extraction/make_preview_data.js:11
    const base = JSON.parse(readFileSync(REPO + '/docs/theme-audit/baseline.json', 'utf8'))
  • 读取本地文件
    prototypes/genshin-extraction/make_preview_data.js:12
    const light = JSON.parse(readFileSync(T + '/solved-light.json', 'utf8'))
  • 读取本地文件
    prototypes/genshin-extraction/make_preview_data.js:13
    const dark = JSON.parse(readFileSync(T + '/solved-dark.json', 'utf8'))
  • 写入本地文件
    prototypes/genshin-extraction/make_preview_data.js:34
    writeFileSync(T + '/preview-data.json', JSON.stringify(out, null, 1))
  • 读取本地文件
    prototypes/genshin-extraction/solver.ts:245
    const ORIG = JSON.parse(readFileSync(new URL('./seed-palette.json', import.meta.url), 'utf8')) as any
  • 写入本地文件
    prototypes/genshin-extraction/solver.ts:349
    writeFileSync(new URL('./solved-' + mode + '.json', import.meta.url), JSON.stringify(out, null, 1))
  • 执行外部命令来自配置/变量
    prototypes/genshin-extraction/validate.ts:28
    execFileSync(process.execPath, [join(REPO, 'scripts', 'audit-themes.ts')], { cwd: REPO, stdio: 'ignore' })
  • 读取本地文件
    prototypes/genshin-extraction/validate.ts:29
    const base = JSON.parse(readFileSync(join(REPO, 'docs', 'theme-audit', 'baseline.json'), 'utf8'))
  • 读取本地文件
    prototypes/genshin-extraction/validate.ts:60
    const disk = JSON.parse(readFileSync(join(REPO, 'src', 'custom-presets', id + '.json'), 'utf8'))
  • 读取本地文件
    prototypes/genshin-extraction/validate.ts:61
    const solved = JSON.parse(readFileSync(join(HERE, 'solved-' + mode + '.json'), 'utf8'))
  • 读取本地文件
    prototypes/harry-potter-extraction/validate.ts:21
    const cand = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 读取本地文件
    prototypes/hello-kitty-extraction/validate.ts:15
    const preset = JSON.parse(readFileSync(PRESET, 'utf8')) as { colors: Record<string, string> }
  • 读取本地文件
    prototypes/hello-kitty-extraction/validate.ts:16
    const pal = JSON.parse(readFileSync(PALETTE, 'utf8')) as { colors: Record<string, string> }
  • 读取本地文件
    prototypes/mario-extraction/validate.ts:20
    const PAL = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 读取本地文件
    prototypes/marvel-extraction/validate.ts:21
    const cand = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 读取本地文件
    prototypes/pokemon-extraction/validate.ts:20
    const cand = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 读取本地文件
    prototypes/star-wars-extraction/validate.ts:21
    const cand = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 读取本地文件
    prototypes/transformers-extraction/validate.ts:21
    const cand = JSON.parse(readFileSync(join(HERE, 'palette.json'), 'utf8'))
  • 写入剪贴板
    runtime/client.ts:1504
    nav.clipboard.writeText(text).then(done, function () { fallbackCopy(text, done) })
  • 写入剪贴板
    runtime/custom-editor.ts:494
    const p = nb.clipboard.writeText(txt)
  • 写入本地文件
    runtime/host.ts:94
    await mkdir(join(cacheDir), { recursive: true })
  • 读取本地文件
    runtime/host.ts:96
    if (existsSync(file)) return
  • 读取本地文件
    runtime/host.ts:110
    const manifest: { version?: unknown } = JSON.parse(readFileSync(join(PACKAGE_DIR, 'package.json'), 'utf8'))
  • 读取本地文件
    runtime/host.ts:120
    return JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), 'event-list.json'), 'utf8'))
  • 写入本地文件
    runtime/host.ts:276
    await mkdir(dir, { recursive: true })
  • 读取本地文件
    runtime/host.ts:285
    files = (await readdir(dirPath)).filter((n) => n.endsWith('.json')).sort()
  • 读取本地文件
    runtime/host.ts:298
    text = await readFile(full, 'utf8')
  • 读取本地文件
    runtime/host.ts:306
    mtime = (await stat(full)).mtime.toISOString()
  • 写入本地文件
    runtime/host.ts:338
    await writeFile(tmp, JSON.stringify(normalized, null, 2) + '\n', 'utf8')
  • 写入本地文件
    runtime/host.ts:339
    await rename(tmp, target)
  • 删除本地文件
    runtime/host.ts:341
    try { await unlink(tmp) } catch (ignored) { }
  • 删除本地文件
    runtime/host.ts:355
    await unlink(join(dirPath, id + '.json'))
  • 写入本地文件
    runtime/host.ts:427
    try { await mkdir(logCacheDir, { recursive: true }) } catch (e) { }
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

3 张 · 点击查看大图

功能亮点

  • 38款护眼配色
  • 一键换配色

README

由 DeepSeek 最新模型翻译生成
🎨 dsh-opencode-palette 🌐 · English 38 款配色,一键给 DSH 换装。 38 themes for DSH, one click. 你的 ⭐ 是我夜空中最亮的星。 SHOWCASE真实效果 本插件为您有更好的DSH体验而生💗 | 主界面(opencode 主题) | 设置面板(38 款按色系分组) | | OpenCode调色板 — 主界面(opencode 主题) | OpenCode调色板 — 设置面板(按色系分组) | | 自定义编辑器(37 个颜色) | IP 主题胶囊:原神(浅色) | | OpenCode调色板 — 自定义编辑器(37 个颜色) | OpenCode调色板 — IP 主题胶囊:原神 | | IP 主题胶囊:库洛米(浅色) | IP 主题胶囊:哆啦A梦(浅色) | | OpenCode调色板 — IP 主题胶囊:库洛米 | OpenCode调色板 — IP 主题胶囊:哆啦A梦 | | IP 主题胶囊:哈利波特(深色) | IP 主题胶囊:赛博朋克2077(深色) | | OpenCode调色板 — IP 主题胶囊:哈利波特 | OpenCode调色板 — IP 主题胶囊:赛博朋克2077 | | 经典主题:德古拉(深色) | IP 主题胶囊:龙珠(浅色) |
展开完整文档(README 剩余 1 节)
🎨 dsh-opencode-palette

🌐 · English

38 款配色,一键给 DSH 换装。

38 themes for DSH, one click.

你的 ⭐ 是我夜空中最亮的星。

SHOWCASE真实效果

本插件为您有更好的DSH体验而生💗

| 主界面(opencode 主题) | 设置面板(38 款按色系分组) |
| OpenCode调色板 — 主界面(opencode 主题) | OpenCode调色板 — 设置面板(按色系分组) |

| 自定义编辑器(37 个颜色) | IP 主题胶囊:原神(浅色) |
| OpenCode调色板 — 自定义编辑器(37 个颜色) | OpenCode调色板 — IP 主题胶囊:原神 |

| IP 主题胶囊:库洛米(浅色) | IP 主题胶囊:哆啦A梦(浅色) |
| OpenCode调色板 — IP 主题胶囊:库洛米 | OpenCode调色板 — IP 主题胶囊:哆啦A梦 |

| IP 主题胶囊:哈利波特(深色) | IP 主题胶囊:赛博朋克2077(深色) |
| OpenCode调色板 — IP 主题胶囊:哈利波特 | OpenCode调色板 — IP 主题胶囊:赛博朋克2077 |

| 经典主题:德古拉(深色) | IP 主题胶囊:龙珠(浅色) |
| OpenCode调色板 — 经典主题:德古拉 | OpenCode调色板 — IP 主题胶囊:龙珠 |

INSTALL三步上手

① 还没装 DSH CLI 先装(已装跳过)
npm install -g @deepseek-ai/dsh

② 把插件装进你的 profile
dsh plugin --profile web add dsh-opencode-palette

③ 装完重启 DSH(或刷新浏览器页面)

① 装好插件。

② 打开「OpenCode调色板」。 设置 → 插件 → OpenCode调色板

③ 挑一个喜欢的主题。

DEMO基础使用演示

基础使用演示:点开看 7 段操作视频

安装插件

跟着视频一次装好插件并重启生效。

https://github.com/user-attachments/assets/3332e166-ecdc-4a3a-877b-154a2614dd03

1. 跑 dsh plugin --profile web add dsh-opencode-palette 把插件装进你的 profile。
2. 重启 DSH(或刷新浏览器页面)。
3. 打开「OpenCode调色板」,确认面板能打开。

设置字体字号

分清等宽与常规两种字体,字号 11–24 px 随手调。

https://github.com/user-attachments/assets/f6c17168-5b39-4a12-bf9b-f819db681055

1. 打开设置面板,找到字体与字号两处。
2. 等宽把整个界面换成等宽字,常规只让代码块用等宽。
3. 字号在 11–24 px 之间拖到看着舒服为止。

选择主题

一键挑中喜欢的主题,界面立即换装。

https://github.com/user-attachments/assets/b425fed9-1aab-43c3-ab70-726de38a9c1a

1. 打开「OpenCode调色板」,按色系浏览 38 款配色。
2. 点中喜欢的那一款,界面立即换装。
3. 不满意再点另一款,随时可换。

新增自定义主题

37 个颜色逐个调,右边预览实时联动,存成专属胶囊。

https://github.com/user-attachments/assets/349dba7f-4cdb-4281-b71c-c39c6f9dfccd

1. 点新增,37 个颜色逐个调,右边预览实时联动。
2. 点预览里的元素,左边对应那行会滚到中间并打开取色器。
3. 存好后胶囊落在 <DSH_HOME>/opencode-palette/custom-themes/ 里。

编辑自定义主题

回来改存好的胶囊,改完界面即时换上新配色。

https://github.com/user-attachments/assets/4ff48986-142f-404b-bb1b-70d948d95ba8

1. 打开存好的自定义主题,进编辑。
2. 改要动的颜色,预览里即时看效果。
3. 保存,界面即时换上新的配色。

删除自定义主题

删掉不想要的胶囊,删前确认,删后可以重建。

https://github.com/user-attachments/assets/5f2e42bb-7e5b-4bf2-b61a-600df5e47ba2

1. 选中不想要的自定义主题,点删除。
2. 确认删除,胶囊从列表里消失。
3. 后悔了照新增那条重建一个。

AI 编辑自定义主题

一句话让 AI 改色,不用逐个手调。

https://github.com/user-attachments/assets/542f3083-eb7e-4b60-8d1a-a142ef9a87e9

1. 打开自定义主题的 AI 编辑入口。
2. 一句话说清想要的配色,比如“暖一点的暗色”。
3. 看预览,满意就保存,不满意再说一句。

EXTENSIONSOpenCode 主题之外提供的功能

| 能力 | 说明 |
| IP 主题胶囊 | 预置 25 套:原神、库洛米、哆啦A梦、哈利波特、赛博朋克2077、宝可梦、龙珠……开箱即用,挑一套喜欢的当配色基底直接用。 |
| 打造专属胶囊 | 37 个颜色逐个调,右边是微缩的 DSH 预览:点预览里的元素,左边对应那行会滚到中间并打开取色器;鼠标划过左边的颜色,右边预览里那个元素会亮起一圈。存好的胶囊落在 <DSH_HOME>/opencode-palette/custom-themes/。 |
| 字体与字号 | 字体独立于颜色:等宽(终端风)把整个界面换成等宽字,常规(界面风)只让代码块用等宽;字号 11–24 px,代码字体可以直接从本机已装字体里挑。 |

UPGRADE升级

升级到最新版(当前 2.1.10):web 与 desktop 两个 profile 各跑一条
dsh plugin --profile web update dsh-opencode-palette
dsh plugin --profile desktop update dsh-opencode-palette
需要钉回指定版本(把版本号换成你要的):
dsh plugin --profile web add dsh-opencode-palette@2.1.10
dsh plugin --profile desktop add dsh-opencode-palette@2.1.10

「设置 → 插件 → OpenCode调色板」 → 检查更新

MORE作者的其他作品

喜欢这个插件的话,这几个你可能也用得上:

dsh-prompt —— 经常反复重复的模板化提示词,存成自定义模板,选中后直接注入,不再需要耗费精力。

dsh-mattpocock-skills-deck —— 近 30 万 star 的 mattpocock/skills 整套预置好(27 个技能),装好即用。

dsh-im-companion —— 给 dsh-im 加了「助理」和「家」的概念。

ilife —— 爱生活:居家生活套件,记账、运动、饮食、体重、食谱、物品管理、作息规划、备忘录等。⚠️建设中⚠️待正式发布

THANKS感谢贡献者

感谢每一位提交 Issue、PR 与参与讨论的朋友,是你们让这个插件一点点变好。

| 贡献者 | 致敬 | 贡献 |
| @oopsdoes | 🌹🌹 | #46 #55 |
| @insp63 | 🌹 | #124 |
| @gitwch1 | 🌹 | #73 |
| @anci3ntr0ck | 🌹 | #73 |
| @SRKBob | 🌹 | #43 |
| @anupamme | 🌹 | #32 |
| @Number444 | 🌹 | #12 |
| @xiSage | 🌹 | #11 |
| @the-beating-light-of-the-nail | 🌹 | #3 |

也感谢在评论区与讨论区留下想法的每一位朋友。如果你也遇到了问题或有新想法,欢迎直接提 Issue 或发起讨论。

CONNECT反馈与联系

👏欢迎提交 PR、ISSUE。星星之火可以燎原🔥有任何建议、意见、想法、吐槽、idea都可以进群交流。

飞书群(主)QQ群(新)微信群(新)
预览分享卡片长什么样 ↓FeatherHunter/dsh-opencode-palette
分享 · DeepSeek Harness Hub
FeatherHunter/dsh-opencode-palette

🎨 为长时间编程而生:38 款 opencode 护眼配色,一键换上 DSH | 38 款护眼 opencode 主题,专为 DeepSeek Harness 打造,一键切换

这是你的仓库?认领条目

回到顶部