AgenticRAG 是一个面向三门固定课程的 Web 学习助手,当前覆盖:
C_program:C 语言operating_systems:操作系统cybersec_lab:网络安全实验
当前主路径是 Flask + webapp_core 编排层 + LightRAG/OpenAI + Pydantic 结构化输出。仓库里虽然保留了部分 langgraph 依赖和历史痕迹,但当前 Web 主链并不是一个以 LangGraph 为核心的运行时。
Auto / Instant / DeepSearch三种回答模式- 基于学科路由和检索网关的多课程问答
- 题目辅导与过程化解题
- C 代码分析、编译诊断与受限执行
- Web 会话管理、SSE 流式输出、摘要记忆
webapp.py:Flask 入口,负责创建应用、注册路由和启动 Web 服务webapp_core/:Web 编排层,包含路由判断、流式输出、会话管理、题目辅导、代码分析等模块webapp_core/auto_runtime.py:Auto 模式复用的路由、预算、评审与流式 instant 辅助webapp_core/config.py:Web 三种模式的超时、阈值和功能开关agenticRAG/:检索运行时、回答辅助函数、短时记忆与结构化 schematemplates/:前端模板data/:原始课程资料、题库数据和聊天持久化文件storage/:每门课程对应的 LightRAG working dir,运行时直接读取script/:本地一键启动脚本scripts/:辅助脚本,例如题库 embedding 索引构建tests/:当前行为边界最清晰的回归测试docs/:产品说明与模块报告
- Python
3.11 - 可用的 OpenAI 兼容接口
- 已准备好的课程知识库 working dir,默认在
./storage
可选能力:
- C 编译器:
clang、gcc、cc或cl - Neo4j:仅用于图谱导入/可视化脚本,不是当前 Web 主运行时依赖
- 创建并激活 Python 3.11 环境。
conda create -n py311 python=3.11 -y
conda activate py311- 安装项目依赖。
pip install -e .如果还需要 Neo4j / 图可视化等工具脚本:
pip install -e ".[tools]"- 准备环境变量。
cp .env.example .env至少需要补上:
OPENAI_API_KEYOPENAI_BASE_URL(如果你走兼容网关)
常用变量:
WEB_HOST/WEB_PORT:Web 服务地址,默认127.0.0.1:7860WEB_STORAGE_ROOT:课程知识库根目录,默认./storageWEB_CHAT_STORE_PATH:聊天记录持久化文件,默认./data/web_chats.jsonWEB_CODE_ANALYSIS_COMPILER:指定代码分析使用的编译器QUESTION_BANK_EMBED_INDEX_PATH:题库 embedding 索引路径
- 确认运行时数据目录可用。
默认要求存在:
storage/
C_program/
operating_systems/
cybersec_lab/
如果这些目录缺失,检索链无法正常工作。
- 启动 Web 应用。
python webapp.py或使用仓库内启动脚本:
bash script/build_and_run.sh启动后访问 http://127.0.0.1:7860。
这个仓库里要分清三类东西:
-
源码
webapp.py、webapp_core/、agenticRAG/、tests/ -
原始课程资料 / 题库 例如
data/subject_chapters/、data/tutoring_question_bank/ -
生成后的检索索引
storage/<subject>/下的vdb_*.json、kv_store_*.json、graph_chunk_entity_relation.graphml等文件
storage/ 中的内容是运行时必需的,但它们更像“可重建的检索工作目录”,而不是适合放进普通 Git 历史的大型源码文件。团队协作时更推荐:
- 由脚本重建
- 单独打包分发
- 通过 Docker volume / 共享目录挂载
不建议直接把大体积 storage/ 文件长期塞进普通 Git 历史。
题目辅导模块默认读取:
data/tutoring_question_bank/questions.jsonldata/tutoring_question_bank/questions.embedding_index.json
如果需要重建题库 embedding 索引:
python scripts/build_question_bank_embeddings.py当前测试以 unittest 为主,推荐直接跑:
python -m unittest discover -s tests如果你使用的是本地 py311 Conda 环境,也可以:
conda run -n py311 python -m unittest discover -s tests- 这是三门固定课程的专用学习助手,不是开放域聊天机器人
- Web 运行时当前依赖本地
LightRAG working_dir - Neo4j 相关代码目前主要用于图谱导入/展示,不替代当前
storage/运行时 - 代码分析使用的是后端可用编译器环境,不是浏览器本地环境