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

桌面启动管理器 luocuiyu/deepseek-harness-manager

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

DeepSeek Harness Manager|DeepSeek Harness 桌面端:一键启动并内嵌 DSH,支持插件与代理预设管理、会话观察、软件回收站、API 切换、托盘控制及应用内更新。

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add luocuiyu/deepseek-harness-manager
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 8 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 80 处,展示前 62 条)
  • 读取本地文件
    src/main/agent-presets.ts:44
    for (const entry of readdirSync(dir, { withFileTypes: true })) {
  • 读取本地文件
    src/main/agent-presets.ts:51
    const stat = statSync(path)
  • 写入本地文件
    src/main/agent-presets.ts:84
    renameSync(source, target)
  • 删除本地文件递归
    src/main/agent-presets.ts:88
    rmSync(source, { recursive: true, force: false })
  • 读取本地文件
    src/main/agent-presets.ts:94
    if (!existsSync(root)) return []
  • 读取本地文件
    src/main/agent-presets.ts:96
    for (const entry of readdirSync(root, { withFileTypes: true })) {
  • 读取本地文件
    src/main/agent-presets.ts:100
    if (!existsSync(payload)) continue
  • 读取本地文件
    src/main/agent-presets.ts:102
    const metadata = JSON.parse(readFileSync(join(wrapper, 'metadata.json'), 'utf8')) as TrashMetadata
  • 写入本地文件
    src/main/agent-presets.ts:208
    mkdirSync(root, { recursive: true })
  • 写入本地文件
    src/main/agent-presets.ts:209
    mkdirSync(wrapper, { recursive: false })
  • 写入本地文件
    src/main/agent-presets.ts:218
    writeFileSync(join(wrapper, 'metadata.json'), JSON.stringify(metadata, null, 2), 'utf8')
  • 删除本地文件递归
    src/main/agent-presets.ts:223
    if (existsSync(wrapper)) rmSync(wrapper, { recursive: true, force: true })
  • 写入本地文件
    src/main/agent-presets.ts:233
    mkdirSync(root, { recursive: true })
  • 写入本地文件
    src/main/agent-presets.ts:247
    mkdirSync(presetRoot(), { recursive: true })
  • 删除本地文件递归
    src/main/agent-presets.ts:249
    rmSync(wrapper, { recursive: true, force: true })
  • 删除本地文件递归
    src/main/agent-presets.ts:260
    rmSync(wrapper, { recursive: true, force: false })
  • 读取本地文件
    src/main/balance.ts:16
    const raw = readFileSync(join(getConfig().dshHome, '.credentials.yaml'), 'utf8')
  • 发起网络请求
    src/main/balance.ts:47
    const res = await net.fetch(url, { headers: { Authorization: `Bearer ${key}` } })
  • 读取本地文件
    src/main/config.ts:11
    return candidates.find(c => c && existsSync(resolve(c))) ?? candidates.find(c => c) ?? ''
  • 读取本地文件
    src/main/config.ts:33
    const hasSourceCheckout = Boolean(harnessRepo && existsSync(harnessRepo))
  • 读取本地文件
    src/main/config.ts:95
    const encoded = readFileSync(secretFile(), 'utf8')
  • 写入本地文件
    src/main/config.ts:119
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/main/config.ts:120
    writeFileSync(temporary, data, 'utf8')
  • 写入本地文件
    src/main/config.ts:121
    renameSync(temporary, path)
  • 读取本地文件
    src/main/config.ts:138
    const raw = readFileSync(file(), 'utf8')
  • 写入本地文件
    src/main/diagnostics.ts:34
    writeFileSync(result.filePath, `${JSON.stringify(report, null, 2)}\n`, 'utf8')
  • 读取本地文件
    src/main/dsh-appearance.ts:24
    wallpaper = `url("data:image/webp;base64,${readFileSync(path).toString('base64')}")`
  • 发起网络请求
    src/main/dsh-status.ts:173
    const res = await net.fetch(`http://127.0.0.1:${port}/api/host.describe`, {
  • 发起网络请求
    src/main/dsh-status.ts:192
    const res = await net.fetch(`http://127.0.0.1:${port}/api/session.list`, {
  • 读取本地文件
    src/main/harness.ts:98
    if (cfg.installMode === 'source' && (!plan.cwd || !existsSync(plan.cwd))) {
  • 执行外部命令来自配置/变量
    src/main/harness.ts:147
    proc = spawn(plan.cmd, plan.args, {
  • 执行外部命令固定命令
    src/main/harness.ts:264
    const proc = spawn('netstat', ['-ano', '-p', 'tcp'], { windowsHide: true, stdio: ['ignore', 'pipe', 'ignore'] })
  • 执行外部命令固定命令
    src/main/harness.ts:336
    const kill = spawn('taskkill', ['/F', '/T', '/PID', String(pid)], { windowsHide: true, stdio: 'ignore' })
  • 执行外部命令固定命令
    src/main/harness.ts:383
    spawn('taskkill', ['/F', '/T', '/PID', String(proc.pid)], { windowsHide: true, stdio: 'ignore' }).unref()
  • 执行外部命令固定命令
    src/main/harness.ts:411
    spawn('taskkill', ['/F', '/T', '/PID', String(proc.pid)], { windowsHide: true, detached: true, stdio: 'ignore' }).unref()
  • 读取本地文件
    src/main/index.ts:43
    if (existsSync(p)) return p
  • 写入本地文件
    src/main/index.ts:116
    mkdirSync(dir, { recursive: true })
  • 写入剪贴板
    src/main/ipc.ts:84
    ipcMain.handle('clipboard:write', (_e, text: string) => clipboard.writeText(String(text ?? '')))
  • 发起网络请求
    src/main/market.ts:21
    const res = await net.fetch(`${API}${path}`, {
  • 发起网络请求
    src/main/market.ts:108
    const res = await net.fetch(`${API}/repos/${encodeURIComponent(o)}/${encodeURIComponent(r)}/readme`, {
  • 读取本地文件
    src/main/plugin-ledger.ts:26
    const value = JSON.parse(readFileSync(ledgerPath(), 'utf8')) as Partial<LedgerFile>
  • 写入本地文件
    src/main/plugin-ledger.ts:36
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/main/plugin-ledger.ts:37
    writeFileSync(temporary, `${JSON.stringify(value, null, 2)}\n`, 'utf8')
  • 写入本地文件
    src/main/plugin-ledger.ts:38
    renameSync(temporary, path)
  • 读取本地文件
    src/main/plugins.ts:14
    return JSON.parse(readFileSync(file, 'utf8')) as Record<string, unknown>
  • 读取本地文件
    src/main/plugins.ts:112
    if (!existsSync(cfg.pluginDir)) return out
  • 读取本地文件
    src/main/plugins.ts:113
    for (const entry of readdirSync(cfg.pluginDir, { withFileTypes: true })) {
  • 写入本地文件
    src/main/plugins.ts:195
    writeFileSync(mp, JSON.stringify(next, null, 2) + '\n', 'utf8')
  • 读取本地文件
    src/main/plugins.ts:287
    const entries = readdirSync(dir, { withFileTypes: true })
  • 发起网络请求
    src/main/plugins.ts:346
    const res = await net.fetch(
  • 读取本地文件
    src/main/plugins.ts:371
    entries = readdirSync(target, { withFileTypes: true })
  • 删除本地文件递归
    src/main/plugins.ts:397
    if (isIncompleteGitDir(target)) rmSync(target, { recursive: true, force: true })
  • 读取本地文件
    src/main/plugins.ts:398
    const isGit = existsSync(join(target, '.git'))
  • 删除本地文件递归
    src/main/plugins.ts:409
    rmSync(target, { recursive: true, force: true })
  • 写入本地文件
    src/main/plugins.ts:463
    if (!existsSync(cfg.pluginDir)) mkdirSync(cfg.pluginDir, { recursive: true })
  • 删除本地文件递归
    src/main/plugins.ts:465
    if (isIncompleteGitDir(target)) rmSync(target, { recursive: true, force: true })
  • 删除本地文件递归
    src/main/plugins.ts:473
    rmSync(target, { recursive: true, force: true })
  • 读取本地文件
    src/main/preload.ts:14
    if (existsSync(p)) return p
  • 发起网络请求
    src/main/session-observer.ts:13
    const response = await net.fetch(`http://127.0.0.1:${port}/api/${method}`, {
  • 执行外部命令固定命令
    src/main/shortcuts.ts:46
    const child = spawn('powershell', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', script], {
  • 执行外部命令来自配置/变量
    src/main/task.ts:44
    child = spawn(cmd, args, {
  • 执行外部命令固定命令
    src/main/task.ts:98
    spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'], { windowsHide: true })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 一键启动并内嵌DSH
  • 管理插件与代理预设
  • 会话观察与API切换

README

由 DeepSeek 最新模型翻译生成
大肥鱼|DeepSeek Harness 桌面助手把 npx @deepseek-ai/dsh web 变成可以双击启动、独立运行和集中管理的 Windows 桌面应用。 自动启动或接管本机 DSH,在自己的窗口中内嵌 Web UI,并提供会话观察、插件与代理预设管理、软件回收站、API 切换、系统托盘和应用内更新。 下载最新版 · 查看 v0.3.3 · English · 提交问题 [!IMPORTANT] 本项目是独立社区项目,并非 DeepSeek 官方产品。项目基于 MarcoG-h/DSH-Launcher 的 MIT 许可代码继续开发,完整归属见 THIRD_PARTY_NOTICES.md。 v0.3.3 阅读与启动更新 - 5 秒无字启动动画,支持跳过、Esc 和减少动态效果;主页保持静态壁纸。 - 插件页增加分组阅读底色,说明文字与开关更清楚。 - 对话区收为独立阅读面板,代码块和输入区统一蓝灰配色。 - 提高设置、插件、会话、菜单等页面的文字对比度。 v0.3.2 大肥鱼 - 软件正式名称改为「大肥鱼」,同步窗口、安装器、桌面/开始菜单快捷方式、托盘和更新提示。 - 使用项目所有者提供的新角色图,生成多尺寸 Windows 图标并更新界面标识。 - 保留原应用标识、配置目录和 GitHub 更新源,沿用已有设置和 DSH 数据。
展开完整文档(README 剩余 1 节)
大肥鱼|DeepSeek Harness 桌面助手把 npx @deepseek-ai/dsh web 变成可以双击启动、独立运行和集中管理的 Windows 桌面应用。
自动启动或接管本机 DSH,在自己的窗口中内嵌 Web UI,并提供会话观察、插件与代理预设管理、软件回收站、API 切换、系统托盘和应用内更新。

下载最新版 · 查看 v0.3.3 · English · 提交问题

[!IMPORTANT]
本项目是独立社区项目,并非 DeepSeek 官方产品。项目基于 MarcoG-h/DSH-Launcher 的 MIT 许可代码继续开发,完整归属见 THIRD_PARTY_NOTICES.md。

v0.3.3 阅读与启动更新

- 5 秒无字启动动画,支持跳过、Esc 和减少动态效果;主页保持静态壁纸。
- 插件页增加分组阅读底色,说明文字与开关更清楚。
- 对话区收为独立阅读面板,代码块和输入区统一蓝灰配色。
- 提高设置、插件、会话、菜单等页面的文字对比度。

v0.3.2 大肥鱼

- 软件正式名称改为「大肥鱼」,同步窗口、安装器、桌面/开始菜单快捷方式、托盘和更新提示。
- 使用项目所有者提供的新角色图,生成多尺寸 Windows 图标并更新界面标识。
- 保留原应用标识、配置目录和 GitHub 更新源,沿用已有设置和 DSH 数据。

大肥鱼界面(隔离测试环境)

v0.3.1 修复更新

- 修复进入工作区显示 dsh web authentication required:自动使用真实启动链接完成本机认证。
- 启动 DSH 时不再自动打开系统浏览器,配置端口同时生效。
- 宽屏页面居中扩展,设置部署区域双栏显示;小窗口和缩放保持适配。
- 外部 DSH 实例可在软件内粘贴启动链接连接,令牌不写入日志或配置。
- 已使用真实 DSH 服务完成认证、Cookie 和实际工作区页面测试。

v0.3.1 宽屏设置(隔离测试环境)

v0.3.0 银蓝玻璃界面

- 用户选定的静态壁纸、居中欢迎区、紧凑侧栏和底部工作区入口。
- 管理器与内嵌聊天区使用统一玻璃样式;壁纸遮罩和模糊强度可调整并自动保存。
- 切换外观不刷新聊天页面,保留正在编写的草稿;原生 DSH 输入、文件和模型功能继续使用。
- 新增可跳过的壁纸启动画面,支持 Esc 和系统减少动态效果偏好。
- 修正官方 Messages 默认地址,自动迁移旧版原始官方地址,并保留自定义中转配置。
- 发布 Windows x64 安装包与自动更新文件。

v0.3.0 首页(隔离测试环境)

完整更新记录见 CHANGELOG.md,外观说明见 docs/silver-blue-ui.md。

v0.2.3 更新记录

- 点击更新提示中的“下载更新”后,立即唤醒主窗口并显示全局下载进度,不再需要自己寻找软件更新页面。
- 更新进度卡显示百分比、已下载大小、总大小、实时速度和预计剩余时间,可收起到后台继续下载。
- 侧边栏持续显示下载、等待安装或失败状态;Windows 任务栏同步显示下载进度。
- 下载完成后提供醒目的“重启并安装”,应用在后台时还会发送 Windows 通知。
- 下载失败时可以直接重试、打开 GitHub Release 手动下载或复制错误信息。
- 修复 Release 更新说明直接显示 、 等 HTML 标签的问题,并对渲染内容进行安全过滤。

为什么需要它?

DeepSeek Harness Web 模式通常需要打开终端、执行命令、等待服务启动,再访问本机端口:

npx @deepseek-ai/dsh web

大肥鱼 将这些步骤收敛成一个桌面应用:

flowchart LR
A["双击大肥鱼图标"] --> B{"3080 端口已有 DSH?"}
B -- "否" --> C["使用系统 Node.js / npx 启动"]mermaid
B -- "是" --> D["识别并接入外部实例"]
C --> E["等待服务就绪"]
D --> F["内嵌 DSH Web UI"]
E --> F
F --> G["会话 / 插件 / 预设 / 日志 / 设置"]

1. 双击桌面的「大肥鱼」图标。
2. 自动检测端口、进程和已有 DSH 实例。
3. 没有实例时自动启动;已有实例时直接接入,不重复运行第二份。
4. 首页显示服务就绪后,点击「进入工作区」,在应用自己的 Electron 窗口中显示 DSH。
5. 任务栏保留 大肥鱼 自己的图标,不依赖默认浏览器标签页。

真实界面

以下均为 v0.2.1 Windows 实际运行截图,不是设计稿。

内嵌 DeepSeek Harness

DSH 使用 Electron 原生 WebContentsView 显示在应用内部,工作区、会话、模型和 Agent 预设仍由 Harness 管理。

内嵌 DeepSeek Harness

启动控制台

集中查看运行模式、PID、端口、就绪状态、API 余额和启动日志。检测到手动运行的 DSH 时会显示“外部运行中”,不会重复启动。

启动控制台

会话观察台

通过本机只读 API 汇总会话目录、状态、父子关系、Agent 预设以及可用的 Token/上下文统计。

会话观察台

代理预设与软件回收站

Anchored Standard 属于代理预设,不是第三方 npm 插件。大肥鱼 会扫描 DSH_HOME/.agent-presets,并显示来源、占用情况和文件信息。

第一次删除只会移动到软件自己的回收站;清空 Windows 回收站不会影响这里的备份。只有在软件回收站中再次确认“永久删除”才会彻底清除。

代理预设与软件回收站

插件市场

搜索 DeepSeek Harness 相关插件仓库,查看热度、语言、简介和 README;支持 GitHub URL、本地路径与 npm 包名安装。

插件市场

功能一览

| 模块 | 能力 | 说明 |
| DSH 内嵌界面 | 原生子视图、首页进入、侧边栏联动 | 不打开外部浏览器,保持独立任务栏图标 |
| 进程控制 | 启动、停止、重启、进程树终止 | 避免遗留 Node/DSH 子进程 |
| 外部实例识别 | 端口探测、PID 查询、自动接入 | 已运行 npx 时不会再启动第二份 |
| 实时日志 | stdout/stderr、自动滚动、任务进度 | 启动失败时可以直接定位错误 |
| 会话观察 | 会话目录、运行状态、父子会话、代理预设 | 数据来自本机 DSH,只读展示 |
| 外部插件 | 安装、启用、停用、卸载、本地扫描 | 支持 GitHub、本地目录和 npm spec |
| 代理预设 | 扫描、来源识别、占用检测、打开目录 | 管理 .agent-presets,不再误当作插件 |
| 软件回收站 | 恢复、同名冲突保护、永久删除 | 独立于 Windows 回收站 |
| 插件市场 | 搜索、分页、README 预览、私有仓库 Token | 外部链接打开前会确认 |
| 来源追踪 | 官方、第三方、本地开发、用户安装、历史推断 | 同时标注 confirmed / inferred 可信度 |
| API 管理 | 多厂商预设、Base URL、API Key、余额查询 | 切换后随 DSH 重启注入 |
| 应用内更新 | 启动检查、更新提示、下载进度、重启安装 | 更新源为本仓库 GitHub Releases |
| 安装引导 | Node.js 官网入口、DSH 预下载与验证 | 避免首次启动时临时下载导致超时 |
| 系统托盘 | 最小化到托盘、状态灯、单实例唤醒 | 再次双击快捷方式会显示已有窗口 |
| 故障诊断 | 脱敏配置、进程状态、会话概览、最近日志 | 报告不会包含 API Key 和 GitHub Token |

插件、代理预设和会话是什么关系?

| 对象 | 默认位置 | 大肥鱼 提供的操作 |
| 外部插件 | 当前 profile 的 package.json / node_modules | 安装、启用、停用、卸载、来源识别 |
| 本地插件源码 | 默认 ~/DSH-Plugin | 扫描、安装到当前 profile、打开目录 |
| 代理预设 | DSH_HOME/.agent-presets | 查看、会话占用检测、移入回收站、恢复、永久删除 |
| 会话 | DSH 本地会话存储 | 只读观察,不修改会话内容 |

[!NOTE]
插件是当前 DSH profile 的“可用能力”,不代表某个会话已经调用过它。代理预设决定会话使用的 Agent 能力组合,也不等同于 npm 插件。

安装

Windows 安装包(推荐)

1. 打开 Releases。
2. 下载最新的 DaFeiYu-<版本>-Setup.exe。
3. 运行安装向导,选择安装目录。
4. 安装完成后,双击桌面或开始菜单中的「大肥鱼」图标。

已安装旧版本时不需要先卸载,直接运行新版安装包覆盖升级即可。

Windows 显示“已保护你的电脑”怎么办?

当前社区版本没有受信任机构签发的 Authenticode 代码签名证书,因此 Microsoft Defender SmartScreen 可能显示“无法识别的应用”或“发布者未知”。这表示 Windows 无法验证数字签名及下载信誉,不等同于已经检测到病毒。

程序属性和“已安装的应用”中的公司/发布者元数据为 lcy,但元数据不能代替受信任的数字签名,所以 SmartScreen 仍可能显示“发布者未知”。

Windows SmartScreen 提示

如果安装包来自本仓库官方 Release:

1. 确认下载地址的仓库是 luocuiyu/deepseek-harness-manager。
2. 使用 PowerShell 核对 SHA-256。
3. 哈希与 Release 页面一致后,在 SmartScreen 界面点击「仍要运行」。部分 Windows 版本需要先点击「更多信息」。

新版安装包的校验命令: powershell Get-FileHash .\DaFeiYu-0.3.2-Setup.exe -Algorithm SHA256

预期 SHA-256 见同一 Release 附件 SHA256SUMS.txt。

[!CAUTION]
不要从网盘、群文件或不明镜像运行无法核验来源的安装包。正式代码签名或 Microsoft Store 分发已列入后续计划。

已安装 Node.js / npx

默认使用「本机 npx」模式,实际启动方式等效于: powershell
npx @deepseek-ai/dsh web

没有 Node.js

进入「设置 → DSH 部署 / 修复」:

1. 在「部署运行环境」中打开 Node.js 官网,安装 Node.js 22.19.0 或更高版本。
2. 重新打开 大肥鱼,在「部署 DeepSeek Harness」中预下载并验证 @deepseek-ai/dsh。

大肥鱼 不再提供便携 Node 环境,普通运行方式与官方文档保持一致。

应用内更新

- 每次启动约 6 秒后自动检查 GitHub Releases。
- 发现新版本时弹窗提示「下载更新 / 稍后处理 / 跳过此版本」。
- 不会静默下载,也不会强制安装。
- 下载完成后,需要用户点击「重启并安装」。
- 跳过某个版本后,只有出现更高版本才再次提示;手动检查会重新显示当前可用版本。

v0.1.x 需要手动安装一次 v0.2.1;从 v0.2.1 开始,后续版本可以使用应用内更新。

两种运行模式

| 模式 | 适用场景 | 实际启动方式 |
| 本机 npx | 已安装 Node.js,绝大多数用户 | npx @deepseek-ai/dsh web |
| 源码模式 | 开发、调试或修改 DeepSeek Harness 源码 | 本机 Node 运行 Harness checkout |

配置与数据安全

| 数据 | 默认位置 / 处理方式 |
| 大肥鱼 普通配置 | Electron userData/launcher-config.json |
| API Key / GitHub Token | safeStorage 加密后写入 launcher-secrets.bin;Windows 使用 DPAPI |
| 插件来源台账 | Electron userData/plugin-provenance.json |
| 代理预设回收站 | Electron userData/agent-preset-trash;只有再次确认「永久删除」才清除 |
| DSH profiles / sessions / storage | 默认位于 ~/.dsh,大肥鱼 不会迁移或覆盖 |
| 本地插件目录 | 默认 ~/DSH-Plugin,可以在设置中修改 |
| 诊断报告 | 用户主动导出;秘密值会替换为 [configured] |

应用启用了 Electron contextIsolation,渲染层通过受限 preload API 与主进程通信;外部链接不会直接在 大肥鱼 主窗口内导航。

常见问题

为什么显示「外部运行中」?

说明 3080 端口已经存在 DSH,通常是之前手动执行了 npx @deepseek-ai/dsh web。大肥鱼 会直接嵌入它;如果希望 大肥鱼 完整接管,可先停止外部实例,再从控制台启动。

为什么 DSH 里能选择 Anchored Standard,外部插件却显示 0?

Anchored Standard 位于 DSH_HOME/.agent-presets,属于代理预设,不是当前 profile 的 npm 插件依赖。请进入「第三方插件管理 → 代理预设」查看。

关闭窗口后 DSH 为什么还在运行?

默认启用了「关闭到托盘」。右键系统托盘大肥鱼图标并选择退出,或在设置中关闭该选项。是否在退出 大肥鱼 时停止 DSH 可以独立配置。

会不会破坏现有的 ~/.dsh?

不会。大肥鱼 默认复用现有 DSH_HOME。更新内置运行环境不会覆盖 sessions、第三方插件台账或手动配置;代理预设首次删除也只会进入软件回收站。

插件为什么显示「历史安装·推断」?

说明插件在来源台账建立之前就已存在。大肥鱼 会根据包名和依赖 spec 推断来源,但不会伪装成已确认信息。通过 大肥鱼 新安装的插件会记录为 confirmed。

本地开发

需要 Node.js 22+ 与 pnpm: powershell
git clone https://github.com/luocuiyu/deepseek-harness-manager.git
cd deepseek-harness-manager
pnpm install
pnpm dev

验证与构建: powershell
pnpm typecheck
pnpm build
pnpm dist

主要技术栈:Electron 43、Electron Vite、React 19、TypeScript 7、Tailwind CSS 4、NSIS、electron-updater、WebContentsView 与 safeStorage。

路线图

- [x] GitHub Releases 应用内更新
- [x] 代理预设识别与软件回收站
- [ ] 更完整的会话事件时间线与工具调用观察
- [ ] 插件安装前权限与变更预览
- [ ] 插件更新检查、回滚与快照
- [ ] 受信任的 Windows 代码签名 / Microsoft Store 分发
- [ ] 更多 DSH profile 管理能力
- [ ] macOS / Linux 适配评估
欢迎通过 Issues 提交问题、建议和兼容性反馈。

许可证与归属

本项目以 MIT License 开源,发布者元数据名称为 lcy。

上游 DSH Launcher、DeepSeek Harness、DeepSeek 名称和相关标识的归属说明见 THIRD_PARTY_NOTICES.md。DeepSeek 和 DeepSeek Harness 相关商标归其各自权利人所有。
预览分享卡片长什么样 ↓luocuiyu/deepseek-harness-manager
分享 · DeepSeek Harness Hub
luocuiyu/deepseek-harness-manager

DeepSeek Harness Manager|DeepSeek Harness 桌面端:一键启动并内嵌 DSH,支持插件与代理预设管理、会话观察、软件回收站、API 切换、托盘控制及应用内更新。

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部