Skip to content

NeverENG/BanLea

Repository files navigation

BanLea · 双环自迭代学习引擎

主环塑人,子环塑知。双环交织,持续演化。

Dual-Loop Self-Iterating Learning Engine — One loop models who you are, the other models what you know.

BanLea 不是又一个 AI 学习工具。它的核心是一套双层 harness 架构——主 harness 持续建模你的学习人格(怎么教),子 harness 追踪每个领域的掌握状态(教什么)。两层画像通过自迭代闭环不断演化:每一次对话、每一次点击、每一次停留,都化为证据回流画像,让 BanLea 比你自己更早察觉你卡在哪里、下一步该学什么。27 维画像 + 主动推荐引擎,让你不需要决定"学什么"——BanLea 替你猜,而且越猜越准。


核心能力

🧠 双层学习画像(27 维)

BanLea 持续评估并维护你的学习画像,维度覆盖比你想象的多:

主 harness(15 维)——跨学科的人格特质,决定"怎么教": 逻辑推理、抽象思维、学习动机、专注持久、元认知、抗挫韧性、好奇广度、记忆留存、偏好模态、学习节奏、深度偏好、价值取向、沟通风格、时间模式、学习目标取向

子 harness(12 维)——每个学科一份,决定"教什么": 掌握程度、知识盲区、误区卡点、领域思维、学习进度、应用能力、迁移能力、严谨度、兴趣强度、学习速度、领域价值、资料偏好

  • 每维独立置信度——低可信度维度 UI 淡化、辅导只作弱提示,避免把"猜的 0.7"和"扎实的 0.7"画成一样
  • 版本化管理——每次更新保留历史版本,成长曲线可回溯、可回滚
  • 结构化 JSON 输出——由 Claude Structured Outputs 强约束生成,保证一致性

🔄 自迭代闭环

BanLea 的核心引擎,不是一次性评估而是持续演化:

采集证据 → 触发判断 → LLM 局部重评估 → 版本化落库 → 注入辅导/推荐 → (回到采集)
  • 证据来源:辅导对话、自评、测验结果、阅读停留、推荐点击/跳过
  • 触发节流:累积 N 条证据或出现矛盾信号才触发重算,不每轮烧 token
  • 局部更新:只更新被证据触及的维度,慢变人格维度几乎不动 → 大幅省钱
  • 可解释:每次重评估要求模型说明"哪些变了、为什么"

💬 提问式辅导(入口一)

┌──────────────┬──────────────────────────┬──────────────┐
│ 对话历史      │  对话区(中央)            │  待读书单     │
│ (按方向分类)  │                          │              │
│ ▾ 计算机      │  提问 → 学习计划 →        │  配套资料     │
│   · k8s 入门  │  个性化讲解 → 配套资料     │  自动归入     │
│   · 所有权    │                          │              │
│ ▾ 物理        │  随时复述 / 被出题验证      │  [已读][稍后] │
│   · 量子入门  │  → 形成证据回流画像        │              │
└──────────────┴──────────────────────────┴──────────────┘
  • 讲解的深浅、风格、类比来源由双层画像同时注入(主层给"教法",子层给"教什么")
  • 对话历史按学科分块归档,随时点回继续
  • 验证出题:学完主动复述或被出题检验 → 证据回流画像

🎯 推荐引擎:猜你想学 / 猜你想看

解决"不知道学什么"的启动障碍:

  • 候选生成:基于画像兴趣 + 邻近主题 + 提过但没学的词 → 轻量模型生成
  • 本地排序:多特征加权打分(兴趣匹配 / 邻近度 / 难度匹配 / 新鲜度 / 是否提过)→ 零 token
  • 在线学习反馈:点击/停留 → 同时更新画像兴趣维度 + 调整排序特征权重(多臂老虎机式)
  • 冷启动:首次引导建档(onboarding 问答)→ 初始化主画像 + 首批方向

📊 画像可视化 & 看板

  • 雷达图多维度展示 + 版本演化时间线
  • 用户不能手动改画像 → 只能通过与 AI 对话协商修改(保留可解释性与可信度)
  • 数据看板:已读书单统计、学习时长、连续天数、各领域掌握度变化

🔌 资料源适配层(可插拔)

interface ResourceSource {
  id: string;
  search(query: string, ctx: PortraitContext): Promise<ResourceItem[]>;
  enabled: boolean;
}
适配器 状态
通用网页搜索(Claude web_search/fetch) 首选
GitHub(官方 REST API) 必做
arXiv / 文档站 推荐
Bilibili / YouTube 可选
知乎(官方 OAuth) 可选/预留

性能与成本

⚡ 桌面性能

指标 BanLea(Tauri v2) 等效 Electron 应用
安装包体积 ~5 MB(Rust 原生二进制) ~80+ MB(Chromium 捆绑)
内存占用 ~50 MB 基线 ~200+ MB 基线
启动时间 <1s 2–3s
核心技术 Rust 内核 + 系统原生 WebView Chromium 运行时

Tauri v2 将 Rust 仅用作极薄系统外壳(手写 Rust < 50 行),所有业务逻辑在 TypeScript 中,兼顾性能与开发效率。

💰 AI 成本优化(五重降本)

BanLea 使用用户自己的 Anthropic API Key。以下设计确保高频使用不烧钱:

策略 节省效果
模型分层 深度画像重评估 / 复杂辅导:Claude Opus 4.8($5/$25 per 1M)
高频轻量任务(分类、出题、推荐候选):Claude Haiku 4.5($1/$5 per 1M)
Prompt Caching 稳定 system 段(角色、画像 schema、长期画像)打 cache_control 前缀 → 重复输入成本降低 ~90%
触发节流 + 局部重评估 画像只在证据累积或出现矛盾时重算,且只更新被触及维度。慢变维度几乎不动 → 几乎不花钱
推荐排序本地化 排序在 SQLite + 内存中完成 → 零 token 消耗
费用可视 设置页显示本月预估 API 花费(count_tokens 估算)

🏗️ 架构分层(可单测 + 零 UI 耦合)

BanLea/
├─ src-tauri/          # Rust 外壳(极薄,~50 行)
│  ├─ src/             # main.rs + commands.rs
│  └─ migrations/      # SQLite 迁移
│
├─ src/                # 主力代码(TypeScript)
│  ├─ core/            # 纯逻辑内核 —— 独立可单测
│  │  ├─ harness/      #   主/子画像引擎
│  │  ├─ recommender/  #   推荐候选 + 本地排序 + 在线学习
│  │  ├─ evidence/     #   证据采集 + 触发器
│  │  ├─ llm/          #   Claude 封装(流式/结构化/缓存/重试)
│  │  └─ sources/      #   资料源适配层
│  ├─ features/        # 功能切片(UI + hooks)
│  ├─ db/              # SQLite 仓储层
│  ├─ types/           # 共享类型 + zod schema
│  └─ config/          # 模型分层/触发阈值/排序权重
│
└─ tests/              # core/ 单测

安全与隐私

  • API Key:存 OS Keychain(Windows/macOS/Linux 原生密钥链),绝不进明文配置或 SQLite
  • 学习数据:全部本地 SQLite,不上传任何服务器(除调用 Claude API 必需的对话内容)
  • 可导出 / 可删除:一键导出或清空全部画像、证据、书单
  • 资料源合规:不内置爬虫;第三方源遵守各自 ToS 与限速

技术栈

选型
桌面外壳 Tauri v2(Rust + 系统 WebView)
前端 UI React 19 + TypeScript 5.7 + Vite 6
样式 Tailwind CSS 4 + 自建设计 token
AI 大脑 Claude API(@anthropic-ai/sdk
Opus 4.8(深度推理)+ Haiku 4.5(高频轻量)
本地存储 SQLite(tauri-plugin-sql)
密钥存储 OS Keychain(keyring + 自定义命令)
类型校验 Zod 4(运行时 schema)
测试 Vitest 4

开发进度

BanLea_开发计划.md 完整里程碑。

阶段 状态
M0 脚手架 ✅ 基本完成
M1 画像内核 🔨 进行中
M2 自迭代闭环 ⬜ 待开始
M3 提问式辅导
M4 书单 & 看板
M5 推荐引擎
M6 画像可视化
M7 资料源
M8 打磨发布

快速开始

前置条件

  • Node.js ≥ 24 + npm ≥ 11
  • Rust 工具链(rustc + cargo ≥ 1.77)
  • VS C++ Build Tools(Windows)或 Xcode CLT(macOS)
  • Anthropic API Key

安装与运行

# 克隆仓库
git clone <repo-url> && cd BanLea

# 安装依赖
npm install

# 类型检查 + 测试
npm run typecheck
npm test

# 启动开发模式(热更新 + Tauri 窗口)
npm run tauri:dev

# 生产构建
npm run tauri:build

配置 API Key

  1. 启动应用后进入「设置」页
  2. 填入你的 Anthropic API Key
  3. Key 自动存入 OS Keychain,后续启动自动读取

设计哲学

"不要揣摩功能,不懂就问,尽可能优秀。"

  • 本地优先:数据属于你,不在任何服务器上
  • 低主动门槛:不需要你决定学什么,BanLea 猜并推荐,靠行为反馈变准
  • 自进化:画像随你一起成长,不是静态标签
  • 温和教学:用你的方式理解你、教你——类比型、逻辑型、项目驱动型……因人而异
  • 可解释:每个画像维度有依据(evidence_ids)、每处变化有说明、每版可回溯

About

BanLea · 双环自迭代学习引擎 主环塑人,子环塑知。双环交织,持续演化。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors