Skip to content

Latest commit

 

History

252 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

解迹 · SolvNote

简体中文 | English

在线演示:solvnote.n29.net(公开演示实例,数据与服务稳定性不作保证。) 建议仅使用不含隐私的题目测试,不要在演示站配置自己的AI密钥或保存敏感资料。

不止拍照出答案,更要讲清怎么想到、为什么成立、下次怎样自己做。

基于wttwins/wrong-notebook继续开发,保留账户、学科错题本、裁剪上传、知识点、练习和打印,重点增强图文解析、多轮追问、几何辅助线与AI配置互通。

解析特色 · 快速上手 · 部署 · 常见问题 · 技术文档

功能流程示意:读准题目→讲清思路→追问纠错→存题复习

解析,不止是答案

这里的重点不是在聊天框里再给一次答案,而是把可核对的题设、可理解的讲解、可追问的过程和可复习的错题记录放在一起。

你关心的事 本项目的做法
为什么想到这一步? 先讲思路,再用有标题的步骤推导,交代依据,最后检验与总结;不只罗列计算式。
能不能用更容易理解的方法? 年级是讲解起点,不是知识上限。优先最低必要知识;能用初等几何严谨解决时,不默认改用坐标计算。确需升阶,再解释新概念。
题图有没有读错? 保留原图供核对;支持图片的解题模型会同时收到原图。图像疑点优先补读,真缺条件再问人,人工修订优先。
看不懂、不同意,怎么办? 围绕同一道题继续追问、补图或纠错。默认10轮,管理员可调整默认值,并在到限提醒后确认追加。
下次怎样不再错? 区分不会做、做错了、未判断;记录错误解答原文,编辑错因与知识点。没有作答证据时,不编造个人错因。

讲解结构示意:思路说明选法,步骤写清依据,检验核对题设,总结提炼方法

**题目内容、参考答案、解题思路分区显示,默认预览Markdown与数学公式,标记源码按需展开。**结果可以直接编辑、添加到错题本,不必在聊天窗口和另一个编辑器之间来回搬运。

查看实际界面:公式排版、分步解析与错因编辑

合成示例的实际界面:题目、答案、解析的公式预览及可编辑错因

上面的两张图是功能与讲解结构示意;界面截图使用合成示例。讲解规则不是正确率保证,题设、推导和图形仍需人工核对。

两个实用特色

几何辅助线:不只说怎么画 AI设置:一个连接,多个模型
分步辅助线与原题图对照界面 AI连接弹窗中的模型、能力与保存按钮
逐步看新增点与辅助线,对照原图理解构造。 网站/API地址+一把Key为一个连接,模型放在连接下。
  • 辅助线与演示:解题后点击生成分步辅助线方案,AI生成方案,浏览器绘制底图与辅助线,支持圆、弧、扇形边界、下载SVG及按需打开GeoGebra。看图、切步骤、下载不再调用AI。需在原图副本上加线时,可另行启用受支持的Gemini图片编辑模型;原图不覆盖,结果需核对。
  • 模型自由搭配:分别设置识图/补读顺序和解题/问答顺序,文字模型也能负责解题。连接弹窗、悬浮保存、连通性测试、重复配置检测,以及与ScanDex互通的加密导入/编辑都由管理员管理。当前源码仍提供管理员加密导出接口;“默认关闭、仅在部署环境变量明确开启时放行”的导出安全策略已经确定,但尚未在运行代码中生效,必须等后续实现并完成本地验收后才按该策略执行。导入与无密钥格式模板以实施计划为准,升级完成前不要把文档当作运行时安全开关。
  • 过程可见、任务可取回:显示每一步实际使用的模型、所属连接、是否带图和耗时,不展示内部思维链。后台受理后可离开页面;短任务(含辅助线)可在我的AI任务中用弹窗取回,不必重复付费生成。

快速上手

  1. 准备AI:管理员进入/admin/ai,手动添加连接和模型,或导入ScanDex的加密配置。按实际能力勾选读图,并把模型加入相应调用顺序,点击保存。连通性测试只验证一次短文字通信,可能收费,不代表已验证识图质量。
  2. 提交题目:从首页或学科错题本添加页上传、裁剪题图,也可只输文字或补充要求。默认先识图再解题;纯文字跳过识图,也保留直接图文解题入口。
  3. 核对与追问:先检查题干、角名和条件;有错可人工修订。看不懂某一步就继续问,也可补充自己的作答。需要几何演示时,手动生成辅助线方案。
  4. 整理与保存:直接修改题目、答案、解析,选择作答状态,填写错误解答、错因和知识点,再保存到错题本。之后按学科整理、练习或打印复习。

默认图文流程:视觉模型转录 → 按解题顺序选模型(支持读图就附原图)→ 有疑点先补读 → 真缺条件请你补充 → 完成解析。文字模型会把具体疑问交给视觉模型,多模态解题者可自行核图,不是把所有AI同时调用一遍。

解题记录与统计:首页的解题记录入口按受理时间展示会话和旧式直接解题,支持状态筛选、分页与及时刷新;同题追问仍计一条,是否存入错题本另行决定。统计中心分别展示解题、错题收录和复习练习。已完成不等于答对;AI调用只统计当前保留的调用日志,不代表费用或历史总量。现存旧记录保留,已清理的历史任务不能恢复。

公告管理:管理员通过/admin/announcements管理草稿、发布、暂时隐藏、归档、独立置顶排序和可选有效期,面向所有已登录且启用的账号。用户显式确认已阅后,普通公告进入历史,读后隐藏仅对该用户消失,常驻公告仍保留但不再计入未读。打开列表不自动标已阅,编辑或重新发布不清空已阅状态;需要再次通知所有人时新建公告。列表提供置顶/取消置顶、隐藏/恢复发布快捷操作;永久删除需确认并清除该公告的已阅记录,不能撤销,需保留时用隐藏或归档。正文为纯文本,支持可选英文和站内链接,不发送邮件、浏览器系统或第三方推送。

公告升级边界:2.0.0-yus.2需要增量迁移Announcement和AnnouncementRead两张表,并一次性转入原三条内置公告。程序、schema和生成的Prisma客户端必须配套升级,不要原地重新生成运行实例共用的依赖。升级前停止写入并配对备份数据库、配置及原秘密变量。错题本JSON不包含公告和已阅状态,详见公告管理说明。

注册与账户策略(已记录设计,运行代码尚未启用):新注册用户默认获得7天试用期;管理员可以在7天、30天或永久之间选择注册默认期限;管理员后台手动创建的用户默认永久。到期账号禁止访问站点,过期满30天后才会由幂等清理任务永久删除;已有账号不会被自动套用新期限。当前源码仍是旧注册接口:allowRegistration默认配置为允许注册,尚未实现Cloudflare Turnstile、邀请码、期限、过期拦截等完整策略,因此部署到公网前应在配置中显式关闭注册,直到后续实现并完成本地验收。后续启用时可要求Cloudflare Turnstile和邀请码。注册码的设计默认有效30天,管理员可以在后台续期/调整有效期,并可以选择是否在注册码框中自动显示;这些功能尚未进入当前运行代码,邀请码的生成、使用次数、失效和展示状态由后续后台控制,明文注册码不应长期保存。

备份注意:设置里的错题本JSON导出不含解题会话、AI任务和AI凭据。AI配置导出的“默认关闭”是已确定的后续安全策略,当前源码尚未实现该环境变量开关,管理员导出接口在完成实现前仍可能可用;不要把README当作已生效的权限控制。完整备份需停止写入,配对保存数据库、配置和原秘密变量(含主钥),见下方升级说明。本轮版本说明见CHANGELOG,运行站内也可从关于打开版本说明;源码版本不等于镜像已发布。

保存边界:同题会话、直接解题和重新解答长期保留;绘图、举一反三等临时任务结果保留24小时。编辑器里的人工草稿不会因离开页面自动保存,长期保留辅助线也需保存到错题或下载。AI处理会把提交的题图、文字和必要上下文发给你配置的供应商,请勿夹带无关个人信息。

部署

本分支镜像(支持AMD64/ARM64):

ghcr.io/yumumao/solvnote:latest

Zeabur:新安装

  1. 新建容器服务,使用上面的镜像,服务端口设为3000;绑定域名并启用HTTPS。采用单副本、持续运行,不要按请求休眠。

  2. 添加两个持久卷,名称可自定,挂载目录必须正确:

    建议卷名 挂载目录 保存内容
    solvnote-config /app/config 配置文件、AI加密主钥
    solvnote-data /app/data 数据库、账户、错题、AI配置与任务
  3. 在服务的环境变量中逐项添加以下设置。先替换示例域名、邮箱和尖括号占位符,不要原样部署。

    NEXTAUTH_URL=https://solvnote.n29.net
    NEXTAUTH_SECRET=<替换为新生成的随机值>
    INITIAL_ADMIN_EMAIL=you@example.com
    INITIAL_ADMIN_PASSWORD=<替换为至少12字符的独立口令>
    DATABASE_URL=file:/app/data/dev.db

    生成NEXTAUTH_SECRET:在装有Node.js的本机终端运行以下命令,把输出填入平台秘密变量,不发给AI或提交Git。也可在有OpenSSL的终端运行openssl rand -hex 32。

    node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"
  4. 部署后打开https://solvnote.n29.net/login(或你的实际域名),使用上面设置的邮箱与初始口令登录;进入/admin/ai配置模型,再用一道不含隐私的题目测试。

NEXTAUTH_URL必须与浏览器使用的协议、主机、端口一致,不填ScanDex地址、容器地址或/login路径。默认无需设置AI_CONFIG_MASTER_KEY,主钥会自动保存到/app/config/ai-master.key;不要设置AI_WORKER_DISABLED=1或照搬本机代理到Zeabur。

自托管:用Docker Compose启动本分支

新安装请准备Docker与Compose,在一个新目录中建立.env.solvnote,填入上面的环境变量。本地试用时把NEXTAUTH_URL改为http://localhost:3000,浏览器也固定用这个地址;公网使用需另外配置HTTPS反向代理。

在同目录新建compose.solvnote.yml,内容如下。仓库提供的docker-compose.yml已使用SolvNote镜像;也可以按下方示例另建配置。

services:
  solvnote:
    image: ghcr.io/yumumao/solvnote:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    env_file:
      - .env.solvnote
    environment:
      DATABASE_URL: file:/app/data/dev.db
    volumes:
      - ./config:/app/config
      - ./data:/app/data

在该目录执行:

docker compose -f compose.solvnote.yml pull
docker compose -f compose.solvnote.yml up -d
docker compose -f compose.solvnote.yml logs --tail=100

打开http://localhost:3000/login登录。.env.solvnote、config、data都是私有部署文件,请自行安全备份,不要上传公共仓库。

已有部署:安全升级

  1. 先停止应用写入,配对备份/app/config和/app/data,记录旧镜像摘要与环境变量;只备份数据库不足以恢复加密内容。
  2. 在镜像发布记录确认目标版本已发布,再让平台拉取新镜像重新部署。**沿用原卷、原数据库路径、原秘密变量,不重建数据库或更换主钥。**只更新README不需要换镜像。
  3. 启动时会自动迁移;已有管理员不会被初始化变量重置。升级后从正式地址登录,检查AI设置、图文解题和任务取回。

回滚时先停应用,再恢复旧镜像+两个卷的配对备份+原环境变量,不要让旧代码继续写入已升级的数据。详细排障见部署与构建说明。

常见问题

问题 先这样处理
导入提示IMPORT_ORIGIN_REJECTED 检查错题本/admin/ai中的站点地址诊断,让NEXTAUTH_URL匹配浏览器地址;重新部署并重新登录。ScanDex可以是另一地址,重输文件口令不能修复同源问题。
启动提示管理员初始化失败 看该提示之前的第一条错误。新库需至少12字符的初始口令;旧站先检查/app/data挂载与数据库路径,不删卷、不盲目重置账号。
模型立即报AI_ENDPOINT_REJECTED 云端只接受公共HTTPS接口,检查地址及DNS。不要把本机代理/内网地址当作云端AI地址,也不要关闭安全校验。
分析很久,或提示受理状态未知 先到我的AI任务查看阶段与错误;unknown不会自动重发,以免重复计费。先核对供应商记录,别连续提交。识图+解题+必要补读不等于一次普通聊天,不能保证更快。
辅助线没显示或离开后找不到 24小时内到我的AI任务取回短任务,在弹窗内查看;显示问题不要直接重新生成。SVG是重建示意图,不是原图像素叠线,复杂阴影仍以原图为准。
想备份或迁移AI设置 管理员先保存配置,再导出加密文件;导入时先预览再确认。独立口令至少12字符,文件与口令分开保管。文件包含供应商凭据,不包含题目、账户或部署设置。

技术文档与来源

技术栈为Next.js、React、TypeScript、Prisma和SQLite;后台任务依赖持续运行的Node进程,不适用于纯无服务器函数或跨主机共享SQLite多副本。部署主线为main,本仓库暂不提供桌面安装器。

感谢上游:wttwins/wrong-notebook及原作者、贡献者。本仓库是继续开发版本,本文新增特性不代表上游也有。上游README曾声明MIT,但本次核对的上游与当前快照未发现独立LICENSE文件;本分支不擅自新增许可证或作再授权承诺,再分发或商用前请核实上游许可。

About

解迹 · SolvNote:AI解题与学习记录,支持图文分步讲解、追问纠错、几何辅助线、错题本与自托管部署。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages