Latent 只有一个承诺:没有证据,不称之为安全; 没有退路,不执行删除。
Latent 追踪的每个项目都带有三种徽章之一,标明删除它会发生什么:
三个字母,三种含义 — 没有别的。屏幕上不存在第四种状态。一个目录相信会回来、但没有人为你的文件夹证明过的缓存,不是“大概没事”:它就是 I,琥珀色,带锁,直到一次实测或厂商自己的文档把它变成 R。字母说的是“删掉会怎样”;颜色把这句话再说一遍 — 绿色表示 Latent 可以凭自己的证据动手,琥珀色表示决定权在你,灰色表示谁也不能动。
字母标在哪里。字母评定的是随着一次移除一起消失的东西 — 一个缓存、一个数据文件夹、一个软件包、列在应用之下的应用包。你选择移除的单位(“应用”里的一行应用)本身不带字母;它的各个部分才带。任何只是一种状态的东西 — 使用中、被依赖项占住、在隔离中等待 — 都以灰色写在字母旁边,绝不会成为第四个字母。
“可以安全删除”是挣来的,从不靠假设。Latent 使用四种证据, 从最强的开始:
| 证据 | 含义 | 例子 |
|---|---|---|
| 注册表身份 | 删除时,那件产物仍能在其注册表得到应答 — 对比的是摘要、修订版和文件名,而不只是名字。 | 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 软件包 |
| 实测观察 | 把文件夹挪到一边,重新启动应用,Latent 观察它是否回来 — 然后把 原件逐字节放回去。隔离对任何你解锁的项目做同样的事,历时七天。 每次观察都会成为记录在案、带日期的证据。 | Codex 的组件缓存、LM Studio 的内置工具、Claude Desktop 的代理 运行时;任何你解锁的项目 |
有些文件夹是逐项评定,而不是整体评定:Xcode 的设备符号,对仍与这台 Mac 配对的设备所运行的构建是 R,其余是 I;一个 Keras 权重文件夹只有在其中 每个文件都是 Keras Applications 权重时才是 R。
当一个存储混有可证明与不可证明的内容时,Latent 只删除已证明的 那部分,并明确告诉你保留了什么、为什么。放在下载模型旁边的 自定义微调模型,永远原地不动。
每一个 I 行都带有一把锁。打开它是一次明确的同意行为:该行变为 可选,删除会在记录中标记为强制执行,确认面板会以红色标出。同意有明确 范围 — 重新扫描会清除所有已打开的锁。Latent 绝不替你开锁,已连接的 AI 助手则完全无法开锁。P 行没有锁可开:Latent 根本不会提供它们。
因为它们把一切看起来像缓存的东西都算进去。Latent 的数字 是有意偏小的:其中每个字节都带着证据 — 一次注册表应答、一条有记录的 来源、一份供应商合约,或一次实测到的重建。没有证据的字节照样展示; 只是交由你来决定,锁在你手里。
Latent 标签页就是那个一键操作:logo 本身就是按钮,运行时进度环 围绕着它,完成后显示释放的总量。它删除的内容要过两道关, 而不是一道:恢复必须已有证据支撑,并且该项必须属于丢了你 都不会注意到的级别 — 厂商自带清除命令的包缓存、浏览器 HTTP 缓存、 缩略图存储。任何需要你重新获取的东西(下载的模型、工具链、你安装的 插件)都不进入优化,留在“空间”里等待你有意的点按。这份白名单与 已连接 AI 助手被限定的范围刻意保持一致,因此一次点按绝不会比助手 被允许的走得更远。
优化绝不触碰未验证的行、你自己的文件或受保护路径;绝不替你开锁; 绝不卸载应用或软件包、不卸载内存中的模型、不清空废纸篓。如果部分 目标被正在运行的应用占用,优化会先问 — 弹出这些应用的勾选列表, 只有保持勾选的应用才会被礼貌地退出(应用自己的保存提示会出现); 取消勾选,它的文件就会被直接跳过。所有移动的内容都在同一份撤销清单 之下进入废纸篓,守卫在删除的那一刻重新检查。确认面板还会列出被刻意 保留的内容 — 所以你看到的数字是下限,不是吹嘘。
空间是一张归属方列表 — Xcode、Homebrew、Hugging Face、Chrome 等等 —
每个归属方带一条按所持内容着色的条形:已证明的 R 是绿色,I 是琥珀色。
展开一个归属方,它的行先是 R,再是 I,各自之内按大到小排列。每一行都
显示它的字母、路径(个人文件夹显示为 ~,悬停显示完整路径)
和一个在 Finder 中显示它的 ↗。归属方的标题条带有与列表顶部相同的
☐ R 标签 — 它只选中该归属方已证明的行,别的一概不选 — 以及一个
解锁下方 N 个已锁定项…按钮,一步刻意的操作打开它名下的所有锁。
归属方之下是你自己的文件夹 — 文稿、下载、照片 — 只列出,绝不预先勾选。
缓存是 Latent 能拿出证明的部分;真正属于你的空间需要另一套契约。 在工具归属方之下,空间在一条写明的分隔线下列出六类属于你自己的候选项, 每一类都遵循同一条规则:只列出,绝不预先勾选,优化和助手绝不触碰。
.dmg/.pkg)和被放弃的未完成下载。node_modules、Rust target、
build/dist、项目文件夹里的 virtualenv。
只在项目标记文件(package.json、Cargo.toml 等)
旁边才认领,而没有 requirements 文件的 virtualenv 保持锁定 —
包列表会随它一起消失。它们标记为 R,但重建要花时间,
所以这些绝不进入优化。“应用”有八个来源,各占一个标签页:Mac 应用、Homebrew、 npm -g、Python (pip)、Conda、Docker · 模拟器、 .pkg 收据和残留。每一个代表可移除之物的行都像空间里的行一样 带 R、I 或 P;应用行本身不带 — 它是你选择的单位,被评定的是它下面的 各个部分。左侧的轮盘按大小显示各应用,其下的底栏说明它们总共占着什么: 应用包本身,然后是按字母分列的、它们留下的东西。
点按一个应用,即可看到其 bundle identifier 名下的每个文件 — 应用包、缓存、偏好设置、容器、启动代理 — 先 R,再 I,大的在前。 应用包本身是一个 I 行(把应用找回来靠重装,那是你的事)。空间已经 列为存储的文件夹会折叠成一行空间存储:,写着各存储的名字,一个 勾选全部选中。Latent 只预先勾选能确定归属的内容;有两类行绝不 预先勾选:
勾选应用自己的复选框会选中它名下的一切 — 如果其中含有你的数据, 会先问你一次,答案在本次会话内被记住。一次卸载就是一份清单: 一次撤销恢复整个卸载。如果 macOS 对该应用包要求管理员权限,Latent 会把工作交给 Finder — 你会看到标准的认证提示。.pkg 收据列出 管理员所有位置里的安装器残留,在那里不删除任何东西:它显示还剩下什么, 在收据指明了卸载程序时运行厂商的卸载程序,否则就在 Finder 中显示这些 文件,由你自己移除。残留列出应用已经不在的数据 — 全部是 I, 由你来勾选。
Docker 把镜像、容器、卷和构建缓存都放在一个不透明的虚拟机磁盘里,
文件层面的删除等于恢复出厂设置 — Latent 把那个磁盘列为你的数据,
绝不预先勾选。Docker 面板提供的是由 Docker 自己执行的单项移除:
一个镜像,或构建缓存。这种移除是不可逆的 — 不进废纸篓,
没有撤销 — 所以它的确认面板会用这些字原话说明,而且 Latent 在运行
命令之前就写下记录:删了什么、多大,以及能找回它的那行
docker pull 命令。正被容器使用的镜像会被拒绝,
卷绝不列出 — 卷是别人的数据库。
iOS 模拟器运行时同理,原因也相同:运行时是 Apple 签名的磁盘映像,
实时挂载并登记在 Apple 自己的注册表中,所以只有 simctl
能移除它。契约相同 — 面板写明无法撤销,记录保留
xcodebuild -downloadPlatform iOS,有模拟器已启动的
运行时会被拒绝,Xcode 自带的那个绝不提供。这些行说的和别处一样是
三个字母:Apple 能重新下载的运行时是 R,Apple 标为不可删除的是 P,
有注册表支撑的镜像是 R,悬空的层是 I。“使用中”是写在字母旁边的灰色
状态,按钮会一直等到模拟器或容器不在为止。
其中四个来源管理 brew、npm -g、
pip --user 和 conda 安装的东西 — 那些悄悄
积累多年的内容。keg 的符号链接和 wheel 的散落文件会让“移到废纸篓”
变成谎言,所以移除运行的是厂商自己的卸载命令,撤销清单转而记录确切的
重装命令。同一条证明规则依然适用:移除任何东西之前,Latent 会检查
注册表(formulae.brew.sh / npm / PyPI)仍在提供该名称和版本 — 无应答,
不移除。每个软件包行都带一个字母:管理器能重装它时是 R,有别的包依赖它
时是 R 但被占住(会列出依赖它的包,点按一个即可跳过去),没有人能证明
或你自己固定(pin)了它时是 I,它是管理器自己的本体时是 P — pip 和
setuptools、node 和 npm、conda 的安装本体、任何在你个人文件夹之外或
属于另一个账户的东西。解释器已消失的 Python user-site(经典的
~/Library/Python/3.x 残留)会作为一次完整文件夹的废纸篓
移动提供,带正常的撤销。
没有清理按钮,没有健康分数 — macOS 本来就会压缩并换出闲置内存,
所以“释放 RAM”多半意味着付出代价再读回来。真实存在的问题是被遗忘的
应用占着数 GB,所以应用内存卡片按实际占用列出你自己的应用,配一个
退出按钮,作用恰好就是 Cmd-Q:应用会弹出自己的保存提示,绝不强制
结束。系统进程绝不列出。这个标签页还会显示统一内存的状态,以及哪些
模型守护进程(Ollama、LM Studio、llama.cpp、ComfyUI…)把权重驻留
在内存里。每个按钮运行的都是厂商自己的命令 —
ollama stop、lms unload --all、ComfyUI 的
/free、llama.cpp 的路由器卸载 — 模型在下次使用时自然
重新加载。Latent 绝不强制结束任何进程。轮盘只显示你的应用;系统占用、
交换和压缩放在它下方的小环里。这里和概览的实时图表从 Latent 打开的那一刻
就开始采样,所以切到这个标签页时看到的是历史,而不是一张空白的图。
少数删除会被提供一条比废纸篓更稳妥的路线 — 7 天隔离 — 但仅限 损失不透明或难以逆转的情况:受保护项和无法读取的“你的数据”存储。 其余一切(未验证缓存、你自己被列出的文件)直接进入废纸篓,那里的 恢复行已写明风险。这是建议,绝不强加。窗口期内,从“恢复”标签页 一键即可还原。到期后项目转入废纸篓 — Latent 会记录所属工具是否 重建了该路径,为原本没有证明的主张积累证据。想走直接路线?在确认 面板选“直接进废纸篓”;你说了算。
所有能回来的东西都在一张可排序的表格里,附有它被移除的日期:
绿色行 — 有记录的重新获取命令,或所属工具会自行重建的已验证存储 — 还可以 直接在恢复里清空 — 一行或全部一起,需经过明确的“无法撤销” 确认 — 因为它们的回归之路不依赖那些字节。会永远消失的行绝不会出现 这个按钮;那个决定留给 Finder。
行按阶段分组 — 隔离、废纸篓、已消失 — 最新在前,各阶段的列显示项目进入该阶段的日期;可按名称、来源或大小排序,按阶段筛选,按名称、来源或命令搜索。每一行还带着它被移除时评定的字母 — R 或 I — 因为回归之路取决于它。最后 那一组正是重点所在:记录比废纸篓活得久,所以清空废纸篓不会 让你失去任何无法主动找回的东西。命令只在狭窄且经过校验的形态下运行; 其余的会展示出来供你复制。
废纸篓里的其他项目。由 Finder 而非 Latent 放进废纸篓的东西, 列在它自己的标题之下,只读,带一个放回原处按钮,在 Finder 记录了 原位置时把它送回去。Latent 绝不清空或丢弃这些项目;它只是让你能在自己的 记录旁边看到它们。
Latent 只把东西移进废纸篓,绝不在你不知情时清空它。它不碰 自己没放进去的文件,也不丢弃没有退路的文件。概览的废纸篓卡片显示里面 有什么,一个按钮在 Finder 中打开它。
但有两处会替你收尾。恢复标签页可以逐项清空,或一次清空所有安全项 — 这里的“安全”指该行仍带着已记录的重新获取命令,或已验证工具会重建它。而 Optimize 在一次运行之后立即提供同样的操作,且仅限那次运行。Optimize 只删除已证明安全的项目,所以它移动的每一行都能重新下载或重新生成;让你 再去 Finder 里回收空间,等于应用对自己已经作出的判断临阵退缩。按钮上写着 件数和大小,并只询问一次。
废纸篓里的其他东西 — 包括你自己在 Space 里挑的 — 都留给你在恢复标签页 或 Finder 中判断。
删除进入废纸篓,绝不直接湮灭,每次运行都会写下一份 撤销清单,精确恢复移动过的内容。空间的清理在移动任何东西之前 会跑四道守卫:所属工具没有在运行、目标内没有正在运行的二进制文件、 目标内没有文件被任何进程占用、最近 10 分钟内没有任何变动。守卫在 删除的那一刻复检,而不只是在计划阶段。应用卸载器跑的是自己的一对 守卫 — 应用必须没有在运行,目标内不得有文件被占用。
Latent 内置一个 MCP 服务器,任何支持 MCP 的助手都能读取你的磁盘 全貌并提出清理建议。服务器就是应用的二进制文件本身:
/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 服务器配置里 — 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?”
只读;退出应用从来不是助手该做的事。占满开发者磁盘的东西,多数不是删了危险,而是要回来很费事。 这份代价你愿意承担到哪一步,除了你没人能回答。所以助手读到的每一行都带着 等级,在提出任何建议之前,它应当先给你看四个总量:
走到哪一步由你说,助手把那个数字传过去,返回的清单会标明每一行的等级, 你可以在同意之前核对它有没有守住你选的线。它无法自己抬高上限:无论它要什么, 服务器最多到 3。
助手看到的是路径、大小、等级和证据标签 — 绝不是文件内容。 但路径本身也是信息:如果你的助手跑在云端,你个人文件夹下各文件夹的名字会 传到它那里,就像你贴进聊天的任何文件一样。本地模型则把它们留在这台机器上。 Latent 自己不向任何地方发送任何东西;它通过管道回答启动它的那个客户端, 答案去向何处由那个客户端决定。
助手的权限严格小于你的:默认它只能触碰已验证的 R 项(与一键优化相同的白名单), 再往下走只有你说了要走到哪一层才行(见要清到哪一层)。 且有一条绝对规则:助手不能删除任何 它没有展示给你、你也没有同意的内容。哪些项目属于一次请求由 Latent 自行 判定,把那份清单原样交给助手,然后只照那份清单执行:只执行一次,限数分钟 之内,其间发生变化的项目一律拒绝。没有回应就没有删除。助手绝不能开锁,绝不能触及 你自己的文件,也绝看不到文件内容 — 只能看到大小、路径和证据标签。 助手不能拿的每个项目都在列表里写明了原因 — 未证明、重建要花实实在在的 时间、你自己的文件、受保护 — 所以它从不需要猜,而概览会同时给出它能 动的数字和应用所显示的、更大的已证明 R 总量。
没有许可证的 Latent 是一台全功能的查看器:想扫描多少次都行, 探索轮盘和环形图,追踪容量增长,阅读日志。没有任何功能会过期。 许可证解锁的只是删除文件 — 而恢复(撤销、隔离还原)无论有无许可证 都始终可用,因为这个应用绝不会做的一件事,就是拿你的文件当人质。
菜单栏 → Latent → 输入许可证…,粘贴你的密钥,完成。一个 密钥可用于多台 Mac(测试密钥最多在 2 台上激活)。扫描本来就不需要 密钥;密钥一到,删除立即解锁。没有账号,不要邮箱,无需登录任何 东西。在底层,密钥会换成一枚由服务器为这台 Mac 签名的许可证令牌;应用 自己验证签名,并在启动时刷新令牌,所以复制一份设置文件解锁不了第二台 Mac,而离线的 Mac 在要求再次联系服务器之前能继续工作数周。没有许可证 时,每个确认面板照样显示它会做什么,只是用获取许可证…代替了那个 按钮。
购买的密钥最多可在 3 台 Mac 上激活。如果你卖掉或淘汰其中一台,在那台 机器上打开 Latent → 输入许可证…并按释放 — 名额立刻回到你的 密钥上,可以在别处使用。那台 Mac 上的东西一样不删,你随时可以再次激活它。
如果一笔购买被退款或拒付,密钥会在应用下次启动时停止用于删除。 恢复永远不会停止工作。撤销、隔离还原和放回原处完全在许可证之外 — 退款可以拿走产品,但绝不会让你的文件无处可去。
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 只有一个应用包和一个文件夹。要删除它,先退出 Latent(菜单栏图标会一起消失),再把 Latent.app 拖到废纸篓。它不安装任何辅助程序、登录项或内核扩展,也不保存密码。
你的记录在 ~/.latent:撤销记录、隔离文件夹(仍在观察期内的项目)、排除列表和活动日志。如果还可能重装,请保留——那些是回来的路。只有彻底不用时才删除它:仍在隔离中的项目会一起消失,所以请先在“恢复”标签页恢复或清空。
Latent 在“应用”里把自己列为 P——它绝不会从内部删除自己。
在应用内:帮助 → 发送反馈…。它会发送你的留言以及应用和 macOS 的版本;活动日志只有在你勾选对应选项时才一并发送,并会先去除 你的家目录名。绝不会在后台发送任何内容 — 只有那个按钮会发送。也可以 写信到 fattaillabs.ceo@gmail.com — 每一封我们都会读。