dsh-realtime-voice:全雙工語音 Agent 插件

前言

DeepSeek Harness 生態強調“一切皆插件”。在爲產品集成語音 Agent 時,開發者通常需要處理複雜的協議適配(如 OpenAI 的 WebRTC 或豆包的 WebSocket)、瀏覽器音頻生命週期管理以及會話中斷邏輯。dsh-realtime-voice 旨在提供一套與底層提供商解耦的通用方案,讓開發者只需關注 Agent 對話本身,而不必深入底層實現細節。

是什麼

這是一個爲 DeepSeek Harness 提供的、與提供商無關的全雙工語音代理插件。它由 AlexKaiqi 維護,採用 MIT 許可證。該插件將瀏覽器音頻連接到 OpenAI Realtime(通過 WebRTC)或豆包 Duplex(通過 WebSocket),同時保持憑證和提供商協議在 DSH Host 邊界之後。

核心功能

該插件提供了以下核心能力:

  1. 全雙工實時語音對話
  2. OpenAI Realtime (WebRTC) 適配器
  3. 豆包 Duplex (WebSocket) 適配器
  4. 與提供商無關的抽象層
  5. 可打斷的對話
  6. 瀏覽器音頻管理
  7. 動作執行循環

安裝與啓用

使用前需確保環境滿足以下依賴:

  • DeepSeek Harness 0.1.1-rc.2
  • dsh-multi-model-provider@^0.1.0-rc.11

執行以下命令將插件安裝到 web 配置文件中:

dsh plugin --profile web add dsh-multi-model-provider dsh-realtime-voice
dsh plugin --profile web update dsh-multi-model-provider dsh-realtime-voice

典型用法

安裝完成後,插件會在 DSH Host 中註冊服務,供客戶端調用。客戶端通過 voiceAgent 服務啓動與 Agent 的全雙工對話,並訂閱事件流。

const service = ctx.get('voiceAgent');

const conversation = await service.startConversation({
  routeId: 'openai/gpt-realtime',
  profileId: 'my-profile',
  context: 'provider-neutral context',
  ownerId: 'my-product:active',
});

const dispose = conversation.subscribe(event => {
  // 監聽連接、活動、轉錄、動作、中斷、錯誤或結束事件
});

適用場景與注意

  • 適用場景:需要通過語音與 Agent 進行實時交互的產品,特別是希望屏蔽底層協議差異(如 WebRTC 與 WebSocket)的場景。
  • 權限與依賴:插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 同源要求:必須使用瀏覽器同源 Origin/Host,Sec-Fetch-Site 必須爲 same-origin。
  • 職責劃分:產品擁有 Agent 身份、上下文和歷史記錄;插件僅擁有實時語音會話(同時收聽與說話)、中斷邏輯以及與提供商的適配層。

總結

dsh-realtime-voice 通過統一的 API 封裝了底層差異,簡化了全雙工語音對話的開發流程,支持 OpenAI Realtime 與豆包 Duplex 兩種主流協議,適合需要在產品中快速集成語音能力的開發者。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜