Bundle
dsh-ncm-plugin
DeepSeek Harness plugin wrapping the NetEase Cloud Music CLI (ncm-cli).
- Source
- king-bcolor
- License
- MIT
- Updated
- Updated 3 days ago
Readme
# dsh-ncm-plugin
> **中文文档**:[README.zh-CN.md](./README.zh-CN.md)
A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugin that wraps the [ncm-cli](https://github.com/Davied-H/ncm-cli) NetEase Cloud Music command-line tool as model-callable tools.
## What it is
`dsh-ncm-plugin` exposes NetEase Cloud Music CLI capabilities to DSH agents: account status, playlists, songs, lyrics, playable URLs, daily recommendations, play records, search, and playlist management/cleanup — all through structured, JSON-backed tools.
## Features
- Account: login status, current user, version.
- Playlists: list/show/create/add/remove/rename/tags/desc/delete.
- Playlist tidy: inspect, filter, diff, apply, move, duplicates.
- Songs: metadata, lyrics, playable URL resolution, desktop playback.
- Discovery: daily recommendations, weekly/all play records.
- Search: suggestions, songs, playlists.
- Safe by default: destructive writes require explicit confirmation.
- JSON-first output for agents, readable text rendering for the UI.
- Built-in Web Settings panel: every tool is exposed as an auto-generated
form (account, playlists, tidy, search, song/lyric/URL, recommendations).
## Use cases
- Ask the agent "what's in my playlist 490155105?"
- Search for songs and add them to a playlist.
- Clean up duplicate songs in a large playlist.
- Look up lyrics and playable URLs.
- Check daily recommendations and play history.
See [docs/用例目录/README.md](./docs/用例目录/README.md) for the full command/use-case/parameter catalog (Chinese).
## Installation
### Preconditions
- Node.js 22+, `dsh` CLI installed (`npx @deepseek-ai/dsh web`).
- No preinstalled `ncm` CLI is required. The plugin auto-downloads the
platform release binary into `$DSH_HOME/bin` on first tool run, or when you
click **Install/update ncm** in the UI. Download order: `ghfast.top` →
`gh-proxy.com` → GitHub official, so mainland-China networks use mirrors
first. Playwright driver downloads use `npmmirror.com` by default.
### Install from GitHub
Install into the **web** profile so the browser UI is available:
```bash
dsh plugin --profile web add github:king-bcolor/dsh-ncm-plugin
# This package has no prepare/build step, so no pnpm build permission is needed.
```
For headless/agent-only use, install into a headless profile the same way.
### Install from local checkout
```bash
git clone https://github.com/king-bcolor/dsh-ncm-plugin.git
cd dsh-ncm-plugin
dsh plugin --profile web add .
```
## Usage
Start the browser UI:
```bash
dsh web
```
The first tool call downloads ncm automatically; you can also open
**Settings → NetEase Cloud Music** and click **Install/update ncm**, then
**Log in to NetEase Cloud Music**.
Open **Settings → NetEase Cloud Music**. The panel exposes every ncm tool as a
form: account status, playlist browse/manage, tidy, search, song/lyric/URL,
recommendations, and records. Results are shown as readable text with a raw
JSON toggle.
You can still ask the agent in the same web session:
```bash
# example prompts
Use ncm_me to check my NetEase Cloud Music login.
Search NetEase Cloud Music for the song "晴天" and show the first 5 results.
```
## Configuration
```yaml
# profile cordis.patch.yml or plugin row config
- id: ncm
name: dsh-ncm-plugin
config:
ncmBin: ncm
ncmInstallDir: $DSH_HOME/bin
configDir: $DSH_HOME/ncm-config
autoInstall: true
ncmDownloadBaseUrl: https://ghfast.top/https://github.com/Davied-H/ncm-cli/releases/latest/download
playwrightDownloadHost: https://npmmirror.com/mirrors/playwright
timeoutMs: 30000
confirmWrites: true
```
## Development
TDD is mandatory for this project. The workspace is plain ESM JavaScript with
`node:test`; there is no build step:
```bash
npm test # red first, then implement until green
```
Local checkout quick start (no system ncm required):
```bash
./setup.sh
./start.sh
```
This creates a writable `.dsh-home`, bootstraps `ncm` into
`.dsh-home/bin`, installs the plugin into the web profile, and starts the UI.
## License
MIT
Install
dsh plugin --profile web add github:king-bcolor/dsh-ncm-plugin
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-ncm-plugin from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.