DSH Plugins Marketplace

DSH Plugins

Plugins

/

Terminal & Clients

/

nai

n

nai

Manifest valid

Nai milk-frog mascot appearance layer for the DeepSeek Harness web GUI: wears the bundled milk-frog 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.

UI (client)hasBundlePatch

nai

Nai (奶蛙) mascot appearance layer for the DeepSeek Harness Web GUI — the original milk-frog 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

Comments

Loading…

From the same category

dsh-TUI

by ccch1mneyyy

DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol

Terminal & ClientsManifest valid

★ 4k

↓ 16.5k/wk

MIT

TypeScript

Oct 4, 2026

dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tui

by strukto-ai

The World's First Virtual Terminal for AI Agents

Terminal & ClientsManifest valid

★ 3.7k

↓ 344/wk

Apache-2.0

TypeScript

Oct 4, 2026

dsh plugin --profile agent add @struktoai/mirage-dsh

by bowenliang123

The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,

Tools & CapabilitiesUI & ExperienceTerminal & ClientsManifest valid

★ 1.8k

↓ 38.5k/wk

Apache-2.0

TypeScript

Oct 4, 2026

dsh plugin --profile web add dsh-context

by huiliyi37

官方 DeepSeek Harness 的交互式终端 UI 插件:自研 ANSI 极简交互渲染、流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断、memory记忆,很丝滑的开发体验。

Terminal & ClientsManifest valid

★ 282

↓ 560/wk

Apache-2.0

TypeScript

Sep 30, 2026

dsh plugin --profile terminal add @huiliyi37/dsh-tianshu-tui

by Hilbert-beinghappy

面向 DeepSeek Harness 的 Claude Code 风格终端界面,支持 Windows、macOS 与 Linux,兼容透明终端、VS Code 主题和自定义配色。

Terminal & ClientsManifest valid

★ 197

↓ 108/wk

MIT

TypeScript

Oct 1, 2026

dsh plugin --profile web add seektty

by T-Auto

deepseek-harness Plugin Access and Implementation Standards / deepseek-harness交互生态插件规范与实施标准

Terminal & Clients

★ 81

MIT

JavaScript

Oct 3, 2026

Index only — not installable