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

鲸鱼娘皮肤中心 wryyyds7/dsh-web-ui

DeepSeek Harness
wryyyds713 天前有提交已提供中文文档扫描:含敏感能力

DeepSeek Harness Web GUI 皮肤集合 — 鲸鱼娘传说定制版(复制自 zhu1090093659/dsh-web-ui)

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add wryyyds7/dsh-web-ui
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

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

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-web-ui(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 12:53:41

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

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

读写/删除本地文件
查看扫描证据(共 48 处,展示前 42 条)
  • 读取本地文件
    packages/dsh-git-graph/src/index.ts:33
    canonical = await realpath(path)
  • 删除本地文件递归
    packages/dsh-pet/src/persist.test.ts:28
    rmSync(dir, { recursive: true, force: true })
  • 写入本地文件
    packages/dsh-pet/src/persist.test.ts:35
    writeFileSync(join(dir, 'pet.json'), '{ not json', 'utf8')
  • 删除本地文件递归
    packages/dsh-pet/src/persist.test.ts:38
    rmSync(dir, { recursive: true, force: true })
  • 删除本地文件递归
    packages/dsh-pet/src/persist.test.ts:54
    rmSync(dir, { recursive: true, force: true })
  • 写入本地文件
    packages/dsh-pet/src/persist.test.ts:61
    writeFileSync(join(dir, 'pet.json'), JSON.stringify({
  • 删除本地文件递归
    packages/dsh-pet/src/persist.test.ts:81
    rmSync(dir, { recursive: true, force: true })
  • 写入本地文件
    packages/dsh-pet/src/persist.test.ts:88
    writeFileSync(join(dir, 'pet.json'), JSON.stringify({
  • 删除本地文件递归
    packages/dsh-pet/src/persist.test.ts:93
    rmSync(dir, { recursive: true, force: true })
  • 读取本地文件
    packages/dsh-pet/src/persist.ts:81
    const raw = readFileSync(join(dir, 'pet.json'), 'utf8')
  • 写入本地文件
    packages/dsh-pet/src/persist.ts:123
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    packages/dsh-pet/src/persist.ts:126
    writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf8')
  • 写入本地文件
    packages/dsh-pet/src/persist.ts:127
    renameSync(tmp, target)
  • 读取本地文件
    packages/dsh-pet/src/routes.ts:152
    return readFile(join(packageRoot, 'assets', 'whale', file.name)).then((body) => {
  • 读取本地文件
    packages/dsh-remote-web-ui/src/mobile-routes.ts:62
    if (!existsSync(path)) {
  • 读取本地文件
    packages/dsh-remote-web-ui/src/mobile-routes.ts:67
    const body = await readFile(path, 'utf8')
  • 读取本地文件
    packages/dsh-remote-web-ui/src/tunnel.ts:55
    if (existsSync(bin)) return
  • 读取本地文件
    packages/dsh-ssh/src/engine.ts:97
    if (keyPath === undefined || !existsSync(keyPath)) {
  • 读取本地文件
    packages/dsh-ssh/src/engine.ts:100
    config.privateKey = readFileSync(keyPath, 'utf8')
  • 读取本地文件
    packages/dsh-ssh/src/engine.ts:152
    for (const name of readdirSync(dir)) {
  • 读取本地文件
    packages/dsh-ssh/src/engine.ts:154
    const stat = statSync(full)
  • 读取本地文件
    packages/dsh-ssh/src/engine.ts:492
    if (!existsSync(local)) throw new Error(`local path not found: '${localPath}'`)
  • 读取本地文件
    packages/dsh-ssh/src/engine.ts:495
    const stat = statSync(local)
  • 写入本地文件
    packages/dsh-ssh/src/engine.ts:529
    if (!existsSync(dirname(local))) mkdirSync(dirname(local), { recursive: true })
  • 写入本地文件
    packages/dsh-ssh/src/routes.ts:115
    mkdirSync(staging, { recursive: true })
  • 写入本地文件
    packages/dsh-ssh/src/routes.ts:368
    const sink = createWriteStream(tmp)
  • 删除本地文件
    packages/dsh-ssh/src/routes.ts:377
    void unlink(tmp).catch(() => undefined)
  • 删除本地文件
    packages/dsh-ssh/src/routes.ts:400
    await unlink(tmp).catch(() => undefined)
  • 读取本地文件
    packages/dsh-ssh/src/routes.ts:429
    const source = createReadStream(tmp)
  • 删除本地文件
    packages/dsh-ssh/src/routes.ts:444
    await unlink(tmp).catch(() => undefined)
  • 读取本地文件
    packages/dsh-ssh/src/store.ts:103
    keyReady = existsSync(expandHome(entry.auth.keyPath))
  • 读取本地文件
    packages/dsh-ssh/src/store.ts:237
    if (!existsSync(configPath)) return { parsed: 0, added: 0, skipped: 0, skippedNames: [] }
  • 读取本地文件
    packages/dsh-ssh/src/store.ts:238
    const lines = readFileSync(configPath, 'utf8').split(/ ? /)
  • 读取本地文件
    packages/dsh-ssh/src/store.ts:310
    if (!existsSync(this.path)) return { version: FORMAT_VERSION, hosts: [] }
  • 读取本地文件
    packages/dsh-ssh/src/store.ts:312
    const parsed = JSON.parse(readFileSync(this.path, 'utf8')) as StoreFile
  • 写入本地文件
    packages/dsh-ssh/src/store.ts:322
    renameSync(this.path, `${this.path}.corrupt-${Date.now()}`)
  • 读取本地文件
    packages/dsh-ssh/src/store.ts:330
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    packages/dsh-ssh/src/store.ts:330
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    packages/dsh-ssh/src/store.ts:334
    writeFileSync(tmp, JSON.stringify(file, null, 2) + '\n', { encoding: 'utf8', mode: 0o600 })
  • 写入本地文件
    packages/dsh-ssh/src/store.ts:335
    renameSync(tmp, this.path)
  • 读取本地文件
    shared/tsdown.client.ts:270
    const source = await readFile(fileId)
  • 读取本地文件
    shared/tsdown.client.ts:316
    if (existsSync(emitted)) return emitted
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

6 张 · 点击查看大图

功能亮点

  • WebGUI皮肤集合
  • 鲸鱼娘传说定制版

README

由 DeepSeek 最新模型翻译生成
dsh-web-ui · DSH Web UI dsh-web-ui dsh-web-ui 是 DeepSeek Harness(DSH)Web UI 的插件与皮肤集合:任务看板、Git 图谱、右侧面板、移动端远程、远程连接、鲸鱼娘宠物、实时令牌统计,以及皮肤中心。所有插件既可独立安装,也可通过聚合包一次装齐。 DSH Web UI 主界面 功能插件 任务看板 在侧边栏点击「任务看板」进入。任务按五列状态组织:待规划、待办、进行中、已完成、已失败。点击卡片上的「执行」,任务将由真实的 DSH 智能体会话执行,完成后状态自动回写;需要复盘时,可直接跳转到执行会话查看完整过程。 任务支持定时执行:在详情中配置 cron 表达式(如每天 23:00 自动升级 DSH、每周一 09:00 生成周报),到点自动开工,无需人工值守。 | 多列看板 | 定时执行 | | 任务看板 | 任务定时执行 | Git 图谱 输入框上方的分支选择器,支持切换分支与查看提交历史;Git 图谱将分支泳道与提交历史可视化,仓库再大也能顺着时间线快速定位变更。
展开完整文档(README 剩余 1 节)
dsh-web-ui · DSH Web UI

dsh-web-ui

dsh-web-ui 是 DeepSeek Harness(DSH)Web UI 的插件与皮肤集合:任务看板、Git 图谱、右侧面板、移动端远程、远程连接、鲸鱼娘宠物、实时令牌统计,以及皮肤中心。所有插件既可独立安装,也可通过聚合包一次装齐。

DSH Web UI 主界面

功能插件

任务看板

在侧边栏点击「任务看板」进入。任务按五列状态组织:待规划、待办、进行中、已完成、已失败。点击卡片上的「执行」,任务将由真实的 DSH 智能体会话执行,完成后状态自动回写;需要复盘时,可直接跳转到执行会话查看完整过程。

任务支持定时执行:在详情中配置 cron 表达式(如每天 23:00 自动升级 DSH、每周一 09:00 生成周报),到点自动开工,无需人工值守。

| 多列看板 | 定时执行 |
| 任务看板 | 任务定时执行 |

Git 图谱

输入框上方的分支选择器,支持切换分支与查看提交历史;Git 图谱将分支泳道与提交历史可视化,仓库再大也能顺着时间线快速定位变更。

Git 图谱

右侧面板

项目会话打开时,聊天区右侧出现「预览」与「文件/变更」两块面板:

- 文件树:浏览工作目录,点击文件即在预览面板打开,整行点击展开文件夹,支持按文件名搜索定位;
- 预览:多标签预览 markdown、HTML、代码、diff、CSV、PDF、Office、图片与文本等格式,支持源码 / 预览切换、分屏编辑与保存;
- 变更(SCM):真实 git 变更面板,支持 stage / unstage / discard;
- 面板宽度可拖拽调整,双击把手复位默认宽度,折叠状态与宽度按项目持久化;
- 8 款皮肤全部适配右侧面板,换肤后面板随之融入主题。

右侧面板

鲸鱼娘宠物

一只常驻界面的鲸鱼娘宠物,会跟随智能体的状态切换动画:思考、等待、工作、庆祝。点击可互动(摸头),投喂小鱼干可提升亲密度,陪伴度从幼鲸一路成长至「深海羁绊」。支持自定义名称、自由拖动位置,也可随时隐藏。

| 陪伴工作 | 互动面板 |
| 鲸鱼娘宠物 | 宠物互动面板 |

实时令牌统计

在输入框下方实时显示生成速度(TPS)、LLM 耗时、上下文占用、缓存命中率以及输入 / 输出 token 数,每次生成的用量一目了然。

实时令牌统计

移动端远程

侧边栏底部的手机图标打开配对面板:扫码配对(或复制链接)后,手机进入独立的移动端界面,远程控制当前 dsh web 工作区——查看与新建会话、收发消息、切换模型与思考强度、调整权限预设,全部与桌面端同步。配对令牌一次性且限时,「停止」可随时吊销所有设备;二维码默认走局域网,也可开启 cloudflared 公网隧道,让手机在任意网络配对。

实时消息与隧道:移动端依赖 SSE(Server-Sent Events)实时接收消息。Cloudflare quick tunnel(trycloudflare.com)与 Tailscale Serve 不透传 SSE,普通 HTTP 正常、实时推送不可达;此场景下插件自动降级为轮询,可正常收发消息,仅新消息可能延迟数秒到达。需要即时推送请使用支持 SSE 的隧道(Cloudflare named tunnel、自定义 TCP 端口转发等)。

| 工作区列表 | 会话列表与新建会话 |
| 移动端工作区 | 移动端会话列表 |
| 聊天(折叠的深度思考与工具调用) | 模型与思考强度选择 |
| 移动端聊天 | 模型选择 |

远程连接

侧边栏「SSH」入口打开远程运维面板。主机支持密钥 / 密码认证,可从 ~/.ssh/config 一键导入;配置统一存于 ~/.dsh/dsh-ssh.json。对已配置主机可执行真实操作:

- Web 终端:xterm.js 远程终端,实时输出、随窗口自适应;
- 文件传输:SFTP 上传 / 下载,带进度条与远程目录浏览;
- 端口转发:本地隧道直达远程内网服务(数据库、API、管理后台),仅监听 127.0.0.1;
- 集群执行:一条命令并发跑多台主机,按别名 / 环境 / 标签过滤;
- Agent 直连:Agent 与面板共享同一份主机配置,对话中直接说「连一下 xxx 看看状态」即可由智能体执行远程命令。

设置中心

全部插件的开关与参数统一收纳于「设置 > 插件配置」,修改即时生效。

插件配置中心

皮肤

皮肤中心提供 8 款皮肤,均支持先试穿再应用:试穿即时生效、退出完全还原,确认满意后一键应用。

皮肤中心

Windows XP(Luna)

还原 Luna 经典界面:蓝色渐变窗口条、绿色「开始」按钮、Bliss 蓝天桌面,全局直角风格。

Windows XP 皮肤

Minecraft 方块世界

以《我的世界》主界面为灵感:像素全景天空盒在界面后方缓慢旋转,按钮为灰石板样式,输入框为木告示牌样式。

Minecraft 皮肤

Blue Fantasy 蓝色幻想

鲸鱼插画铺在半透明面板之下,靛蓝色调色板贯穿全局,暗色主题下效果尤为突出。

Blue Fantasy 暗色

鲸吟(Whale Song)

深海鲸语女神主题:无文字纯氛围背景画(蓝发女神与鲸群居左、冰蓝星座网格与金色细线点缀、右侧大量留白)垫在半透明面板之下,冰蓝 / 浅青 / 深海军蓝 / 钴蓝冷色体系贯穿全局,暗色变体为深海夜航调。

鲸吟 亮色 · 鲸吟 暗色

交易终端(Trading Terminal)

带实时行情的炒股皮肤:顶栏滚动跑马灯(A股 / 港股 / 美股 / 指数 / 加密 / 外汇,红涨绿跌),标题栏行情快签,状态栏展示 A股 / 港股 / 美股交易时段与港美股指数。已安装 dsh-fun-ticker 时跑马灯跟随你的自选列表(同源代理取数),已安装 dsh-longbridge 时指数格渲染长桥券商快照;两个插件都没装也能直接走公共行情源(腾讯 / 币安 / Frankfurter)独立工作,所有路径失败都安全降级为 --。

交易终端 亮色 · 交易终端 暗色

其余三款:QQ2008 怀旧版(水晶蓝配色与企鹅元素)、同花顺风格(行情元素融入界面)、龙的传人(朱砂龙印主题)。

安装

DSH 插件通过 dsh plugin 命令安装进 profile(dsh web 对应 web profile)。推荐直接安装聚合包 dsh-web-ui-all——一个包装齐全部功能插件与皮肤;只想用皮肤则装 dsh-skins。

方式一:从 npm 安装(推荐)

插件已发布到 npm(@linxin666 scope),一条命令装齐:

dsh plugin --profile web add @linxin666/dsh-web-ui-all

装完重启 dsh web,侧边栏即可看到全部插件入口。只想用皮肤则装 @linxin666/dsh-skins。

首次安装若提示 ERR_PNPM_IGNORED_BUILDS(pnpm 拒绝依赖的构建脚本),按提示把 cloudflared / cpu-features / ssh2 加入 profile 的 pnpm-workspace.yaml allowBuilds 后重新执行即可。

方式二:从 GitHub 仓库安装(改代码调试)

插件包已在 npm 发布,仓库安装仅供开发调试(需要 Node.js >= 22 与 pnpm):

1. 克隆仓库
git clone https://github.com/zhu1090093659/dsh-web-ui.git
cd dsh-web-ui

2. 安装依赖并构建
pnpm install
pnpm -r build

3. 把全家桶链接进 web profile(推荐,先链接全部子包再注册聚合包)
node scripts/link-profile.mjs
dsh plugin --profile web add link:$(pwd)/packages/dsh-web-ui-all

4. 重启 dsh web,侧边栏即可看到全部插件入口
dsh web

只想用皮肤:第 3 步只执行 link-profile 后安装 packages/dsh-skins 即可。

注意:profile 目录不是 pnpm workspace,聚合包里的 workspace:* 依赖会回退拉取 npm 已发布版本;若 npm 版本滞后或损坏会出现「宿主已挂载但 UI 不显示」,此时先用 node scripts/link-profile.mjs 让全部子包走仓库构建产物。

单独安装某个插件

不想装全家桶时,可单独安装任意插件(npm 已发布,直接用包名):

dsh plugin --profile web add @linxin666/dsh-client-ui-task-board # 任务看板
dsh plugin --profile web add @linxin666/dsh-ssh # 远程连接(SSH)
dsh plugin --profile web add @linxin666/dsh-pet # 鲸鱼娘宠物

验证与卸载

安装成功后重启 dsh web,侧边栏出现对应入口即生效;也可用 dsh --profile web --dump-config 确认插件配置层已挂载。若侧边栏没有新入口,多半是安装后没有重启 dsh web。

卸载:dsh plugin --profile web remove @linxin666/dsh-web-ui-all,然后重启 dsh web。

技术细节见 docs/plugins.md。

来源与版权

| 包 | 来源 | 版权 |
| dsh-task-board / dsh-git-graph / dsh-aionui-panel / dsh-pet / dsh-remote-web-ui / dsh-live-stats / dsh-web-ui-settings / dsh-skins / dsh-web-ui-all / skins | 作者 zhu1090093659 个人开发 | BSD-3-Clause(zhu1090093659) |

迁入第三方代码必须保留 LICENSE 与署名;活跃且有上游的第三方优先 fork 或依赖引用,不搬代码。

友情链接

- https://linux.do

Star 历史
预览分享卡片长什么样 ↓wryyyds7/dsh-web-ui
分享 · DeepSeek Harness Hub
wryyyds7/dsh-web-ui

DeepSeek Harness Web GUI 皮肤集合 — 鲸鱼娘传说定制版(复制自 zhu1090093659/dsh-web-ui)

这是你的仓库?认领条目

回到顶部