资讯动态

cli-anything-rekordbox:基于 SQLCipher 数据库直写与虚拟 MIDI 的 Rekordbox 6/7 Agent 原生 CLI 指南

发布时间:2026/9/10 3:11:39 来源:尧图企业网站定制
cli-anything-rekordbox基于 SQLCipher 数据库直写与虚拟 MIDI 的 Rekordbox 6/7 Agent 原生 CLI 指南【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anythingcli-anything-rekordbox 是 CLI-Anything 生态中专为 Pioneer Rekordbox 6/7 打造的 Agent 原生命令行工具它把 Rekordbox 仅有的两个真实可编程接口——SQLCipher 加密的master.db音乐库与虚拟 MIDI 实时控制——合并为单一 CLI从而让 AI Agent 可以程序化地检视 DJ 曲库、创建与管理播放列表并实时操控双 Deck 的播放、Sync、Crossfade 与 EQ。读完本文你将掌握该 CLI 的安装前置条件、完整命令分组与参数细节、写库前的安全守卫机制、JSON 输出约定以及它如何通过捆绑的Bunker.midi.csv映射与底层源码完成对 live deck 的控制。为什么需要这个 HarnessPioneer 官方并未为 Rekordbox 提供公开的播放控制 REST/RPC API。从仓库中的 REKORDBOX.md 可以看到Rekordbox 实际暴露的程序化表面只有三类master.db——SQLCipher 加密的 SQLite 音乐库曲目、播放列表、Cue、Hot Cue虚拟 MIDI——Rekordbox 接受任何已注册控制器映射发来的 MIDI 消息Pro DJ Link——面向硬件 CDJ 的只读网络广播。这个 harness 的组合思路非常明确用pyrekordbox直接读写加密数据库自动提取 Rekordbox 6/7 静态 master key用mido 虚拟 MIDI 驱动 live deck两者通过一个 Click 命令行统一对外暴露再叠加--json输出供 Agent 消费。正如其设计初衷所述“Pioneer ships no playback REST API; this harness combines the only two real surfaces (encrypted DB MIDI) into one agent-native CLI.”安装与前置条件包可通过 PyPI 安装[windows]extra 额外包含用于 UI 自动化的 pyautogui 等依赖pip install cli-anything-rekordbox # 可选Windows 上用于 live-deck UI 自动化的额外依赖 pip install cli-anything-rekordbox[windows]前置条件来自 SKILL.md 与 setup.pyPython 3.10setup.py 声明python_requires3.10Rekordbox 6 或 7 已安装且master.db必须存在且可被定位虚拟 MIDI 驱动仅 live-deck 控制需要WindowsloopMIDI / LoopBe / teVirtualMIDImacOSIAC Driver通过 Audio MIDI Setup 内置启用LinuxALSA 虚拟 MIDIsnd-virmidi。核心运行依赖在 setup.py 中固定为click8.0.0、prompt-toolkit3.0.0、mido1.3.0、python-rtmidi1.5.0、pyrekordbox0.4.0。安装后控制台脚本cli-anything-rekordbox指向rekordbox_cli:main也可以直接以模块方式运行python -m cli_anything.rekordbox见 __main__.py。快速上手三种使用形态# 1. 状态检查 cli-anything-rekordbox status # 2. REPL 交互模式不接子命令直接启动 cli-anything-rekordbox # 3. 面向 Agent 的 JSON 输出 cli-anything-rekordbox --json library search Daft PunkREPL 模式由prompt-toolkit提供源码见 rekordbox_cli.py启动后提示符为rekordbox支持help输出完整命令帮助、exit/quit退出且会复用根级--json设置把每一行输入再次交给同一个 Click 分发器解析执行异常会以error: ...形式回显而不是崩溃。命令分组详解Library 组曲库检视命令说明library count统计master.db中的曲目总数library search QUERY按标题/艺人的子串匹配查找曲目library info TRACK_ID输出单曲完整元数据library dump --out FILE.json将整个曲库导出为 JSON从源码看search默认--limit 20大小写不敏感地匹配Title/ArtistName字段每条结果返回id、title、artist、bpm存储值除以 100 还原与genre来自 Genre 关联的Name。info额外给出key调性取自 Key 关联的Name、duration_msc.Length与filec.FolderPath。dump默认输出到rekordbox_library.json。Playlist 组播放列表写操作与安全守卫命令说明playlist list列出所有播放列表含歌曲数playlist create NAME [--force] [--no-backup]新建播放列表playlist add NAME --track-title T [--force] [--no-backup]按标题搜索并加入曲目playlist clear NAME [--force] [--no-backup]清空播放列表add还支持--track-id ID跳过标题搜索直接按 ID 添加。所有写操作都遵循同一套守卫逻辑_open_db_for_write写前备份先把master.db及其 SQLite 侧车文件-wal、-shm复制到数据库同级的cli-anything-backups/目录文件名带%Y%m%d-%H%M%S时间戳后缀实现见 rekordbox_cli.py运行中拒绝写入CLI 通过标准库探测 Rekordbox 进程Windows 用tasklist匹配rekordbox.exemacOS/Linux 用pgrep/ps检测到运行中时默认直接拒绝写库并提示先关闭 Rekordbox--force确认风险后仍允许在 Rekordbox 运行时写入但仍然强制要求备份若同时给出--no-backup且 Rekordbox 在运行会被拒绝Refusing forced write while Rekordbox is running without a backup--no-backup仅当 Rekordbox 已关闭时接受用于跳过写前备份。守卫逻辑还有环境变量逃生舱设置CLI_ANYTHING_REKORDBOX_RUNNING1/true/yes/on可强制让进程探测判定为“运行中”便于 CI 或故障演练见_is_rekordbox_running。写库成功后调用_commit_db_write执行autoincrement_local_update_count(set_row_usnTrue)session.commit()clear_buffer()确保 USN更新序号同步这是 Rekordbox 增量同步机制所要求的。上述守卫行为在 test_smoke.py 中有直接的单测覆盖test_write_guard_refuses_running_rekordbox_without_force、test_write_guard_requires_backup_for_forced_running_write、test_write_guard_creates_backup_before_write另有test_data_file_present断言Bunker.midi.csv首行必须以file,1,开头。这些测试共同验证了“先检查进程、再备份、后写库”的安全不变量。Deck 组虚拟 MIDI 实时控制命令说明deck play --deck N [--port P]播放/暂停切换N 仅允许 1 或 2deck sync --deck N [--port P]向 Master 节拍同步deck crossfade FROM TO --secs S [--steps N]双 Deck 平滑交叉淡化deck eq --deck N --hi V --mid V --lo V [--port P]EQ 控制0..10.5 为中立deck hot-cue --deck N --slot 1-8 [--port P]触发 1–8 号 Hot Cue--port默认值为LoopBe_open_midi会在mido.get_output_names()中做大小写不敏感的子串匹配找不到匹配端口会报错并列出现有端口。底层 MIDI 协议实现值得注意rekordbox_cli.pyplay发送note_onchannel deck-1note0x0B并快速按下/抬起hold 30ms模拟点按sync复用同一模式note 为0x58对应映射表中 Sync 按钮的9058crossfade用14-bit CCMSB CC0x1F LSB CC0x3Fchannel 6把归一化位置映射到 0..16383默认--secs 8、--steps 64逐步插值并time.sleep(secs/steps)实现平滑过渡eq三个频段各是一对 14-bit CCHi0x07/0x27、Mid0x0B/0x2B、Lo0x0F/0x2F数值为int(value * 16383)值域 0..1、0.5 为 unityhot-cue发送note_onvelocity 7 按下、0 抬起间隔 40msnote slot-1与映射表中 PAD 的 note 布局一致。顶层命令命令说明status汇总 MIDI 输出端口、DB 路径、曲目数与播放列表数DB 打开失败时给出db_errorinstall-mapping [--rekordbox-dir DIR]把捆绑的Bunker.midi.csv安装进 Rekordbox 的MidiMappings/目录mix A B --secs S高层编排在曲库中检索 A/B 两曲返回过渡时长与下一步提示install-mapping的安装目标路径做了跨平台探测Windows 下依次尝试C:\Program Files\rekordbox\rekordbox {7.2.8|7.2.7|7.2.6|6.8.6}\MidiMappingsmacOS 下尝试/Applications/rekordbox 7/rekordbox.app/Contents/Resources/MidiMappings也可用--rekordbox-dir显式指定安装目录。安装时会写入两个名字LoopBe Internal MIDI.midi.csv与Bunker.midi.csv其中 LoopBe 副本还会把 CSV 首行file头从Bunker改写为LoopBe Internal MIDI以匹配设备名权限不足时结果标记为PERMISSION_DENIED。命令末尾会提示下一步 UI 操作在 Rekordbox 的Preferences - Controller - MIDI中启用 “LoopBe Internal MIDI”。mix目前是一个“检索 编排建议”型命令它确认两曲都存在并回显track_a/track_b/transition_secs随后提示手动在 Deck 1/2 上加载两曲再给出可执行的deck crossfade 1 2 --secs S命令体现了“CLI 负责可自动化部分、关键 UI 步骤显式告知”的务实分工。工作原理双通道架构------------------ | Your Agent | ----------------- | v ------------------ | cli-anything- | | rekordbox CLI | ----------------- | | v v ---------- ---------- |pyrekord- | | mido | |box DB | | virtual | |writes | | MIDI | ---------- ---------- | | v v ---------- ----------- | master.db| | Rekordbox | |SQLCipher | | live decks| ---------- -----------两个关键事实SKILL.md 与 REKORDBOX.md 均明确master.db使用所有 Rekordbox 6/7 安装共享的静态 AES-256 密钥加密pyrekordbox的Rekordbox6Database(unlockTrue)会自动从 rekordbox 可执行文件中提取该密钥完成解锁虚拟 MIDI 映射采用 Pioneer 标准的.midi.csv格式CLI 捆绑 Bunker.midi.csv 并附带install-mapping命令将其投入 Rekordbox 的MidiMappings/目录。值得展开的是Bunker.midi.csv这张映射表的能力边界——它按照 Pioneer.midi.csv的#name,function,type,input,...,output,...,option,comment列格式定义了完整的功能面Browser 组旋钮浏览曲目列表B040、Forward/Back9041/9042、Load 到 Deck1/29046/9047、Shift 修饰键Deck TransportPlayPause900B、Cue900C、JumpToTrackStart9048Sync/MasterSync9058Blink600、Master 长按905CTempoTempoSlider 14-bit 高精度推子B000、TempoRange 循环9060MixerChannelFaderB013、CrossFader 14-bitB61FEQEQHigh/EQMid/EQLowB007/B00B/B00F与 Color FX/Filter 旋钮B017Hot Cues / Beat Loop / Beat Jump每 Deck 8 个 PAD分别映射三个 PadMode9000-9007、9020-9027、9010/9011与对应模式切换键Quantize / Slip902C/902B。CLI 中的deck命令正是在这套映射上工作play/sync 用的是 Transport 与 Sync 的 note 号crossfade/eq 用的是 Mixer 与 EQ 的 14-bit CC 对hot-cue 用 PAD 的 note 布局——映射、命令、测试三方相互印证。JSON 输出Agent 的标准接口所有命令都支持全局--json标志。根级cli组通过ctx.obj[json]传递该标志_emit统一分发JSON 模式用json.dumps(defaultstr, indent2)输出文本模式则按 dict/list/标量三种形态格式化rekordbox_cli.py。$ cli-anything-rekordbox --json library count {track_count: 30344} $ cli-anything-rekordbox --json library search Daft Punk [{id: 12345, title: One More Time, artist: Daft Punk, bpm: 123.0}, ...]status命令在 JSON 模式下会给出midi_outputs可用输出端口列表、db_path、track_count、playlist_countDB 打不开时附db_error字段方便 Agent 一次性判断环境可用性。验证与集成路径仓库在 eval/eval_pipeline.md 中给出了完整的分层验收流程冒烟测试pytest cli_anything/rekordbox/tests/覆盖导入、--help退出码、各子命令帮助、写守卫拒绝逻辑、备份创建、数据文件存在性手工集成需安装 Rekordbox 6/7status应返回非零track_count→library search Demo应命中 Pioneer 默认演示曲目 →playlist create eval-test应返回created→playlist add应返回added→playlist clear应显示removed 0MIDI 集成需虚拟端口 Rekordbox 打开 映射启用先install-mapping再在 Rekordbox 偏好中启用 LoopBe Internal MIDI最后执行deck eq --deck 1 --hi 0.5 --mid 0.5 --lo 0.5 --port LoopBe观察 Deck 1 的 EQ 旋钮回到 12 点位置。使用注意事项写库需关闭 Rekordbox默认拒绝运行中写入--force是显式承担风险的操作虽仍强制备份但应保留给恢复/测试场景live-deck 控制依赖一次性 UI 配置必须在 RekordboxPreferences → Controller → MIDI中手动启用虚拟 MIDI 端口映射文件只是铺路启用开关在 UI 里SQLCipher 密钥由pyrekordbox自动提取对用户透明但意味着这套方案依赖该静态密钥的可用性MIDI 端口名默认LoopBe使用 loopMIDI 等不同驱动时请用--port显式指定支持子串匹配。许可本模块与父项目 CLI-Anything 一致采用 MIT 许可证见 SKILL.md 与 setup.py 的声明版本 0.1.0。相关实现与测试可继续在 rekordbox_cli.py、Bunker.midi.csv、test_smoke.py 与 REKORDBOX.md 中深入研读。【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价