← 返回列表
未验证
为 DeepSeek Harness 添加 MIDI 文件的识别、编辑与可视化能力,基于 @tonejs/midi
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/18 · 已提供中文文档
综合分
28.2
GitHub 分
28.2
用户评分
—
★ Stars
2
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add DJCCCCCCCC/midi_operater该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
- 是什么
- dsh 原生插件 · market
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 更新放缓:最近一次提交在 38 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/26
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-midi-plugin
为 DeepSeek Harness 添加 MIDI 文件的识别、编辑与可视化能力,基于 @tonejs/midi
功能
- 识别:midi_summary(概览)、midi_read(完整音符)、midi_chords(和弦进行)
- 编辑:midi_write(写回)、midi_transpose(移调,可只移单条声部)、midi_quantize(量化)、midi_tempo(改速度)
- 可视化:midi_read 的调用卡片带 FL Studio 风格钢琴卷帘(缩放、拖拽平移、轨道筛选)
组成
插件分两部分:
| 部分 | 文件 | 生命周期 | 作用 |
| --- | --- | --- | --- |
| 持久化 bundle(必装) | index.js + midi.js + cordis.patch.yml | 随 profile 持久,重启不丢 | 7 个 MIDI 工具 |
| 动态伴侣(可选) | plugin.host.js + plugin.client.js + worker.mjs | 会话级,重启后需重载 | 钢琴卷帘(在对话卡片里渲染) |
工具是核心能力,靠 bundle 持久化。钢琴卷帘是可选的浏览器可视化,走动态插件(harness 对第三方只开放这一条 UI 通道);它用 host.call('midi-preview') 直接读完整文件,不受工具结果 24KB 截断限制,所以大文件也能画。
安装
一键安装
git clone https://github.com/DJCCCCCCCC/midi_operater
cd midi_operater
npm run install:plugin
脚本会自动完成:装依赖 → 打包 → 装进 profile → 验证。重启 web 服务后 7 个工具生效。
装到其他 profile:npm run install:plugin -- tui(把 tui 换成你的 profile 名)。
手动安装
本地目录
dsh plugin --profile web add ./midi-plugin
或从 GitHub
dsh plugin --profile web add github:DJCCCCCCCC/midi_operater
验证是否装好:
dsh --profile web --dump-config # 应看到 "# == dsh-midi-plugin" 层
可选:钢琴卷帘
钢琴卷帘是浏览器可视化,属于动态插件,无法随上面的命令自动安装(harness 的安全机制要求授权)。想要的话,对 AI 说一句:
加载 midi 伴侣
AI 会完成注册,你点一次「允许」并刷新页面即可。之后 midi_read 的调用卡片里就会带出钢琴卷帘。
动态插件是会话级的,重启 web 服务后需要再说一次「加载 midi 伴侣」。工具(7 个 MIDI 工具)不受影响,永远在。
使用
把 .mid 文件放进工作区目录,让模型处理即可:
| 工具 | 参数 | 说明 |
| --- | --- | --- |
| midi_summary | path | 紧凑概览:速度/拍号/调号/轨道/音色/音符数 |
| midi_read | path, mode? | 解析为 JSON;mode=full(默认)含每个音符 |
| midi_write | path, midi | 把 JSON 写回 .mid |
| midi_transpose | path, semitones, trackIndex?, outputPath? | 移调;trackIndex 只移单条声部 |
| midi_quantize | path, subdivisions?, outputPath? | 音符起始时间对齐节奏网格 |
| midi_tempo | path, bpm, outputPath? | 设为单一速度 |
| midi_chords | path, epsilon? | 和弦进行(自动排除鼓/打击乐/音效轨) |
数据模型
midi_read 返回的 JSON 可直接传给 midi_write 回写(派生字段会被忽略):
{
"name": "demo",
"tempos": [{ "bpm": 120, "ticks": 0 }],
"timeSignatures": [{ "timeSignature": [4, 4], "ticks": 0 }],
"keySignatures": [{ "key": "C", "scale": "major", "ticks": 0 }],
"tracks": [
{
"name": "Piano",
"instrument": { "name": "acoustic grand piano", "number": 0 },
"channel": 0,
"notes": [
{ "midi": 60, "name": "C5", "time": 0, "duration": 0.5, "velocity": 0.8 }
]
}
]
}
音名标注采用 FL Studio 的八度约定(middle C = C5 = MIDI 60)。
限制
- 只保留音符级信息(音符/速度/拍号/调号/音色/通道),不保留弯音、表情控制器等细节事件。
- midi_read 的 full 模式会一次性返回所有音符,超大文件先 summary 看规模。
- 钢琴卷帘依赖动态伴侣,重启后需按上文重载(这是 harness 对第三方 UI 的限制)。
- 钢琴卷帘带「下载」按钮(按当前轨道筛选导出单轨或整文件);上传按钮未提供,把 .mid 文件放进工作区直接 midi_read 即可。