Back to home@bigfurma-bot

dsh-attention

Approval attention watcher for DeepSeek Harness: bell sound + tab-title flash whenever an approval needs the owner's decision

Stars
0
Language
JavaScript
Created
Aug 22, 2026
Updated
Aug 23, 2026

Introduction

dsh-attention

Approval attention watcher for DeepSeek Harness (DSH): when anything needs the owner's decision — folder-access escalation, tool approval, plugin activation — the browser plays a bell and flashes the tab title, so an away-from-keyboard owner always knows their agent is blocked.

What rings the bell

Ask typeDetectionAutomatic?
Sandbox / folder-access escalationsdurable approval/asked session-log eventsyes
Tool approvals (any session or subagent)same log channelyes
Plugin activations (cordis_run client packages)private host-runner registry, invisible on the bus — your agent calls attn_ring when a run returns "awaiting approval"agent-side; the ring auto-clears itself when the verdict lands (v1.1.0)

Behavior: chime on first sighting → repeat every 20 s while unanswered → title flashes 🔔 N approvals waiting → restored on resolution. Sub-second auto-granted asks stay silent by design (no false alarms). Audio unlocks on your first interaction with the page (browser autoplay policy); asks that arrive earlier still flash the title and chime on first click.

Flashing tab title and approval card

The sound

Ships with a bell recording embedded at build time, plus a fully synthesized Web Audio struck-bell fallback (noise-burst clink + inharmonic partials + room tail) if decoding ever fails.

Bell recording from Mixkit under the Mixkit Sound Effects Free License.

Swap in your own notification sound

# 1. transcode any wav/mp3 to compact opus and base64 it
ffmpeg -y -i my-chime.wav -ac 1 -ar 48000 -c:a libopus -b:a 32k my-chime.ogg
base64 -w0 my-chime.ogg > my-chime.b64

# 2. inject into client.js (byte-exact, no hand editing)
node scripts/embed-chime.mjs my-chime.b64 /path/to/this/repo/client.js

Then reinstall and restart.

Install

cd ~/.dsh/profiles/web
rm -rf node_modules/@deepseek-ai/dsh-attention        # drop any stale copy
pnpm add --force "file:/path/to/this/repo"

Add the composition row to ~/.dsh/profiles/web/cordis.patch.yml:

- insert:
    - id: attention
      name: '@deepseek-ai/dsh-attention'

Restart DSH web. Verify:

curl -s http://127.0.0.1:3080/attention/state   # -> {"ok":true,"pending":[],...}

The host half declares inject: ['webServer']; keep that if you fork, or the polling route silently skips at boot.

Agent tools

Registered for every session:

ToolPurpose
attn_ringring manually — use right after any "awaiting user approval" result; auto-expires (default 30 min), and since v1.1.0 also auto-clears the moment any cordis activation verdict (approve / reject / cancel / fail) lands
attn_clearhush courtesy rings once answered (e.g. one rung before ask_user_question); activation rings no longer need it
attn_debugcounters: waterfall vs durable-log sightings, cordis resolutions seen, active rings

No config keys.

License

MIT — see LICENSE. The bundled bell recording is subject to the Mixkit Sound Effects Free License.