Skip to content

shigella520/MindTrain

Repository files navigation

MindTrain 图标

MindTrain

English · 简体中文 · 繁體中文

你的私人 AI 知识训练场:边问、边练、边复习,把一次对话变成长期记忆。

在线演示 · 快速开始 · Codex Plugin · 部署与运维

CI MIT License Java 21 Spring Boot 3.5

MindTrain 是一个面向 Codex 和其他 AI 客户端的开源知识训练平台。你可以像普通聊天一样随时追问、质疑和索要提示;MindTrain 在后台负责题库、精确判分、学习记录和抗遗忘调度。

  • 对话不中断:遇到不懂的概念直接问,当前题目不会被误判为已作答。
  • 数据归自己:单用户私有部署,题库和学习历史保存在自己的 PostgreSQL 中。
  • 真正形成闭环:复习旧题、按需生成新题、记录错误,并控制每天的新题与到期积压。
  • 知识目录初始化:既可通过 AI 对话规划领域与知识点,也可指定本地资料目录整理知识树;完整预览并确认后才保存。

MindTrain 核心不绑定具体知识领域;每个私有实例可以独立管理自己的领域、知识点和题库。

使用预览

如何工作

MindTrain 内部架构

  • Training Core 是题目、会话、作答、复习状态和配置的权威数据源。
  • Trainer MCP 只调用 Core API,不直接访问数据库。
  • Skill 负责教学和工具编排,不保存业务数据。
  • AI 临时题会先校验并入库再展示;作答前可拒绝并物理删除,作答后转为普通复习题。

设计决策和数据边界见概要设计

训练流程

MindTrain 训练流程

一次训练并不是简单的“显示答案”:调度器先根据到期状态和新题额度选题;用户可以在提交前无限追问;只有明确提交选项后,Core 才会精确判分并追加学习记录。题库不足时,Core 会返回结构化生成要求,由 Codex 生成、Core 校验入库后再展示。

每轮题量、复习与新题配额、积压暂停规则和 AI 临时题有效期均由数据库配置控制,可在 Web 管理页调整。

在 Codex 中训练、追问和复习

MindTrain Codex 对话式训练示例

在线演示:https://mindtrain.jianyutan.com/(可公开查看示例统计;训练需要连接自己的私有实例)

为什么使用 MindTrain

能力 你得到什么
对话式 AI 教练 在同一题中追问概念、索要提示、质疑答案,再继续作答
确定性判分 单选和多选按选项集合精确判分,不让模型“凭感觉”决定分数
抗遗忘调度 默认平衡复习题和新题;积压过高时自动暂停新题
AI 补题 题库不足时由 Codex 按指定知识点、题型和难度生成并校验新题
本地资料库 支持 MD、TXT、PDF、DOCX、PPTX;原文和索引只留在本机
知识目录 Codex 与 Web 均可查询多个领域、知识点树、关键词、题目覆盖和掌握度
掌握双榜 根据掌握度和最低作答样本区分待加强、擅长与数据积累中的知识点
私有数据 Core 是唯一权威数据源;Skill 无状态,仓库不承载运行数据
Web + Codex Web 用于看板、旧题复习和配置;Codex 用于完整的 AI 教练体验

当前可用:Training Core、Trainer MCP、MindTrain Web、Codex Plugin 和加权调度。Anki / FSRS Provider 尚在规划中。

5 分钟开始使用

前置条件

  • Git
  • Docker 与 Docker Compose
  • Codex CLI 或 Codex App(使用 AI 教练时需要)

1. 安装并启动 MindTrain

git clone https://github.com/shigella520/MindTrain.git
cd MindTrain/deploy/core-only
cp .env.example .env

编辑 .env,至少替换下面两项:

POSTGRES_PASSWORD=请替换为随机数据库密码
MINDTRAIN_BOOTSTRAP_TOKEN=请替换为随机长令牌

可以使用 openssl rand -hex 32 生成随机值。MINDTRAIN_BOOTSTRAP_TOKEN 同时保护 Codex → Trainer MCP 和 Trainer MCP → Core,请勿提交或公开。

docker compose up -d --build
docker compose ps

等待四个容器健康后访问:

PostgreSQL 不对宿主机开放;Core、MCP 和 Web 默认只监听 127.0.0.1

2. 配置 Codex Plugin

先安装 MindTrain Plugin:

codex plugin marketplace add shigella520/MindTrain --ref main
codex plugin add mindtrain@mindtrain

安装完成后新建一个 Codex 任务,输入:

$mindtrain 配置我的 MindTrain 实例

按提示提供:

  1. MCP 地址。本机部署使用 http://127.0.0.1:8787/mcp;云端部署使用自己的 HTTPS 地址。
  2. .env 中的 MINDTRAIN_BOOTSTRAP_TOKEN

配置只保存在本机用户配置目录,不进入项目仓库。完整安装、升级和故障排查见 Codex Plugin 部署

3. 创建训练领域

第一次训练前,先告诉 MindTrain 你想学习什么。一个私有实例可以管理多个训练领域,每个领域可以包含多棵知识点树。

最简单的方式是让 Codex 根据学习目标规划领域:

使用 $mindtrain,根据【我的学习目标】创建一个训练领域。请先展示完整知识点树,等我确认后再保存。

使用前请把 【我的学习目标】 替换为具体内容,例如“准备 Kubernetes 运维面试,重点掌握 Pod、Deployment、Service 和故障排查”。如果没有提供具体目标,MindTrain 会先询问学习主题、范围和期望深度,再生成知识点树。

如果已有自己的学习资料,也可以指定本地目录:

$mindtrain 使用 /path/to/notes 创建 backend-notes 资料库,
为我整理训练领域和知识点,预览确认后保存

无论使用哪种方式,Codex 都会先展示完整的领域信息和知识点树;只有你明确确认后,MindTrain 才会原子写入 Core。通过本地资料创建时,Plugin 会在本机缓存目录建立私有解析环境和全文索引,Core 不接收文件原文、绝对路径或本地索引。PDF 首期只抽取文本,不做 OCR。

创建完成后,可以在 Web 的“知识目录”中浏览知识树、搜索知识点并查看题目覆盖和掌握度。详细说明见知识目录

4. 开始第一次训练

新建一个任务并输入:

$mindtrain 开始训练

只有一个训练领域时会自动使用;存在多个领域时,Codex 或 Web 会要求你选择本次训练的领域,例如 $mindtrain 开始 ai-agent 训练。一次训练 Session 只会从所选领域出题,不会在多个领域之间随机混合。

你可以在任何一道题中直接问:

这个概念具体是什么?
为什么 B 不对?
先给我一个提示,不要公布答案。
这道题不适合当前主题,换一道。

只有明确提交选项时才会产生 Attempt;普通追问不会消耗题目。

云端私有部署

MindTrain 面向单用户私有部署。推荐只通过反向代理公开 Web 和 Trainer MCP:

https://mindtrain.example.com/     -> http://127.0.0.1:4173/
https://mindtrain.example.com/mcp -> http://127.0.0.1:8787/mcp

云端 MCP 必须使用 HTTPS 和 Bearer Token。不要公开 PostgreSQL,也没有必要把 Core 端口暴露到公网。

Nginx/Caddy/Cloudflare Tunnel、健康检查、备份恢复、升级和完整配置说明见部署与运维

升级 MindTrain

升级分为服务端和 Codex Plugin 两部分。升级前先备份 PostgreSQL;训练领域、题库、作答记录和应用配置都保存在数据库中,不应依赖容器本身保存。

1. 备份数据库

deploy/core-only 目录执行:

mkdir -p ../../backup
docker compose exec -T postgres \
  sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' \
  > ../../backup/mindtrain.dump

同时把 .env 备份到密码管理器或其他受控位置,不要提交到 Git。

2. 升级服务端

使用仓库源码部署时:

cd MindTrain
git pull --ff-only
cd deploy/core-only
docker compose up -d --build
docker compose ps

如果自己的 Compose 使用 ghcr.io/shigella520/mindtrain-*:latest 镜像,则执行:

docker compose pull
docker compose up -d --remove-orphans
docker compose ps

latest 指向最新正式 Release;1.0.0 等精确标签内容不可变,生产部署建议优先固定精确版本。dev 用于测试任意功能分支,不建议长期作为正式实例的固定升级通道。Training Core 启动时会由 Flyway 自动迁移数据库;如果迁移失败,应保留日志并恢复旧版本,不要手工修改 Flyway 历史表。

3. 升级 Codex Plugin

codex plugin marketplace upgrade mindtrain
codex plugin add mindtrain@mindtrain

更新后新建一个 Codex 任务,使新版 Skill 和 MCP bridge 重新加载。现有实例地址和 Token 保存在 Plugin 之外,不会因升级而丢失。

MindTrain 会在任务开始及远程工具调用时自动校验 Plugin、Trainer MCP 和接口契约版本。版本不同但兼容时会提醒同步升级;不兼容时会停止训练并明确指出需要升级 Plugin、服务端或两者。看到版本提示后不要绕过校验,升级 Plugin 后务必新建 Codex 任务。

升级完成后确认 Core、MCP 和 Web 均为 healthy,再开始训练。备份恢复、版本回退和故障排查见部署与运维,Plugin 细节见Codex Plugin 部署

常用操作

# 查看状态和日志
cd deploy/core-only
docker compose ps
docker compose logs -f trainer-core trainer-mcp web

# 停止服务但保留数据
docker compose down

训练题量、新题额度、积压阈值、临时题有效期和报表时区可在 Web 的“管理 → 训练配置”中修改,不需要重启服务。

文档导航

想做什么 阅读
部署到服务器、配置反向代理、备份或升级 部署与运维
安装、切换分支、更新或排查 Codex Plugin Codex Plugin 部署
本地开发、运行测试、构建镜像或了解 CI 开发指南
维护版本号或发布正式 Release 版本与发布规范
了解 Dashboard、Web 训练和视觉设计 Web 设计
创建、查询领域与知识点树 知识目录
查看 REST API Training Core OpenAPI
查看产品方向、架构与仓库边界 产品路线图 · 目标需求 · 概要设计 · 仓库目录规划
查看 Skill 工作流 MindTrain Plugin Skill

路线图

MindTrain 1.0 已完成私有部署、领域初始化、对话式训练、加权调度和动态学习看板。后续按依赖关系推进:

  1. 完善题库治理、复习明细、近期会话和训练趋势。
  2. 增加备份恢复,以及训练内容与个人学习记录的独立导入导出。
  3. 扩展来源治理、内容质量评测和可验证的新题型。
  4. 在 Core 调度契约稳定后接入 FSRS Provider 与可选 Anki Bridge。
  5. 最后扩展多用户、权限和共享领域治理。

详细阶段目标、完成标准和非目标见产品路线图

欢迎通过 Issue 提交使用反馈、题目质量问题和新的知识领域建议。

许可证

MindTrain 使用 MIT License 开源,可自由使用、修改、分发和商用,但需保留原始版权声明和许可证文本。

友情链接

LINUX DO

About

AI-driven knowledge training platform with pluggable schedulers, Codex Skill integration, and optional Anki/FSRS support.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages