全部作品

D-viva-assistant-agent

  • Next.js
  • TypeScript
  • AI SDK v6
  • SQLite / better-sqlite3
  • Tailwind CSS
  • Zod
  • Vitest
  • Electron

一个面向论文答辩准备的私有桌面 app。它把学生自己的论文转成带来源的练习题、评分与修订任务,同时把论文文件与练习记录留在本机。

查看源码

一眼看懂

角色 独立开发者 — 产品设计、架构、数据库层、LLM 整合、校验与测试

问题

现有答辩准备工具要么是通用闪卡,要么每道题都要手打。真正的瓶颈是 grounding:AI 考官只有在问题能追溯到论文原文时才有用;判分只有在能引用所用证据时才可信。

解法

我做了一套私有桌面流程:论文先导入成 evidence blocks,练习题与评分都引用这些 blocks,低分回答进入复盘队列。除非用户主动选择 provider,文件与历史都留在本机。

成果

已实装本地优先论文答辩准备 app · 带来源练习 · 隐私优先桌面使用

我的工作

  • 论文 ingest 管线 — PDF / MD / TXT → 段落 evidence block,附导入质量报告;所有下游 AI 调用 grounded 到 ingest 输出,不靠模型先验
  • AI 备考包生成 — 论文摘要、关键数字、方法问答、高压问答、文献卡;每条引用来源 evidence block,落库前过校验器
  • 可编辑备考项、重新校验、review queue,以及带无 key 静态 fallback 的 training plan 生成器
  • 实时 AI 考官 — 从 evidence block 出题,对用户回答做五维评分(准确性 / 深度 / 语言 / 方法论 / 沉著度),附诊断、英文改写与追问
  • STT 练习闭环 — 录音 → 转写(Browser Web Speech 或 Google Cloud STT)→ 判分;低分项进复盘修复板
  • Provider-agnostic LLM 层 — AI SDK v6 generateObject + Zod 结构化判分;支持 Gemini / Claude / OpenAI;无 key 时优雅降级(练习和转写仍可用)
  • Electron + electron-builder macOS 打包,把产品定位为私有桌面工具,而不是 hosted multi-user service

技术证据

  • 本地优先数据模型:SQLite(better-sqlite3、WAL、FTS5)存论文、evidence block、备考包与练习记录;DB 完全在本机
  • 隐私设计:云端 AI 是 opt-in 并明告「发什么给谁」;API key 在 .env.local(gitignore);日志脱敏;录音不同步
  • Next.js App Router,DB 仅服务端(runtime=nodejs 边界、globalThis 单例、serverExternalPackages for better-sqlite3);AI 调用 env 解析后启用
  • 测试默认注入 MockLlmClient;真实模型调用由 RUN_LIVE_AI=1 开关控制,且只对公开样本论文运行

让每条生成都 grounded

导入的论文(PDF / Markdown / 纯文本)被抽取成段落 evidence block,附质量报告。所有下游内容——摘要、关键数字、方法问答、高压问答、文献卡与 training plan——都绑定到 evidence block 并过落库前校验。judge 与 examiner 只依据绑定证据判定,绝不靠模型先验。

考官闭环

实时考官从 evidence block 出题,对回答做五维评分,附诊断、英文改写与追问。可以打字或粘贴,也可以录音——音频被转写(Browser Web Speech 或 Google Cloud STT)并判分。低分项进入 review queue 与复盘修复板。

本地优先,云端 AI opt-in

SQLite 库、录音与论文文件都留在本机——无账号、不上云同步。云端 AI 是 opt-in 外呼,仅当有 provider key 时启用,并明告把什么发给谁;无 key 时优雅降级,练习与转写仍可用。

LLM 层 provider-agnostic(Gemini / Claude / OpenAI),测试默认注入 mock client——真实模型调用加 env gate,且只对公开样本论文运行。已 shipped 的 app 仍定位为私有桌面工具,不是 hosted multi-user service。

界面截图

D-viva-assistant-agent 练习工作区,包含考官问题、评分与带来源复盘
本地优先的论文答辩练习,包含评分与复盘任务。
D-viva-assistant-agent 即时练习界面,展示基于论文的考官问题
练习问题由学生自己的论文证据生成。
D-viva-assistant-agent 复盘队列,展示薄弱回答与修订任务
低分练习项会进入复盘队列,便于针对性修复。
D-viva-assistant-agent 备考材料界面,展示带来源的准备卡片
生成的备考材料会保留与导入论文证据的连接。