deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
共享语音引擎(Shared Voice Engine)—— dsh-teacher 与 dsh-companion 的公共底层。
一个 library,不是独立插件:消费插件(dsh-teacher / dsh-companion)在自己的
apply() 里调用 applyVoice(ctx, config)(host 侧),client 侧通过
createVoiceClient(opts) 组合共享 UI。语音由 mac mini 上的 Qwen3-TTS
(VoiceDesign,MPS 加速)生成,浏览器播放——声音从使用者自己的机器出来。
Host(applyVoice(ctx, config))
{ttsPath}(如 /dsh-teacher/tts)+ -health,转发到
本地 TTS 服务(127.0.0.1:3091,可用 DSH_VOICE_TTS_URL 覆盖)speak / cheer 模型工具(log-only voice/* 事件)/speak /cheer /cheer-at /cheer-text /voice 命令voiceSpeak 会话投影(fold voice/speak / voice/spoken / voice/cheer)agent.followup 让 Agent 自己生成"欢迎 + 趣闻/新闻"
(或配置固定文案直接朗读);schedulerEnabled 控制开关config.styles(音色目录)+ config.defaultStyleClient(createVoiceClient(opts))
<audio>,顺序播放不重叠)opts.resolveInstruct(sessionId) 可选:按会话动态决定 TTS instruct(优先于 defaultStyle 的静态值),供需要"每个会话自己的音色"的消费者使用// dsh-teacher 的 apply()
import { applyVoice } from 'dsh-voice-core'
await applyVoice(ctx, {
presetName: 'teacher',
ttsPath: '/dsh-teacher/tts',
styles: { onee: { label: '🎧 清冷御姐', instruct: '清冷柔和的成年女声…' } },
defaultStyle: 'onee',
schedulerEnabled: false,
})
// client 侧
import { createVoiceClient } from 'dsh-voice-core'
var voiceClient = createVoiceClient({
presetName: 'teacher',
ttsPath: '/dsh-teacher/tts',
styles: { onee: { label: '🎧 清冷御姐', instruct: '…' } },
defaultStyle: 'onee',
})
// 在 apply 里:voiceClient.apply(ctx)
dsh plugin --profile web add github:Yihong89/dsh-voice-core
profile 的 cordis.patch.yml 注册事件:
- insert:
- id: dsh-voice-registrar
name: dsh-voice-core/register-events
pnpm 11 默认
blockExoticSubdeps: true,而 dsh-teacher/dsh-companion 把 dsh-voice-core 作为 git 子依赖。若报ERR_PNPM_EXOTIC_SUBDEP,在 profile 的pnpm-workspace.yaml加blockExoticSubdeps: false。
node --test test/*.test.js # 49 tests
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。