Ariadne 是一个本地优先的学习内容生成与讲解系统。
系统围绕一条主链工作:
- 上传文件并解析
- 基于资料生成课件结构与讲解内容
- 渲染为固定壳层 HTML 页面
- 在页面内进行聊天、AI 编辑、chunk 删除与版本回滚
- 课件生成:
topic + 文件资料 -> outline -> explain content -> HTML shell - 混合检索聊天:
- 检索
courseware chunks - 检索
source fragments selected chunks只做软优先级,不做强绑定
- 检索
- AI 编辑:
- 对已选 chunk 做改写建议
- 支持应用修改与撤销
- Chunk 删除:
- 删除前自动创建 snapshot
- 删除后重排章节号、块号、顺序号
- 本地文件持久化:
coursewarechunkpagechat sessionchat messageasset
./start.sh启动后访问:
- 前端首页:
http://127.0.0.1:1557/ - 健康检查:
http://127.0.0.1:1557/api/v1/health/live
PYTHONPATH=src python3 -m unittest discover -s tests -v在 .env 中设置:
MODEL_PROVIDER=mock | glm | deepseek
并配置对应 provider 的 key:
GLM_API_KEYDEEPSEEK_API_KEY
常用环境变量:
MODEL_PROVIDERMODEL_GLMMODEL_DEEPSEEKMODEL_MOCKGLM_API_BASEGLM_CHAT_PATHDEEPSEEK_API_BASEDEEPSEEK_CHAT_PATHPROMPT_DIRCOURSEWARE_STORAGE_DIRSTORAGE_INDEX_DIR
当前 prompt 结构是三层:
outline_layer.md- 只负责生成章节和 chunk 结构
explain_layer.md- 只负责单个 chunk 的讲解内容
generate_layer.md- 提供 HTML 渲染配置默认值
其他 prompt:
chat_general.mdchunk_qa.mdrewrite_chunk.mdintent_edit_implicit.mdintent_edit_explicit.md
聊天阶段不是只查上传文件。
当前会并行使用两类检索语料:
courseware chunks- 解决“第 1 章第 2 个 chunk 讲了什么”这类问题
source fragments- 解决“原始资料里怎么写的”这类问题
检索增强包括:
- query rewrite
- keyword retrieval
- vector retrieval
- courseware chunk soft boost
selected chunks 的语义是:
- 提高相关 chunk 的命中优先级
- 但不强制把回答锁定在 selected 内容上
当前持久化以文件系统为主,不使用数据库。
关键目录:
storage/
assets/
<asset_id>/
meta.json
fragments.json
source.*
coursewares/
<courseware_id>/
meta.json
outline.json
markdown.md
html.html
chunks/
pages/
chats/
snapshots/
indexes/
assets.json
coursewares.json
chat_sessions.json
详细方案见:
POST /api/v1/coursewares/generateGET /api/v1/coursewares/{id}GET /api/v1/coursewares/{id}/progressGET /api/v1/coursewares/{id}/markdownPUT /api/v1/coursewares/{id}/markdownPOST /api/v1/coursewares/{id}/undoGET /api/v1/coursewares/{id}/html
POST /api/v1/chat/sessionsGET /api/v1/chat/sessionsPOST /api/v1/chat/messages
PATCH /api/v1/chunks/{id}/statePOST /api/v1/chunks/{id}/deletePOST /api/v1/chunks/{id}/apply
POST /api/v1/pages/{id}/rewrite-draftPOST /api/v1/pages/{id}/apply-draft
- 课件聊天已经支持
courseware chunk + source fragment混合检索 selected chunk已是软优先级- 删除 chunk 后前端做局部更新,并会重新同步后端元数据
- 大规模检索权重调优仍然可以继续迭代