全部作品

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 考官 — 從證據區塊中生成問題,從準確性、深度、語言、方法論和沉著度五個維度評估回答,並提供問題診斷、英文改寫和追問
  • STT 練習閉環 — 錄音 → 轉寫(Browser Web Speech 或 Google Cloud STT)→ 判分;低分項進複盤修復板
  • Provider-agnostic LLM 層 — AI SDK v6 generateObject + Zod 結構化判分;支持 Gemini / Claude / OpenAI;無 key 時優雅降級(練習和轉寫仍可用)
  • Electron + electron-builder macOS 打包,形成私有、單一使用者的桌面 app

技術證據

  • 本地優先數據模型: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 是可選功能,有 provider key 時啟用,並會清楚預覽發送內容與接收方;本地模式仍可使用練習與轉寫。

已發布的是私有、單一使用者桌面 app。provider-agnostic LLM 層支持 Gemini、Claude 與 OpenAI;測試使用 mock client,受 gate 控制的 live checks 則只運行於公開樣本論文。

界面截圖

本地優先的論文答辯練習,包含評分與複盤任務。
練習問題由學生自己的論文證據生成。
低分練習項會進入複盤隊列,便於針對性修復。
生成的備考材料會保留與導入論文證據的連接。

放大截圖