DeepSeek Harness 的 Fish Audio 语音合成插件:逐条朗读回复、自动朗读开关、需自备 Key、第三方非官方。
31.5/100
综合分
2
GitHub 星标
1,132
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-fish-ttsnpm 源 · dsh-fish-tts 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-fish-tts @ 0.2.12
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 03:19:44
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 36 处,展示前 28 条)
- 读取本地文件lib/index.js:327
for (const name$1 of readdirSync(dir)) { - 删除本地文件lib/index.js:331
if (now - statSync(file).mtimeMs > ttlMs) rmSync(file, { force: true }); - 读取本地文件lib/index.js:331
if (now - statSync(file).mtimeMs > ttlMs) rmSync(file, { force: true }); - 写入本地文件lib/index.js:469
mkdirSync(outDir, { recursive: true }); - 写入本地文件lib/index.js:470
writeFileSync(audioPath, audio); - 删除本地文件lib/index.js:491
rmSync(audioPath, { force: true }); - 删除本地文件lib/index.js:495
rmSync(audioPath, { force: true }); - 读取本地文件lib/index.js:553
for (const line of readFileSync(path, "utf8").split(/ ? /)) { - 读取密钥环境变量lib/index.js:567
const fromEnv = (process.env.FISH_API_KEY ?? "").trim(); - 执行外部命令固定命令lib/index.js:678
spawnSync("icacls", [ - 读取本地文件lib/index.js:698
const existing = readFileSync(path); - 写入本地文件lib/index.js:701
chmodSync(path, 384); - 写入本地文件lib/index.js:707
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/index.js:710
writeFileSync(path, key, { - 读取本地文件lib/index.js:716
const created = readFileSync(path); - 写入本地文件lib/index.js:751
mkdirSync(dir, { recursive: true }); - 读取本地文件lib/index.js:756
hadContent = existsSync(this.filePath) && readFileSync(this.filePath).length > 0; - 发起网络请求lib/index.js:926
const response = proxy === null ? await fetch(API_URL, { - 发起网络请求lib/index.js:926
const response = proxy === null ? await fetch(API_URL, { - 发起网络请求lib/index.js:931
}) : await fetch(API_URL, { - 发起网络请求lib/index.js:931
}) : await fetch(API_URL, { - 发起网络请求lib/index.js:970
const response = proxy === null ? await fetch(MODELS_URL, { - 发起网络请求lib/index.js:970
const response = proxy === null ? await fetch(MODELS_URL, { - 发起网络请求lib/client.js:198
const response = await fetch("/fish-tts/synthesize", { - 发起网络请求lib/client.js:250
const response = await fetch("/fish-tts/status", { cache: "no-store" }); - 发起网络请求lib/client.js:266
const response = await fetch("/fish-tts/config", { cache: "no-store" }); - 发起网络请求lib/client.js:303
const response = await fetch("/fish-tts/config", { - 发起网络请求lib/client.js:344
const response = await fetch("/fish-tts/models", { cache: "no-store" });
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 逐条朗读回复
- 自动朗读开关
最近更新
在 GitHub 查看全部 →v0.3.12026-10-22
· 新增与修复
· 新增智能体音频生成工具 fish_tts_speak。可将台词生成音频文件;没有适用的聊天通道时仅保存在本地,接入支持此功能的通道后由通道插件过滤并投递语音,不影响原有消息朗读。
· 设置页末尾新增折叠的「音频生成(智能体调用)」分组,可调整开关、格式、文本上限、每会话限频、响度归一化和音量微调。该工具默认启用,默认每会话每分钟一次;调用会使用已配置的 Fish Audio Key,并可能消耗额度,可在设置中关闭。
· 合成时保留支持的 Fish 情绪/声音方括号标签,清理代码、链接及括号旁白。增加取消、超时和音频大小限制;投递成功或明确拒绝后清理临时文件,未投递或投递超时的文件由 24 小时过期清理机制处理,并非到点定时删除。
· 将 Undici 升级到 7.30.1,包含上游 2026 年 10 月的安全修复。原有音色、Key 和朗读配置继续保留,更新后请重启 DSH。
· 修复投递超时计时器:等待期间保持计时器有效,投递结束后及时清理,避免 Node.js 22 下超时未生效便退出。
· 取消操作不保证中止正在投递的语音,已发出的语音无法撤回;投递超时也不代表发送失败。重试前请先确认是否已经送达,避免重复发送。
· Added and fixed
· Added fish_tts_speak for agents to generate audio files from spoken lines. Without an applicable chat channel, files are saved locally only; with a compatible channel plugin, that plugin filters and delivers the audio as a voice message. Existing read-aloud features are unchanged.
· Added a collapsible Audio generation (agent calls) section at the bottom of Settings for the enable switch, format, text limit, per-conversation rate limit, loudness normalization, and volume trim. The tool is enabled by default, with one call per minute per conversation. Calls use the configured Fish Audio key and may consume quota; the tool can be disabled in Settings.
· Synthesis preserves supported Fish emotion/sound tags while removing code, links, and parenthetical stage directions. Added cancellation, timeout, and audio-size limits. Files are removed after successful delivery or an explicit rejection; undelivered files and files from timed-out deliveries are handled by opportunistic 24-hour expiry cleanup, not a scheduled deletion at the deadline.
· Updated Undici to 7.30.1, including upstream security fixes from October 2026. Existing voices, keys, and read-aloud settings are preserved. Restart DSH after updating.
· Fixed the delivery timeout timer: it now stays active while waiting and is cleared when delivery settles, preventing early exit before the timeout under Node.js 22.
· Cancellation may not stop a delivery already in progress, an
v0.2.132026-10-07
· 更新内容
· 新增常用音色收藏,支持名称、多行备注与快速切换;仍可直接填写或清空音色 ID,无须先收藏。
· 重整设置页,音色、收藏管理和连接设置各自独立,保存时不带入其他未提交草稿。
· 试听使用已保存的配置,支持取消等待;离开设置页自动停止该次试听。
· 修复相同文本的消息共用播放状态、清空音色后预设值重新出现,以及保存失败后配置仍变化的问题。
· 自动朗读开关可跨同源窗口在下一条消息同步;浏览器存储不可用时保留会话内偏好。
· 更新主页设置截图。现有设置、收藏之外的配置和加密 API Key 保持兼容。
停止或切换播放会取消浏览器请求,但不能保证 Fish Audio 上游停止处理或计费。
· Changes
· Bookmark voices with names and multiline notes, and switch quickly. Voice IDs can still be entered or cleared without a bookmark.
· Reorganize settings into independent voice, bookmark and connection flows, without saving unrelated drafts.
· Test the saved configuration, cancel pending tests, and stop test playback when leaving settings.
· Fix playback state shared by identical messages, cleared voices reverting to configured defaults, and failed saves changing effective settings.
· Pick up auto-read changes across same-origin windows on the next message, with session-local fallback when browser storage is unavailable.
· Refresh the settings screenshot. Existing settings and encrypted API keys remain compatible.
Stopping or switching playback cancels the browser request, but does not guarantee that Fish Audio stops upstream processing or billing.
v0.2.122026-10-04
· 更新内容
· 插件列表和详情页新增中英文名称与简介,随 DSH 界面语言切换。
· 语音合成、播放、设置及密钥存储行为不变,无需迁移配置。使用仍需自备 Fish Audio API Key 和音色。
· 升级后重启 DSH,以重新加载插件信息。
· Changes
· Added English and Chinese names and descriptions to the plugin list and detail page, following the DSH interface language.
· Synthesis, playback, settings, and key storage are unchanged. No configuration migration is needed. Your own Fish Audio API key and voice are still required.
· Restart DSH after upgrading to reload plugin information.
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-fish-tts
English: dsh-fish-tts is a third-party TTS plugin for the
DeepSeek Harness Web GUI — Fish Audio API only, bring your own key: a per-message "Read aloud" action, an auto-read toggle in the composer, and a settings page for model / voice / encrypted API key / proxy. Bilingual UI (zh/en). See README.en.md for the full English version.
简介
面向 DeepSeek Harness(DSH)Web GUI 的第三方语音合成(TTS)插件:为每条助手回复提供一键朗读,输入栏带自动朗读开关,模型 / 音色 / 加密 Key / 代理均可配置。仅支持 Fish Audio API,需自备 API Key。 使用你自己的 Fish 音色(reference_id,含自行克隆的音色)——朗读、试听都走你配置的语音。
展开完整文档(README 剩余 1 节)
dsh-fish-tts
English: dsh-fish-tts is a third-party TTS plugin for the
DeepSeek Harness Web GUI — Fish Audio API only, bring your own key: a per-message "Read aloud" action, an auto-read toggle in the composer, and a settings page for model / voice / encrypted API key / proxy. Bilingual UI (zh/en). See README.en.md for the full English version.
简介
面向 DeepSeek Harness(DSH)Web GUI 的第三方语音合成(TTS)插件:为每条助手回复提供一键朗读,输入栏带自动朗读开关,模型 / 音色 / 加密 Key / 代理均可配置。仅支持 Fish Audio API,需自备 API Key。 使用你自己的 Fish 音色(reference_id,含自行克隆的音色)——朗读、试听都走你配置的语音。
30 秒对比:与常见 Edge TTS 朗读插件
| 对比项 | dsh-fish-tts(本插件) | 常见 Edge TTS 朗读插件 |
| 合成引擎 | Fish Audio 官方 API(仅支持;需自备 Key) | 微软 Edge 内置语音 |
| 音色 | 你自己的音色 reference_id(含自行克隆的音色,须有使用权限) | Edge 内置固定音色库 |
| API Key | 必须自备(设置页 AES-256-GCM 加密保存) | 无需 |
| 适合谁 | 已有 Fish Audio 账号、想要自己或克隆音色的用户 | 想免费快速试用、固定音色即可的用户 |
功能
- 朗读按钮:每条定稿的助手消息操作条里有一个「朗读 / Read aloud」按钮(图标与原生操作条图标同风格),点击合成并播放该条回复;播放中再次点击该消息的按钮即中断停止(不会从头重播),点击其他消息的按钮则直接切换播放,合成等待中再点一次可取消。markdown 会被清洗:路径 / URL / 长编号 / 代码块不会读出来。
- 自动朗读:输入框工具行的小喇叭开关(与设置页同步),开启后自动朗读 DSH 界面打开之后到达的新回复。
- 常用音色收藏:为音色 ID 保存易辨识的名称和多行备注,从下拉列表直接切换并立即生效。收藏保存在本机;切换保留其他未保存设置,移除收藏也不会清空当前音色。
- 音频生成工具 fish_tts_speak:供智能体把台词生成为音频文件;所在会话若接了聊天通道(如 IM 机器人),文件交由通道插件投递为语音条。台词清洗、每会话限频、服务端响度归一化与文件生命周期都在本插件完成;Fish 情绪/声音方括号标签([soft]、[laughing] 等)原样透传、不被念出来。通道插件通过 ctx.fishTts.registerDelivery 注册投递器,出站敏感词过滤仍在通道侧执行。
- 设置页(Settings → 语音朗读 / Voice (Fish TTS)):
- TTS 模型(下拉建议 + 手动输入,支持 s2.1-pro-free / s2.1-pro / s2-pro 等,保存后立即生效;默认 s2.1-pro-free)
- 音色 reference_id(可直接输入、修改或清空,无须收藏;合成需要有效 ID,插件不提供默认音色)
- API Key(AES-256-GCM 加密存储在本机 $DSH_HOME/fish-tts/settings.json,密钥文件 key.bin 自动生成并在 Windows 上收紧 ACL;Key 不会出现在任何 GET 响应、日志或仓库中)
- HTTP 代理(例如 http://127.0.0.1:7890,直连不通时可填)
- 音频生成(智能体调用):开关、格式(mp3/wav/opus)、单条文本上限、每分钟上限(0 为禁止发送)、服务端响度归一化开关、音量微调(-20~+20 dB)——折叠分组,置于设置页末尾。工具默认启用,调用可能消耗 Fish Audio 额度,不需要时可在此关闭
- 试听/停止试听按钮、自动朗读开关、音量滑条(默认 60%,仅影响 DSH 内的朗读播放,不影响生成的音频文件)、倍速滑条(0.5–2.0×,不变调;环境不支持时固定 1×)
- 双语界面(中文 / English,跟随 DSH 语言设置;en 词条与 zh 完全对齐)。
界面截图
消息操作条上的「朗读」按钮
输入栏的自动朗读开关
设置页:直接应用音色 ID、按名称切换收藏并试听;连接设置可折叠,播放偏好无须保存。截图中的音色仅用于展示,不随插件提供。
宿主与桌面端兼容
开发侧于 2026-09-30 报告:dsh-fish-tts 0.2.11 在 DSH 0.2.0-rc.2 与同版本桌面客户端中可用。插件沿用 Web 客户端接口;桌面客户端中的插件界面不需要另一份桌面专用包。
0.2.12 为插件管理页增加随客户端语言切换的中英文名称与简介,合成和设置逻辑不变。更新说明见 CHANGELOG.md。
0.2.13 新增常用音色收藏,重新整理设置页流程与视觉风格,并修复播放归属、设置失败恢复和试听反馈。停止或切换会取消客户端请求,但不保证 Fish 上游已停止处理或计费。
此说明依据维护者的使用反馈,不代表所有操作系统或所有 Fish 模型均经过验证。在线合成仍需有效 API Key、可用音色和网络;宿主接口发生变化时需重新验证。
安装
桌面客户端与 Web 实例的插件安装及启用状态完全独立。请根据你使用的运行环境选择对应方式:
桌面客户端安装(推荐)
通过桌面客户端界面安装(无需配置命令行):
1. 打开桌面客户端左侧栏「插件 / Plugins」,点击右上角「添加插件 / Add plugin」;
2. 输入 npm 包名 dsh-fish-tts@latest 并确认安装;
3. 安装完成后点击「立即启用 / Enable now」(若直接关闭安装完成弹窗,插件会保留在已安装列表中但处于未启用状态);
4. 仅在界面提示需要重启时,通过菜单完整退出应用(Quit)后重新打开(在 Windows / macOS 上直接关闭窗口可能仅隐藏到后台);
5. 识别点:打开 Settings,确认侧栏设置项中出现「语音朗读 / Voice (Fish TTS)」。
备选:桌面端终端安装(Windows / macOS)
若偏好终端管理,可使用桌面配套 CLI:
1. 在桌面客户端应用菜单中选择 Manage dsh Command… → Install(注册桌面配套命令,若提示 PATH 冲突按其指引处理),并打开新终端;
2. 确保桌面客户端已至少启动过一次以完成初始化,并先通过 Quit 完整退出桌面客户端;
3. 在新终端中执行桌面专用命令安装与检查:
dsh plugin --profile desktop add dsh-fish-tts@latest
dsh plugin --profile desktop list
4. 重新启动桌面客户端。
注意:通过外部 npm / npx 安装的普通 dsh CLI 无法管理 desktop profile。关于桌面配套命令机制,详见官方桌面端文档的 bundled-command-runtime。
Web 实例安装
Web 实例通过匹配的命令行工具进行管理。优先使用启动该 Web 实例的同一套匹配宿主的 dsh CLI:
dsh plugin --profile web add dsh-fish-tts@latest
然后重启 dsh web(关掉终端重新运行 dsh web)并刷新页面,打开 Settings → 语音朗读。
其他安装方式:
从 GitHub 安装(仓库已附 lib 产物,无需本地构建)
dsh plugin --profile web add github:MaRi23333/dsh-fish-tts
从本地目录安装
git clone https://github.com/MaRi23333/dsh-fish-tts.git
cd dsh-fish-tts
pnpm install && pnpm run build
dsh plugin --profile web add /absolute/path/to/dsh-fish-tts
仓库已提交 lib/ 构建产物,git 安装无需本地构建;改源码后运行 pnpm run build 再重启即可。
说明:若使用 npx 执行安装命令,请固定为与你的 Web 宿主相同的版本(例如 npx @deepseek-ai/dsh@<version>)。从 GitHub 版换到 npm 源时,裸包名 add dsh-fish-tts 对已装的 git 版是静默空操作(pnpm 判定同名依赖已满足),请改用带 @latest 的命令明确请求 npm 上的最新版本,或先 remove 再 add。
安装刚发布的 npm 版本时,pnpm 的供应链保护可能自动在 profile 的 pnpm-workspace.yaml 写入 minimumReleaseAgeExclude: [dsh-fish-tts@…],属正常行为,不影响使用。
安装后验证
1. 打开 Settings → 语音朗读(Voice (Fish TTS));
2. 在「连接设置」填入你的 API Key,点击「保存连接设置」;
3. 在「音色 ID」中填写音色 reference_id,点击「应用音色」(无须填写名称或收藏);
4. 点击「试听当前音色」——听到你的音色朗读测试句,安装即成功。
「试听当前音色」使用已保存的音色和连接设置,不会保存表单草稿;会请求试听音频,缓存未命中时调用 Fish Audio API。音色为空或没有可用 Key 时不可试听,等待和播放中均可停止。
收藏与切换常用音色
「音色 ID」始终显示,可以直接粘贴、修改并点击「应用音色」;删空输入后点击「清空音色」即可停用当前音色。这些操作只修改当前 ID,不要求收藏,也不影响已有收藏。ID 有未应用的修改时,先应用再试听。
收藏是可选的快捷切换方式。当前 ID 匹配收藏时显示名称和备注;在「切换音色」下拉列表选择名称即可立即切换,并将 ID 输入框更新为该音色。点击「收藏音色」或「给当前音色命名」打开独立表单,填写名称、ID 和可选备注,再点「添加并使用」。已有音色 ID 会继续保留,收藏最多 100 项。
展开「管理常用音色」可使用、编辑或移除音色。编辑只修改名称和备注,不会切换正在使用的音色;移除需确认,且不会清空当前音色。添加、编辑和切换都不会保存模型、代理或 API Key 的连接草稿。连接设置独立保存;播放偏好无须保存,音量和倍速用于后续朗读。
配置
首次使用:打开 Settings → 语音朗读,先保存连接设置(Fish Audio API Key、模型和可选代理),再输入并应用音色 ID,最后试听验证。保存后的设置立即生效,无需再次重启。
也可以在 profile 的 cordis.patch.yml 里给 fish-tts 行加 config(会被设置页保存的值覆盖):
- id: fish-tts
config:
model: s2.1-pro-free
format: wav
stateDir: /custom/state/dir
配置项
| Key | 默认 | 说明 |
| model | '' | 默认模型(设置页保存值优先) |
| voice | '' | 默认音色 reference_id(设置页保存值优先) |
| format | wav | wav / mp3 / opus / pcm |
| apiKey | '' | 一般不填;优先使用设置页加密保存的 Key,其次环境变量 FISH_API_KEY |
| apiKeyFile | '' | 读取指定 dotenv 文件的 FISH_API_KEY |
| proxy | '' | HTTP(S) 代理(设置页保存值优先) |
| stateDir | $DSH_HOME/fish-tts | 设置/密钥文件目录 |
音频生成(fish_tts_speak)
供智能体调用的音频文件生成工具:模型传入台词,插件完成清洗 → 合成 → 落盘;所在会话若接了聊天通道,通道注册的投递器会接手发送(出站敏感词过滤与目标会话解析留在通道侧):
// 通道插件内(channel 名任意,示例用 im) const fishTts = ctx.get('fishTts')
ctx.effect(() => fishTts.registerDelivery('im', {
// 可选:声明哪些会话归本通道(缺省视为全部认领)
claims: (sessionId, agent) => manager.findByAgent(agent) !== undefined,
// 出站过滤 → 命中抛错(不投递)→ 解析目标 → 发送语音
deliver: async ({ audioPath, mime, text, sessionId, agent }) => { /* … / },
}), 'im: fish-tts delivery')
工具默认启用;调用会使用已配置的 Fish Audio Key,可能消耗额度,可在设置页关闭。输入 { text, voice?, format? }(voice 支持收藏名或原始 reference_id);输出含长度、格式、MIME 与投递状态,未投递时另含文件名,不含绝对路径与台词内容;错误按 rate-limited / text-too-long / auth / quota / network / voice-rejected 等代码前缀返回,模型可据此改用文字回复。每会话每分钟上限(默认 1,0 为停用)在合成前占槽、失败释放。投递成功或明确拒绝后删除文件;未投递或投递超时的音频保留在 $DSH_HOME/fish-tts/out/,启动或后续调用时清理超过 24 小时的文件,并非到点定时删除。响度归一化由 Fish Audio 服务端完成(prosody.normalize_loudness,s1 系模型不支持),另附 -20~+20 dB 音量微调。
安全
- API Key 只以加密形态落盘(AES-256-GCM,每机随机密钥 key.bin,0600/ACL 收紧),不写入仓库、日志或任何 GET 响应。
- 写接口(synthesize/config)强制 application/json 并校验同源/loopback Origin,杜绝跨站表单盗刷。
- 仅本机使用:所有 /fish-tts/ 路由拒绝非 loopback(127.0.0.1 / ::1 / ::ffff:127.0.0.1)来源的请求(403),即使宿主监听在 0.0.0.0 也不开放远程访问。
- 代理不支持带用户名密码的地址(http://user:pass@host:port 会在保存时被拒绝);环境变量 HTTPS_PROXY/HTTP_PROXY 若带凭据同样会被忽略(不泄露、无回退),请改用无凭据的代理或直连。
- 代理地址、模型、音色均为用户本机设置,仓库不携带任何个人信息。
- 合成请求的文本上限 12000 字符;结果在进程内缓存(最多 200 条),重启即清。
- 音频生成结果不回显本机绝对路径、台词或账号信息;本地文件保存在 $DSH_HOME/fish-tts/out/,日志仅记录大小、格式与投递状态,不记录会话标识。兼容通道可将生成文件发送给会话接收方。
- 投递中的取消交由通道处理,已发出的语音无法撤回;投递超时也不代表发送失败。重试前先检查通道是否已经送达,避免重复发送。
开发
pnpm install
pnpm run typecheck
pnpm run test # node:test 单元/集成测试(上游 Fish API 使用本地 mock,不触网)
pnpm run build # host: lib/index.js;client: lib/client.js(ModuleLoader CJS closure)bash
pnpm run smoke # host 入口 + client ModuleLoader 冒烟
pnpm run check:pack # npm pack 内容白名单校验
要求 Node >= 22(Node 20 已 EOL)。CI(.github/workflows/ci.yml)在 Node 22 与 24 上执行全部门禁,并校验 lib/ 构建产物与提交一致。
- host 侧在 src/index.ts(Node,注册 /fish-tts/ 路由与设置存储)
- client 侧在 src/client/(React,注册 conversation.chat.assistant-actions、conversation.input.left、settings.section 三个 slot)
- 开发依赖与 CI 类型检查基线仍为 DSH 0.1.2-rc.1,其中的会话 API 与界面图标适配保留;当前宿主使用反馈见上方「宿主与桌面端兼容」。其他版本如接口漂移请对照 deepseek-harness 仓库 相应 tag 调整。
License
MIT
合规与第三方声明
- 本项目是第三方开源插件,与 Fish Audio / Hanabi AI Inc. 无任何隶属、合作或背书关系。"Fish Audio" 为其权利人的商标,此处仅为描述性使用(说明本插件所对接的服务)。
- 本插件不分发、不托管任何 API Key;请使用你自己的 Fish Audio 账号与 Key,并妥善保管。
- Fish Audio 免费额度仅限个人、非商业用途;商业使用请订阅官方付费套餐。详见 Terms of Use。
- 仅可使用你有权使用的音色(reference_id)。未经授权,不得克隆或模仿公众人物、名人或他人的声音。详见 Acceptable Use Policy。
- 对外分发生成的音频时,建议主动披露其为 AI 合成内容,不得误导听众认为是真人真实发言。
- 使用本插件即表示你同意遵守 Fish Audio 的全部服务条款;条款如有更新,以官方页面为准。
独立社区项目,与 DeepSeek 无隶属关系,亦未经其认可。DeepSeek 与 DeepSeek Harness 商标归各自所有者所有。* Independent community project — not affiliated with or endorsed by DeepSeek.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MaRi23333/dsh-fish-tts
DeepSeek Harness 的 Fish Audio 语音合成插件:逐条朗读回复、自动朗读开关、需自备 Key、第三方非官方。
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个插件,给…
★ 814已汉化DSH
68.8
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 385已汉化DSH
67.9
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1
这是你的仓库?认领条目