Skip to content

Latest commit

 

History

History
55 lines (39 loc) · 3.71 KB

File metadata and controls

55 lines (39 loc) · 3.71 KB

What I learned building an AI-driven spaced repetition app

TL;DR

文章介绍了一个基于AI的间隔重复学习应用AutoDeck,通过自动生成学习卡片和简化交互提升学习效率。技术实现中使用XML流式处理卡片生成,并采用付费模式应对AI成本。作者认为AI辅助开发仍需人工干预,中等AI模型更适合此类应用。

Summary

一、背景与动机

作者基于对间隔重复学习法的兴趣,构建了一个AI驱动的间隔重复应用AutoDeck。间隔重复是一种高效的学习方法,通过在学习过程中逐渐延长复习间隔,帮助用户巩固知识。作者认为,虽然软件工程师在工作中会自然应用这种方法,但主动学习新领域时仍面临挑战:使用工具如Anki需要自行制作或寻找合适的学习卡片,而过程繁琐且缺乏灵活性。

二、AI应用的核心创新

  1. 利用大型语言模型(LLM)生成学习卡片

    • AutoDeck允许用户输入主题,由LLM自动生成无限数量的间隔重复卡片,并根据用户反馈(如“太简单”或“太难”)动态调整难度。
    • 这解决了传统间隔重复工具中卡片制作耗时且依赖现有知识的问题。
  2. 非聊天式AI交互界面

    • 区别于常见的聊天式AI应用(如ChatGPT),AutoDeck采用按钮点击等简化交互方式,降低用户使用门槛,提高效率。
    • 作者认为这种设计更适合间隔重复场景,因为用户无需频繁输入文本,只需在开始时指定主题。

三、技术实现挑战与解决方案

  1. 生成速度与一致性

    • 问题:AI生成卡片速度较慢(单卡生成需几百毫秒),用户点击速度可能超过生成速度;批量生成虽快但需等待全部完成,影响体验。
    • 解决方案:采用批量生成但实时保存的策略——一次性请求生成多张卡片,但每生成一张立即提供给客户端,避免等待全部完成。
  2. 数据格式与解析

    • 问题:JSON等结构化输出需完整响应才能解析,不适合流式处理。
    • 解决方案:改用XML格式(如<card></card>标签),支持分块解析,实现实时流式传输。
  3. 客户端与后端协作

    • 后端异步生成卡片,客户端定期轮询获取新卡片,避免阻塞用户操作。

四、开发工具与AI代理的使用

  • 主要使用OpenAI Codex
    • 约1/3的代码需人工干预,1/10需彻底重写。Codex存在过度设计(如复杂的任务系统)、逻辑错误(如Stripe支付集成问题)等缺陷。
  • 尝试Claude Code
    • 效果较差,生成速度慢且需更多人工干预,不如Codex高效。
  • 结论
    • AI编码工具仍无法替代熟练的软件工程师。开发者需具备专业知识才能实际交付应用,目前并非“ vibe coding”(纯靠感觉编码)的黄金时代。

五、经济考量

  • 付费模式的必要性
    • AI应用按使用量产生成本(如API调用费用),因此作者选择对重度用户收费,以覆盖成本并激励产品优化。
  • 积极影响
    • 收费机制促使作者更认真打磨产品,避免“半成品”发布,提升了应用的实际效用。

六、总结与反思

  • AutoDeck仍处于优化阶段,作者发现GPT-5等高级模型反而不适合生成间隔重复卡片(响应慢、风格生硬),认为中等模型(擅长教科书类知识)更合适。
  • 作者强调间隔重复与AI结合的价值,并呼吁读者尝试应用。未来期待生态系统成熟,支持更高效的流式数据格式(如JSONL)。