Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepSeek Harness UI Customizer Skill

License: MIT DeepSeek Harness

一个面向 DeepSeek Harness 的界面增强 Skill,用于安全、可撤销地生成主题、字体、动态背景、可拖拽/缩放浮层和受保护的对话管理入口。

Important

这是一个 Skill,不是预编译的前端主题插件。它会指导 Harness Agent 先检查当前运行时,再生成并运行 Cordis Client Plugin。这样能适配接口变化,并避免修改脆弱的 DOM 选择器。

功能

功能 说明
自定义背景 支持纯色、多层渐变和经过确认的 HTTPS 图片
动态背景 支持动画渐变、静音视频和低帧率 allowlist Canvas 效果
字体自定义 支持 UI/代码系统字体栈,以及经过确认的 HTTPS WOFF2 字体
明暗主题 为浅色与深色模式分别映射颜色、表面、文字、边框和焦点环
毛玻璃外观 支持透明度、模糊、圆角、阴影和界面密度
可移动浮层 插件自己的控制浮层可拖拽、缩放、键盘移动和复位
对话管理 当前版本安全支持“归档并隐藏”;仅在官方 API 存在时开放永久删除
无障碍保护 视口边界限制、焦点提示、对比度目标和减少动态效果
安全回滚 临时预览可通过 cordis_stop 完整撤销
持久化指导 预览通过后,可进一步打包为正式 Client Plugin 与 Bundle

本 Skill 不会通过 DOM Hack 强行移动 Harness 自带区域,也不会直接修改 JSONL、SQLite 或会话文件。只有运行时明确提供相应接口时,才会修改内置布局或永久删除对话。

环境要求

  • DeepSeek Harness Web UI
  • Git
  • Python 3.10 或更高版本,仅在校验自定义主题配置时需要
  • 若要真正生成界面预览,当前 Harness Agent 组合需要启用可选的 cordis_* 工具集

Skill 可以正常安装和被发现;如果 cordis_* 工具没有启用,它会说明缺少的能力,不会假装界面已经修改。

安装

DeepSeek Harness 当前从本地 Skill 目录发现 SKILL.md,因此需要把仓库克隆到扫描目录的直属子目录中。

Windows PowerShell

$dshHome = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $HOME '.dsh' }
$skillDir = Join-Path $dshHome 'skills\dsh-ui-customizer'
New-Item -ItemType Directory -Force (Split-Path $skillDir) | Out-Null

git clone https://github.com/ck9847/deepseek-harness-ui-customizer-skill.git $skillDir

macOS / Linux

DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$DSH_HOME/skills"
git clone https://github.com/ck9847/deepseek-harness-ui-customizer-skill.git \
  "$DSH_HOME/skills/dsh-ui-customizer"

也可以安装到单个项目:

mkdir -p .dsh/skills
git clone https://github.com/ck9847/deepseek-harness-ui-customizer-skill.git \
  .dsh/skills/dsh-ui-customizer

通常无需重启 Harness。打开一个新会话;如果斜杠菜单尚未刷新,再重启 Harness 服务。

使用

在 Harness 新会话中输入:

/dsh-ui-customizer

使用 kinetic-aurora 预设,自定义 UI 和代码字体,先创建可撤销的临时预览。

也可以直接描述想要的效果:

给界面加缓慢移动的紫蓝渐变背景和 18px 毛玻璃效果。
UI 使用 Noto Sans SC,代码使用 Cascadia Code,并保留系统字体回退。
创建一个可拖动、可缩放、支持键盘操作的外观控制浮层。
给当前会话增加“归档对话(保留日志)”按钮;不要把归档叫作删除。
先临时预览;不要移动 Harness 自带的侧栏和会话区。

Skill 会依次执行:

  1. 检查当前运行时实际提供的 Builtin、主题、Slot、字体、媒体、会话和布局接口。
  2. 规范化配置,并跳过或降级当前版本不支持的能力。
  3. 生成可审阅的 Dynamic Cordis Client Plugin。
  4. 等待用户批准后运行预览。
  5. 检查明暗模式、字体回退、动态暂停、点击穿透、窄屏、拖拽、缩放、键盘和对话操作。
  6. 返回准确的插件 ID 和回滚方法。

内置预设

预设 风格
aurora-glass 紫蓝极光、多层渐变、柔和玻璃表面
paper-frost 纸张质感、低饱和配色、轻量毛玻璃
midnight-neon 深色霓虹、青紫强调色、紧凑布局
kinetic-aurora 可暂停动画渐变、中文/代码系统字体栈
calm-orbs 实验性低帧率 Canvas 柔光粒子与静态回退

如果没有指定视觉方向,Skill 默认从静态 aurora-glass 开始;明确要求动态效果时优先使用 kinetic-aurora

自定义主题配置

配置格式见 references/theme-profile.md。原有纯色/渐变配置使用 schemaVersion: 1;任何远程图片、字体和动态背景都必须使用 schemaVersion: 2。旧版 v1 图片配置会被拒绝并要求显式升级。在交给 Agent 使用前,先运行校验器:

python scripts/normalize_theme_profile.py my-theme.json --output normalized.json

默认不会覆盖已存在的输出文件。确认需要替换时使用:

python scripts/normalize_theme_profile.py my-theme.json \
  --output normalized.json --force

校验器会拒绝重复 JSON 字段、未知字段、越界尺寸、CSS/字体/代码注入、私网资源地址、MIME/扩展不匹配、带凭据或查询参数的 URL、动态背景无静态回退,以及不安全的帧率和动态效果设置。

字体自定义

  • 默认只作用于插件自己的浮层和控件。
  • 支持分别配置 UI 字体与代码字体、系统回退、字重、行高和字距。
  • 远程字体只接受经过确认的 HTTPS WOFF2,并固定使用 font-display: swap
  • global-if-supported 只有在运行时明确暴露全局字体 token 时才生效;当前版本不能稳定承诺全应用字体替换。
  • Dynamic Plugin 不读取 C:\...\font.ttffile:;可靠的本地字体应打包进持久 Client Bundle。

动态壁纸与氛围背景

  • 动画渐变是首选,具备静态回退和减少动态效果规则。
  • 视频背景必须静音、单实例、可暂停,并处理自动播放失败。
  • Canvas 仅允许 aurora-flowsoft-orbsstarfield,预览不超过 30 FPS;不支持任意 Shader、脚本或模块。
  • 所有动态效果都必须提供 Pause/Resume 和静态 fallback。

当前测试版本没有专用 background/underlay Slot。shell.overlay 位于内容上方,因此安全实现属于低透明度“动态氛围层”,不是真正位于内容背后的壁纸。只有以后运行时检查发现正式 underlay Slot 时,Skill 才会把它作为真正壁纸实现。

远程视频、图片和字体会暴露客户端 IP、User-Agent 和访问时间;CORS、CSP、自动播放、真实性能和远程文件声明大小均不能由 JSON 校验器保证。浏览器直接预览还可能跟随 HTTP 重定向到未批准的其他来源;如必须严格限定来源或禁止重定向,应拒绝预览并改用禁用重定向的持久 Host 加载器。

对话归档与永久删除

当前测试版本只有官方 workspaces.archiveSession 能力:

  • 按钮必须显示为 归档对话(保留日志)
  • 归档会从列表和搜索中隐藏会话,但持久日志仍然保留。
  • 当前没有内置取消归档的 UI 或 RPC。
  • Skill 会显示准确标题与会话 ID,并在明确确认后调用官方服务。

当前版本没有 session.delete RPC,也没有后端无关的 SessionPersistence.delete。因此 Skill 不会伪造“永久删除”,也不会删 JSONL、改 SQLite、销毁 Session 对象或模拟 DOM 点击。只有未来运行时检查发现正式删除 API,并且它定义了运行中会话、子代理、附件、索引、级联和多标签页语义时,才会显示 永久删除对话 并要求输入式二次确认。

详细规则见 references/conversation-management.md

临时预览与持久插件

临时预览

  • 默认模式
  • 使用 Dynamic Cordis Client Plugin
  • 适合快速尝试主题、插件字体、动画渐变和低成本氛围效果
  • cordis_stop、删除定义或 Harness 重启后失效

持久插件

  • 需要明确提出并确认
  • 使用正式 Client Plugin、Bundle 和 Harness 设置服务
  • 适合保存背景、浮层位置、主题选项,并打包本地 WOFF2/媒体资源
  • 应固定并测试兼容的 Harness 版本

Skill 不会把临时预览描述成永久主题。

安全边界

  • 不读取或上传无关的 API Key、聊天内容或本地文件;自定义配置只在用户明确指定时读取。
  • 不使用哈希类名、React 内部状态或任意产品 DOM 节点。
  • 远程字体、图片和视频只允许经过确认的普通 HTTPS 公网地址。
  • 资源地址不能包含凭据、查询字符串、片段、签名密钥、IP literal 或常见私网主机名。
  • 经批准的资源地址会出现在插件审批代码中,并向资源服务器发起网络请求。
  • 动态背景必须具备静态回退、减少动态效果规则和用户可见的暂停控制。
  • 装饰层不截获鼠标事件;交互事件只属于插件自己的浮层。
  • 对话归档必须明确说明日志保留;永久删除没有官方接口时必须拒绝。
  • 主题、CSS、字体、媒体、Canvas/计时器、监听器和 Slot 注册都必须随插件停止而释放。

更详细的运行时规则见 references/dsh-ui-runtime.md

更新

Windows PowerShell:

$dshHome = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $HOME '.dsh' }
git -C (Join-Path $dshHome 'skills\dsh-ui-customizer') pull --ff-only

macOS / Linux:

git -C "${DSH_HOME:-$HOME/.dsh}/skills/dsh-ui-customizer" pull --ff-only

仓库结构

.
├── SKILL.md                         # Harness Skill 主指令
├── agents/openai.yaml               # Skill UI 元数据
├── assets/profiles/                 # 内置主题预设
├── references/conversation-management.md
├── references/dsh-ui-runtime.md     # Cordis 与 UI 安全边界
├── references/theme-profile.md      # 主题配置格式
├── scripts/normalize_theme_profile.py
└── scripts/test_normalize_theme_profile.py

验证状态

  • Skill Creator 格式校验通过
  • DeepSeek Harness 文件系统 Skill 加载烟测通过
  • 三个旧版静态预设保持原规范化输出,两个 version 2 动态/字体预设通过规范化
  • 配置校验器通过 26 项可复现的兼容、边界、远程资源和注入攻击测试
  • 独立安全审计无高、中严重问题

许可证

MIT

About

A DeepSeek Harness skill for safe themes, typography, animated backgrounds, movable UI, and guarded conversation controls.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages