
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-sound-lab
Advanced tools
DSH 声音工坊(Sound Lab):对话事件音效、AI 角色语音生成、音效库上传管理,全程可视化点选;内置明日方舟安洁莉娜角色桌宠(60fps 精灵图动画、边缘停靠、悬浮窗配置)。Hot-pluggable dsh plugin.
English | 中文
A DSH Web GUI Sound Lab: pick a sound for each of the four triggers (session end / options popup / permission request / stop), generate AI character voice lines, and upload & manage your own sound library — all set with a few clicks, no code needed; floating desktop pet (default) or round ball, 3 appearances, dual-persisted config.
🐋 Character reference: a fan-made project for Angelina from Arknights. The bundled sample sounds are Angelina's "hirari do~", "Huh?" and "AWAWA!" voice clips, for personal learning and entertainment only — not for commercial use.
Both methods work for either user type — Desktop users and npx dsh web users can use whichever they prefer.
Option A — Setup installer (recommended, zero dependencies, works for both):
npx dsh web) so its profiles get initialized — then quit it (the Desktop app or the dsh web server)Note (just how it works — no action needed): the installer deploys the plugin to
$DSH_HOME/plugins/dsh-sound-laband registers it into every initialized profile (web, desktop, …) via the officialdsh plugincommand, so all profiles share the same copy. If no dsh CLI is found, it auto-detects one (desktop bundled runtime → system npx → downloads Node.js); if dsh hasn't been initialized yet (no profiles), it runsdsh webonce to initialize. On finish it restarts dsh automatically: for Desktop it closes the running instance first, then launches it (exactly like double-clicking the app — no terminal window, unaffected by closing the installer); when no Desktop app is detected (web environment) it prompts you to restart the dsh web service manually. Fully automated, no manual config edits.
Option B — dsh CLI (needs Node.js, works for both):
If dsh isn't running yet, start it once first (
npx @deepseek-ai/dsh web) so its profiles get initialized (npm run setupand the Option A installer do this automatically when uninitialized). Don't have dsh yet? Download the DeepSeek Harness Desktop app, or install Node.js (https://nodejs.org) and runnpx @deepseek-ai/dsh web.
Pick the one command that matches how you run dsh — Desktop or web — and run only that one (choose 1 of 2):
# Desktop users —— run this one
npx @deepseek-ai/dsh plugin --profile desktop add dsh-sound-lab --config.minimumReleaseAge=0
# web users (dsh runs via `npx dsh web`) —— run this one
npx @deepseek-ai/dsh plugin --profile web add dsh-sound-lab --config.minimumReleaseAge=0
Then restart dsh (or just start it if it isn't running):
npx @deepseek-ai/dsh web
Development convenience:
npm run setupauto-detects all local profiles and registers this plugin into each of them;npm run setup:deploydeploys a copy to$DSH_HOME/pluginsand points every profile at it (release/fixed-use mode). Add--profile <name>(e.g.node tools/install.mjs --profile web --unify) to operate on a single profile only;node tools/install.mjs --npm --startinstalls from the npm package and auto-starts the matching side when done (Desktop window for desktop / web service + browser for web).
sounds/ folder, managed via a sounds.json control file) + refresh + Upload dialog: pick/drag-drop upload, delete sounds, restore hidden bundled sounds; non-bundled sounds can be renamed via ✎sounds/ directory (mp3/wav/ogg/m4a/flac/opus/aac/wma/webm), served by the host side via the /dsh-sounds-control static server (Range/206 chunking, ETag, streaming)config.json, survives restarts; every field is sanitized (type/range/enum) on load, bad values fall back to defaultsnpm test (Node smoke tests for host-side list/config/upload/delete and browser-side logic), npm run setup / setup:fix / setup:deploy (multi-profile auto-config), releases/build-single-exe.ps1 (builds the Setup/UnSetup installers)dsh-sound-lab/
├── package.json # Package manifest (dsh.client / dsh.bundle.patch / types / scripts)
├── cordis.patch.yml # Composition patch: mounts line ui-event-sounds
├── CHANGELOG.md # Version history
├── README.md / README.zh.md
├── LICENSE
├── sounds/ # Sound library: bundled sounds (hirari do~/Huh?/AWAWA!) + uploaded/AI-generated audio
├── frames/ # Pet frame assets: <action>/sprite.webp sprite sheet (WebP lossless) + motion.json (60fps, 12 actions)
├── lib/
│ ├── index.js # Host side: /dsh-sounds-control static service (list/config/audio/TTS) + /dsh-frames-control (pet frames)
│ ├── client.js # Browser side: desktop pet / floating ball + settings dialog + trigger detection + playback
│ ├── tutorial/ # Illustrated tutorial images for AI voice generation (image1.png / image2.png)
│ └── types/index.d.ts # Type declarations
└── tools/
├── install.mjs # Multi-profile auto-config (setup / --fix / --unify / --deploy)
├── test-host.mjs # Host-side API smoke tests (list/config/upload/delete/TTS)
├── test-client.mjs # Browser-side logic smoke tests
└── api/ # Standalone TTS script (tts_api.py + guide + reference audio)
The plugin is two halves, loaded automatically from a single install:
sounds/ directory to the browser side through the /dsh-sounds-control static server (sound list / audio files / config.json persistence), and the frames/ pet assets through /dsh-frames-control (action list / frame PNGs)Mounting of both halves is driven by package.json — no separate install needed:
dsh.client declaration (exports "./client") → loads the browser side in the Web GUIdsh.bundle.patch (cordis.patch.yml) → registers the host side in the DSH main processBecause dsh plugins are isolated per profile ($DSH_HOME/profiles/<name> each has its own package.json / node_modules), a plugin must be registered in every profile you want it in — that's what the installer and tools/install.mjs automate (see Install).
sounds/ folder (see the directory tree above) — they are reconciled into the library automatically on startup. When installed, there is no need to hunt for the folder — open the settings dialog → Sound library → Upload, then pick a local file or drag & drop to import (it is copied into the sounds/ folder of the install location automatically). You can also delete sounds from the list (bundled sounds are hidden, restorable anytime) or rename them via ✎.sounds/Tip: drag the desktop pet anywhere; it docks at screen edges (peek left/right, sleep top/bottom — left/right hidden 40% with a 30° rotation, top flipped upside-down hidden 80%, bottom not hidden), falls asleep after 90s idle, greets on click; switch between desktop pet / round ball and Whale Girl / Pure White / Pure Black under "Appearance"; the floating-window settings dialog lets you adjust Theme / Event · Asset · Audio independently; position and config are saved automatically and survive restarts.
FAQs
DSH 声音工坊(Sound Lab):对话事件音效、AI 角色语音生成、音效库上传管理,全程可视化点选;内置明日方舟安洁莉娜角色桌宠(60fps 精灵图动画、边缘停靠、悬浮窗配置)。Hot-pluggable dsh plugin.
The npm package dsh-sound-lab receives a total of 204 weekly downloads. As such, dsh-sound-lab popularity was classified as not popular.
We found that dsh-sound-lab demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.