全部作品

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 備考材料界面,展示帶來源的準備卡片
生成的備考材料會保留與導入論文證據的連接。