SmartStudy:为学生打造的跨平台基于规则的 AI 教练(使用 Uno Platform 构建)
Source: Dev.to

💡 灵感来源
作为一名软件工程专业的学生,考试周总是乱成一团。我日历里排满了日期,但单纯的日期并不能告诉我该有多紧张。线性代数还有 3 天就要考,比起 2 天后的 历史,它更紧迫吗?通常答案是肯定的。
我意识到我不需要另一个待办事项列表,我需要一个教练——一个能告诉我“嘿,别再放松了,这门考试很难,明天就要考了!”或者“你做得不错,休息一下吧”的东西。
于是我使用 .NET 和 Uno Platform 构建了 SmartStudy。
🚀 什么是 SmartStudy?
SmartStudy 是一款跨平台应用,能够原生运行在 Windows、Web 和移动端。它帮助学生跟踪考试,并在其上添加了一层 基于逻辑的 AI。
核心功能
- 动态紧迫度系统 – 界面会根据日期和难度改变颜色(红/黄/绿)。困难 的考试会比 容易 的考试更早触发红色警报。
- AI 教练 – 智能算法分析日程并给出情境感知的建议,例如 “紧急!专注于笔记” 或 “本周工作量大,注意节奏”。
- 简洁 UI – 为热爱暗色模式的开发者设计的自定义暗色模式界面。
🎥 演示
Windows 桌面上的实际运行效果:
https://www.youtube.com/watch?v=yyi6MFiQLmM
🔧 构建方式
- 框架: .NET 8
- 平台: Uno Platform (WinUI 3 XAML)
- 架构: MVVM(模型‑视图‑视图模型)
- IDE: Visual Studio 2022
🧠 “AI” 逻辑
我没有调用外部 API,而是在 ViewModel 中实现了一个强大的决策树,使得应用能够即时“聪明”且响应迅速,无需网络连接。
// Inside MainViewModel.cs
// 1. Analyze Urgency
if (daysLeft /* logic to count exams in 7 days */);
if (weeklyCount > 2)
AiAdvice = $"{urgencyMessage} Also, be careful: You have {weeklyCount} exams this week. Pace yourself!";
这段逻辑让应用有了“活力”。它不仅仅展示数据,还为用户进行解释。
🏆 我遇到的挑战
- UI 打磨 – 让 UI 看起来专业比后端逻辑更难。
- “方块”问题 – 标准的
ListView在圆角卡片上悬停时会出现默认的灰色矩形。将其换成放在ScrollViewer中的ItemsControl后即可完全控制渲染。 - 跨平台日期 – 我的电脑系统语言是土耳其语,但我想要全局统一的日期格式。于是我在启动时强制设置
CultureInfo,让日期始终显示为 “Dec 06” 而不是 “Ara 06”,不受系统语言影响。
🔮 下一步计划
我计划将应用连接到真实的大语言模型(例如 OpenAI),扫描 PDF 大纲并自动为每个考试日建议学习主题。
🔗 代码与资源
完整源码已在 GitHub 上开放,欢迎给仓库点星!