前言¶
在 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 秒。
- 用戶用停止按鈕或
EscEsc中止回合時不播結束音。 - 啓動或重連後約 250 ms 內的
running抖動、頁面加載時已在運行的 Session(需觀察到 running 約 2 s 後纔可能響)、子 agent Session(origin: subagent)、以及掛載在空閒列表上時的歷史回放,均保持靜音。 - 1.5 秒內的連續審批請求會合並,只響一次。
音頻通過複用的 HTMLAudioElement 與本地 data: URI 播放;運行時無網絡請求。瀏覽器 autoplay 策略下,首次指針或按鍵會用零長度靜音片段預熱,避免無聲或誤觸整窗點擊就響。
配置存儲¶
選項保存在瀏覽器 localStorage:
dsh-occlick.turndsh-occlick.permissiondsh-occlick.error
按瀏覽器維度保存,而非 DSH profile。舊版 0.2.x 的 dsh-occlick.sound 會遷移;清除站點數據後恢復默認。
安裝與啓用¶
需要 DSH ≥ 0.2.0 與 Web 客戶端。命令行安裝後需重啓 DSH(bundle 在啓動時組裝)。
在 Plugins 頁面安裝¶
- 打開 Plugins → Add plugin。
- 粘貼倉庫地址:
https://github.com/contraliz/dsh-occlick
- 點擊 Install,再 Enable now。
- 打開 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 .
典型用法¶
- 安裝並啓用插件後,打開 Settings → Sound effects,或 Plugins → dsh-occlick → Configure;兩處是同一套三個選擇器。
- 爲「回合結束」「權限請求」「錯誤」分別選片段;不需要的通道選 Off (silent)。
- 發起一段可能較久的 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