跳转至

课程规划助手

项目背景与目标

终身学习时代,学习路径选择成为难题:信息过载、课程质量参差、个人目标与课程匹配度低。学习者常陷入"收藏即学会"的困境,缺乏系统规划。课程规划助手通过评估学习者能力与目标,生成个性化学习路径,推荐优质课程资源,并动态调整计划,提升学习效率与完成率。

本项目目标是构建一个课程规划 Agent,输入学习目标(如转行数据分析师、备考 PMP、学英语),输出能力评估、阶段目标、课程组合、时间安排、里程碑节点。

需求分析

核心能力: 1. 能力评估:诊断学习者当前水平(知识/技能/经验) 2. 目标拆解:将大目标拆解为可量化阶段目标 3. 课程匹配:从课程库推荐匹配的课程与资源 4. 路径生成:按依赖关系与时间安排生成学习路径 5. 动态调整:根据进度与反馈调整计划 6. 进度追踪:里程碑提醒、完成度统计

输入信息:学习目标、当前基础、可用时间、预算、偏好(视频/书籍/实战)。

技术选型说明

模块 技术方案 选型理由
Agent 框架 LangGraph 规划流程多步骤
能力评估 测试题 + 自评模型 客观+主观结合
课程库 结构化 + 向量检索 多维度匹配
LLM Qwen-Max 路径生成与建议
知识图谱 Neo4j 技能依赖关系
推荐算法 内容过滤 + 协同 个性化课程推荐
后端 FastAPI 交互式规划
数据库 PostgreSQL 学习计划存储

架构设计

flowchart TD
    U[学习者] --> GOAL[输入目标与基础]
    GOAL --> ASSESS[能力评估]
    ASSESS --> TEST[在线测试]
    ASSESS --> SELF[自评问卷]
    TEST --> PROFILE[能力画像]
    SELF --> PROFILE
    PROFILE --> BREAK[目标拆解]
    BREAK --> KG[(技能图谱)]
    BREAK --> STAGES[阶段目标]
    STAGES --> MATCH[课程匹配]
    MATCH --> COURSE[(课程库)]
    MATCH --> REC[推荐课程]
    REC --> PATH[学习路径生成]
    PATH --> TRACK[进度追踪]
    TRACK --> ADJUST[动态调整]

关键模块实现思路

模块1:能力评估

能力评估采用"自评 + 测试"双轨。自评问卷快速定位大致水平(如编程:从未接触/能写简单脚本/能独立开发项目),再针对自评结果推送 5-10 道测试题精确定位。

def assess_level(goal, self_report):
    rough_level = map_self_report(self_report)  # L1-L5
    test_questions = select_questions(goal, rough_level)
    test_result = administer_test(test_questions)
    final_level = bayesian_update(rough_level, test_result)
    return {"level": final_level, "strengths": ..., "gaps": ...}

输出能力画像:已具备技能、待提升技能、缺失技能,对照目标岗位要求分析差距。

模块2:目标拆解与技能图谱

大目标(如"成为数据分析师")拆解为技能树:硬技能(SQL/Python/统计/可视化/机器学习)、软技能(沟通/业务理解)、工具(Tableau/Excel)。技能图谱建模技能间依赖关系(如"机器学习"依赖"统计学"+"Python")。

SKILL_GRAPH = {
    "数据分析师": ["SQL", "Python", "统计", "可视化", "业务"],
    "Python": ["基础语法", "Pandas", "数据结构"],
    "机器学习": ["统计", "Python", "线性代数"]
}

按依赖拓扑排序生成学习顺序,避免"还没学统计就学机器学习"。

模块3:课程匹配与推荐

课程库结构化标注:课程覆盖的技能点、难度等级、时长、价格、评分、形式(视频/书籍/实战项目)。匹配时多维过滤:技能点匹配、难度适配、形式偏好、预算约束。

推荐排序综合考虑:课程评分、与目标匹配度、难度适配度、学习者偏好。协同过滤补充:"学过相同目标的人还学了什么"。

def recommend_courses(skill, level, preferences):
    candidates = vector_search(skill, course_db, top_k=20)
    filtered = [c for c in candidates if c.difficulty == level
                and c.format in preferences.formats
                and c.price <= preferences.budget]
    return rank_by_score(filtered, preferences)

模块4:学习路径生成与动态调整

路径生成输出甘特图式计划:每周学什么课程、做什么练习、达到什么里程碑。考虑学习者可用时间(如每周 10 小时),合理排期避免过载。

def generate_plan(skills_to_learn, weekly_hours, courses):
    plan = []
    for skill in topological_sort(skills_to_learn):
        course = match_course(skill, courses)
        weeks = estimate_weeks(course, weekly_hours)
        plan.append({"skill": skill, "course": course, "weeks": weeks,
                     "milestone": define_milestone(skill)})
    return plan

动态调整:学习者反馈"这周没时间"→ 顺延计划;"这部分已会"→ 跳过并测试验证;"太难了"→ 插入前置课程。调整后重新生成后续计划。

核心流程详解

首次规划流程: 1. 学习者输入目标 + 基础信息 2. 能力评估:自评 → 测试 → 生成能力画像 3. 目标拆解:技能图谱 + 差距分析 4. 课程匹配:每个技能推荐 2-3 门候选课程 5. 路径生成:按依赖与时间排期 6. 输出学习计划(含里程碑与时间表)

执行与调整流程: 1. 每周推送学习任务 2. 学习者标记完成度与反馈 3. 里程碑测试验证掌握度 4. 未达标 → 插入巩固练习 5. 超前完成 → 解锁后续内容 6. 月度复盘:进度报告 + 计划微调

部署与优化建议

  • 课程库维护:定期更新课程信息,淘汰下架课程
  • 多源整合:接入 Coursera、网易云课堂、B 站等平台课程
  • 社区智慧:聚合学习者评价与路径分享,丰富推荐依据
  • 提醒适度:避免过度推送,关键里程碑才强提醒
  • 目标灵活性:支持目标变更,路径平滑迁移

常见问题与解决方案

问题 原因 解决方案
课程质量参差 来源杂 评分过滤 + 权威平台优先
计划脱离实际 时间估计乐观 留缓冲期 + 动态调整
学习者放弃 缺乏激励 里程碑奖励 + 社区打卡
技能图谱不全 新兴领域 LLM 辅助生成 + 人工审核

扩展方向

  • 职业规划联动:基于岗位需求变化动态调整技能优先级
  • 学习社区:同目标学习者组队互助
  • 实战项目推荐:课程配套项目强化应用
  • 证书备考规划:PMP、CFA 等考证路径专项规划