DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

cooleye /

cooleye/dsh-dafeiyu-pro

Verified

Voice-enabled BigFish companion for DeepSeek Harness - fork of QCYTSN/dsh-dafeiyu adding wake word, ASR, TTS and intent routing.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@0ba682d6

dsh-dafeiyu-pro 🐋🎙️

给「大肥鱼」桌宠加上语音能力 —— 基于 QCYTSN/dsh-dafeiyu 的二次开发。

⚠️ 这是一个 fork,不是原创项目。 原项目 dsh-dafeiyu 由 @QCYTSN 开发,MIT 协议。 本仓库在其基础上增加语音交互能力,遵循同样的 MIT 协议。


目录

  • 这是什么
  • 与上游的关系
  • 当前进度
  • 规划中的功能
  • 技术选型
  • 开发环境
  • 许可与致谢

这是什么

DeepSeek Harness 的桌面伴侣插件。

原版 dsh-dafeiyu 会显示 Agent 的实时状态(思考、改文件、等确认、出错),它有一个透明置顶的原生窗口,还能看余额。

本项目要做的,是让它能听、能说:

你叫「大肥鱼」
    ↓
它回「我在」
    ↓
你说话 → 流式识别 → 意图分流
    ↓
    ├─ 闲聊 → 直连 LLM → 1~2 秒回话
    ├─ 查数据 → 调天气/搜索 API
    └─ 长任务 → 派给 DSH agent,先垫一句「好的,我看看」
    ↓
流式合成,边收边播,可以中途打断

与上游的关系

来源

项目 地址 说明
上游 QCYTSN/dsh-dafeiyu 原作者,MIT
本仓库 cooleye/dsh-dafeiyu-pro 二次开发

我们改了什么

领域 上游 本项目
语音唤醒 ❌ 🔨 开发中
语音识别 ❌ 🔨 开发中
语音合成 ❌ 🔨 开发中
意图分流 ❌ 📋 规划中
长期记忆 ❌ 📋 规划中
状态显示 ✅ 完整 ✅ 保持不变
桌宠动画 ✅ 完整 ✅ 保持不变

我们没改什么

  • 动画素材:仍然来自上游,原始出处是 PC2005-cloud/dsh-pet(MIT)
  • 图标、光标、音效:保持不变
  • 状态机核心:companion-reducer.js 的逻辑保持上游实现

当前进度

阶段 内容 状态
— Fork 上游代码 ✅ 完成
Phase 0 唤醒词 PoC ✅ 完成(实测 3/3 命中)
Phase 1 音频栈 + 本地出声 ✅ 完成(唤醒→回应已跑通)
Phase 2 云端流式 ASR ✅ 完成(连续多段已修好)
Phase 3 对话闭环(LLM + TTS) ✅ 完成(能真聊了)
Phase 4 分级路由(闲聊/查询/干活) ✅ 完成(8/8 测试通过)
Phase 5 长期记忆 ⬜ 未开始

已跑通的完整链路

说「大肥鱼」
    ↓
本地 KWS 命中(零云端调用)
    ↓
回「我在」
    ↓
进入听写态,VAD 断句
    ↓
阿里云 paraformer 流式转写
    ↓
💬 你说:今天天气怎么样?
    ↓
🧭 意图分流
    ├─ chat → 直连 LLM 0.5~1s
    ├─ data → LLM + 搜索工具,1~2s
    └─ task → DSH agent,先垫一句「好的,我看看」
    ↓
按句切分 → qwen3-tts 合成 → 逐句播放

实测数据:

项目 结果
唤醒 3/3 命中
ASR 准确度 「今天天气怎么样?给我讲个故事呗。」全对,带标点
ASR 速度 2.89 秒音频 → 0.97 秒转完(3× 实时)
LLM 首字 0.25~0.33 秒
工具调用 问天气自动触发搜索,1.34 秒出结果
TTS 合成 6.64 秒音频 / 1.5 秒合成(4.4× 实时)
端到端开口 约 2 秒(闲聊)/ 1.3 秒(带搜索)
DSH agent 简单任务 4.3 秒,长任务有两级垫场
连续多段识别 6 段全部正确,会话不串
自动化测试 17 个用例全过(不联网、不用麦克风)

⚠️ Windows 音频独占:MME / DirectSound / WASAPI 都可能被别的程序 (比如 DSH 自己的语音输入)独占,只有 WDM-KS 能稳定打开。 本项目已做自动降级。

⚠️ 模型可用性:这个 key 上 qwen-turbo 长期 429, qwen-flash / qwen-plus / qwen-max 可用。默认用 qwen-flash。

三级路由的意义

路径 触发 延迟 谁在干活
chat 寒暄、情绪、玩笑 0.5~1s 直连 LLM
data 天气、新闻、实时信息 1~2s LLM + 搜索工具
task 写文档、改代码、做开发 垫场即时 DSH agent

为什么不统一走 agent:DSH agent 能干活但一次几十秒, 说「你好」等半分钟体验会崩。分流之后快的地方快,慢的地方有垫场。

详细设计见 docs/VOICE-DESIGN.md, 怎么测试见 docs/TESTING.md。


规划中的功能

语音唤醒(本地,零云端调用)

  • 唤醒词可配置,默认「大肥鱼」
  • 用 sherpa-onnx 的 KWS 模型
  • 待命态不烧钱:超出唤醒词长度窗口的音频直接丢弃

语音识别(云端流式)

  • 阿里云 paraformer-realtime-v2
  • 边说边出字,支持打断
  • 多级降噪门控(能量迟滞 / 过零率 / 有声帧占比)

语音合成(云端流式)

  • 阿里云 Qwen-TTS / MiniMax
  • 边收边播,支持中途打断
  • 云端失败时回落到本地 TTS

意图分流

三条路,各走各的:

路径 触发 响应 走的通道
闲聊 「你好呀」「今天怎么样」 1~2s 直连 LLM
查数据 「今天天气」「有什么新闻」 1~2s LLM + 天气/搜索 API
长任务 「帮我写个文档」 先垫话,后异步 DSH agent

长期记忆

  • 事实库(关键词 × 类别 × 重要度 × 新鲜度打分)
  • 每条事实带用户原话作为依据,防模型凭空记忆
  • 闲聊记忆和任务记忆分开存

技术选型

层面 选型 理由
桌面壳 PySide6 (Qt6) 沿用上游
插件层 Cordis (DSH) 沿用上游
唤醒词 sherpa-onnx KWS 本地、低功耗、零成本
语音识别 阿里云 paraformer-realtime-v2 流式效果好,实测中文 CER 2.1%
语音合成 阿里云 Qwen-TTS 支持情感语气,首包几百毫秒
音频采集 sounddevice (PortAudio) Qt 打包里没有 QtMultimedia
意图分类 规则 + 小模型兜底 快、可解释

参考实现

语音链路参考了 desk-ai 的实测参数(私有项目),包括:

  • VAD 参数(起说话 0.03 / 收尾 0.012 / 对话态静音切段 1050ms)
  • 打断阈值与 1 秒重喂机制
  • ASR 幻觉短语过滤词表
  • 阿里云 WebSocket 的 "streaming": "duplex" 坑

开发环境

前置

  • Node.js ≥ 22.19
  • Python ≥ 3.10(用于 helper)
  • pnpm

本地开发

# 克隆
git clone https://github.com/cooleye/dsh-dafeiyu-pro.git
cd dsh-dafeiyu-pro

# 安装依赖
pnpm install

# 跑测试
npm test
npm run test:python

# 直接跑 helper(开发期推荐,不用每次打包)
npm run helper:headless     # 验证协议,不开窗口
npm run helper:visual       # 开窗口

装到 DSH 里

# 用 link 模式,改代码实时生效
dsh plugin --profile desktop add link:<本仓库绝对路径>

打包

npm run build:helper:windows   # Windows exe
npm run build:helper:linux     # Linux
npm run build:helper:darwin    # macOS

目录结构

dsh-dafeiyu-pro/
├── src/                    Node 侧(插件逻辑)
│   ├── plugin.js           配置 Schema、事件订阅
│   ├── companion-reducer.js 状态机
│   ├── helper-process.js   子进程管理
│   ├── protocol.js         消息协议
│   └── balance.js          余额查询
├── runtime/                Python 侧(Qt helper)
│   ├── helper.py           窗口、动画、交互
│   ├── animation_model.py
│   └── bin/                各平台预编译 helper
├── assets/pet/             动画帧(WebP,来自 dsh-pet)
├── lib/client.js           浏览器侧
├── docs/                   文档
└── test/                   测试

与上游的目录差异

- legacy/       已移除(旧版素材,与开发无关,且不在 MIT 范围内)
- .github/      已重置(上游 CI 不适用)

许可与致谢

代码许可

本项目代码遵循 MIT License,与原项目一致。见 LICENSE。

素材许可

⚠️ 注意区分:

资产 许可 说明
源代码 MIT 自由使用、修改、分发
assets/pet/ 动画帧 MIT 来自 dsh-pet
legacy/dafeiyu/ ❌ 受限 本项目已移除该目录

详见 ASSET_LICENSE.md。

致谢

特别感谢原项目作者 @QCYTSN —— dsh-dafeiyu 的架构设计(原生窗口 + JSONL 协议 + 事件驱动状态机)非常好用, 让二次开发变得很轻松。

同时感谢:

  • DeepSeek Harness —— 插件系统
  • Cordis —— 插件框架
  • sherpa-onnx —— 本地语音引擎
  • PC2005-cloud/dsh-pet —— 动画素材
  • 大肥鱼人设的社区创作者们

声明

  • 本项目是独立维护的社区分支,不代表原作者的立场
  • 遇到问题请先看 上游 issue,可能是因为上游已经修复了
  • 如果上游合并了我们的改动,本项目会尽量跟随

上游:QCYTSN/dsh-dafeiyu · 本文档最后更新:2026-11-10

—/ 5

No ratings yet

Verified DSH bundle

Commit 0ba682d65b53

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout