When developing agents in DeepSeek Harness (DSH) Web, tasks often run for long periods. When a task completes or requires manual approval intervention, it is easy to miss critical status updates if the page is in the background or unfocused. The dsh-attention plugin aims to address this pain point by reminding users of task progress through desktop-level sounds, system banners, and tab flashing.
Plugin Introduction¶
dsh-attention is a DSH Web plugin distributed via GitHub, not a Shell modification. It listens to DSH events through browser plugin mechanisms and triggers multi-channel alerts when specific conditions are met. Its core value is ensuring that users do not miss turn-completion or pending-approval signals due to distraction.
Core Features¶
The plugin provides multiple notification channels, each of which can be independently toggled in Settings → Alerts:
- Tab Title and Icon
- Turn Completed: The tab title prefix flashes for about 4 seconds, and the favicon displays a badge.
- Blocking Wait: If there is currently a blocking wait, the tab title remains in a flashing state.
- Sound
- A short alert tone (Web Audio API, style similar to OpenCode/Codex). The sound can be triggered as long as the browser tab is open.
- Native System Notifications
- System Banner: Triggered via
osascript(macOS),notify-send(Linux), or Windows Toast. - Single Producer Rule: When a browser tab’s heartbeat is active (less than 8 seconds), the tab owns the banner and sound; when all tabs are closed or frozen, the host takes over to avoid duplicate notifications.
- Loopback Only: Native notifications can only be triggered on loopback; a remote Web GUI cannot trigger this feature.
- System Banner: Triggered via
- Browser Notification Fallback
- If the native notification binary is missing or unavailable, the browser-native Notification API is automatically used as a fallback.
- Preferences Management
- Supports storing and refreshing preferences. If completion events are observed while preferences are loading, these events are staged and refreshed after loading completes.
Installation and Configuration¶
It is recommended to use the plugin’s built-in installation command. This command modifies the target configuration file and installs dependencies without interrupting DSH during the process.
- Install Plugin:
npx --yes github:shaomingbo/dsh-attention#v0.1.4
- Check Installation Status:
npx --yes github:shaomingbo/dsh-attention#v0.1.4 status
- Uninstall Plugin:
npx --yes github:shaomingbo/dsh-attention#v0.1.4 uninstall
This command is idempotent and can be safely run repeatedly.
After installation or uninstallation, you need to manually restart dsh web and hard refresh the page in the browser (Ctrl+Shift+R or Cmd+Shift+R) for changes to take effect.
The preferences file is located at $DSH_HOME/attention.json (default path is ~/.dsh/attention.json).
Behavior and Notes¶
- Trigger Timing:
- Turn Completed: Alerts are triggered unconditionally, including for turns the user is currently reading.
- Approval/Issue: Triggered only when the page is in the background or unfocused. These events remain muted when the user is viewing the page.
- Permission Prompt: On first access, the page may show a toast requesting browser notification permission. This permission is used only as a fallback when native notifications are unavailable.
- Host Logic: The host listens for
approval/requestevents but always callsnext()and does not respond to approvals directly. - Environment Dependencies: Native system notifications depend on system environment tools (such as
notify-sendon Linux). If dependencies are missing, the plugin automatically falls back to browser notifications.