WikiTA 是什麼
WikiTA 是給研究實驗室「新人入訓 (onboarding)」用的適性學習系統。學生選一個主題進去,AI 會出題、判分、給提示、陪你討論,一路帶你跑完一輪 Probe → Deepen → Reassess 的學習循環,直到該主題的所有觀念都達到 mastered。指導老師 (PI) 則在後台用 mastery heatmap 即時看到每個人的狀況,必要時手動介入。
系統是多租戶 (multi-tenant) 設計:一台 server 可以同時容納多個實驗室 (lab),彼此資料用 row-level security 完全隔離。每個 lab 用一個 slug(例如 alpha)當網址前綴。
學生面試者用「學生介面」:選主題、答題、跟 AI 助教互動。PIMentor用「教師後台」:看進度熱圖、審核內容、開新主題、調整難度。
這份手冊把每個角色看得到的每一個功能都走一遍,並盡量配上實際畫面截圖。建議第一次使用的人,先讀「核心概念」與自己角色的章節即可。
核心概念與名詞
整個系統圍繞幾個名詞運作,先把它們弄清楚,後面的操作就都看得懂了。
| 名詞 | 意思 |
|---|---|
Lab | 一個實驗室/租戶。用 slug 當網址前綴(例 /alpha/login)。各 lab 的使用者、主題、進度完全隔離。 |
Topic(主題) | 一門「課」,例如「Git Basics」、「Paper Reading」。由 PI 用 Bundle 編輯器一次匯入。可選擇性歸到一個分類底下。 |
Category(分類) | 把 lab 內的主題分組的標籤(slug + 顯示名 + 可選 emoji/顏色)。學生進來會先看到分類,再點進去看主題。一個主題最多歸一個分類,不指派就是「未分類」。 |
Concept(觀念) | 主題底下的單一觀念。觀念之間有 先備知識 (prereq) 的 DAG 關係:A 是 B 的先備知識。 |
Question(題目) | 掛在某個觀念上的題目,分選擇題 (MC) 與問答題 (free-text),有 difficulty tier 1–4(對應 Bloom 認知層級)。 |
Mastery(掌握度) | (學生 × 觀念) 的 0–1 分數,用 EWMA 平滑。狀態:unseen → struggling → exploring → proficient → mastered。 |
Stage(階段) | 學生在某主題的當前階段:probe → deepen → reassess → completed。每次取下一題時重算。 |
Tier(難度檔位) | 每答完一題依掌握度狀態調整:升到 mastered 會升 tier(最高 4),掉到 struggling 會降 tier(最低 1)。tier 決定下一題的 Bloom 難度。 |
學習引擎:系統如何決定下一題
每次學生答完一題,後端的 orchestrator 會重新判斷下一個階段該做什麼。三個引擎接力,把學生從「快速掃弱點」帶到「確認真的學會」。
graph LR
probe["Probe<br/>快速掃描弱點"] -->|"所有觀念 ≥ proficient"| deepen["Deepen<br/>針對最弱觀念加強"]
deepen -->|"全部 ≥ proficient 且沒題可出"| reassess["Reassess<br/>跨觀念小測驗"]
reassess -->|"pass"| completed["Completed<br/>完成"]
reassess -->|"fail:回去補學"| deepen
deepen -.->|"PI 用 restart 重來"| probe
三個引擎各做什麼
- Probe engine(探測)— 入口階段,快速掃哪些觀念是不穩的。優先處理順序:
unseen → struggling → exploring。 - Deepen engine(深化)— 挑「先備知識都已 ≥ proficient 的最弱觀念」加強。答錯時 LLM 會分類錯因(
no_idea / careless / confusion / prereq_gap),下一題依錯因換 tier 或換觀念。 - Reassess engine(複評)— 固定題數的跨觀念小測驗,確認深化階段的進步是真的、不是短期記憶。
- Grader(判分)— 選擇題直接比對;問答題交給 LLM 判分,並把錯題升級分類。
- Mastery propagation(掌握度傳播)— 答對:往上拉先備知識;答錯:往下拉依賴它的觀念。單向傳播。
角色 × 權限總覽
四種角色,能做的事差很多。下表是速查;細節在各角色章節。
| 功能 | 學生 | 面試者 | Mentor | PI |
|---|---|---|---|---|
| 進入主題、答題 | ✓ | ✓ | — | — |
| 看 wiki/補充材料(教材) | ✓ | ✓ 開卷 | — | — |
| 用提示 (Hint)/問大師兄(AI 問答) | ✓ | ✕ 禁用 | — | — |
| 求救 (escalate) 給 mentor | ✓ | ✕ 禁用 | — | — |
| 分享大師兄問答/補充問答 | ✓ | ✕ 禁用 | — | — |
| 看「我的進度」/錯題簿 | ✓ | 受限 | — | — |
| 看 mastery heatmap/學生詳情 | — | — | ✓ 唯讀 | ✓ |
| 看警示佇列、回覆訊息 | — | — | ✓ | ✓ |
| 核可警示 | — | — | ✓ 知悉 | ✓ 知悉+解決 |
| 批准/拒絕註冊、編輯/刪共享內容 | — | — | — | ✓ 限 PI |
| 建立/編輯/刪分類、指派主題 | — | — | — | ✓ 限 PI |
| 難度調整 (soften/accept/restart/stretch) | — | — | — | ✓ 限 PI |
| 對學生下個人化指令 (directive) | — | — | — | ✓ 限 PI |
| 新增/編輯主題、Bundle 匯入 | — | — | — | ✓ 限 PI |
| 題庫審核 (approve/edit/delete) | — | — | 看 | ✓ 限 PI |
| 看 LLM 成本明細 | — | — | ✓ | ✓ |
| 傳訊息給其他人 | ✓ | ✓ | ✓ | ✓ |
面試者看不到的按鈕,前端會直接隱藏;即使前端被改,wiki/hint/TA/escalate 這些端點在後端仍會檢查角色並擋下。權限不是只靠介面藏。
如何登入系統
每個 lab 都有自己的登入頁,網址是 /<slug>/login。登入支援兩種方式:
- 密碼登入:填 lab slug + username + password。
- Google 登入 (OIDC):用 Google 帳號登入(前提是該 lab 有設定 Google client ID)。
登入成功後會拿到一個 15 分鐘效期的存取憑證 (access JWT) 加上 7 天的 refresh cookie,到期前系統會自動續期,正常使用不會被踢出。
首頁基於多租戶隱私考量,不會列出 server 上所有 lab。PI 會告訴成員該 lab 的 slug;在首頁中央表單輸入 slug 按「進入」就會跳到對應登入頁。也可以直接打網址。
學生:從選主題到完成
學生是 WikiTA 的主受眾。一個主題從挑選 → 學習 → 完成,全部在同一個單頁應用 (SPA) 裡跑,過程隨時可離開、下次接續。
① 主題挑選
登入後預設停在主題挑選頁,採兩段式呈現。先看到分類卡片(每張卡有 PI 設的 emoji、色塊、分類名與主題數),點分類卡才展開該分類底下的主題清單。沒有指派分類的主題會被放進「未分類」。
每張主題卡會顯示主題名、簡介、目前 mastery(若已開始過)與最近活動時間。已完成的主題會被標示,但仍可重新進去複習。點主題即建立一個學習 session,拿到第一題。
② 進入主題:教材總覽
進入主題後,會先看到這個主題的教材總覽:所有觀念以卡片排列,每張卡標出觀念名、對應的 wiki 檔案與字數,已讀過的會打勾。按右上角「開始作答」即進入答題模式。
③ 答題與學習
答題畫面左邊是題目區,右邊是側邊欄(面試者沒有右側欄)。
- 選擇題:選一個選項 → 按「送出」。
- 問答題:在文字框打字 → 按「送出」,LLM 秒級判分。
- 判分後立刻顯示「對/錯/部分對」+ LLM 回饋+下一題按鈕。
- 頂端顯示目前觀念名稱、tier、階段 (probe/deepen/reassess) 與 mastery 進度條。
- 按「離開」回到挑選頁,session 會保留,下次接續。
④ 💡 提示 與 🤖 大師兄問答(AI)
右側邊欄提供兩種「外援」:
| 按鈕 | 行為 | 限制 |
|---|---|---|
| 💡 提示 | 呼叫 LLM 給漸進式提示:第 1 次很模糊、第 2 次更明顯、之後可能直接點答案方向。 | 每題有硬上限,達上限後改建議「去問 mentor」。 |
| 🤖 大師兄問答 | 跟 AI 學習助教「大師兄」聊(是 AI,不是真人;要真人請用 🆘 求救)。四種回答風格 (persona):grounded(只用 wiki,超出範圍會拒答)、research(延伸到領域知識並標信心度)、senior(學長口吻、給類比與 code)、coach(蘇格拉底式反問)。系統會依當前觀念自動推一個合適 persona,學生可手動切。 | 對話會寫入 ta_logs,PI 可後台查看。 |
| 📤 分享這段對話 | 把一段覺得對同學有用的大師兄問答標記分享 → 送 PI/mentor 審 → 通過後變成主題內共用的 inline 問答。 | — |
判分後的回饋區還會附上該觀念的 wiki 回顧、本題用過的提示,以及底部的同學 Q&A 區(可向同學提問,經 PI 審核後其他人看得到)。
⑤ 🆘 求救 (escalate)
真的卡住、需要真人介入時按「我卡住了」。系統會建一筆 escalate 類型的警示,所有 PI/mentor 的後台立刻看得到,他們可以知悉、解決或直接傳訊息給你。短時間內對同一題多次求救不會重複建警示。
面試情境不該求助,所以面試者的介面不顯示 escalate 按鈕,後端也會擋下。
⑥ 📖 看 wiki 與互動教具
每個觀念旁都有「看 wiki」按鈕,點開會以視窗顯示該觀念的 wiki 內文(Markdown 渲染、支援 KaTeX 數學式)。PI 也可以掛補充材料(網址/圖/PDF),學生在同一個視窗看得到。
部分觀念還掛有互動教具——可以直接在 wiki 視窗裡操作的小工具。例如下圖的 B-Tree 視覺化教具,可以插入、搜尋、刪除鍵值,親手看它如何分裂與平衡,把抽象的索引結構變成看得見的動畫。
⑦ 👤 我的進度
「我的進度」整理你自己的學習狀況:每個主題的整體 mastery、觀念熱圖、最近答題時間軸。還包含——
- AI 學習評語:LLM 寫的一段話,總結你最近的強項、卡點與建議(隨選即時產生)。
- 錯題簿:列出近期答錯的題目與當時的回饋,可重做。
- 大師兄問答紀錄、登入記錄(含 IP)。
- CSV 下載:匯出自己所有的作答紀錄。
- 改密碼:在此填舊密碼 + 新密碼即可更新。
⑧ 📬 訊息
跟 PI/mentor/其他學生通訊的地方。有未讀訊息時,分頁標題會出現紅點。注意:PI 下的個人化指令不在這裡,那會直接出現在答題畫面上方。
面試者:開卷、但砍掉 AI 外援的學生模式
面試者跟學生用同一個介面殼,採開卷 (open-book) 設計:教材(wiki/補充材料)照樣開放可讀,但所有 AI 外援(提示、大師兄問答、求救)都被後端擋下。適用情境:實驗室申請者的能力檢測,或訪客體驗系統。
| 功能 | 學生 | 面試者 |
|---|---|---|
| 看題、答題、判分 | ✓ | ✓ 一樣 |
| 看 wiki/補充材料 | ✓ | ✓ 開卷(教材開放) |
| 💡 提示 | ✓ | ✕ 後端強制拒絕 |
| 🤖 大師兄問答 | ✓ | ✕ 後端強制拒絕 |
| 🆘 求救 | ✓ | ✕ 按鈕不顯示 |
| 分享大師兄問答/發同學 Q&A | ✓ | ✕ |
| 看「我的進度」 | ✓ | 部分(看得到 mastery,看不到共享內容) |
| 傳訊息 | ✓ | ✓ |
面試者的作答一樣會被 AI 整理成一份面試報告,這份報告 PI 在後台的「面試報告」分頁看得到(見 面試報告)。
PI:教師後台逐分頁導覽
PI 是 lab 的最高權限者。教師後台網址是 /<slug>/teacher,頂端一排分頁涵蓋所有日常管理;右上角另有「教材轉 Markdown」「Bundle 編輯器」兩個獨立工具。下面是分頁速查,點任一個跳到說明。
學生進度
左邊是學生清單(可搜尋),點一位學生看其詳情:各主題的 mastery 與 tier、最近作答、persona 偏好。右側可隨選產生 AI 全領域學習進度報告——一段跨主題的整體狀況總結(強項、卡點、建議),也能下載該學生所有作答的 CSV。
主題進度(mastery 熱圖)+ 個人化指令
選一個主題,看 (學生 × 觀念) 的掌握度熱圖:每一格是一位學生在一個觀念上的 tier 與 mastery,用顏色標示狀態,整個 lab 的學習地形一眼看完。
點開單一格還能看到該學生在該觀念的細節,並可在右側對「這位學生 × 這個主題」下一段個人化指令 (PI directive):這段話會被當成最高優先級的 system instruction,餵進該學生之後的大師兄問答與提示。典型用法如「這位學生有 git 經驗,跳過基礎,直接講 rebase」。按刪除即可清除、恢復預設行為;每次設定都會記入稽核紀錄。
在熱圖頁可以把某個主題「釘」給特定學生,其他人就看不到也進不去——適合做分眾指派或還沒公開的測試主題。
面試報告 較新
面試者作答完,系統會用 LLM 產生一份面試綜合評核:候選人在測試中的整體正確率、知識強項、弱點/待加強、作答時間觀察、能力上限觀察等,幫 PI 快速判斷是否適合錄取或安排哪個方向的訓練。
警示
警示佇列集中兩種來源:後端排程器(每 60 秒掃一次)自動偵測的、以及學生按求救產生的。類型有 stuck(連續在同觀念答錯)、escalation(學生按 🆘 求救)、suspicious_mastery(PI 用 accept 標記掌握、但學生之後又答錯,掌握度可疑)、review_queue_backlog(待審的共享內容積壓過多)。每筆可知悉(PI 與 mentor 都可)或解決(限 PI),也可直接看該生進度或傳訊息。
註冊審核
所有註冊申請(含用 Google 註冊但還沒配角色的人)都列在這裡。每筆顯示 email、申請角色、時間與備註。按批准啟用帳號;按拒絕標記退回,同一個 email 之後不能再申請。
使用者 較新
lab 內所有帳號的總管理:檢視每位成員的角色 (student/interviewer/mentor/pi)、帳號狀態與基本資料,作為註冊審核之外的長期帳號維護入口。
內容審核
學生分享過來、還在 pending 的三種內容都集中在這裡審:ta_log(想公開的大師兄問答片段)、inline_question(學生在 wiki 上補的「我也想問」)、peer_qa(同學之間的問答)。每筆可通過分享(變成主題內公開可見的補充材料)、編輯後通過(改內容並附理由再送出,留稽核紀錄)、拒絕或軟刪除(隱藏並記理由)。
知識管理分類
把 lab 內的主題分組(學生挑選頁的分類就是這裡設的)。畫面分兩塊:
- 分類管理:每個分類有
slug(建立後不可改)、display_name、iconemoji、color色塊、display_order排序與選填說明。可逐筆 inline 編輯或刪除;刪除時若底下有主題,會跳確認,確定後那些主題變「未分類」,不會刪到主題本身。 - 主題指派/上下架:列出所有主題,每筆右邊有分類下拉選單與上架/下架狀態,改完按「套用」即重指派。
Bundle 的設定表單也能在匯入主題時指定分類,但選單只列「當下這個 lab 已存在的分類」——所以要先在這個分頁把分類建好。跨 lab 搬 bundle 時,config 裡寫的是分類 slug 字串;目標 lab 沒有同名分類就會靜默落到「未分類」,PI 再進來重指即可。
難度調整
對單一 (學生 × 觀念) 套用「四個動詞」精細調整,每次都必填理由並記入 teacher_actions:
| 動詞 | 效果 | 用途 |
|---|---|---|
soften | 設 difficulty_cap (1–4),tier ratchet 升不過此上限,不改 mastery 分數。 | 「這題別對他出太難」 |
accept | 強制 status=mastered、score=0.95。 | 「我面試過了,他懂,免測」 |
restart | 把 mastery 全歸零回 unseen,清掉 cap/stretch。 | 「他蒙到 mastered,重來」 |
stretch | 標記 stretch flag,之後 deepen 會傾向出超出 tier 的題。 | 「給他點挑戰」 |
訊息
所有跟你(PI 帳號)有來往的對話列表,點開看歷史並回覆;也能選一位學生開新對話。未讀數即時更新。
公佈欄 較新
對整個 lab 發布公告的地方——適合貼入訓公告、活動通知、共通提醒,讓所有成員登入後都看得到,不必逐一私訊。
題庫
選一個主題,列出它所有題目,可篩 approved/pending。除了逐題管理,最上方還有三組 AI 工具:
- 一鍵翻譯題庫:把整個主題的題目批次翻成另一語言。
- AI 出題:選觀念+tier+題型,讓 LLM 直接幫你草擬題目。
- 一鍵補滿題庫:在背景偵測題目不足的觀念並自動補題(可設每觀念門檻),跑完回到下方清單看結果。
每一題可以 approve(進入正式題庫、學生會抽到)、unapprove(撤回)、編輯(改題幹/tier/選項/答案)、翻譯或刪除。題目來源包含 Bundle 匯入與 LLM 自動產生。
教具市集 較新
互動教具的集散地。前面學生章節看到的 B-Tree 視覺化(圖 6)就是一種互動教具;PI 在這裡瀏覽、啟用這些可嵌入 wiki 的小工具,把抽象觀念變成學生能親手操作的動畫。
翻譯
管理主題的多語系翻譯。選一個主題與目標語言,可一鍵 AI 翻譯整個主題的標題、觀念名、wiki 與題目,翻完逐筆呈現原文與譯文對照,PI 可手動微調後儲存。適合要把入訓教材同時提供中英(或日文等)版本的 lab。
成本
LLM 用量與花費的儀表板:按日聚合呼叫數、輸入/輸出 tokens、cache 命中與估算美金;下方列出最近的 LLM 呼叫明細(哪個 prompt、哪個 caller、耗時、tokens),並可切換 7/30/90 天範圍。Mentor 也看得到這個分頁。
設定 較新
Lab 層級的設定入口,集中管理這個實驗室的整體組態。
PI 進階工具:教材轉 Markdown 與 Bundle 編輯器
教材轉 Markdown 較新
後台右上角的工具,把上傳的教材(PDF、投影片、講義等)轉成 WikiTA 看得懂的 Markdown bundle 草稿,當作建立新主題的起點,省去從零手刻的功夫。
Bundle 編輯器
PI「一次到位」建立或更新一個主題的地方,網址 /<slug>/bundle-editor。輸入是一份 Markdown bundle 檔——主題設定、所有觀念、wiki、題目全寫在同一份 .md 裡。
- 三種來源:① 直接貼文字 ② 上傳
.md檔 ③ 從既有主題載入。 - 右側檔案樹列出解析出的內容,點任一檔看預覽。
- 左下驗證面板列出 E1–E15 錯誤與 W1–W9 警告;錯誤必須清掉才能匯入。
- 匯入把整個 bundle 寫進資料庫;主題若已存在會被替換,但不會清掉學生既有的 mastery。
Mentor:讀多寫少的 PI 副手
Mentor 用跟 PI 一樣的教師後台,但設計上是 PI 的副手——可以看、可以聊、可以知悉警示,但不負責管帳號和改 mastery。
Mentor 看得到/做得到:學生進度(熱圖、詳情、AI 摘要、CSV 下載)、警示(看與知悉)、訊息(與學生/PI 雙向)、成本、題庫(可看題目列表)。
Mentor 做不了(限 PI):註冊審核、內容審核、個人化指令、難度調整、解決警示(只能知悉、結案要 PI)、題庫的 approve/編輯/刪除、Bundle 匯入。
後台不主動隱藏 PI 專屬分頁,是為了讓 mentor 知道「這些功能存在,找 PI 處理」。但點到 PI 限定的動作時,後端會回 403 擋下。
密碼 / 登出 / 註冊
登出:點右上角「登出」,系統會撤銷 refresh token、清掉本機登入狀態並回到登入頁。
改密碼:在「我的進度」的改密碼區塊填舊密碼+新密碼,新舊不能相同,長度限制由後端控制。
忘記密碼:登入頁的「忘記密碼」連結 → 輸入 email → 系統寄出重設連結(信件主旨含 token)→ 點連結回到頁面填新密碼。
申請帳號(學生):在學生介面的 /signup 填 email、lab、想要的 username 與自我介紹,送 PI 審核;核可前無法登入。
FAQ 與疑難排解
登入後畫面一片空白/按鈕沒反應
先硬重整清快取(macOS Cmd+Shift+R、Windows/Linux Ctrl+Shift+R)。再開 DevTools 看 Console 有沒有錯誤、Network 有沒有 401(代表憑證過期)。也確認右上角有沒有顯示你的角色與 lab slug——沒顯示代表 session 沒建立起來。
首頁要怎麼進到某個 lab?
首頁基於隱私不再列出所有 lab。跟 PI 拿到 slug 後,在首頁中央表單輸入並按「進入」,就會跳到該 lab 的登入頁;也可以直接打 /<slug>/login。
學生答題拿不到下一題/卡住
可能是該主題還沒匯入任何題目(請 PI 用 Bundle 編輯器匯入,或用題庫的 AI 出題/一鍵補滿補題),或學生已完成該主題(所有觀念都 mastered)。
PI 看不到自己 lab 以外的學生
這是設計:所有查詢都被 row-level security 限定在自己的 lab,跨 lab 互不可見。