deepseek-harness-skin

by goodpostidea-tech

2 主题与外观github收录于 08-23

一个遵循 deepseek-harness 插件规范的可发布皮肤插件:内置多种可切换皮肤(明暗成对的颜色 token 覆盖 + 自托管背景图 + 可选字体),设置页提供卡片式皮肤选择行,选择持久化到 settings 文档、刷新/重启自动恢复。

deepseek-harness-skin

安装

dsh plugin --profile web add github:goodpostidea-tech/deepseek-harness-skin

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

一个遵循 deepseek-harness 插件规范的可发布皮肤插件:内置多种可切换皮肤(明暗成对的颜色 token 覆盖 + 自托管背景图 + 可选字体),设置页提供卡片式皮肤选择行,选择持久化到 settings 文档、刷新/重启自动恢复。

皮肤预览

Coding 星夜
Coding 皮肤 星夜皮肤
像素 卡哇伊
像素皮肤 卡哇伊皮肤

像素详情

特性

  • 5 款皮肤:Coding / 海洋 / 星夜 / 像素 / 卡哇伊,每款都带明暗两套视觉,保留现有 light/dark/system 开关。
  • 完整语义覆盖:皮肤展开器把每个主题映射到 dsh 全部语义 token——应用框架、设置模态、消息气泡、代码块/语法高亮、发送框、侧栏、菜单弹层、滚动条,无一遗漏。
  • 自托管资产:背景图与字体文件经宿主半 /skin-assets 路由服务(带路径穿越防护),包内即可、无需外部 CDN。
  • 可选字体:星夜用马善政楷书、像素用缝合像素、卡哇伊用站酷庆科黄油体(均为 OFL 开源协议,自托管)。
  • 持久化:选择经 /skin-state 路由写入 settings 文档(dsh-skin.skin),刷新/重启恢复;宿主只存字符串、由浏览器校验 id,加新皮肤无需重启宿主。

皮肤列表

皮肤 风格 背景 字体
Coding 深色编辑器(白字) coding.png 照片 系统
海洋 半透明海蓝 SVG 海浪 系统
星夜 星空紫 SVG 星空 马善政楷书
像素 Game Boy 荧光绿、直角平面 SVG 像素画 缝合像素 Fusion Pixel
卡哇伊 粉色小清新 kwy.png 照片 站酷庆科黄油体

安装与挂载

  1. 构建:pnpm install && pnpm run build(tsc + tsdown,产出 lib/client.js)。
  2. 装进 profile:dsh plugin --profile web add <path-to-this-package>(或 npm 发布后 dsh plugin --profile web add @goodpostidea-tech/dsh-skin)。
  3. 挂载行:用 --patch 引用本仓库的 dsh-skin.patch.yml,或把该行并入你自己的 patch:
- insert:
    - id: skin
      name: '@goodpostidea-tech/dsh-skin'
  1. 启动:dsh --profile web --patch dsh-skin.patch.yml,打开 设置 → 通用 → 皮肤,选择任意皮肤。

皮肤机制

  • 颜色:每个皮肤定义明暗成对的 --dsw-alias-*/--dsw-specific-* token 覆盖,经 ctx.theme.overrideTokens 应用(body 内联变量层,随现有明暗开关自动切换)。
  • 背景图:包内 SVG/图片资产由宿主半 /skin-assets 路由服务;皮肤把 bg-base 覆盖为透明、面板层保持不透明度,照片/插画透出且文字可读。
  • 额外 CSS(可选字段):皮肤激活时注入 <style>(字体 @font-face、--dsw-font-family 全站覆盖、直角/去阴影等风格化)。
  • 持久化:选择经宿主半 /skin-state 路由读写(GET/PUT),落在 settings 文档的 dsh-skin.skin 字段;重启恢复。浏览器设置 RPC 对第三方命名空间不暴露(apiproxy allowlist 硬编码),故走自建路由。

开发

pnpm install        # 官方 registry(项目 .npmrc 已固定)
pnpm run build      # tsc + tsdown → lib/index.js + lib/client.js
pnpm run watch      # tsdown --watch

新增一个皮肤:在 src/skins.ts 里加一条 SkinDefinition(填一个 SurfaceSet 调色板即可自动展开成完整 token 集),并把它加进 SKIN_IDS。字体/图片放进 assets/,由 /skin-assets 路由自动服务。

已知限制与后续

  • 皮肤 id 集合在编译期固定(src/skins.ts);暂无运行时加载外部皮肤定义。
  • 宿主与浏览器错位时,旧宿主也能持久化任意 id(浏览器端校验),但视觉上只会应用浏览器认识的皮肤。
  • 背景照片(coding.png/kwy.png)体积较大,后续可考虑压缩或换用 WebP。

License

MIT

原始 README: https://github.com/goodpostidea-tech/deepseek-harness-skin/blob/main/README.md ↗