Latent 的承諾只有一個:沒有證據,就不說安全; 沒有回頭路,就不刪除。
Latent 追蹤的每個項目都會帶著三種徽章之一,說明「刪了它會發生什麼」:
三個字母,三種意義 — 沒有別的。畫面上不存在第四種狀態。一個目錄相信會回來、但沒有人為你的檔案夾證明過的快取,不是「大概沒事」:它就是 I,琥珀色,帶鎖,直到一次實測或廠商自己的文件把它變成 R。字母說的是「刪掉會怎樣」;顏色把這句話再說一遍 — 綠色表示 Latent 可以憑自己的證據動手,琥珀色表示決定權在你,灰色表示誰也不能動。
字母標在哪裡。字母評定的是隨著一次移除一起消失的東西 — 一個快取、一個資料檔案夾、一個套件、列在 App 底下的 App 本體。你選擇移除的單位(「App」裡的一列 App)本身不帶字母;它的各個部分才帶。任何只是一種狀態的東西 — 使用中、被相依項目占住、在隔離中等待 — 都以灰色寫在字母旁邊,絕不會成為第四個字母。
「可以安全刪除」是掙來的,從不假設。Latent 使用四種證據, 由強到弱:
| 證據 | 它的意義 | 例子 |
|---|---|---|
| Registry 身分 | 在刪除當下,那個產物仍在其 registry 上有回應 — 比對的是摘要、修訂版與檔名,不只是名稱。 | Ollama 模型、Hugging Face 儲存庫、LM Studio 模型 |
| 記錄在案的來源 | 工具自身的索引記下了每個項目的出處;只有當所有項目都能追溯到 仍在提供服務的公開來源時,才允許批次刪除。 | npm 快取、Gradle 模組 |
| 廠商合約 | 廠商提供了自己的清除指令 — 等於工具本身宣告這個快取可以丟棄。 Latent 仍會走垃圾桶,讓你保留還原的能力。 | pip(pip cache purge)、uv(uv cache clean) |
| 廠商文件 | 廠商自己的文件或原始碼寫明,工具會在下次使用時重新抓取或重建它 — 只認在廠商頁面上讀到的,部落格或猜測都不算。手動重新安裝也不算。 | Core ML 的已編譯模型快取(Apple)、pip 建好的 wheel、Adobe 的 媒體快取、Gradle 自己下載的 Android SDK 套件 |
| 實驗觀察 | 把檔案夾挪到一旁,重新啟動 App,Latent 觀察它是否回來 — 然後把 原件逐位元組放回去。隔離對任何你打開鎖頭的項目做同樣的事,歷時七天。 每一次觀察都成為記錄在案、附日期的證據。 | Codex 的元件快取、LM Studio 的內建工具、Claude Desktop 的代理 執行環境;任何你打開鎖頭的項目 |
有些檔案夾是逐項評定,而不是整體評定:Xcode 的裝置符號,對仍與這台 Mac 配對的裝置所執行的版本是 R,其餘是 I;一個 Keras 權重檔案夾只有在其中 每個檔案都是 Keras Applications 權重時才是 R。
當一個儲存區混有可證明與不可證明的內容時,Latent 只刪除已證明的 部分,並明確告訴你保留了什麼、為什麼。放在下載模型旁邊的自訂 微調模型,永遠原地不動。
每一個 I 列都帶著一把鎖。打開它是一個明確的同意動作:那一列 變得可以選取,這次刪除會在記錄中標記為強制執行,確認面板也會以紅色標示。 同意是有範圍的 — 重新掃描會關上所有已打開的鎖。Latent 絕不代你開鎖, 連接的 AI 助手則完全無法開鎖。P 列沒有鎖可開:Latent 根本不會提供它們。
因為它們把所有看起來像快取的東西都算進去。Latent 的數字 刻意比較小:裡面的每個位元組都帶著證據 — registry 的回應、記錄在案的 來源、廠商合約,或觀察到的重新產生。沒有證據的位元組仍然會顯示; 只是交由你決定,鎖頭握在你手裡。
「Latent」標籤頁就是那個一鍵動作:標誌本身就是按鈕,執行時進度環 繞著它轉,完成後釋放的總量就落定在那裡。它刪除的東西要通過兩道 門檻,而不是一道:復原方式必須已有證據,而且該項目必須是那種 消失了你根本不會注意到的等級 — 廠商自帶清除指令的套件快取、瀏覽器 HTTP 快取、縮圖儲存區。任何需要你重新掙回來的東西(下載的模型、 工具鏈、你安裝的外掛)都不會進入最佳化,而是留在「空間」等你刻意 點選。這份允許清單刻意與連接的 AI 助手所受的限制完全相同, 所以一鍵清理絕不會比助手被允許的範圍伸得更遠。
最佳化絕不碰未驗證的列、你自己的檔案或受保護的路徑;絕不代你打開 鎖頭;絕不解除安裝 App 或套件、不卸載模型、也不清空垃圾桶。如果部分 目標被執行中的 App 占用,最佳化會先問你 — 列出擋路 App 的勾選清單, 保持勾選的才會被禮貌地要求結束(App 自己的儲存提示會出現);取消 勾選的,其檔案就直接略過。所有移動的東西都會進入垃圾桶,記在同一份 還原 manifest 之下,防護檢查會在刪除的那一刻重新執行。確認面板也會 列出刻意不碰的東西,所以你看到的數字是下限,不是吹噓。
「空間」是一張歸屬方清單 — Xcode、Homebrew、Hugging Face、Chrome 等等 —
每個歸屬方帶一條依所持內容著色的長條:已證明的 R 是綠色,I 是琥珀色。
展開一個歸屬方,它的列先是 R,再是 I,各自之內由大到小排列。每一列都
顯示它的字母、路徑(個人檔案夾顯示為 ~,游標懸停顯示完整路徑)
和一個在 Finder 中顯示它的 ↗。歸屬方的標題列帶著與清單頂端相同的
☐ R 標籤 — 它只選取該歸屬方已證明的列,其他一概不選 — 以及一顆
解鎖下方 N 個已鎖定項目…按鈕,一個刻意的步驟就打開它底下的所有鎖。
歸屬方之下是你自己的檔案夾 — 文件、下載項目、照片 — 只列出,絕不預先選取。
快取是 Latent 能夠證明的東西;真正屬於你的空間需要另一份契約。 在工具歸屬方之下,「空間」會在一條寫明的分隔線下列出六類屬於你自己的 候選項目,每一類都遵守同一條規則:只列出,絕不預先選取,最佳化與 AI 助手絕不觸碰。
.dmg/.pkg)以及被放棄的
未完成下載。node_modules、Rust target、
build/dist、virtualenv。
只認領緊鄰專案標記(package.json、
Cargo.toml……)的項目,而沒有 requirements 檔的 virtualenv
保持鎖定 — 套件清單會跟著它一起消失。可以重建,但重建要花時間,
所以這些絕不進入最佳化。「App」有八個來源,各占一個標籤頁:Mac App、Homebrew、 npm -g、Python (pip)、Conda、Docker · 模擬器、 .pkg 收據與殘留項目。每一個代表可移除之物的列都像「空間」 的列一樣帶 R、I 或 P;App 那一列本身不帶 — 它是你選擇的單位,被評定的是 它底下的各個部分。左側的圓輪依大小顯示各 App,其下的底列說明它們總共占了 什麼:App 本體,然後是依字母分列、它們留下的東西。
點一個 App,就能看到其 bundle identifier 擁有的每個檔案 — 本體、快取、 偏好設定、容器、啟動代理程式 — 先 R,再 I,大的在前。App 本體是一個 I 列(把 App 找回來靠重新安裝,那是你的事)。「空間」已列為儲存區的 檔案夾會摺成一列空間儲存區:,寫著各儲存區的名稱,一個勾選全部選取。 Latent 只預先勾選能夠確定歸屬的部分;有兩種列永遠不會被預先勾選:
勾選 App 自己的核取方塊會選取底下的一切 — 如果其中含有你的資料, 會先問你一個問題,答案在這次工作階段內都會記住。一次解除安裝就是一份 manifest:一次還原就能復原全部。若 macOS 對該 bundle 要求管理者權限, Latent 會把工作交給 Finder — 你會看到標準的認證提示。.pkg 收據 列出管理者所有位置裡的安裝程式殘留,在那裡不刪除任何東西:它顯示還剩下 什麼,在收據指明了解除安裝程式時執行廠商的解除安裝程式,否則就在 Finder 中顯示這些檔案,由你自己移除。殘留項目列出 App 已經不在的資料 — 全部是 I,由你來勾選。
Docker 把映像檔、容器、卷宗與建置快取放在同一個不透明的 VM 磁碟裡,
檔案層級的刪除等同全部重設 — Latent 把那顆磁碟列為你的資料,絕不
預先選取。Docker 窗格提供的,是 Docker 自身對單一項目的移除:
一個映像檔,或建置快取。那種移除是無法還原的 — 不經過垃圾桶,
也沒有還原 — 所以它的確認面板會用這幾個字明說,而且 Latent 會在
執行指令之前先寫下記錄:移除了什麼、多大、以及把它拿回來的
那一行 docker pull。容器使用中的映像檔會被拒絕,
卷宗永遠不列出 — 卷宗是某個人的
資料庫。
iOS 模擬器執行環境的做法相同,理由也相同:執行環境是 Apple 簽署的
磁碟映像檔,即時掛載並登錄在 Apple 自己的清冊裡,所以只有
simctl 能移除它。同一份契約 — 面板明說無法還原,
記錄保留 xcodebuild -downloadPlatform iOS,有模擬器
開機中的執行環境會被拒絕,Xcode 隨附的那一個永遠不提供移除。這些列說的
和別處一樣是三個字母:Apple 能重新下載的執行環境是 R,Apple 標為不可刪除
的是 P,有 registry 支撐的映像檔是 R,懸空的層是 I。「使用中」是寫在字母
旁邊的灰色狀態,按鈕會一直等到模擬器或容器不在為止。
其中四個來源,管理的是 brew、npm -g、
pip --user 與 conda 安裝的東西 — 那些默默累積
多年的東西。keg 的符號連結和 wheel 的四散檔案,讓「移到垃圾桶」變成謊言,
所以移除會執行廠商自己的解除安裝,還原 manifest 則改為記下精確的重新安裝
指令。同一條證明規則照樣適用:移除任何東西之前,Latent 會確認
registry(formulae.brew.sh / npm / PyPI)仍提供該名稱與版本 —
沒有回應,就不移除。每一列套件都帶一個字母:管理工具能重新安裝它時是 R,
有其他套件相依於它時是 R 但被占住(會列出相依它的套件,點一下就能跳過去),
沒有人能證明或你自己釘選了它時是 I,它是管理工具自己的本體時是 P — pip 與
setuptools、node 與 npm、conda 的安裝本體、任何在你個人檔案夾之外或屬於
另一個帳號的東西。直譯器已經不在的 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 絕不強制終止任何東西。圓輪只顯示
你的 App;系統占用、swap 與壓縮放在它下方的小圓環裡。這裡和總覽的即時
圖表從 Latent 打開的那一刻就開始取樣,所以切到這個標籤頁時看到的是歷史,
而不是一張空白的圖。
少數刪除會被提供一條比垃圾桶更安全的路 — 7 天隔離 — 但僅限 損失不透明或難以逆轉的情況:受保護的項目與無法讀取的「你的資料」 儲存區。其他一切(未驗證的快取、你自己列出的檔案)直接進垃圾桶, 「復原」的列上已寫明風險。這是建議,絕不強加。隔離期間,在「復原」標籤頁一鍵 即可回復。期滿後項目移往垃圾桶 — Latent 會記錄所屬工具是否重建了 該路徑,為原本沒有證據的主張累積證據。想走直接路線?在確認面板選 「直接進垃圾桶」;你的決定優先。
所有能回來的東西都住在同一張可排序的表格裡,附上 移除日期:
綠色的列 — 有記錄在案的重新下載指令,或所屬工具會自行重建的已驗證儲存區 — 也可以 直接在「復原」裡清空 — 一列或全部一次清,背後有一道 明確的「無法還原」確認 — 因為它們的回頭路不隨位元組消失。 一去不回的列永遠不會有那顆按鈕;那個決定 留給 Finder。
列依階段分組 — 隔離、垃圾桶、已消失 — 最新在前,各階段欄位顯示項目進入該階段的日期;可依名稱、來源或大小排序,依階段篩選,依名稱、來源或指令搜尋。每一列也帶著它被移除時評定的字母 — R 或 I — 因為回頭路取決於它。最後 那一組正是重點:記錄比垃圾桶活得久,所以清空 垃圾桶不會讓你失去任何無法刻意找回的東西。指令 只在狹窄且經過驗證的形態下執行;其餘的會顯示出來, 由你自行拷貝。
垃圾桶裡的其他項目。由 Finder 而非 Latent 放進垃圾桶的東西, 會列在它自己的標題之下,唯讀,附一顆放回原處按鈕,在 Finder 記有 原位置時把它送回去。Latent 絕不清空或丟棄這些項目;它只是讓你能在自己的 記錄旁邊看到它們。
Latent 只把東西移到垃圾桶,絕不在你不知情時清空它。它不碰 自己沒放進去的檔案,也不丟棄沒有退路的檔案。總覽的垃圾桶卡片顯示裡面 有什麼,一顆按鈕在 Finder 中打開它。
但有兩處會替你收尾。復原標籤頁可逐項清空,或一次清空所有安全項 — 這裡的「安全」指該列仍帶著已記錄的重新取得指令,或已驗證工具會重建它。而 Optimize 在一次執行之後立刻提供同樣的動作,且僅限那次執行。Optimize 只刪除已證明安全的項目,所以它移動的每一列都能重新下載或重新產生;要你 再去 Finder 裡回收空間,等於 App 對自己已經作出的判斷臨陣退縮。按鈕上寫著 件數與大小,而且只問一次。
垃圾桶裡的其他東西 — 包括你自己在 Space 挑的 — 都留給你在復原標籤頁 或 Finder 中判斷。
刪除的東西進垃圾桶,絕不直接湮滅,而且每次執行都會寫下一份 還原 manifest,精確復原移動過的一切。「空間」的清理在移動任何東西 之前會先跑四道防護:所屬工具沒有在執行、目標裡沒有執行中的二進位檔、 裡面沒有任何檔案被任何程序占用、過去 10 分鐘內沒有任何變動。防護會在 刪除的那一刻重新檢查,不是只在規劃時。App 解除安裝程式跑的是自己的 一對防護 — 該 App 不得在執行中,目標裡也不得有被占用的檔案。
Latent 內建一個 MCP 伺服器,任何支援 MCP 的助手都能讀取你的磁碟 全貌並提出清理建議。伺服器就是 App 執行檔本身:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcpLatent 會把自己接入這台 Mac 上的所有助理。在終端機貼上這一行:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcp-install只寫入確實存在的用戶端:有自帶 CLI 的就執行它的 mcp add(Claude Code、Codex、Gemini、Grok),沒有的就編輯 JSON 設定(Cursor、Claude Desktop、VS Code、Windsurf)。直接編輯的 JSON 設定會先備份為 .bak(有自帶 CLI 的用戶端自己管理設定)。不會為你沒安裝的用戶端憑空建立設定,已經認識 Latent 的用戶端保持不變。想先看看會做什麼,加上 --dry-run。
或者手動接入其中一個:
claude 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 mcpgrok mcp add latent /Applications/Latent.app/Contents/MacOS/Latent -- --mode mcp那個 -- 很重要:它把 --mode mcp 交給 Latent,而不是讓
Grok 當成自己的旗標來讀。Grok 也能替你檢查它那一側的接線 —
grok mcp doctor 會回報伺服器是否啟動、交握是否完成,以及找到了
幾個工具。
把以下內容加進用戶端的 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 — 沒有連接埠、沒有常駐程式、沒有需要一直開著的
東西;用戶端會在需要時自行啟動伺服器。協定的兩個世代都有提供:現行的一代
(2026-07-28,帶 server/discover,每個請求都附版本)與舊的
交握方式,所以 2024 年以來的任何用戶端都能連上。
伺服器提供六個工具,而你從來不需要用名字呼叫它們 — 用自己的話問, 助手自己會挑:
latent_overview — 「我的磁碟都去哪了?」
依歸屬方與依等級的總量。latent_items — 「500 MB 以上的有哪些能清?」
逐個項目,附大小、等級與證據。latent_clean — 「清掉 pip 和 npm 的下載快取」。
這是把東西移到垃圾桶的工具,它只接受助手從 latent_items
拿到的項目鍵 — 絕不接受你隨口提到的某個檔案夾。latent_free — 「現在真的把空間還我」。
只清空垃圾桶裡 Latent 放進去的那些,讓磁碟上的數字真的動起來。
只有這一個無法復原,核准之前面板會先點名哪些回不來。latent_duplicates — 「有重複的模型權重嗎?」latent_memory — 「現在是什麼占著 RAM?」
唯讀;結束 App 從來不是助手該做的事。塞滿開發者磁碟的東西,多半不是刪了危險,而是要拿回來很費事。 這份代價你願意承擔到哪一步,除了你沒人能回答。所以助手讀到的每一行都帶著 等級,在提出任何建議之前,它應該先給你看四個總量:
走到哪一步由你說,助手把那個數字傳過去,回傳的清單會標明每一行的等級, 你可以在同意之前核對它有沒有守住你選的線。它無法自己抬高上限:無論它要什麼, 伺服器最多到 3。
助手看到的是路徑、大小、等級與證據標籤 — 絕不是檔案內容。 但路徑本身也是資訊:如果你的助手跑在雲端,你個人檔案夾底下各檔案夾的名稱會 傳到它那裡,就像你貼進聊天的任何檔案一樣。本機模型則把它們留在這台機器上。 Latent 自己不會把任何東西送到任何地方;它透過管線回答啟動它的那個用戶端, 答案去向何處由那個用戶端決定。
助手的權限嚴格小於你的:預設它只能碰已驗證的 R 項目(與一鍵最佳化相同的允許清單),再往下走只有你說了要清到哪一層才行 (見要清到哪一層)。而且有一條絕對的規則:助手不能刪除任何 它沒有出示給你、你也沒有同意的內容。哪些項目屬於一次請求由 Latent 自行 判定,把那份清單原樣交給助手,然後只照那份清單執行:只執行一次,限數分鐘 之內,其間發生變化的項目一律拒絕。沒有回應就沒有刪除。助手 永遠無法開鎖、永遠碰不到你自己的檔案、也永遠看不到檔案 內容 — 只看得到大小、路徑與證據標籤。助手不能拿的每個項目都在清單裡 寫明了原因 — 未證明、重建要花實實在在的時間、你自己的檔案、受保護 — 所以它從不需要猜,而總覽會同時給出它能動的數字,以及 App 所顯示的、 更大的已證明 R 總量。
沒有授權的 Latent 是一個火力全開的檢視器:掃描不限次數, 探索圓輪與圓環、觀察空間隨時間的變化、閱讀記錄。沒有任何東西會過期。 授權解鎖的只有「移除檔案」— 而復原(還原、隔離回復)無論有沒有授權 永遠可用,因為這個 App 絕不會做的一件事,就是拿你的檔案當人質。
選單列 → Latent → 輸入授權碼…,貼上你的金鑰,完成。一組金鑰 可用於多台 Mac(Beta 金鑰最多可啟用 2 台)。掃描本來就不需要金鑰; 金鑰一到,刪除功能立刻解鎖。 沒有帳號、不用電子郵件、沒有任何要登入的東西。在底層,金鑰會換成一枚由 伺服器為這台 Mac 簽署的授權權杖;App 自己驗證簽章,並在啟動時更新權杖, 所以複製一份設定檔解鎖不了第二台 Mac,而離線的 Mac 在要求再次聯繫伺服器 之前能繼續運作數週。沒有授權時,每個確認面板照樣顯示它會做什麼,只是用 取得授權…取代那顆按鈕。
購買的金鑰最多可在 3 台 Mac 上啟用。如果你賣掉或淘汰其中一台,在那台 機器上打開 Latent → 輸入授權碼…並按釋放 — 名額立刻回到你的 金鑰上,可以在別處使用。那台 Mac 上的東西一樣不刪,你隨時可以再次啟用它。
如果一筆購買被退款或拒付,金鑰會在 App 下次啟動時停止用於刪除。 復原永遠不會停止運作。還原、隔離回復與放回原處完全在授權之外 — 退款可以拿走產品,但絕不會讓你的檔案無處可去。
Latent 以 Developer ID 簽署並已通過 Apple 公證,公證票據已裝訂於磁碟映像上——首次開啟時 macOS 會檢查,離線亦然。若檔案在我們建置之後、抵達您的 Mac 之前遭到竄改,它根本無法開啟。
若要親自確認,將應用程式移入「應用程式」資料夾後執行:
spctl -a -vv /Applications/Latent.appaccepted
source=Notarized Developer ID
origin=Developer ID Application: FatTail Labs (BUS4S7XFQV)
團隊識別碼 BUS4S7XFQV 是我們的,無法偽造。這是本頁上的檢查碼給不了的保證——能替換下載檔的人,也能替換旁邊的檢查碼。
更新同樣要通過這道檢查。在替換任何東西之前,Latent 會驗證下載套件的簽章、核對團隊識別碼並詢問 Gatekeeper。任一項失敗都會中止更新,保留您現有的版本。
Latent 只有一個 App 套件和一個資料夾。要移除它,先結束 Latent(選單列圖示會一起消失),再把 Latent.app 拖到垃圾桶。它不安裝任何輔助程式、登入項目或核心延伸功能,也不保存密碼。
你的紀錄在 ~/.latent:還原紀錄、隔離資料夾(仍在觀察期內的項目)、排除清單和活動記錄。如果還可能重新安裝,請保留——那些是回來的路。只有徹底不用時才刪除它:仍在隔離中的項目會一起消失,所以請先在「復原」標籤頁還原或清空。
Latent 在「App」裡把自己列為 P——它絕不會從內部移除自己。
在 App 內:輔助說明 → 傳送意見回饋…。它會送出你的訊息,加上 App 與 macOS 版本;活動記錄只有在你勾選它的核取方塊時才會附上, 而且會先移除你的個人專屬檔案夾名稱。絕不會在背景送出任何東西 — 只有那顆按鈕會送出。也可以寫信到 fattaillabs.ceo@gmail.com — 每一封我們都會讀。