DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Nai — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
N

nai

Nai

Nai (奶蛙) mascot appearance layer for the DeepSeek Harness web GUI: wears the bundled Nai artwork as the GUI background (surface-token fade with opacity, blur, scrim and position controls), seats the matching square avatar as the sidebar and conversation brand mark, and edits it all from a Settings s

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:bauerelizabeth07139/nai#331d575b50bb9202fef5b4444434596cbc154043
READMECompatibilityVersions

Description

Nai (奶蛙) mascot appearance layer for the DeepSeek Harness web GUI: wears the bundled Nai artwork as the GUI background (surface-token fade with opacity, blur, scrim and position controls), seats the matching square avatar as the sidebar and conversation brand mark, and edits it all from a Settings section.

Compatibility and provenance

Nai is published as nai and currently resolves to version 0.2.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/4/2026

Versions

0.2.1stable
10/4/2026
0.2.0stable
10/3/2026
0.1.1stable
9/30/2026
Show 1 more versionCollapse versions
0.1.0stable
9/30/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/4/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH skill center: browse loaded skills by source (bundled / project / user / custom / runtime), enable or disable, create and delete, in a web GUI panel.Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

nai

Nai (奶蛙) mascot appearance layer for the DeepSeek Harness Web GUI — the original Nai photo, shipped inside the plugin, worn by the harness as its background, its brand mark, and its settings surface.

Nai original Nai wallpaper

What it does

  • Chat background — the shipped 16:9 artwork is mounted as a fixed, click-through layer behind the whole GUI. The shell's surface tokens (--dsw-alias-bg-base, --dsw-specific-sidebar-fill, --dsw-alias-bg-layer-1/2) are faded to the configured opacity so the wallpaper actually shows through instead of hiding behind an opaque shell, and the root background is cleared for it.
  • Controls — opacity of the shell surfaces, wallpaper blur, a dark scrim for readability, and background-position, all applied live.
  • Brand mark — the square Nai avatar replaces the logo in the sidebar and the conversation hero through the stock sidebar.brand.mark and conversation.hero.brand.mark slots.
  • Settings section — a 「奶蛙美化 Nai」 page in Settings edits everything, with previews of both artworks, and applies on save.
  • Tab icon — the browser tab favicon follows the same Nai avatar while the brand mark is on, and the stock icons come back when it is switched off.
  • Host half — serves the artwork and the config from the local DSH web server (/api/nai/...), so the browser never reaches outside, and stamps the config into the HTML so the GUI comes up already dressed.

Install

DeepSeek Harness Desktop — install it from the application, not from a shell: open Plugins in the sidebar, choose Add plugin, enter

https://github.com/bauerelizabeth07139/nai

and switch the new nai bundle on. The Desktop application boots the reserved desktop profile, so the command below installs into a different profile that the Desktop app never reads.

dsh CLI (web profile) — install it into the profile you boot:

dsh plugin --profile web add bauerelizabeth07139/nai

No git on the machine? pnpm resolves a git shorthand with git ls-remote, so an owner/repo or github: spec fails with 'git' is not recognized when git is missing from PATH. Install the published tarball over plain HTTPS instead — that path never calls git:

dsh plugin --profile web add https://codeload.github.com/bauerelizabeth07139/nai/tar.gz/main

The same address works in the Desktop application's Plugins → Add plugin dialog. Pin the revision by replacing main with a commit SHA (/tar.gz/<sha>) when you want a fixed build.

Any spec the plugin manager accepts works — a GitHub shorthand, a full git URL, or a local checkout:

dsh plugin --profile web add https://github.com/bauerelizabeth07139/nai.git
dsh plugin --profile web add C:\path\to\nai

Then open Settings → 奶蛙美化 Nai. Uninstall with dsh plugin --profile web remove nai.

Configuration

The config lives at $DSH_HOME/nai.json (default ~/.dsh/nai.json) and is edited by the Settings section; it is also reachable over HTTP.

FieldDefaultMeaning
wallpapertrueWear the Nai artwork as the GUI background
brandtrueReplace the sidebar and hero logos with the Nai avatar
surfaceOpacity60Shell surface opacity in % — lower shows more of the wallpaper, higher keeps the shell opaque (25–100)
blur0Gaussian blur applied to the wallpaper, in px (0–24)
scrim35Palette-matched wash over the wallpaper — black in the dark theme, white in the light theme — for a readable transcript, in % (0–90)
positioncenterWallpaper background-position: center, left, right, top, bottom
RouteMethodPurpose
/api/nai/configGET / PUTRead / write the config (writes are same-origin only)
/api/nai/wallpaperGETThe 16:9 background artwork
/api/nai/markGETThe square avatar artwork
/api/nai/diagGET / POSTLast browser-side diagnostic report (mount state, surface overrides, errors)

Every value is clamped server-side; unknown keys are dropped.

Artwork provenance

All three shipped images come from one original photo (nai.jpg, shipped byte for byte as given):

  • assets/nai.jpg — the original file, unmodified.
  • assets/nai-mark.jpg — a 160×160 crop of the character (head to hands) from that photo, resampled to 512×512.
  • assets/nai-wallpaper.jpg — 1536×864, the character flood-filled off its white backdrop and composited onto a light 16:9 canvas with a soft ground shadow and faint bokeh.

No AI re-rendering: the character in every shipped asset is the one from the photo.

Development

No build step, no runtime dependencies (React and @deepseek-ai/cordis are peers supplied by the harness).

npm test   # node >= 22: host routes/config/stamp tests + client DOM-stub tests
  • lib/index.js — the host half: config file, three routes, HTML boot stamp.
  • lib/client.js — the browser half: wallpaper layer, surface fade, brand-mark slots, Settings section.
  • cordis.patch.yml — the loader row that makes both halves load.

Plugin metadata

The manifest declares what the Harness and the plugin catalogs read without activating the plugin:

FieldValue
dsh.bundle.patch./cordis.patch.yml — what makes this package an installable profile bundle
dsh.clientplatform: web, so the browser half ships with the bundle
locale/en.json, locale/zh.jsoncard title and description (meta.title, meta.description)
icon./assets/nai-mark.jpg — the card artwork (SVG/PNG/JPEG/WebP, at most 256 KiB)
exports./package.json and ./locale/*.json, the two subpaths the readers resolve

Both locale files and the icon are resolved through the package specifier, so a package that keeps exports sealed without these subpaths shows up under its bare package name instead of its title.

Troubleshooting

The application does not start: ... is not valid JSON

The Harness Host reads each profile manifest as JSON before it loads any plugin, so one stray , before the opening { of a manifest makes the read throw and the application stop. The Desktop recovery action "Disable third-party plugins" cannot repair it: it re-reads the same broken manifest.

Find the damaged file — the Desktop application boots $DSH_HOME/profiles/desktop ($DSH_HOME defaults to ~/.dsh):

$home = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $env:USERPROFILE '.dsh' }
Get-ChildItem (Join-Path $home 'profiles\*\package.json'), (Join-Path $home 'profiles\*\node_modules\*\package.json') -ErrorAction SilentlyContinue |
  ForEach-Object { try { $null = Get-Content $_ -Raw | ConvertFrom-Json; "OK   $_" } catch { "BAD  $_" } }

A BAD file whose first non-space character is a comma is otherwise intact: delete that one character. Deleting the whole file also works when it is the profile manifest — the next start re-creates it from the shipped template and only the bundle selection is lost, because installed packages stay in the profile's node_modules; switch nai back on from Plugins. While the manifest is broken, neither dsh plugin nor the Plugins page can run.

中文

DeepSeek Harness 网页端的奶蛙美化形象插件 —— 一张奶蛙原图随插件一起分发,由 Harness 当作背景、品牌标识与设置项穿在身上。

功能

  • 聊天背景:内置 16:9 壁纸作为不可点击的全屏背景层;同时把界面的表面色令牌(--dsw-alias-bg-base、--dsw-specific-sidebar-fill、--dsw-alias-bg-layer-1/2)按设定透明度调淡,背景才能真正透出来,而不是被不透明的界面挡住。
  • 可调参数:界面不透明度、背景模糊、暗色遮罩、壁纸位置,改动即时生效。
  • 品牌标识:通过官方的 sidebar.brand.mark 与 conversation.hero.brand.mark 插槽,把侧栏与会话标题处的 logo 换成奶蛙方形头像。
  • 设置页:Settings 里的「奶蛙美化 Nai」页面提供两张素材预览与全部开关,保存即生效。
  • 标签页图标:品牌标识开启时,浏览器标签页小图标也换成同一张 Nai 头像;关闭后恢复官方图标。
  • 宿主半:由本地 DSH Web 服务直接提供素材与配置接口(/api/nai/...),浏览器无需访问外部网络;配置同时被盖进 HTML,页面一打开就是美化后的样子。

安装

桌面版 DeepSeek Harness:请在应用内安装——侧栏 Plugins → Add plugin,填入

https://github.com/bauerelizabeth07139/nai

然后打开 nai 这个 bundle。桌面版启动的是保留 profile desktop,而下面的命令行会把插件装进另一个 profile,桌面版不会读取它。

dsh 命令行(web profile):装进你实际启动的 profile。

dsh plugin --profile web add bauerelizabeth07139/nai

机器上没有 git? pnpm 解析 git 形式的依赖时会调用 git ls-remote,owner/repo、github: 这类写法在 PATH 里找不到 git 时会直接报 'git' 不是内部或外部命令。改成用 HTTPS 直接下载 tarball 即可,这条路径完全不需要 git:

dsh plugin --profile web add https://codeload.github.com/bauerelizabeth07139/nai/tar.gz/main

同样的地址也能填进桌面版的 Plugins → Add plugin。想要固定版本,把 main 换成提交 SHA (/tar.gz/<sha>) 即可。

随后打开 Settings → 奶蛙美化 Nai。卸载:dsh plugin --profile web remove nai。

配置

配置文件为 $DSH_HOME/nai.json(默认 ~/.dsh/nai.json),字段与取值范围见上方英文表格;服务端会做钳制并丢弃未知字段。

素材来源

三张素材全部来自同一张原图(插件内的 nai.jpg 即原文件、逐字节一致):头像由原图裁切并重采样,壁纸则把原图中的角色从白底上抠出、贴到 16:9 浅色画布上并加柔和落影。全程没有 AI 重绘。

开发

npm test   # 需要 node >= 22,无任何运行时依赖

插件元数据

manifest 里声明了 Harness 与插件目录在不激活插件的情况下会读取的字段:

字段值
dsh.bundle.patch./cordis.patch.yml —— 让这个包成为可安装 profile bundle 的关键
dsh.clientplatform: web,浏览器半随 bundle 一起分发
locale/en.json、locale/zh.json卡片标题与描述(meta.title、meta.description)
icon./assets/nai-mark.jpg —— 卡片配图(SVG/PNG/JPEG/WebP,上限 256 KiB)
exports./package.json 与 ./locale/*.json,读取方解析的这两个子路径

两个语言文件与图标都是通过包名解析的:若 exports 没有开放这两个子路径,插件在列表里 只会显示裸包名,而不是这里的标题。

疑难解答

应用无法启动,报 ... is not valid JSON

Host 在加载任何插件之前会把每个 profile manifest 当作 JSON 读取;只要某个 manifest 开头的 { 之前多出一个 ,,这次读取就会抛错,应用随之停止。桌面版 的「禁用第三方插件」恢复按钮修不好它,因为它会重新读取同一个坏文件。

定位损坏的文件(桌面版启动的是 $DSH_HOME/profiles/desktop,$DSH_HOME 默认 为 ~/.dsh):

$home = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $env:USERPROFILE '.dsh' }
Get-ChildItem (Join-Path $home 'profiles\*\package.json'), (Join-Path $home 'profiles\*\node_modules\*\package.json') -ErrorAction SilentlyContinue |
  ForEach-Object { try { $null = Get-Content $_ -Raw | ConvertFrom-Json; "OK   $_" } catch { "BAD  $_" } }

报告为 BAD 且第一个非空白字符是逗号的文件,其余内容是完好的:删掉那一个逗号 即可。如果坏的是 profile manifest 本身,直接删除整个文件也可以——下次启动会按 内置模板重建,只会丢失 bundle 的勾选记录,已安装的包仍留在 profile 的 node_modules 里,在 Plugins 页面重新打开 nai 即可。manifest 损坏期间, dsh plugin 与 Plugins 页面同样无法工作。

License

MIT