ppy-web/dsh-plugin-xiaomi-mimo-tts
ppy-web/dsh-plugin-xiaomi-mimo-tts为 DSH 提供小米 MiMo、豆包、浏览器本地 TTS 语音朗读;自动播报、自定义音色、UI 音效、桌宠联动、QQBot 联动。
让 Agent 弹一曲真钢琴:Salamander Grand 真实采样音色,Canvas2D 三角钢琴与沉浸式舞台渲染,88 键可弹。
dsh-pianist brings a piano-playing Agent to the DeepSeek Harness (dsh) Web UI: tired of coding? Ask the AI to play a tune and relax. How well it plays is entirely up to the model. A toy — and also an exam.
Project home page: https://laplace-bit.github.io/dsh-pianist/
Click the cover above to watch the showreel (docs/showreel.mp4), or visit the online demo, pick a piece, and hear it rendered in real time.
In the DeepSeek Harness source repository:
pnpm dsh plugin --profile web add dsh-pianist
If dsh is already on your PATH:
dsh plugin --profile web add dsh-pianist
The npm package ships prebuilt artifacts — usable right after install.
Then start the UI:
pnpm dsh web
To uninstall: pnpm dsh plugin --profile web remove dsh-pianist.
| DSH kernel | This plugin |
|---|---|
| 0.1.0-rc.5 - 0.1.0-rc.7 | ✅ all versions |
| 0.1.1-rc.2 | ✅ all versions |
| 0.1.2-alpha.1 - 0.1.2-alpha.3 | ✅ 0.1.0 (build with the 2026-09-01 compat fix); earlier releases fail to load on 0.1.2 |
0.1.2-alpha.3 is the current host kernel and has been verified live (built-artifact import + test suites); the remaining kernels are covered by the dual-kernel-compatible design (one build, one API surface).settingsNamespace() runtime helper (on ≤ 0.1.1 it was a validating identity function; 0.1.2 keeps only the same-named type). This plugin does not statically import that symbol any more — it inlines its namespace constant locally and asserts it as the SettingsNamespace type, which works on both old and new kernels.settingsNamespace(); earlier releases only work on kernels ≤ 0.1.1 — rebuild or update to a build that contains the fix.@deepseek-ai/* packages. The host CLI starts via node --import tsx/esm, and tsx applies the host tsconfig paths mapping, so a bare @deepseek-ai/* import from an external plugin may be redirected into the host's own sources — any host-side rename or removal then explodes at boot as a module instantiation error. Type-only imports (import type) are unaffected.Once installed, just request a song in natural language; the Agent hands the full score to the piano:
Play the first eight bars of Ode to Joy, both hands, with sustain pedal.
A C-major scale at 100 BPM, slowed down a little.
Improvise something light and cheerful to help me unwind.
The browser may require one manual click on the play button before sound comes out — that is the browser's autoplay policy, not a bug.
The Settings → Plugins → Pianist card lets you adjust at any time:
Changes apply as soon as you save.
Plugin code is MIT. The bundled piano recordings come from Salamander Grand Piano V3 (CC BY 3.0); see THIRD_PARTY_NOTICES.md for attribution.
A standalone web page can import the package via npm and register the Web Component:
import { registerDshPianoView } from 'dsh-pianist/demo';
registerDshPianoView();
// <dsh-piano-view> exposes public APIs such as setScore / setPianistSettings /
// play / pause / seek / setRate / requestImmersive.
The settings card is registered under Settings → Plugins via settings.plugin.item. For a local preview landing page, see docs/index.html: pnpm run build && pnpm dlx serve ..