最近换赛道,尝试走独立音乐人的路,有些上头。目前在深度使用Mureka AI音乐平台进行创作,准备充值成为会员,长期使用。对比了下它的套餐,基础会员一年要398/年,有点小贵,发现它有个API Platform套餐一年才200元,这个太划算了,就是有点小门槛,需要自己动手编程,做个客户端调用它的API。有了方向,开干。
下面记录了使用 Claude Code AI 辅助开发 Mureka Client 桌面应用的完整过程——从需求分析、架构设计、实施计划、编码实现、到踩坑排查的全流程。技术栈为 Tauri 2.0 + React + TypeScript + TailwindCSS,后端 Rust,我之前完全没有接触过。
项目从一个简单的想法开始:为独立音乐人构建一款 Mureka API 专业客户端。核心工作流覆盖从歌词编写到分轨导出的全链路。
在写代码之前,调用Skill Brainstorm(如果你要做开发,这个技能很重要,一定要装,我之后会频繁用到),叫AI 辅助完成了两份关键文档:

图 1:9 阶段实施计划总览

图 2:应用三层架构
计划中包含了一个重要的「Review 修正」环节——初始方案中有些设计不够合理,在 review 阶段被纠正:
tauri-plugin-store 加密存储useAutoSave 需要使用 ref 稳定回调,避免 debounce 失效auto/mureka-8/mureka-7.6 等有了详尽的实施计划,编码阶段进展极快。以下是 Git 提交记录还原的真实时间线:
时间 | 提交 | 内容 |
|---|---|---|
04:07 | 11e478d | 初始化 Tauri 2.0 项目(React + TypeScript + TailwindCSS) |
04:14 | c4f8fdb | 添加歌词编辑器(段管理 + 自动保存) |
04:14 | 57e228c | 集成歌词编辑器到歌词页面 |
04:15 | 278d843 | 生成控制台(任务管理 + 模型选择) |
04:16 | abe66f8 | 设置页面 + 项目库页面 |
04:17 | 7c4234c | 后期处理页面 |
05:56 | e67f235 | 修复 Rust 编译错误 |
从空项目到功能完整:仅用约 2 小时,完成了 Phase 1 到 Phase 8 的全部代码实现。这得益于详尽的实施计划——每个文件的完整代码模板都已预先写好,AI 只需按计划逐阶段执行。
核心功能实现后,进入了「让应用真正可用」的调试阶段。这个阶段持续了整个晚上,遇到了多个非显而易见的问题:
最初修改了 App.tsx 的默认路由,将首页从「歌词」改为「音乐库」,但运行 npm run tauri dev 后,应用始终显示歌词页面。

修复:在 tauri.conf.json 的 build 段添加:
"build": {
"devUrl": "http://localhost:1420",
...
}
初始版本使用 emoji 作为导航图标:📝、🎵、🎛️ 等。在 macOS 上显示正常,但在 Linux 上,Tauri 的 webkit2gtk webview 不渲染 emoji,导致整个侧边栏看起来是空的。
修复:将所有 emoji 替换为内联 SVG 图标,并加宽侧边栏、添加文字标签:
// Before: emoji
{ path: '/lyrics', label: '歌词', icon: '📝' }
// After: inline SVG
{
path: '/lyrics',
label: '歌词',
icon: (
<svg viewBox="0 0 24 24" fill="none"
stroke="currentColor" strokeWidth="2">
<path d="M14 2H6a2 2 0 0 0-2 2v16..." />
</svg>
),
}
点击「创建项目」按钮后没有任何反馈——不成功也不报错。排查后发现,Tauri 2.0 的安全模型要求在 capabilities/default.json 中显式声明每个插件的权限。初始配置只写了 "sql:default",但这并不包含 execute 和 select 权限。

修复:在 capabilities 中列出具体权限:
"permissions": [
"core:default",
"sql:allow-load",
"sql:allow-execute",
"sql:allow-select",
"store:default",
"http:default"
]
同时在 handleCreate 中添加 try/catch 和可见的 UI 错误提示:
try {
await addProject(newTitle.trim());
} catch (e) {
setError('创建失败: ' + String(e));
}
为了清理缓存执行了 rm -rf dist,结果 Rust 编译报错:
error: proc macro panicked
= help: The `frontendDist` configuration is set to "../dist"
but this path doesn't exist原因是 tauri::generate_context!() 宏在编译时读取 dist/ 目录,必须存在。

经过以上踩坑,我们基于 Harness Engineering 原则建立了 7 条强制规则,写入 CLAUDE.md 文件:
Tauri tauri.conf.json 必须配置 devUrl层级 | 技术 |
|---|---|
前端框架 | React 18 + TypeScript 5 |
样式 | TailwindCSS 3 + CSS Custom Properties |
状态管理 | Zustand 4 |
桌面框架 | Tauri 2.0 |
后端 | Rust |
本地存储 | SQLite (tauri-plugin-sql) |
敏感数据 | tauri-plugin-store (加密) |
网络请求 | tauri-plugin-http |
回顾整个开发过程,AI 辅助开发展现了三个鲜明的阶段:
AI 在规划阶段表现出色。它能快速分析 API 文档、理解需求、设计架构,并输出包含完整代码模板的 9 阶段实施计划。更重要的是,Review 环节纠正了多个初始设计缺陷(加密存储、SQLite 持久化、音频播放方案),避免了后期的架构返工。
有了详细的实施计划,编码阶段几乎是在「填模板」。从空项目到功能完整只用了 2 小时,9 个 Phase 的代码一次性通过编译。这个速度得益于规划阶段对每个文件级别的精确描述。
真正花时间的是让应用「真正能用」。AI 生成的代码缺少对 Tauri 框架隐式约束的理解:
关键经验是:将踩过的坑固化为可执行的规则。通过 Harness Engineering 的方式,把每个问题的根因和防范措施写入 CLAUDE.md,确保后续开发不会重蹈覆辙。
不是记住错误,而是让错误不可能再次发生。