前言

在第二周完成项目基础工程搭建、登录注册设计、本地数据库准备与网络链路预留之后,本周我开始进一步推进 CarLearn 项目的客户端核心框架建设。相比前一周更偏向于基础环境与工程准备,这一周的工作更强调“把已经搭好的框架用起来”,也就是说,不再只是停留在模块划分和技术选型层面,而是开始将这些结构落实到更具体的页面、数据模型和交互流程中。

本周有一个非常明显的特点,就是AI 辅助开发的参与度显著提高。因为在客户端结构逐渐成型之后,很多工作不再只是“写几个依赖配置”那么简单,而是涉及功能构思、页面设计、模块拆分、文档约束和开发规范这些更偏工程协同的内容。在这个过程中,我一方面继续推进项目的客户端基础页面和核心模块雏形搭建,另一方面也开始尝试通过更系统的方式使用 AI 来帮助我提升开发效率。与其说本周是在“让 AI 帮我写代码”,不如说是在探索“如何让 AI 更懂我的项目,并成为一个更有针对性的开发助手”。


本周工作关键词

Android Studio Kotlin Room Retrofit Glide Gemini 文档驱动开发 MVVM 客户端框架


一、本周工作概览

本周我主要完成了以下几个方面的工作:

  • 与组员继续讨论并细化项目核心功能

  • 明确客户端技术路线,继续完善 Android 原生框架

  • 进一步配置 Room、Retrofit、Glide 等客户端核心依赖

  • 围绕刷题系统和 AI 功能继续细化模块职责

  • 开始尝试文档驱动方式使用 AI 协助开发

  • 初步推进客户端页面和整体框架雏形展示

  • 为后续顺序练习、专项练习和后端联调做好准备

这一周的整体重点,是让客户端从“基础工程存在”进一步过渡到“具备明确模块边界和扩展方向”。


二、继续参与核心功能构思:从基础刷题走向智能学习平台

虽然到第三周时项目已经进入实现阶段,但我并没有停止需求思考。恰恰相反,随着客户端框架逐渐成型,我更清楚地意识到,如果只把它做成一个“能顺序刷题”的普通练题工具,那么项目的亮点会非常有限。因此,本周我继续和组员围绕项目定位进行讨论,希望把 CarLearn 的目标从传统刷题软件进一步扩展为一个更偏向AI 智能辅助学习的平台。

在这一阶段,我们逐步明确的不只是“用户可以刷题”,而是希望系统能够支持顺序练习、专项练习、模拟考试、错题统计、AI 智能解析、法规问答、个性化薄弱点分析等功能。也就是说,项目未来的目标不再局限于“题库展示”,而是希望通过 AI 和数据分析能力,把传统驾考学习过程做成一个更完整的学习闭环。

这种功能定位的细化,对我本周的实际开发也产生了影响。因为一旦项目不只是单纯刷题,那么客户端在一开始就必须预留更多扩展空间,包括页面结构、模块划分和交互组织方式,都不能只按一个简单的练题应用来设计。


三、完善客户端基础框架:原生 Android 路线继续推进

本周我继续围绕客户端基础框架进行完善。我们最终还是坚持采用 Android 原生开发 路线,而没有转向网页前端或者轻量混合方案。这样做的核心原因,是原生 Android 更适合我们当前这个以刷题交互为主、需要较强本地缓存和页面反馈能力的场景。

在开发工具与技术组件方面,我继续强化并完善了本地数据库、网络访问和图片加载这三类最基础的能力。具体来说,仍然采用:

  • Room 负责本地数据库存储

  • Retrofit + OkHttp 负责网络请求

  • Glide 负责图片加载

  • ViewModel 负责状态管理

  • Navigation 负责页面跳转组织

例如,在题目接口和图片资源展示方面,后续系统的题目实体与网络接口都开始围绕这些能力组织:

interface QuestionApiService {

    @GET("questions/")
    suspend fun getQuestions(
        @Query("page") page: Int,
        @Query("size") size: Int,
        @Query("subject") subject: Int
    ): Response<QuestionsResponse>
}

在图片加载层面,也提前考虑了题目图片的展示方式:

Glide.with(this)
    .load(imageUrl)
    .dontAnimate()
    .into(binding.ivQuestionImage)

这一周虽然还没有完全进入后期那种大量业务细节开发,但客户端的技术底盘已经比前一周更加完整。


四、开始系统使用 AI 辅助开发:从“问问题”走向“文档驱动协作”

本周我一个比较重要的实践,是开始更系统地尝试 AI 辅助开发。由于这次项目本身也鼓励合理使用 AI,所以我没有只是零散地在报错时问一下,而是开始有意识地让 AI 参与到项目结构设计和前期代码组织中。

在实践中,我逐渐发现,如果只是临时给 AI 一个零碎需求,它给出的结果往往比较散,甚至和我的项目结构并不一致。因此,本周我开始尝试使用“文档驱动”的方式来约束 AI,也就是先把项目概况、功能列表、技术栈规范、模块划分和页面布局要求整理出来,再把这些内容作为 AI 协作时的上下文输入。这样做的好处非常明显:AI 不再只是孤立地回答某个问题,而是能更清楚地理解我当前项目的目标、边界和技术约束。

例如,在这一阶段,我会把项目目标和核心能力整理成类似下面这样的描述,作为 AI 协作的基础材料:

## 项目概况
CarLearn 是一个垂直于驾考(科目一/科目四)及交通安全教育的 AI 智能学习平台。

## 核心功能需求
- 支持顺序刷题、专项刷题、模拟考试
- 提供 AI 智能讲题与法规问答
- 支持错题统计与薄弱点分析
- 后续支持交通标志识别等扩展能力

同时,我还会把客户端技术栈和模块划分方式提前说明清楚,例如使用 Kotlin、MVVM、Room、Retrofit 等,避免 AI 输出与当前项目结构冲突的内容。

从效果上看,这种做法比“想到什么问什么”要稳定很多,也更符合这次项目里“鼓励 AI 使用”的整体背景。


五、围绕客户端页面与模块开始初步落地

在整体框架和开发思路逐渐清晰之后,本周我也开始推动客户端部分页面和模块的初步落地。虽然这一阶段还没有进入专项分页补题、复杂交互修复那样细的开发程度,但至少已经开始围绕“首页如何组织、题目页面如何展示、后续 AI 助手入口如何预留”等问题做实际推进。

尤其是在客户端展示层面,我逐渐意识到,刷题系统并不只是“一个题目页面”这么简单,它更像是一整套学习路径。因此,在页面组织上,我开始重视首页入口区、科目切换、顺序练习入口、专项练习入口以及未来 AI 辅助入口之间的关系。虽然第三周还更多停留在客户端框架和基础 UI 雏形层面,但这一阶段已经把后续可扩展的整体布局想得更清楚了。

同时,我也更加明确地意识到:如果一开始页面层与数据层绑定得太死,后面专项练习、错题本、模拟考试等模块都会越来越难接。因此,本周在页面和模块推进的过程中,我依然坚持让 ViewModel 承担状态管理职责,而不是让页面直接去处理复杂数据逻辑。


六、本周技术路线进一步明确:为顺序练习与后端联调做铺垫

虽然这一周还没有把顺序练习完整做出来,但从项目推进节奏来看,本周已经在明显为它做准备了。因为要让顺序练习真正可用,必须先有这些基础条件:

  • 客户端页面组织已经清晰

  • 本地数据库和题目实体准备完成

  • 网络层能够支撑后续题目分页获取

  • 页面状态管理已经能承载题目切换

  • 图片加载能力已经预留

也正因为这些基础能力在本周得到了进一步完善,后续顺序练习的落地就不会从零开始,而是建立在一个相对完整的客户端框架之上。

例如,题目实体在这时已经具备相对完整的字段结构,这对顺序练习、专项练习乃至后续错题分析都非常关键:

@Entity(tableName = "questions")
data class QuestionEntity(
    @PrimaryKey val id: Int,
    val question: String,
    val optionA: String,
    val optionB: String,
    val optionC: String,
    val optionD: String,
    val answer: String,
    val explanation: String,
    val category: String,
    val type: String,
    val labels: List<String>,
    val img: String? = null
)

从这个角度看,第三周的重点不是“某个单独页面终于做完”,而是“客户端真正具备了承载核心刷题逻辑的能力”。


七、本周遇到的问题与思考

本周开发过程中,我感受到最明显的一个问题是:当项目开始从想法走向真实工程时,技术选型和模块划分会很快从“理论问题”变成“实际问题”。 比如在第二周时,我已经大致确定了 Room、Retrofit、Glide、ViewModel 等组件的使用方向,但真正到第三周开始围绕功能推进时,才会更深刻地感受到它们之间如何配合、页面应该承担多少职责、AI 输出结果和当前项目结构如何保持一致等一系列问题。

另一个让我印象比较深的点,是 AI 的使用方式必须逐渐从“随机问答”转向“约束式协作”。如果没有功能文档、模块约束和技术栈说明,AI 的输出很容易变得不稳定;但如果前置条件足够明确,它确实可以显著提高开发起步效率。这个过程其实也让我对“如何和 AI 协作”有了更实际的理解。


八、本周收获

通过第三周的推进,我最大的收获是:开始真正把客户端框架、功能构思和 AI 辅助开发这三件事结合起来了。相比前两周更偏准备和搭建阶段,本周让我明显感觉到项目开始具有“自己的形状”。我不再只是单独考虑页面怎么写,而是在思考一个模块未来能如何扩展、一个功能如何在现有架构下更稳定地落地。

同时,本周也让我意识到,AI 在项目开发中的价值,并不只是节省打字时间,而是在于帮助我更快建立结构、整理模块边界、推进工程起步。如果能把项目目标和开发约束讲清楚,AI 确实能成为一个比较高效的辅助工具。


九、下周计划

下周我准备继续往项目核心功能推进,重点将放在前后端联调、题目接口接入、本地数据库写入和顺序练习功能的基础打通上。同时,我也会继续围绕客户端页面结构做进一步完善,让顺序练习、专项练习和题库模块能够逐步从“结构预备完成”进入“业务功能逐渐可用”的状态。


总结

总体来看,本周的工作核心在于:在第二周基础工程搭建的基础上,进一步完善客户端框架,细化项目核心功能思路,并开始更加系统地引入 AI 辅助开发方式。通过这一周的努力,我不仅让 CarLearn 的客户端结构更清晰,也开始让项目逐渐从“准备状态”进入“可持续开发状态”。这对后续顺序练习、专项练习和 AI 助学模块的真正落地,都是十分关键的一步。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐