Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/3022812110_ai-music.json
T

1 line
8.3 KiB
JSON

{"repo": "3022812110/ai-music", "files": {"README.md": {"6da528d85a10f56680cceef6063edca31d79ce74": {"t": 1785746481.3836343, "n": 2450, "h": "42d86e9b370d991e", "c": "# AI 钢琴师\n\n一个可本地运行的产品验证版网页应用。它以“艾洛”这个温和、克制的 AI 钢琴师为角色,支持预置曲目播放、用户手动作曲、AI 作曲、选区修改、左手伴奏生成、演奏情绪调整、版本历史、撤销/重做和 MIDI 导出。\n\n## 技术栈\n\n- 前端:React、TypeScript、Vite、Zustand、Tone.js、@tonejs/midi、原生 CSS\n- 后端:Node.js、TypeScript、Express、DeepSeek Chat Completions API\n- 数据库:SQLite、better-sqlite3\n- 测试:Vitest\n\n## Node.js 版本\n\n建议使用 Node.js 20 或更高版本。\n\n## 安装\n\n```bash\ncd /Users/xingji02/Desktop/code/ai-pianist\nnpm install\n```\n\n如果网络需要代理:\n\n```bash\nHTTP_PROXY=http://127.0.0.1:6789 HTTPS_PROXY=http://127.0.0.1:6789 ALL_PROXY=http://127.0.0.1:6789 npm install\n```\n\n## DeepSeek 配置\n\n```bash\ncp server/.env.example server/.env\n```\n\n在 `server/.env` 中填写:\n\n```env\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_MODEL=deepseek-chat\nPORT=3001\n```\n\nAPI Key 只由后端读取,前端不会接触。`.env` 已加入 `.gitignore`。\n\n## 启动\n\n```bash\nnpm run dev\n```\n\n- 前端地址:http://localhost:5173\n- 后端地址:http://localhost:3001\n- 健康检查:http://localhost:3001/api/health\n\n## 测试与构建\n\n```bash\nnpm run test\nnpm run build\n```\n\n## SQLite 文件位置\n\n默认数据库文件:\n\n```text\nserver/data/ai-pianist.sqlite\n```\n\n首次启动会自动建表、插入预置曲目和默认设置。\n\n## 项目结构\n\n```text\nai-pianist/\n client/ React 前端、钢琴卷帘、播放、MIDI 导出\n server/ Express API、SQLite、DeepSeek 调用、AI 输出校验\n shared/ 统一曲谱类型、校验规则、预置曲目、AI 操作合并\n design/ 主界面视觉概念图\n```\n\n## 钢琴采样来源和许可\n\n前端优先使用 Tone.js `Sampler` 加载远程钢琴采样:\n\n```text\nhttps://tonejs.github.io/audio/salamander/\n```\n\n这些采样来自 Salamander Grand Piano。Tone.js 的 piano 项目说明其使用 Salamander Grand Piano 采样;SFZ Instruments 页面列出作者 Alexander Holm、许可 CC BY 3.0。相关链接:\n\n- [@tonejs/piano repository](https://github.com/tambien/Piano)\n- [Salamander Grand Piano / SFZ Instruments](https://sfzinstruments.github.io/pianos/salamander/)\n- [Salamander Grand Piano GitHub](https://github.com/sfzinstruments/SalamanderGrandPiano)\n\n如果采样加载失败,应用会自动降级为 Tone.js `PolySynth` 合成器。\n\n## 预置曲目来源\n\n内置 5 首短曲:\n\n- 小星星简化版:公版童谣旋律的简化编配\n- 欢乐颂简化版:贝多芬《第九交响曲》主题的简化片段\n- 雨夜:原创短曲\n- 清晨:原创短曲\n- 未完成的信:原创短曲\n\n所有预置曲目都在 `shared/src/presets.ts` 中以统一 JSON 曲谱结构保存。\n\n## MIDI 导出\n\n点击顶部“导出 MIDI”按钮会:\n\n- 再次校验当前作品\n- 写入 BPM\n- 创建左右手轨道\n- 写入音高、开始时间、时长和力度\n- 使用作品标题生成 `.mid` 文件名\n\n## 常见问题\n\n- 浏览器没有声音:首次播放或点击琴键需要用户交互以启动 Web Audio。\n- AI 失败但作品没变:这是预期行为。DeepSeek 请求失败、非法 JSON 或音符越界时,后端会拒绝修改。\n- 预置曲目编辑后变成改编作品:为了保留预置曲目,前端会自动创建 collaboration 副本。\n- 采样加载较慢:远程采样需要网络;失败时会使用合成器降级。\n\n## 当前限制\n\n- 只支持钢琴。\n- 优先桌面浏览器。\n- 最多 32 小节、500 个音符。\n- 只完整支持 4/4、3/4、6/8。\n- 不支持 Web MIDI、录音、五线谱、云同步、登录和多人协作。\n- 第一版拖拽编辑保持可用,不追求专业 DAW 级细节。\n\n## 后续扩展\n\n- 更细的力度编辑和量化工具\n- MIDI 导入\n- 本地采样缓存\n- 更强的 AI 对比视图\n- 五线谱预览\n- Web MIDI 输入\n- 云端作品同步\n"}, "9184ecca5df73d29e9215321e3e97161e5a53635": {"t": 1785764791.7722626, "n": 2450, "h": "42d86e9b370d991e", "c": "# AI 钢琴师\n\n一个可本地运行的产品验证版网页应用。它以“艾洛”这个温和、克制的 AI 钢琴师为角色,支持预置曲目播放、用户手动作曲、AI 作曲、选区修改、左手伴奏生成、演奏情绪调整、版本历史、撤销/重做和 MIDI 导出。\n\n## 技术栈\n\n- 前端:React、TypeScript、Vite、Zustand、Tone.js、@tonejs/midi、原生 CSS\n- 后端:Node.js、TypeScript、Express、DeepSeek Chat Completions API\n- 数据库:SQLite、better-sqlite3\n- 测试:Vitest\n\n## Node.js 版本\n\n建议使用 Node.js 20 或更高版本。\n\n## 安装\n\n```bash\ncd /Users/xingji02/Desktop/code/ai-pianist\nnpm install\n```\n\n如果网络需要代理:\n\n```bash\nHTTP_PROXY=http://127.0.0.1:6789 HTTPS_PROXY=http://127.0.0.1:6789 ALL_PROXY=http://127.0.0.1:6789 npm install\n```\n\n## DeepSeek 配置\n\n```bash\ncp server/.env.example server/.env\n```\n\n在 `server/.env` 中填写:\n\n```env\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com\nDEEPSEEK_MODEL=deepseek-chat\nPORT=3001\n```\n\nAPI Key 只由后端读取,前端不会接触。`.env` 已加入 `.gitignore`。\n\n## 启动\n\n```bash\nnpm run dev\n```\n\n- 前端地址:http://localhost:5173\n- 后端地址:http://localhost:3001\n- 健康检查:http://localhost:3001/api/health\n\n## 测试与构建\n\n```bash\nnpm run test\nnpm run build\n```\n\n## SQLite 文件位置\n\n默认数据库文件:\n\n```text\nserver/data/ai-pianist.sqlite\n```\n\n首次启动会自动建表、插入预置曲目和默认设置。\n\n## 项目结构\n\n```text\nai-pianist/\n client/ React 前端、钢琴卷帘、播放、MIDI 导出\n server/ Express API、SQLite、DeepSeek 调用、AI 输出校验\n shared/ 统一曲谱类型、校验规则、预置曲目、AI 操作合并\n design/ 主界面视觉概念图\n```\n\n## 钢琴采样来源和许可\n\n前端优先使用 Tone.js `Sampler` 加载远程钢琴采样:\n\n```text\nhttps://tonejs.github.io/audio/salamander/\n```\n\n这些采样来自 Salamander Grand Piano。Tone.js 的 piano 项目说明其使用 Salamander Grand Piano 采样;SFZ Instruments 页面列出作者 Alexander Holm、许可 CC BY 3.0。相关链接:\n\n- [@tonejs/piano repository](https://github.com/tambien/Piano)\n- [Salamander Grand Piano / SFZ Instruments](https://sfzinstruments.github.io/pianos/salamander/)\n- [Salamander Grand Piano GitHub](https://github.com/sfzinstruments/SalamanderGrandPiano)\n\n如果采样加载失败,应用会自动降级为 Tone.js `PolySynth` 合成器。\n\n## 预置曲目来源\n\n内置 5 首短曲:\n\n- 小星星简化版:公版童谣旋律的简化编配\n- 欢乐颂简化版:贝多芬《第九交响曲》主题的简化片段\n- 雨夜:原创短曲\n- 清晨:原创短曲\n- 未完成的信:原创短曲\n\n所有预置曲目都在 `shared/src/presets.ts` 中以统一 JSON 曲谱结构保存。\n\n## MIDI 导出\n\n点击顶部“导出 MIDI”按钮会:\n\n- 再次校验当前作品\n- 写入 BPM\n- 创建左右手轨道\n- 写入音高、开始时间、时长和力度\n- 使用作品标题生成 `.mid` 文件名\n\n## 常见问题\n\n- 浏览器没有声音:首次播放或点击琴键需要用户交互以启动 Web Audio。\n- AI 失败但作品没变:这是预期行为。DeepSeek 请求失败、非法 JSON 或音符越界时,后端会拒绝修改。\n- 预置曲目编辑后变成改编作品:为了保留预置曲目,前端会自动创建 collaboration 副本。\n- 采样加载较慢:远程采样需要网络;失败时会使用合成器降级。\n\n## 当前限制\n\n- 只支持钢琴。\n- 优先桌面浏览器。\n- 最多 32 小节、500 个音符。\n- 只完整支持 4/4、3/4、6/8。\n- 不支持 Web MIDI、录音、五线谱、云同步、登录和多人协作。\n- 第一版拖拽编辑保持可用,不追求专业 DAW 级细节。\n\n## 后续扩展\n\n- 更细的力度编辑和量化工具\n- MIDI 导入\n- 本地采样缓存\n- 更强的 AI 对比视图\n- 五线谱预览\n- Web MIDI 输入\n- 云端作品同步\n"}}}}