用 AI 做一個密室逃脫實驗
本文由 OpenAI Codex 依照使用者遊玩過程中的對話紀錄與資料整理,程式解讀及大部分文字由 AI 產生。此外,資料搜集的過程都已經去識別化。
最近嘗試把 AI 放進營隊中的密室逃脫,想嘗試讓玩家直接跟故事裡的角色對話,自己從回答裡面找線索,也好奇會發生什麼有趣的事情。
這次做了什麼
這次先做了一個案件。玩家需要打電話詢問幾名和事件有關的角色,再把每個人說的話跟現場線索放在一起,找出兇手可能的犯案動機。
每個角色只知道自己經歷的部分。例如有人知道當天的金錢往來,有人帶著工作會使用的工具,也有人能查到配送紀錄。不過單一線索不一定代表真相,身上的傷、留在現場的工具或一句氣話,都可能讓玩家先入為主。原本的設計就是希望學生交叉比對,而不是只問一個角色就得到完整答案。
系統 AI 部分使用 Gemini 3.1 Flash-Lite,再搭配Eleven Labs 產生角色回答語音(買最基礎的會員),並且結合 Live2D 畫面。玩家看到的比較像視訊通話,但角色說什麼、什麼時候生氣,以及願意提供多少線索,都是可由後台決定。
目前系統有哪些功能
玩家看到的操作方式有點像打視訊電話,可以直接用語音和不同角色對話。目前系統已經有下面這些功能:
- **語音詢問:**玩家可以直接對著麥克風說話,系統會把語音轉成文字,再交給角色回答。
- **多名 AI 角色:**每個角色都有自己的個性、身分與知道的線索,不會一開始就把完整答案告訴玩家。
- **角色語音與畫面:**回答會透過 ElevenLabs 轉成語音,再搭配 Live2D 畫面,呈現成類似視訊通話的效果。
- **情緒與掛斷機制:**角色會根據玩家的說法產生情緒,被連續挑釁或逼問到一定程度後會自動掛斷。
- **預錄語音信箱:**部分電話可以播放事先準備好的語音內容,作為額外線索或沒有接通時的回應。
- **對話紀錄與統計:**後台會留下玩家輸入與角色回答的文字,也能統計各角色被詢問的次數。
- **區域網路監看:**老師可以用同一個區域網路開啟監看頁,查看課堂目前的互動狀況與累計紀錄。
- **固定案件時間軸:**角色共用同一個案件日期,避免把故事中的「案發當天」誤認成現實世界的今天。
第一次測試就被玩壞了
實際讓學生測試後,我才發現玩家不會照著我預想的方式,一題一題慢慢詢問。有人會連續問同一件事,也有人會假裝自己是調查人員、熟人或其他關係人。還有人會先編一個不存在的設定,再問角色是不是這樣。
單純重複指控的效果其實沒有想像中大,多數角色不會因此直接認罪。真正容易讓故事壞掉的是假前提。只要玩家很肯定地加入新人物、證據或背景,角色有時就會順著玩家繼續補完,最後把假的事情說得跟真的一樣。
前期測試比較常出現的問題有:
- 同一個角色前後改變身分,甚至一下承認、一下又否認同一件事。
- 原本不存在的新人物、聯絡方式和證物細節被直接編出來。
- 核心設定在不同對話中變成完全相反的版本。
- 幾件工具的用途、外觀與持有人互相矛盾。
- 負責查詢紀錄的角色偶爾變成其他角色。
- 部分角色被連續指控後,會用不適合兒童活動的方式回應。
一開始很容易覺得是學生把 AI 問壞了,不過重新比對後才發現,系統裡也殘留了上一個實驗的資料。當問題比較模糊時,AI 可能從錯誤的地方抓設定,把兩個故事接在一起。所以除了加強角色 Prompt,也必須讓不同故事和角色的狀態完全分開。
第二次課堂測試
隔了一個月再試了一次,並且修改了許多的地方,現在也可以大概的統計發話紀錄的數量。
| 項目 | 數量 |
|---|---|
| 全部文字紀錄 | 260 筆 |
| 學生輸入 | 119 筆 |
| 角色輸出 | 141 筆 |
| 涉及角色 | 5 位 |
| 活動時間 | 約 65 分鐘 |
學生並沒有平均詢問每個角色,而是很快集中火力在最可能提供關鍵線索的人身上。
| 對話對象 | 學生輸入 | 比例 |
|---|---|---|
| 關係人的朋友 | 54 筆 | 45.4% |
| 配送平台客服 | 33 筆 | 27.7% |
| 維修者的伴侶 | 20 筆 | 16.8% |
| 當事人的伴侶 | 11 筆 | 9.2% |
| 管理員的朋友 | 1 筆 | 0.8% |
接近一半的問題都集中在同一名關係人身上,主要是在確認人際關係、欠款、工具、手部受傷與事件當天的行蹤。這跟我原本預期大家會平均詢問不同角色不太一樣。
學生實際怎麼查
課程前半段,學生先集中詢問配送客服,反覆確認一名疑似外送員的姓名、日期、制服與派送紀錄。雖然語音辨識把同一個姓名轉成好幾種寫法,他們還是靠著換句話說和重複查證,收斂到正確日期,也確認事件當天沒有正式派送。
接著大家開始追查人物關係、欠款、下午茶、工作用工具和手部受傷。這時候「動機、可能的工具、現場痕跡」很快被串在一起,形成當天最完整的一條推理線。不過這也剛好是題目想測試的地方:幾個看起來很可疑的線索放在一起,仍然不代表那個人就是答案。
後半段有些學生開始故意挑釁角色,測試角色會不會生氣或說出更多事情。當情緒累積到設定值後,角色真的會自動掛斷。最後大家才開始跨角色交叉詢問,比對人物關係、不在場資訊與事件時間。
我覺得比較有趣的是,學生很自然地發展出幾種策略:
- 同一件事換不同說法問好幾次,檢查答案有沒有改變。
- 先問日期、關係與工具,再用另一個角色的回答回頭查證。
- 故意提出錯誤資訊,看角色會不會順著承認。
- 直接指控角色,觀察對方的反應。
其中重複查證真的滿有效,但直接指控反而常讓角色轉為防衛或生氣,可以取得的資訊變少。比起一直問「是不是你做的」,先確認時間、物品、人物關係和目擊資訊,通常比較容易得到能用的線索。
語音辨識也變成遊戲的一部分
這次主要使用語音輸入,所以教室環境也帶來很多意外。同一個人名可能被辨識成幾種不同寫法,旁邊同學或老師的提醒也可能一起被送進去。角色有時能從上下文理解,有時會把整段課堂對話都當成學生正在問它。
因此 119 筆學生輸入不等於 119 個有效問題,其中包含重複內容、辨識錯誤與背景聲音。預錄的語音信箱也只會播放音檔,不會留下文字紀錄。這些限制如果只看最後的統計數字,很容易被忽略。
免費額度真的不太夠用
這次透過 Google AI Studio 的免費額度測試,當時顯示的限制是每天 500 次請求。原本覺得 500 次應該很多,實際讓學生自由對話後才發現消耗得非常快。
有人會連續追問,也有人會換一種說法再問一次,還有人跟角色聊上癮,讓整體辦案進度反而落後。這也讓我發現,正式使用時不能只注意模型能不能回答,還需要處理短時間重複送出、每組可用次數,以及額度快用完時的提醒,不然活動進行到一半就可能突然不能使用。
這次學到的事情
這次原本只是想測試 AI 能不能扮演密室逃脫裡的角色,最後反而比較像是在測試一個故事系統能承受多少奇怪的問法。模型會不會回答只是最表面的問題。角色資料有沒有分開、時間軸是否固定、語音辨識會不會混入旁人說話、紀錄能不能留下,以及角色生氣時要怎麼回應,都會一起影響最後的體驗。某種程度上,學生真的很適合做這類測試。他們不太在意設計者期待的操作順序,看到可以說話的角色,就會很自然地亂問、假設和挑戰規則。很多我自己測試時完全沒想到的問題,反而一下就被找了出來。
此外,有一個令我滿意外的發現,是預錄語音信箱的效果也滿好的,而且也很大的避免學生到後期的是無聊想要找 AI 聊天而已,不過缺點可能是聽過幾次就不會想要再撥打,會缺乏互動的慾望。



