dsh-a11y-announcer:DeepSeek Harness 無障礙插件

在使用 DeepSeek Harness (DSH) Web UI 進行智能體開發時,流式輸出的內容(尤其是工具調用 Tool Calls)往往難以被屏幕閱讀器捕捉,用戶容易錯過工具開始執行的時刻。該插件通過 aria-live 區域,確保這些內容能被即時讀出。

核心功能

該插件是一個客戶端插件,用於在 Web 平臺上監聽對話變化並通過 aria-live 區域朗讀。

主要行爲包括:

  • 工具調用宣佈:工具調用在文本短暫穩定後(約 400ms 去抖動)立即宣佈,而不是等到執行完畢。這能讓用戶看到工具開始執行的時刻。
  • 助手消息宣佈:只有當助手消息的文本完全穩定後,纔會在 aria-live 區域宣佈其完整內容,流式傳輸中的片段不會觸發朗讀。
  • 排除內部推理:插件會移除內部推理塊(Think block),確保只有可見的答案文本被讀出。
  • 去重機制:通過 data-chat-anchor-key 屬性進行去重,防止重複渲染觸發重複朗讀。
  • 狀態檢測:利用 DSH 的 data-streaming 屬性檢測流式傳輸狀態,僅在屬性移除(即傳輸完成)時觸發朗讀。

安裝與啓用

安裝此插件需要手動配置文件依賴和 bundle。

  1. 將倉庫克隆到插件目錄(例如 /opt/dsh/plugins/dsh-a11y-announcer/)。
  2. 在 /opt/dsh/package.json 中添加此插件爲文件依賴。
  3. 在 /mnt/ssd/dsh/profiles/web/package.json 中添加此插件爲文件依賴。
  4. 在 /mnt/ssd/dsh/profiles/web/package.json 的 dsh.profile.bundles 中添加此插件作爲 bundle。

修改 lib/client.js 源碼後,需要重啓 dsh web 服務即可生效,無需重新構建 bundle。

典型用法

在開啓 Web UI 後,配合 NVDA、JAWS 或 VoiceOver 使用:

  • 當工具調用出現時,屏幕閱讀器會自動朗讀工具名稱和內容。
  • 當助手回答完成時,屏幕閱讀器會朗讀最終的完整文本。
  • 內部推理過程不會被打斷朗讀。

適用場景與注意

  • 適用場景:需要使用 DSH Web UI 進行開發的視障用戶,或需要明確感知工具調用發生的場景。
  • 注意:
    • 插件不會移動用戶的鼠標焦點,僅通過無障礙區域朗讀。
    • 加載舊會話時,已存在的節點不會重新觸發朗讀(無重放機制)。
    • 該插件基於 Web 平臺,使用 MutationObserver 監聽 [data-slot="conversation.session"] 容器。

總結

該插件通過 aria-live 技術解決了 DSH Web UI 在流式輸出場景下的無障礙問題。它專注於工具調用的實時反饋和最終答案的穩定朗讀,幫助屏幕閱讀器用戶更順暢地使用 DeepSeek Harness。

GitHub 倉庫
插件目錄

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

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

小夜