Skip to content

氣隙與離線部署

所有樣式表、指令碼、字型與圖示都由你自己的安裝提供,覆蓋全部 14 個模板,登入頁與註冊頁也在其中。實測 62 個請求,零外部請求。

Potato 的每一份樣式表、指令碼、字型與圖示,都由它自己的安裝提供。 一臺沒有任何網際網路出口的機器,渲染出的介面與一臺網路通暢的機器完全相同。已在渲染出的標註頁面上實測:62 個請求,零外部請求,登入頁與註冊頁也包含在內。

這對安全研究環境、臨床場景、野外部署,以及任何位於嚴格代理之後的機器都很重要。它既是可用性屬性,也是隱私屬性。

由安裝自身提供的資源

Fabric.js(影像畫布)、jQuery、Bootstrap、Font Awesome、Outfit 介面字型、three.js(點雲)、OpenSeadragon(深度縮放)、d3、Peaks.js(音訊波形)、PDF.js,以及 Potato 自己的全部 CSS 與 JavaScript。

其中有兩項是必需的,而非裝飾性的。沒有 jQuery,跨度標註完全無法工作;沒有 Fabric.js,影像畫布永遠不會初始化,繪圖工具雖然渲染出來了,卻什麼也畫不了。

那個字型曾是一處隱私洩漏

styles.css 的開頭曾有一條指向 Google Fonts 的 @import。除了破壞離線可用性之外,它還會在每次頁面載入時,把每位標註者的 IP 地址與 User-Agent 傳送給第三方——而人們自託管這個工具,恰恰是為了讓資料不離開自己的基礎設施。

它躲過了此前三次氣隙審計,因為每道防護檢查的都是模板中的 <script src><link href>,而樣式表內部的 @import 兩者都不是。該字型現已按 SIL 開放字型許可證隨原始碼提供。

登入頁與註冊頁上一個第三方 favicon 也因同樣的原因被移除:那是在使用者輸入憑據的頁面上,向另一家公司的伺服器發起請求。

覆蓋全部 14 個模板

覆蓋範圍現已包含登入、註冊、密碼重置與錯誤頁面。這些恰恰是氣隙審計最不容易查到、卻最要緊的頁面。

隨原始碼提供的檔案會做校驗和驗證

所有隨原始碼提供的檔案都會對照其 CDN 公佈的雜湊做驗證,不匹配即拒絕。這些檔案是提交進倉庫的,因此一次未經驗證的下載會隨發行版分發給每一位使用者。

兩份防護允許列表均為空,並且當某一條目不再匹配任何內容時防護會失敗,因此一項豁免不可能悄悄變成永久性的。

"氣隙"在這裡的準確含義

應用本身不需要網路。模型屬於一次性傳輸:在一臺聯網機器上執行 potato download-models,再把目錄複製過去即可。你所配置的任何託管 AI 端點,例如 OpenAI、Anthropic 或 Gemini,顯然需要對外的通路。

因此準確的說法是**"一旦權重就位於本機即可氣隙執行"**,而不是"無需任何準備即可氣隙執行"。

相關內容