Latent 的承諾只有一個:沒有證據,就不說安全; 沒有回頭路,就不刪除。
Latent 追蹤的每個項目都會帶著三種徽章之一,說明「刪了它會發生什麼」:
還有一把鎖,它不是第四個標記。帶琥珀色 R 又帶鎖的列,是它的分類還只是一個沒有人驗證過的主張 — 通常是系統或工具的快取。它既不是你的作品,也沒有保證回得來,所以在你親手開鎖之前,Latent 不會動它。標記說的是「刪掉會怎樣」,鎖說的是「需不需要你來判斷」。
所以字母和顏色回答的是兩個不同的問題。字母說的是「刪掉會怎樣」 — R 會回來,I 回不來,P 根本不會被提議。顏色說的是「由誰判斷」:綠色表示 Latent 可以憑自己的證據動手,琥珀色表示這由你決定。這正是未證明的快取仍然是 R 而不變成 I 的原因 — 斷言它回不來只是往悲觀方向的猜測,其根據並不比樂觀方向更多。展開一個歸屬方時,綠色的列排在前面,接著是一條寫著從這裡起由你判斷的分隔線,再往下是其餘的列;歸屬方的長條圖也依同樣方式劃分。
沒有授權的 Latent 是一個火力全開的檢視器:掃描不限次數, 探索圓輪與圓環、觀察空間隨時間的變化、閱讀記錄。沒有任何東西會過期。 授權解鎖的只有「移除檔案」— 而復原(還原、隔離回復)無論有沒有授權 永遠可用,因為這個 App 絕不會做的一件事,就是拿你的檔案當人質。
「Latent」標籤頁就是那個一鍵動作:標誌本身就是按鈕,執行時進度環 繞著它轉,完成後釋放的總量就落定在那裡。它刪除的東西要通過兩道 門檻,而不是一道:復原方式必須已有證據,而且該項目必須是那種 消失了你根本不會注意到的等級 — 廠商自帶清除指令的套件快取、瀏覽器 HTTP 快取、縮圖儲存區。任何需要你重新掙回來的東西(下載的模型、 工具鏈、你安裝的外掛)都不會進入最佳化,而是留在「空間」等你刻意 點選。這份允許清單刻意與連接的 AI 助手所受的限制完全相同, 所以一鍵清理絕不會比助手被允許的範圍伸得更遠。
最佳化絕不碰未驗證的列、你自己的檔案或受保護的路徑;絕不代你打開 鎖頭;絕不解除安裝 App 或套件、不卸載模型、也不清空垃圾桶。如果部分 目標被執行中的 App 占用,最佳化會先問你 — 列出擋路 App 的勾選清單, 保持勾選的才會被禮貌地要求結束(App 自己的儲存提示會出現);取消 勾選的,其檔案就直接略過。所有移動的東西都會進入垃圾桶,記在同一份 還原 manifest 之下,防護檢查會在刪除的那一刻重新執行。確認面板也會 列出刻意不碰的東西,所以你看到的數字是下限,不是吹噓。
「可以安全刪除」是掙來的,從不假設。Latent 使用四種證據, 由強到弱:
| 證據 | 它的意義 | 例子 |
|---|---|---|
| Registry 身分 | 在刪除當下,那個產物仍在其 registry 上有回應 — 比對的是摘要、修訂版與檔名,不只是名稱。 | Ollama 模型、Hugging Face 儲存庫、LM Studio 模型 |
| 記錄在案的來源 | 工具自身的索引記下了每個項目的出處;只有當所有項目都能追溯到 仍在提供服務的公開來源時,才允許批次刪除。 | npm 快取、Gradle 模組 |
| 廠商合約 | 廠商提供了自己的清除指令 — 等於工具本身宣告這個快取可以丟棄。 Latent 仍會走垃圾桶,讓你保留還原的能力。 | pip(pip cache purge)、uv(uv cache clean) |
| 實驗觀察 | 隔離會觀察工具是否真的重建了被移除的東西 — 每一次觀察都成為記錄在案的證據。 | 任何你打開鎖頭的項目 |
當一個儲存區混有可證明與不可證明的內容時,Latent 只刪除已證明的 部分,並明確告訴你保留了什麼、為什麼。放在下載模型旁邊的自訂 微調模型,永遠原地不動。
未驗證的項目、你自己的檔案與受保護的項目都帶著一把鎖。打開它 是一個明確的同意動作:那一列變得可以選取,這次刪除會在記錄中標記為強制 執行,確認面板也會以紅色標示。同意是有範圍的 — 重新掃描會關上所有已 打開的鎖。Latent 絕不代你開鎖,連接的 AI 助手則完全無法開鎖。
快取是 Latent 能夠證明的東西;真正屬於你的空間需要另一份契約。 「空間」裡的我的檔案窗格會列出六類候選項目,每一類都遵守 同一條規則:只列出,絕不預先選取,最佳化與 AI 助手絕不觸碰。
.dmg/.pkg)以及被放棄的
未完成下載。node_modules、Rust target、
build/dist、virtualenv。
只認領緊鄰專案標記(package.json、
Cargo.toml……)的項目,而沒有 requirements 檔的 virtualenv
保持鎖定 — 套件清單會跟著它一起消失。可以重建,但重建要花時間,
所以這些絕不進入最佳化。少數刪除會被提供一條比垃圾桶更安全的路 — 7 天隔離 — 但僅限 損失不透明或難以逆轉的情況:受保護的項目與無法讀取的「你的資料」 儲存區。其他一切(未驗證的快取、你自己列出的檔案)直接進垃圾桶, 「復原」的列上已寫明風險。這是建議,絕不強加。隔離期間,在「復原」標籤頁一鍵 即可回復。期滿後項目移往垃圾桶 — Latent 會記錄所屬工具是否重建了 該路徑,為原本沒有證據的主張累積證據。想走直接路線?在確認面板選 「直接進垃圾桶」;你的決定優先。
所有能回來的東西都住在同一張可排序的表格裡,附上 移除日期:
綠色的列 — 有記錄在案的重新下載指令,或所屬工具會自行重建的已驗證儲存區 — 也可以 直接在「復原」裡清空 — 一列或全部一次清,背後有一道 明確的「無法還原」確認 — 因為它們的回頭路不隨位元組消失。 一去不回的列永遠不會有那顆按鈕;那個決定 留給 Finder。
列依階段分組 — 隔離、垃圾桶、已消失 — 最新在前,各階段欄位顯示項目進入該階段的日期;可依名稱、來源或大小排序,依階段篩選,依名稱、來源或指令搜尋。最後 那一組正是重點:記錄比垃圾桶活得久,所以清空 垃圾桶不會讓你失去任何無法刻意找回的東西。指令 只在狹窄且經過驗證的形態下執行;其餘的會顯示出來, 由你自行拷貝。
Latent 只把東西移到垃圾桶,絕不在你不知情時清空它。它不碰 自己沒放進去的檔案,也不丟棄沒有退路的檔案。總覽的垃圾桶卡片顯示裡面 有什麼,一顆按鈕在 Finder 中打開它。
但有兩處會替你收尾。復原標籤頁可逐項清空,或一次清空所有安全項 — 這裡的「安全」指該列仍帶著已記錄的重新取得指令,或已驗證工具會重建它。而 Optimize 在一次執行之後立刻提供同樣的動作,且僅限那次執行。Optimize 只刪除已證明安全的項目,所以它移動的每一列都能重新下載或重新產生;要你 再去 Finder 裡回收空間,等於 App 對自己已經作出的判斷臨陣退縮。按鈕上寫著 件數與大小,而且只問一次。
垃圾桶裡的其他東西 — 包括你自己在 Space 挑的 — 都留給你在復原標籤頁 或 Finder 中判斷。
刪除的東西進垃圾桶,絕不直接湮滅,而且每次執行都會寫下一份 還原 manifest,精確復原移動過的一切。「空間」的清理在移動任何東西 之前會先跑四道防護:所屬工具沒有在執行、目標裡沒有執行中的二進位檔、 裡面沒有任何檔案被任何程序占用、過去 10 分鐘內沒有任何變動。防護會在 刪除的那一刻重新檢查,不是只在規劃時。App 解除安裝程式跑的是自己的 一對防護 — 該 App 不得在執行中,目標裡也不得有被占用的檔案。
點一個 App,就能看到其 bundle identifier 擁有的每個檔案 — 本體、快取、 偏好設定、容器、啟動代理程式。Latent 只預先勾選能夠確定歸屬的部分; 有兩種列永遠不會被預先勾選:
勾選 App 自己的核取方塊會選取底下的一切 — 如果其中含有你的資料, 會先問你一個問題,答案在這次工作階段內都會記住。一次解除安裝就是一份 manifest:一次還原就能復原全部。若 macOS 對該 bundle 要求管理者權限, Latent 會把工作交給 Finder — 你會看到標準的認證提示。
Docker 把映像檔、容器、卷宗與建置快取放在同一個不透明的 VM 磁碟裡,
檔案層級的刪除等同全部重設 — Latent 把那顆磁碟列為你的資料,絕不
預先選取。Docker 窗格提供的,是 Docker 自身對單一項目的移除:
一個映像檔,或建置快取。那種移除是無法還原的 — 不經過垃圾桶,
也沒有還原 — 所以它的確認面板會用這幾個字明說,而且 Latent 會在
執行指令之前先寫下記錄:移除了什麼、多大、以及把它拿回來的
那一行 docker pull。容器使用中的映像檔會被拒絕,
卷宗永遠不列出 — 卷宗是某個人的
資料庫。
iOS 模擬器執行環境的做法相同,理由也相同:執行環境是 Apple 簽署的
磁碟映像檔,即時掛載並登錄在 Apple 自己的清冊裡,所以只有
simctl 能移除它。同一份契約 — 面板明說無法還原,
記錄保留 xcodebuild -downloadPlatform iOS,有模擬器
開機中的執行環境會被拒絕,Xcode 隨附的那一個永遠不提供移除。
解除安裝程式的另外兩個來源,管理的是 brew 與
pip --user 安裝的東西 — 那些默默累積多年的東西。
keg 的符號連結和 wheel 的四散檔案,讓「移到垃圾桶」變成謊言,所以移除
會執行廠商自己的解除安裝,還原 manifest 則改為記下精確的重新安裝
指令。同一條證明規則照樣適用:移除任何東西之前,Latent 會確認
registry(formulae.brew.sh / PyPI)仍提供該名稱與版本 —
沒有回應,就不移除。鎖定的列代表有其他套件相依於它、它被釘選,
或它來自第三方 tap。直譯器已經不在的 Python user-site
(經典的 ~/Library/Python/3.x 殘留)則以整個檔案夾一次
移到垃圾桶的方式提供,附一般的還原。
沒有清除按鈕,沒有健康分數 — macOS 本來就會壓縮並分頁閒置的
記憶體,所以「釋放 RAM」多半意味著之後花代價把它讀回來。真實的問題是
被遺忘的 App 抱著好幾 GB,所以「App 記憶體」卡片按實際占用列出你自己
的 App,附一顆與 Cmd-Q 完全相同的結束按鈕:App 自己跳出
儲存提示,絕不強制終止任何東西。系統程序永遠不列出。
這個標籤頁也顯示統一記憶體的動態,
以及哪些模型常駐程式(Ollama、LM Studio、llama.cpp、ComfyUI……)把權重
留在記憶體裡。每顆按鈕都執行廠商自己的指令 — ollama stop、
lms unload --all、ComfyUI 的 /free、llama.cpp 的路由器卸載 —
模型在下次使用時自然重新載入。Latent 絕不強制終止任何東西。
Latent 內建一個 MCP 伺服器,任何支援 MCP 的助手都能讀取你的磁碟 全貌並提出清理建議。伺服器就是 App 執行檔本身:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcpclaude mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcpcodex mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcpgemini mcp add latent /Applications/Latent.app/Contents/MacOS/Latent --mode mcp把以下內容加進用戶端的 MCP servers 區段 — Cursor 用 ~/.cursor/mcp.json,
Claude Desktop 用 claude_desktop_config.json,
VS Code 用 .vscode/mcp.json(VS Code 把它放在
"servers" 底下,而不是 "mcpServers"):
{
"mcpServers": {
"latent": {
"command": "/Applications/Latent.app/Contents/MacOS/Latent",
"args": ["--mode", "mcp"]
}
}
}傳輸方式是純 stdio — 沒有連接埠、沒有常駐程式、沒有需要一直開著的 東西;用戶端會在需要時自行啟動伺服器。
助手的權限嚴格小於你的:它只能碰已驗證的 R 項目 — 與一鍵最佳化相同的允許清單 — 而且有一條絕對的規則:每一次 刪除都會在你的螢幕上跳出確認面板,只有人親手點一下才算核准。 沒有回應,或 Mac 前沒有人,就沒有刪除。永遠如此。助手 永遠無法開鎖、永遠碰不到你自己的檔案、也永遠看不到檔案 內容 — 只看得到大小、路徑與證據標籤。
因為它們把所有看起來像快取的東西都算進去。Latent 的數字 刻意比較小:裡面的每個位元組都帶著證據 — registry 的回應、記錄在案的 來源、廠商合約,或觀察到的重新產生。沒有證據的位元組仍然會顯示; 只是交由你決定,鎖頭握在你手裡。
選單列 → Latent → 輸入授權碼…,貼上你的金鑰,完成。一組金鑰 可用於多台 Mac(Beta 金鑰最多可啟用 2 台)。掃描本來就不需要金鑰; 金鑰一到,刪除功能立刻解鎖。 沒有帳號、不用電子郵件、沒有任何要登入的東西。
⌘1–⌘6 — Latent、總覽、空間、App、記憶體管理、復原⌘7 — 跳到「復原」的隔離列⌘Z — 還原上次清理⌘R — 重新掃描在 App 內:輔助說明 → 傳送意見回饋…。它會送出你的訊息,加上 App 與 macOS 版本;活動記錄只有在你勾選它的核取方塊時才會附上, 而且會先移除你的個人專屬檔案夾名稱。絕不會在背景送出任何東西 — 只有那顆按鈕會送出。也可以寫信到 fattaillabs.ceo@gmail.com — 每一封我們都會讀。