DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
O

dsh-occlick

Occlick

DeepSeek Harness 的 OpenCode 通知音效:可选择回合完成、请求权限和回合出错时的音效。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:contraliz/dsh-occlick#814bbc0b0e0253f4f90d99ba9753941542fe26e1
README兼容性版本
The three sound pickers under Settings → Sound effects: Turn finished, Permission requested, and Turn ended on an error, each with a dropdown of OpenCode clips

兼容性与来源证明

Occlick 以 dsh-occlick 发布,当前版本为 0.4.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/28

版本

0.4.1stable
2026/10/28

相关插件

正在加载相关插件…

最新版
0.4.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 4
周下载
0
最近提交
2026/10/28
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Better Sidebardsh-better-sidebarBetter Sidebar for DSH — 在一列中提供文件树、编辑器、变更、任务和侧边聊天,并为每个对话单独显示。同时提供服务,供其他插件注册侧边栏标签页和文件查看器。Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包

README

dsh-occlick

Plays OpenCode notification sounds in DeepSeek Harness — one clip when a turn finishes, one when the agent asks for permission, and one when a turn fails, each with its own picker from the whole OpenCode sound library.

OpenCode ships a small library of notification clips for its desktop app. This plugin brings that library to DSH and plays one when a turn finishes, when the agent asks for permission, and when a turn fails, so you can look away while a long task runs and hear when the agent needs you.

The three sound pickers under Settings → Sound effects: Turn finished, Permission requested, and Turn ended on an error, each with a dropdown of OpenCode clips

Settings → Sound effects: one picker per event, all 45 OpenCode clips, plus Off (silent). Choosing a clip auditions it immediately.

What it does

EventSourceBehaviour
Turn finishedSession running: true → falsePlays the turn clip once
Permission requestedapproval/requestPlays the permission clip, then passes the request to the approval UI
Turn ended on an errorapi-session/errorPlays the error clip; the following turn end stays silent
User stops the turnStop button or Esc EscSilent; a stopped turn did not finish
Flicker at boot or reconnecttrue → false within ~250 msSilent
A run already going at page loadrunning: true on the first snapshotSounds only after ~2 s of observed running
Repeated idle refreshfalse → falseSilent
Subagent Sessionorigin: subagentSilent
Mounted over an idle list—Silent (no history replay)
  • Three channels, three pickers: turn finished, permission requested, and turn ended on an error each choose their own clip.
  • One click per event: sounds follow the event, not every step, tool call, or streamed token. A failed turn plays the error clip instead of the turn-finished clip, never both.
  • 45 sounds each: everything OpenCode ships — Alert, Bip-bop, Nope, Staplebops, and Yup — with an instant preview as you choose.
  • Configured in DSH: the same pickers appear on Settings → Sound effects and on the plugin's own row under Plugins, so they follow the normal enable/disable and uninstall flow.
  • Quiet where it should be: subagent turns stay silent, a stopped turn stays silent, a burst of approval requests plays once, and opening or reloading the harness cannot replay an old turn end.

Because DSH publishes running state per Session, a turn that ends while you are looking elsewhere still makes the sound. An error is remembered per Session for 15 seconds, so the failed turn does not also play the turn-finished clip. Approval requests are coalesced within 1.5 seconds, so a burst sounds once.

Install

Requires DSH 0.2.0 or later and the Web client (the desktop app, or dsh web). The plugin is a Cordis client bundle; it needs a page to render settings into and an audio output.

From the Plugins page

  1. Open Plugins → Add plugin.

  2. Paste the repository address:

    https://github.com/contraliz/dsh-occlick
    
  3. Click Install, then Enable now.

  4. Open Settings → Sound effects and pick a clip.

From the command line

Copy the line for the profile that matches how you run DSH:

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

Restart DSH after a command-line install: bundle entries are composed at startup. To uninstall, use the same command with remove dsh-occlick.

From a checkout

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

Choose the sounds

Open Settings → Sound effects, or Plugins → dsh-occlick → Configure. Both show the same three selectors, each listing every clip and labelled the way OpenCode labels them.

Every channel also offers Off (silent), so one event can be muted while the others keep sounding.

The defaults are the clips OpenCode's own desktop app uses for the same events:

ChannelDefaultOpenCode equivalent
Turn finishedstaplebops-01Agent complete
Permission requestedstaplebops-02Permission required
Turn ended on an errornope-03Error

Choosing a sound saves it and plays it immediately, so you can audition without waiting for an event.

FamilyCountLibrary names
Alert10alert-01 … alert-10
Bip-bop10bip-bop-01 … bip-bop-10
Nope12nope-01 … nope-12
Staplebops7staplebops-01 … staplebops-07
Yup6yup-01 … yup-06

The choices are stored in the browser under dsh-occlick.turn, dsh-occlick.permission, and dsh-occlick.error, so they are per browser rather than per profile. A turn sound saved by version 0.2.x (dsh-occlick.sound) is carried over. Clearing site data restores the defaults.

Category

Integrations & Connections — the plugin turns DSH's existing turn, approval, and error signals into a local notification channel. It connects no external service, adds no model, tool, or skill, and changes no conversation content.

Suggested tags: notifications, sound, audio, accessibility, opencode.

Permissions and risk

dsh-occlick is a client-side Cordis bundle with an empty host half. It requests no DSH permission, no tool, no shell command, no filesystem path, and no credential.

SurfaceWhat the plugin does
Client servicesReads sessions.list (the running bit) and registers three slot entries (settings.section, plugins.row.config, and a pass-through conversation.composer selector) plus its locale dictionary
Remote eventsObserves approval/request (then calls the next handler, so the approval UI still wins) and api-session/error
Browser storageReads and writes only the dsh-occlick.* keys listed above
NetworkNone at runtime — the clips are embedded in the bundle and no request is made
AudioPlays one reused HTMLAudioElement from local data: URIs
Files, shell, MCP, subagentsNone
  • Autoplay, silently: browsers want a user gesture before audio, so the first pointer press or key press pre-warms that element with a zero-length silent clip. The warm-up is muted and never audible; clicking around the window cannot play a sound on its own.
  • Your stop is not a finish: stopping a turn with the composer's stop button, or with the Esc Esc shortcut, keeps the turn-finished sound quiet.
  • Nothing leaves the machine: no analytics, no telemetry, no remote logging.

Compatibility

RequirementNotes
DSH 0.2.0+Uses client slots, sessions.list, remote.$on, and ctx.locale; the package declares engines.dsh
Web clientDesktop app or dsh web. Headless/TUI profiles have no settings page and no audio output, so the plugin is inert there
Chromium/Electron WebViewNeeds HTMLAudioElement, localStorage, and CSS custom properties
Node.js 22+Development only (build and tests); the installed plugin does not run Node
Browser storage enabledChoices fall back to defaults when storage is blocked

Tested on the DSH desktop app 0.2.1 on Windows 11. If the pickers do not appear on another DSH version, the client slot API changed; please open an issue with the DSH version.

Troubleshooting

  • No sound before the first click: the browser blocks audio until the window has received a gesture. Click or type once; later turn ends play normally, and the click itself is silent.
  • One channel is quiet: check that its picker is not set to Off (silent).
  • Everything is quiet: check the system/browser volume and that DSH's window is not muted in the OS mixer.
  • The old sound played when you clicked: versions ≤ 0.4.0 had an audible warm-up; update to 0.4.1 or later.
  • Choices reset: clearing site data or using a different browser removes the saved keys.

Details

  • Bundle, not a patch: the package ships cordis.patch.yml, so DSH lists it under Plugins with its row and a Configure page rather than as a loose Loader row.
  • Audio, not notifications: the plugin plays a clip through one reused HTMLAudioElement. It opens no system notification, registers no service, and adds no toolbar button.
  • One sound per event: falling edges are guarded per Session, the error marker suppresses the turn sound for that turn, and stop events suppress the turn sound entirely.
  • No host work: lib/index.js exports an empty apply, so the server half loads nothing and keeps no state.

Development

npm run fetch:sounds   # download the OpenCode clips into assets/audio (needs network)
npm run build          # regenerate lib/client.js from src/client.js + assets/audio
npm test               # offline checks for the generated bundle

lib/client.js is generated and committed, because DSH serves exactly one script per plugin row: every clip is embedded in it as a data URI. Edit src/client.js and rebuild; do not edit lib/client.js.

The source layout:

PathRole
src/client.jsBrowser half: event detection, playback, and the settings pickers
lib/client.jsGenerated browser bundle (committed so the package loads as installed)
lib/index.jsHost half: an empty apply that gives the Loader a row
assets/audioThe OpenCode clips, as downloaded
scripts/build.mjsEmbeds assets/audio into lib/client.js
scripts/fetch-sounds.mjsMaintainer tool that refreshes assets/audio from OpenCode
test/client.test.mjsOffline checks for the generated bundle

Credits

The sound library comes from the OpenCode desktop app (packages/ui/src/assets/audio) and is MIT-licensed. See THIRD_PARTY_NOTICES.md.

License

MIT. See LICENSE.