🔒 安全與隱私稽核:Verity JE#
本頁由
src/security_audit.py對 jar 做純靜態分析自動草擬([jar靜態]/[反編譯])。 標「未確認」者需人工實測或反編譯確認。
風險等級:⚠️ 高 標記:麥克風擷取、雲端 API 外聯、本機服務端點 (可離線)、內含原生程式庫 (8 個)
- 授權:
All Rights Reserved - 更新檢查 URL:無
能力總覽#
| 能力 | 偵測 | 嚴重度 | 出現於模組自身程式碼 |
|---|---|---|---|
| 麥克風/音訊輸入擷取 | ✔️(2 類) | high | ✅ 是 |
| 主動 HTTP 連線 | ✔️(1 類) | high | ✅ 是 |
| 載入原生程式庫 | ✔️(2 類) | medium | (僅相依庫) |
| 解壓/寫入暫存檔 | ✔️(2 類) | medium | ✅ 是 |
| Runtime 存取 | ✔️(3 類) | low | ✅ 是 |
| 音訊輸出播放 | ✔️(1 類) | info | ✅ 是 |
| 作業系統語音合成 (Narrator) | ✔️(1 類) | info | ✅ 是 |
外部端點#
雲端 API 端點
https://api.groq.com/openai/v1/https://openrouter.ai/api/v1/https://api.groq.com/openai/v1/audio/transcriptions
本機服務端點(可離線/自架)
http://127.0.0.1:4000/v1/http://127.0.0.1:8880/v1/http://127.0.0.1:9000/v1/
其他未分類 URL
https://youtu.be/_i4O7pyMlks×2
原生程式庫(8 個,共 118.7 MB)#
原生
.so/.dll/.dylib會在執行期被解壓到暫存目錄並以System.load載入執行。
| 檔案 | 平台 | 大小 |
|---|---|---|
sherpa-onnx/native/linux-x64/libonnxruntime.so |
linux-x64 | 23.9 MB |
sherpa-onnx/native/linux-x64/libsherpa-onnx-jni.so |
linux-x64 | 4.9 MB |
sherpa-onnx/native/osx-aarch64/libonnxruntime.1.24.4.dylib |
osx-aarch64 | 33.8 MB |
sherpa-onnx/native/osx-aarch64/libsherpa-onnx-jni.dylib |
osx-aarch64 | 4.0 MB |
sherpa-onnx/native/osx-x64/libonnxruntime.1.24.4.dylib |
osx-x64 | 28.3 MB |
sherpa-onnx/native/osx-x64/libsherpa-onnx-jni.dylib |
osx-x64 | 4.3 MB |
sherpa-onnx/native/win-x64/onnxruntime.dll |
win-x64 | 15.3 MB |
sherpa-onnx/native/win-x64/sherpa-onnx-jni.dll |
win-x64 | 4.3 MB |
打包的大型二進位/模型#
| 檔案 | 大小 |
|---|---|
assets/verity/tts/piper.zip |
64.3 MB |
assets/verity/sherpa-model.zip |
59.2 MB |
反編譯查證:實際行為與預設值#
以下每條都對照反編譯原始碼,標出檔案與行號。[反編譯]
出廠預設不會把你的資料送出去#
| 設定 | 預設 | 意義 |
|---|---|---|
apiKey |
空字串 | 沒有金鑰 → 所有雲端呼叫失敗。VerityConfig.java:58 |
useLocalTts |
true |
語音合成走本機 Piper,不外送。:56 |
useLocalStt |
false |
語音辨識指向雲端(但無金鑰即無效)。:57 |
aiProvider |
GROQ |
對話大腦預設指向 Groq。:60 |
要讓它真的運作,你必須自己去申請 Groq API 金鑰並貼進設定。這是使用者的主動選擇,不是安裝就發生。
貼上金鑰之後,會送出什麼#
以下三項皆為反編譯逐條核對 [反編譯]:
- 麥克風:按住
Talk to Verity才錄、放開才送,不是常時監聽。KeybindHandler.java:38-49音訊送 Groqwhisper-large-v3-turbo轉錄。AiAPI.java:386,445-450 - 打字聊天:Verity 在世界中生成後(
hasSpawned),每一則聊天都會送給 AI——requireVerity預設false,代表不必提到它的名字。ModEvents.java:863-866、VerityConfig.java:49 - AI 可以回頭索取遊戲狀態再送第二輪:座標、背包、玩家名、生命值、光照、難度、附近實體,以及
get_players_mods(你裝了哪些模組)。完整動作清單寫在它的 system prompt 裡。AiAPI.java:138、ModEvents.java:1198
⚠️ 多人伺服器:玩家不會知道#
聊天外送發生在伺服器端、用主機設定的金鑰。伺服器主人貼了金鑰,全服所有人的聊天都會流向 Groq,玩家端沒有任何提示。想收斂就把 requireVerity 設為 true(只有含 "verity" 的句子才送)。麥克風則是 client-only,各玩家用自己的設定。
兩個會嚇到人的預設值#
canCrash = true— Verity 可以把你踢出伺服器。VerityConfig.java:47killVillagers = true— 它會殺村民。VerityConfig.java:52
(這兩項是刻意的恐怖演出,不是 bug;但開服前請先知道。)
怎麼設定成全離線#
use_ollama = true(本機 LLM,:63)+ useLocalStt = true(用內建的 sherpa whisper tiny.en,:57)+ useLocalTts 本來就預設本機(:56)。三項都設好後,上表的雲端端點不會被使用;模組改打本機服務 :4000 LiteLLM/:8880 Kokoro TTS/:9000 Whisper。
沒有發現的東西(也重要)#
- 無遙測/analytics SDK、無
Runtime.exec/ProcessBuilder、無反射濫用。 - 原生程式庫解到作業系統暫存目錄執行,用完清除;模型檔解到
config/verity/sherpa-model/。
一個衛生問題#
API 金鑰以明文存在 config/verity-client.toml(Forge TOML)。分享設定檔或截圖前記得先移除。
結論#
Verity JE 會存取麥克風、在你提供金鑰後會把語音與聊天送到第三方雲端(Groq)、並打包 8 個原生程式庫。但它出廠預設不外送(無金鑰)、提供完整的全離線路徑、且沒有任何遙測——是可以放心安裝、但安裝前該知道自己在同意什麼的模組。
開伺服器的人請特別注意:金鑰貼在伺服器上,等於替全服玩家做了「聊天送雲端」的決定。
本頁機器草稿由 src/security_audit.py 靜態分析產生 [jar靜態];上方查證段為反編譯逐條核對 [反編譯]。互動與敘事行為尚未實機驗證,待 L3 真玩後補徽章。