dsh-occlick:在 DSH 裏用 OpenCode 提示音監聽回合結束、權限與錯誤

前言

在 DeepSeek Harness(DSH)裏跑長任務時,人往往會切到別的窗口。回合何時結束、智能體是否在等審批、是否因錯誤中斷,如果只靠盯界面,效率很低。桌面端可以靠系統通知,但 Web 客戶端或習慣用聲音反饋的開發者,更需要「事件到了就響一聲、且別誤報」的機制。

OpenCode 桌面應用自帶一小套通知短音;社區插件 dsh-occlick(維護者 contraliz)把同一套素材接到 DSH 上,按三種事件各選一個片段播放,並在 Settings → Sound effects 裏配置。插件在 GitHub 上採用 MIT 許可證,當前 package 版本爲 0.4.1;社區目錄頁歸類爲趣味換裝,倉庫 README 中的分類標籤爲 Integrations & Connections。

這是什麼

dsh-occlick 是一個僅運行在 DSH Web 客戶端側的 Cordis 客戶端 bundle:不連外部服務、不改對話內容,只訂閱 DSH 已有的回合運行狀態、審批請求與會話錯誤信號,在本地用嵌入 bundle 的音頻播放一次提示音。

適用環境:DSH 0.2.0 及以上,以及桌面應用或 dsh web;無設置頁、無音頻輸出的 Headless/TUI profile 下插件不生效。

核心功能

下面介紹插件在三種通道上的行爲,以及它刻意保持靜音的情況。

三種事件、三個選擇器

事件 觸發來源 行爲
回合結束(Turn finished) Session running: true → false 播放「回合結束」所選片段一次
權限請求(Permission requested) approval/request 播放「權限」片段,再把請求交給原有審批 UI
回合因錯誤結束(Turn ended on an error) api-session/error 播放「錯誤」片段;隨後該回合的結束不再播放「回合結束」音

每種通道在設置裏都有獨立下拉框,庫內共 45 條 OpenCode 短音(Alert、Bip-bop、Nope、Staplebops、Yup 等命名),並可選 Off (silent)。選中的片段會立即試聽一次。

默認與 OpenCode 桌面應用對應關係如下:

通道 默認值 OpenCode 等價
Turn finished staplebops-01 Agent complete
Permission requested staplebops-02 Permission required
Turn ended on an error nope-03 Error

播放策略(避免誤響)

README 中明確列出的規則包括:

  • 每個事件最多響一聲,不跟隨逐步工具調用或流式 token。
  • 失敗回合只播錯誤音,不會同時播「回合結束」音;錯誤狀態在同 Session 內記憶約 15 秒。
  • 用戶用停止按鈕或 Esc Esc 中止回合時不播結束音。
  • 啓動或重連後約 250 ms 內的 running 抖動、頁面加載時已在運行的 Session(需觀察到 running 約 2 s 後纔可能響)、子 agent Session(origin: subagent)、以及掛載在空閒列表上時的歷史回放,均保持靜音。
  • 1.5 秒內的連續審批請求會合並,只響一次。

音頻通過複用的 HTMLAudioElement 與本地 data: URI 播放;運行時無網絡請求。瀏覽器 autoplay 策略下,首次指針或按鍵會用零長度靜音片段預熱,避免無聲或誤觸整窗點擊就響。

配置存儲

選項保存在瀏覽器 localStorage:

  • dsh-occlick.turn
  • dsh-occlick.permission
  • dsh-occlick.error

按瀏覽器維度保存,而非 DSH profile。舊版 0.2.x 的 dsh-occlick.sound 會遷移;清除站點數據後恢復默認。

安裝與啓用

需要 DSH ≥ 0.2.0 與 Web 客戶端。命令行安裝後需重啓 DSH(bundle 在啓動時組裝)。

在 Plugins 頁面安裝

  1. 打開 Plugins → Add plugin。
  2. 粘貼倉庫地址:
https://github.com/contraliz/dsh-occlick
  1. 點擊 Install,再 Enable now。
  2. 打開 Settings → Sound effects 選擇片段。

命令行安裝

按你使用的 profile 複製對應一行:

# DSH desktop app
dsh plugin --profile desktop add github:contraliz/dsh-occlick
# dsh web
dsh plugin --profile web add github:contraliz/dsh-occlick

卸載時將 add 換爲 remove dsh-occlick,profile 與安裝時一致。

從本地 checkout 安裝(可選)

若已有源碼目錄,可在該目錄執行(README 示例爲 web profile):

git clone https://github.com/contraliz/dsh-occlick
cd dsh-occlick
dsh plugin --profile web add .

典型用法

  1. 安裝並啓用插件後,打開 Settings → Sound effects,或 Plugins → dsh-occlick → Configure;兩處是同一套三個選擇器。
  2. 爲「回合結束」「權限請求」「錯誤」分別選片段;不需要的通道選 Off (silent)。
  3. 發起一段可能較久的 agent 任務,切到其他窗口;回合正常結束時應聽到結束音;若觸發審批,應聽到權限音;若會話報錯,應聽到錯誤音而非結束音。

音庫族與數量(名稱均來自 README):

族 數量 庫內名稱示例
Alert 10 alert-01 … alert-10
Bip-bop 10 bip-bop-01 … bip-bop-10
Nope 12 nope-01 … nope-12
Staplebops 7 staplebops-01 … staplebops-07
Yup 6 yup-01 … yup-06

適用場景與注意

適合誰:長時間在 DSH Web 或桌面殼裏跑任務、希望用 OpenCode 同款短音感知「結束 / 要審批 / 出錯」的開發者;也可作爲不依賴視覺盯屏的輔助反饋(README 建議標籤含 accessibility)。

權限與風險:插件 host 側爲空,不申請 DSH 權限、不執行 shell、不訪問文件或憑證;客戶端讀取 sessions.list 的 running、監聽 approval/request 與 api-session/error,並註冊設置與插件行 UI。無遙測與遠程日誌。

安裝前建議:插件以當前 DSH 進程所加載的客戶端 bundle 形式運行;安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證。社區目錄 skillhub.cn 插件頁 與 DeepSeek / 幻方無官方從屬關係,屬於 DSH「一切皆插件」生態中的獨立收錄。

兼容性備註:README 稱在 DSH desktop app 0.2.1、Windows 11 上測試;需 Chromium/Electron WebView 的 HTMLAudioElement 與 localStorage。Node.js 22+ 僅用於開發與構建,已安裝插件不在 Node 中運行。

結尾

dsh-occlick 把 DSH 裏已有的回合、審批與錯誤信號轉成三條本地提示音通道,素材與 OpenCode 一致、可逐項靜音,且對中止回合與子 agent 等場景做了靜音處理。需要安裝或 issue 時可直接訪問倉庫與社區目錄頁:

  • 目錄頁:https://www.skillhub.cn/plugins/contraliz/dsh-occlick
  • GitHub:https://github.com/contraliz/dsh-occlick
羽毛球分组比赛记分
小程序二维码

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

小夜