Perlica (Arknights: Endfield) themed tiered sound notifications: plan-ready, task-done, needs-your-input, and error tones; silent for plain chat, system-level playback (works in background), cross-platform (Windows/macOS/Linux), custom TTS sounds.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:117BS/dsh-perlica-ding
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
"We are not the ones who state ideals — we are the ones who carry them out." —— Perlica, Supervisor of Endfield Industries
![]()
简体中文 | English
🔔 A Perlica-themed (Arknights: Endfield) tiered sound notification plugin for DeepSeek Harness.
Perlica reports your agent's status in her calm, concise, terminal-announcement tone: plan ready, task done, needs your input, error — each with its own sound. Plain conversation stays silent. Custom sounds (TTS voice supported) and audible even when the window is in the background.
📖 About Perlica
Perlica is the Supervisor and official spokesperson of Endfield Industries, an outstanding Protocol Technology specialist who manages the development and application of Protocol Originium technology and the day-to-day operations of the Dreadnought. She handles crises with decisive calm, always moving between bases and strongholds for the stable development of Endfield.
This plugin's sound style is inspired by her — clean, concise, with a touch of technical bureaucracy, addressing you as 「Administrator」.
✨ Features
| Scenario | Trigger | Sound file |
|---|---|---|
| 🗂️ Plan ready | Turn closes while plan mode is active | plan.wav |
| ✅ Task done | Turn closes and execution-class tools were used (file writes / commands / subagents / workflows …) | done.wav |
| 💬 Plain chat | No tools used, or only lookup tools (read / web_search …) | Silent |
| 🙋 Needs your input | ask_user_question tool / approval request |
ask.wav |
| ⚠️ Error | Agent turn errored | fail.wav |
Also:
- Root conversation only: subagents do not beep individually
- Debounce: 2.5s per kind, no sound storms
- Custom sounds: drop wav files into the sound dir, no code changes
- Cross-platform: Windows (SoundPlayer) / macOS (afplay) / Linux (paplay/aplay)
- Configurable: master switch, debounce, sound directory
📦 Install
From GitHub (recommended, no npm account needed)
dsh plugin --profile web add https://github.com/117BS/dsh-perlica-ding
Restart the web profile to activate:
dsh web restart
From npm (once published)
dsh plugin --profile web add dsh-perlica-ding
Local development
dsh plugin --profile web add /path/to/dsh-perlica-ding
🎵 Sound files
Works out of the box: the Perlica voice lines ship inside the plugin package (sounds/ is bundled) — no configuration needed, each scenario has its own sound:
plan.wav — plan ready
done.wav — task done
ask.wav — needs your input
fail.wav — error (optional)
To use your own sounds: generate wav files with any TTS tool and drop them into your workspace root (or the configured soundDir); same-named files override the bundled ones, effective immediately without restart. Lookup order: configured dir → workspace → bundled → OS fallback.
Requirement: must be real WAV (PCM). If your TTS tool exports MP3, convert first: ffmpeg -i input.mp3 -acodec pcm_s16le plan.wav.
🔊 Volume control (with one-click preview)
Just open Settings: go to DSH Settings → 佩丽卡提示音 (Perlica Terminal) and you get a panel:
Volume
[==========|=========] 50%
[Original 100%] [Medium 60%] [Soft 30%] [Mute 0%]
Preview
[Plan ready] [Task done] [Needs input] [Error]
- Drag the slider or tap a preset (0 = silent, 100 = original) — saved automatically, effective immediately
- Tap a preview button to play that sound right away, so you can find the right level by ear instead of guessing
- Previews use the exact same playback path as real notifications — what you hear is what you get
Suggested levels
| volume | Effect | When |
|---|---|---|
100 |
Original level | Noisy environment |
60 |
Slightly quieter | Headphones, quiet room |
30 |
Soft cue | Late night, library |
0 |
Fully muted | Temporarily off |
💡 How it works: the plugin rescales the WAV PCM samples directly (zero dependencies, cross-platform) and never touches your system volume. Scaled copies are cached in the system temp directory, computed once per volume.
⚠️ Note: non-PCM audio sources (rare) fall back to the original level.
⚙️ Advanced configuration
The volume can also be set in config (as the starting value; anything chosen in the settings page wins). In the profile's cordis.yml or the user patch layer:
plugins:
dsh-perlica-ding:
enabled: true # master switch
volume: 100 # initial volume 0-100 (settings page overrides)
debounceMs: 2500 # min gap between same-kind sounds (ms)
soundDir: "" # custom sound dir; empty = workspace root
execTools: [] # tools that count as "executing a task"; empty = every tool counts (legacy)
🧪 Verify
Ask the agent to run any task (e.g. call a tool); you should hear a sound when it finishes. Or test the audio chain manually:
$p = New-Object Media.SoundPlayer 'D:\deepseek\done.wav'; $p.PlaySync()
📄 License
MIT
Links
More in this category
PolinniZhong/dsh-omi-voice★ 74
In-chat read-aloud for DeepSeek Harness: tap to read, pause and resume AI replies with natural Doubao TTS voices (BYOK), reading only the final answer with code, tables and diagrams filtered; local engine, plugin keeps no API key.
PensiveFei/dsh-voice-scribe★ 34
Voice input for the web UI: tap Alt (or Alt+Space) to start/stop dictation, browser Web Speech (zero-config) or OpenAI-compatible cloud ASR, optional polish through DSH-configured LLM, settings UI.
1624318455/dsh-plugin-tts★ 21
Reads assistant replies aloud via free Edge TTS or your own RVC voice models: read-aloud buttons + auto-read, adaptive chunked progressive playback (gapless long reads), one-click voice-pack installs from a registry, and a portable RVC runtime.
WizisCool/dsh-ears★ 21
Voice input plugin for DeepSeek Harness (dsh): a microphone button in the composer turns speech into a draft transcript, with a choice of speech-recognition backends, optional polish through dsh own LLM routes, and a native settings page.
PerryLink/dsh-talk★ 15
Voice I/O for DeepSeek Harness — speech-to-text and text-to-speech over the microphone and audio output.
qishuilalala/dsh-voice-mode#dsh-voice-mode★ 15
Full-duplex voice mode for the DeepSeek Harness Web UI: toggle (2s-pause auto-send) or hold-to-talk dictation into an editable draft with zipformer2 streaming ASR, optional wake word; sentence-by-sentence Edge TTS read-aloud with live captions, and speaking interrupts playback and the running turn (true barge-in). On-device ASR, no API key.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.