Skip to content
dsh.fish
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

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source