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

大鱼桌面端 turtle2209/Bigfish

DeepSeek Harnessv1.0.2
turtle220969 天前有提交已提供中文文档扫描:含敏感能力

Bigfish —— DeepSeek Harness 的第三方桌面端,内置 Node 运行时,双击即用,附带桌面萌宠。

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

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

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

状态速览

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

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

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

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✓npm 包bigfish @ 1.0.2
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 15:36:03

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 82 处,展示前 46 条)
  • 读取本地文件
    main.js:91
    settings = { ...DEFAULT_SETTINGS, ...JSON.parse(fs.readFileSync(settingsPath(), 'utf8')) };
  • 写入本地文件
    main.js:98
    fs.mkdirSync(path.dirname(settingsPath()), { recursive: true });
  • 写入本地文件
    main.js:99
    fs.writeFileSync(settingsPath(), JSON.stringify(settings, null, 2));
  • 发起网络请求
    main.js:150
    const req = http.get(`${base}/`, (res) => {
  • 执行外部命令固定命令
    main.js:175
    spawn('powershell', ['-NoProfile', '-WindowStyle', 'Hidden', '-Command', script], { stdio: 'ignore', windowsHide: true });
  • 执行外部命令固定命令
    main.js:177
    spawn('pkill', ['-f', 'dsh/lib/bin.js'], { stdio: 'ignore' });
  • 写入本地文件
    main.js:196
    logStream = fs.createWriteStream(logPath, { flags: 'a' });
  • 执行外部命令来自配置/变量
    main.js:210
    dshProcess = spawn(rt.command, args, {
  • 执行外部命令固定命令
    main.js:225
    spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true });
  • 读取本地文件
    main.js:308
    if (fs.existsSync(uninstaller)) {
  • 执行外部命令来自配置/变量
    main.js:310
    spawn(uninstaller, [], { detached: true, stdio: 'ignore' });
  • 发起网络请求
    main.js:336
    const req = https.get(url, { timeout: 10000 }, (res) => {
  • 读取本地文件
    main.js:425
    entries = fs.readdirSync(dir, { withFileTypes: true });
  • 读取本地文件
    main.js:436
    const t = fs.statSync(full).mtimeMs;
  • 读取本地文件
    main.js:480
    for (const p of candidates) if (fs.existsSync(p)) return p;
  • 读取本地文件
    main.js:490
    for (const p of candidates) if (fs.existsSync(p)) return p;
  • 写入本地文件
    main.js:769
    fs.mkdirSync(path.dirname(affinityFile()), { recursive: true });
  • 写入本地文件
    main.js:770
    fs.writeFileSync(affinityFile(), JSON.stringify(affinity, null, 2), 'utf8');
  • 写入本地文件
    main.js:899
    fs.appendFileSync(file, `[${new Date().toISOString()}] [${level}] ${message}\n`);
  • 删除本地文件
    main.js:927
    fs.rmSync(home, { recursive: true, force: true });
  • 删除本地文件
    main.js:959
    fs.rmSync(path.join(home, 'profiles'), { recursive: true, force: true });
  • 删除本地文件
    main.js:1095
    try { fs.unlinkSync(path.join(app.getPath('userData'), 'custom-background.jpg')); } catch { }
  • 执行外部命令固定命令
    main.js:1174
    const child = spawn('reg', args, { stdio: 'ignore', windowsHide: true });
  • 发起网络请求
    main.js:1578
    const res = await fetch(url, { signal: controller.signal });
  • 删除本地文件
    main.js:1652
    fs.rmSync(path.join(home, 'profiles'), { recursive: true, force: true });
  • 删除本地文件
    main.js:1654
    fs.rmSync(home, { recursive: true, force: true });
  • 读取本地文件
    afterPack.js:19
    if (!fs.existsSync(rcedit) || !fs.existsSync(icon)) {
  • 执行外部命令来自配置/变量
    afterPack.js:24
    execFileSync(
  • 写入本地文件
    download-electron.js:11
    fs.mkdirSync('D:\\PROJECT\\deepseekharness\\.electron-cache', { recursive: true });
  • 写入本地文件
    download-electron.js:17
    const out = fs.createWriteStream(dest);
  • 发起网络请求
    download-electron.js:18
    const req = https.get(url, { headers: { 'User-Agent': 'electron-download' } }, (res) => {
  • 读取本地文件
    download-electron.js:42
    const size = fs.statSync(dest).size;
  • 写入本地文件
    download-node.js:10
    fs.mkdirSync('D:\\PROJECT\\deepseekharness\\.electron-cache', { recursive: true });
  • 写入本地文件
    download-node.js:19
    const out = fs.createWriteStream(dest);
  • 发起网络请求
    download-node.js:25
    const req = https.get(url, { headers: { 'User-Agent': 'node-download' } }, (res) => {
  • 读取本地文件
    download-node.js:60
    resolve(fs.statSync(dest).size);
  • 读取本地文件
    download-node.js:77
    if (fs.existsSync(dest)) fs.unlinkSync(dest);
  • 写入本地文件
    make-icons.js:14
    fs.mkdirSync(buildDir, { recursive: true });
  • 写入本地文件
    make-icons.js:15
    fs.mkdirSync(assetsDir, { recursive: true });
  • 写入本地文件
    make-icons.js:32
    fs.writeFileSync(path.join(buildDir, 'icon.png'), png512);
  • 写入本地文件
    make-icons.js:33
    fs.copyFileSync(path.join(buildDir, 'icon.png'), path.join(assetsDir, 'icon.png'));
  • 写入本地文件
    make-icons.js:37
    fs.writeFileSync(path.join(assetsDir, 'tray.png'), await toPng(32));
  • 写入本地文件
    make-icons.js:64
    fs.writeFileSync(path.join(buildDir, 'icon.ico'), Buffer.concat([header, ...entries, ...images]));
  • 写入本地文件
    remove-pet-bg.js:11
    fs.mkdirSync(outDir, { recursive: true });
  • 写入本地文件
    remove-pet-bg.js:115
    fs.copyFileSync(path.join(outDir, 'eat-1.png'), path.join(outDir, 'idle.png'));
  • 写入本地文件
    update-pet-frames.js:11
    fs.mkdirSync(outDir, { recursive: true });
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

1 张 · 点击查看大图

功能亮点

  • 内置Node运行时
  • 双击即用
  • 附带桌面萌宠

README

由 DeepSeek 最新模型翻译生成
Bigfish 🐳 DeepSeek Harness 的 Electron 桌面版 —— 把 dsh web 包进原生桌面窗口。 免去手动开终端、记端口、开浏览器。装完双击即用。 下载最新版本 · 版本说明 · 使用说明 · 已知问题与排查 · 致谢与合规 Bigfish 默认背景 Bigfish 是 DeepSeek Harness 的 Electron 桌面版。 把 dsh web 的本地后端 + React UI 包进一个原生桌面窗口,免去手动开终端、记端口、开浏览器。 当前版本:0.1.2 · Windows / macOS / Linux 功能亮点 - 一体化安装包:自带 Node.js 运行时与 dsh 后端,装完双击即用,无需手动配置环境 - 预装技能:图片识别 / PPT 生成 / 文档总结 / 写作助手 / 翻译(面向普通用户) - 插件市场:托盘菜单 →「插件市场」,连接社区最大插件平台(awesome-dsh-plugin,1000+ 插件),支持搜索/分类、一键安装/卸载,安装后自动重启生效 - 桌面萌宠(鲸鱼娘):透明悬浮窗,可拖动、点击互动、随机散步/睡觉/说话,动画素材持续更新中 - 系统托盘 + 全局快捷键(Ctrl+Shift+D 唤起) - 任务完成提醒:任务跑完气泡 + 系统通知
展开完整文档(README 剩余 1 节)
Bigfish 🐳

DeepSeek Harness 的 Electron 桌面版 —— 把 dsh web 包进原生桌面窗口。

免去手动开终端、记端口、开浏览器。装完双击即用。

下载最新版本 · 版本说明 · 使用说明 · 已知问题与排查 · 致谢与合规

Bigfish 默认背景

Bigfish 是 DeepSeek Harness 的 Electron 桌面版。

把 dsh web 的本地后端 + React UI 包进一个原生桌面窗口,免去手动开终端、记端口、开浏览器。

当前版本:0.1.2 · Windows / macOS / Linux

功能亮点

- 一体化安装包:自带 Node.js 运行时与 dsh 后端,装完双击即用,无需手动配置环境
- 预装技能:图片识别 / PPT 生成 / 文档总结 / 写作助手 / 翻译(面向普通用户)
- 插件市场:托盘菜单 →「插件市场」,连接社区最大插件平台(awesome-dsh-plugin,1000+ 插件),支持搜索/分类、一键安装/卸载,安装后自动重启生效
- 桌面萌宠(鲸鱼娘):透明悬浮窗,可拖动、点击互动、随机散步/睡觉/说话,动画素材持续更新中
- 系统托盘 + 全局快捷键(Ctrl+Shift+D 唤起)
- 任务完成提醒:任务跑完气泡 + 系统通知
- 新手向导:教普通用户注册、充值、填 API Key
- 故障自助:后端启动失败时引导「重置插件配置(保留 API Key/会话)」「彻底恢复出厂」
- 背景图(深/浅色适配 + 自定义背景)、开机自启、Windows 右键「用 Bigfish 打开」

截图

| 鲸鱼娘桌宠 | 兑换屋 |
| 鲸鱼娘桌宠 | 兑换屋 |

| 模式选择 |
| 专注模式/鲸鱼模式 |

工作原理

┌─────────────────────────────────────────┐
│ Electron 主进程 (main.js) │ │ 1. 找一个空闲的 127.0.0.1 端口 │ │ 2. 拉起 dsh --profile web 子进程 │ │ 3. 轮询直到后端就绪 │ │ 4. BrowserWindow 加载 http://127.0.0.1:端口 │ │ 5. 插件市场:内置 pnpm 管理 profile 插件 │ └─────────────────────────────────────────┘

后端复用的是 @deepseek-ai/dsh 这个 npm 包,与命令行版完全一致;桌面版只是给它套了一层原生窗口。后端本身只监听 127.0.0.1(CLI 源码禁止 0.0.0.0,安全边界现成)。

开发运行

npm install
npm start

打包

npm run dist:win # Windows NSIS 安装包
npm run dist:mac # macOS dmg(需在 macOS 上构建)
npm run dist:linux # Linux AppImage + deb(需在 Linux 上构建)

产物输出到 dist/。

注意:原生依赖(node-pty / sharp / koffi 等)需在各自目标平台上构建;跨平台产物请用对应平台的 CI 或机器打包。

运行时选择

| 场景 | 执行 dsh 的运行时 |
| 开发 (npm start) | 系统 Node(DSH_NODE 环境变量可覆盖) |
| 打包后 | 自带 Node(node-runtime/),无需系统 Node |

插件系统

Bigfish 遵循 DeepSeek Harness 官方 Cordis 插件体系:

- 插件 = npm 包(声明 dsh.bundle.patch + dsh.client),安装进 ~/.dsh/profiles/web,重启后生效;装好后插件的设置页会自动出现在 DSH 客户端的「设置」里
- 安装引擎:应用内置独立 pnpm(node-runtime/pnpm/pnpm.mjs),无需用户装任何东西
- 市场目录:在线实时拉取 awesome-dsh-plugin 全量目录,失败时回退到内置精选副本 plugins.json
- 内置离线插件:bundled-plugins/(可放随软件内置、无需联网安装的插件)

目录

- main.js — Electron 主进程:拉起后端、就绪检测、窗口生命周期、桌宠、插件引擎、进程树清理
- market.html / market.js / market-preload.js — 插件市场窗口
- plugins.json — 插件市场内置精选目录(离线兜底)
- bundled-plugins/ — 随软件内置的插件(离线安装)
- pet.html / pet.js / pet-preload.js — 桌宠透明悬浮窗
- assets/pet-new/ — 桌宠动画素材(分帧目录,持续更新)
- node-runtime/pnpm/ — 内置 pnpm(插件安装引擎)
- package.json — 依赖与 electron-builder 打包配置

致谢与合规

- 桌宠插件化方案参考自第三方社区项目 s17179XTY/dsh-BigfishPet —— 该项目由 s17179XTY(非 Bigfish Team)fork 本仓库改造而成,作者 GitHub:s17179XTY,MIT 协议,详见 THIRD-PARTY-NOTICES.md
- 插件市场在线目录来自 awesome-dsh-plugin 社区
- DeepSeek Harness 本体:deepseek-ai/deepseek-harness(MIT)
- 详见 THIRD-PARTY-NOTICES.md
预览分享卡片长什么样 ↓turtle2209/Bigfish
分享 · DeepSeek Harness Hub
turtle2209/Bigfish

Bigfish —— DeepSeek Harness 的第三方桌面端,内置 Node 运行时,双击即用,附带桌面萌宠。

回到顶部