🎬 个人项目:勇者酒馆 (Brave’s Tavern)
📌 项目简介 本项目是一款基于 Flutter 开发的 RPG 游戏化任务管理应用。它打破了传统 Todo 软件枯燥的文字堆砌,将日常任务转化为“酒馆悬赏”,通过引入 AI 地下城主 (Dungeon Master) 机制,实现了复杂任务的智能化拆解。 作为一名正在从应用化学向软件工程转型的开发者,我将化学实验中的严谨逻辑引入代码开发。针对大模型在移动端调用的不稳定性,我主导设计了“离线优先”架构,确保用户在地铁、电梯等极端断网环境下,依然能享受丝滑的 AI 辅助体验。
核心价值: 本项目不仅是游戏化交互的尝试,更是对 LLM 落地稳定性的一次深度实践。通过“防御性编程”与“优雅降级”策略,解决了 AI 应用在复杂移动环境下的生存痛点。
💡 设计思路与反思 (Product Philosophy)
- 赋予 AI 灵魂而非单纯工具(游戏化思维): 传统的任务拆解是冷冰冰的。我将 AI 封装为“酒馆老板”NPC,通过上下文感知技术,让 AI 根据用户的等级、近期完成情况,生成带有 RPG 风格的寄语与赏金评估。点击老板头像触发对话,极大地增强了产品的沉浸感。
- 绝对健壮性的防御性设计(工程师思维): 受化学实验安全防护启发,我坚信“数据是脏的、网络是不可靠的”。我为系统设计了三道防线:正则清洗、Schema 强校验、以及离线 Fallback。当 AI 抽风或网络宕机时,系统会迅速切断依赖,触发本地预设模板,保障用户体验不中断。
- 架构克制与迭代演进(MVP 思维): 在 V1.0 阶段,我刻意克制了过度引入重度状态管理框架,采用原生 setState 配合 Service 层抽离,以最轻量级的方式跑通业务闭环。同时已制定好了向 Provider/Riverpod 演进的 V2.0 重构计划。
🛠️ 技术栈
| 模块 | 技术选型 | 核心作用 |
|---|---|---|
| 应用架构 | Flutter / Dart | 跨平台高性能渲染,保证双端一致性 |
| 智能大脑 | DeepSeek API | 任务结构化拆解、NPC 风格化文案生成 |
| 本地持久化 | Hive (NoSQL) | 极速本地缓存,支撑“离线优先”策略 |
| 云端同步 | Supabase | 跨设备数据持久化与最终一致性同步 |
| 视觉动效 | Flame Engine / Lottie | 实现酒馆场景交互与 RPG 元素动态表现 |
| 安全拦截 | Regex (正则表达式) | 对任务标题进行前置清洗,对 AI 脏数据进行正则提取 |
🚀 核心功能
🏮 智能地下城主 (DM) 任务拆解: 用户只需输入模糊任务(如“准备化学期末考”),AI 会根据用户当前 Level,自动拆解为 3 个具体的子任务,并评估难度等级(S/A/B/C)与建议赏金。
🛡️ 离线 Fallback 容灾机制: 行业领先的“断网自救”逻辑。当 API 请求超时(>8s)或断网时,系统会自动触发本地 Fallback 模板,返回 NPC 兜底话术,并给任务打上 sync_pending 标签存入本地,待联网后静默同步。
🧩 上下文感知 (Context-Aware): 在 Prompt 引擎中注入本地历史数据。AI 会记得你刚刚“斩杀了高数巨龙”,并在下一个任务中给予你实时鼓励,创造“陪伴式”工作的独特体验。
⚡ 乐观 UI 更新 (Optimistic UI): 任务提交瞬间即在本地完成渲染,用户无需等待复杂的云端写入,极大地提升了操作的实时反馈感。
⚔️ 技术亮点与挑战 (Challenges & Solutions)
挑战一:LLM 格式崩溃与“加戏”行为
问题: 大模型常在 JSON 外包裹 Markdown 标记,或将数字赏金输出为字符串,导致强类型 Dart 解析崩溃。
方案: 开发了正则提取器 RegExp(r'\{[\s\S]*\}') 暴力剥离干扰文本;在反序列化阶段引入 int.tryParse 与空合并运算符 ?? 进行宽容解析,确保字段缺失也能安全显示。
挑战二:移动端环境不确定性导致的“假死”
问题: AI 思考时间较长(5-8s),用户容易误以为 App 卡死而退出。
方案: 设计了两段式 UI 交互。点击提交后,输入框立即转化为“老板摸胡子沉思”的 RPG 动效及沉浸式文字提示,成功将用户的“等待时间”转化为“游戏体验时间”。
挑战三:复杂多端数据的一致性
问题: 离线修改的数据如何与云端完美融合而不产生冲突?
方案: 引入 sync_pending 标记位逻辑。在 App 冷启动时自动扫描本地 Hive 中所有标记为未同步的记录,通过串行队列静默推送到 Supabase,实现了最终一致性。
📝 结语 《勇者酒馆》是我从化学实验室跨越到赛博空间的代表作。它证明了程序员的价值不仅在于实现功能,更在于通过架构设计去对抗现实世界的不确定性。 “大模型的输出是概率,但用户的体验必须是确定。” 未来,我将继续在 AI 赋能生产力领域探索,致力于将更先进的 RAG 架构与多态 Agent 引入移动端,创造出真正“懂人心、有骨架、绝对稳”的智能应用。