Latent
한국어

도움말

Latent의 약속은 하나입니다: 증거 없이 안전하다고 말하지 않고, 돌아올 길 없이 지우지 않습니다.

판단의 원칙 #

세 가지 안전 등급 #

Latent가 추적하는 모든 항목에는 "지우면 어떻게 되는가"를 나타내는 세 가지 배지 중 하나가 붙습니다:

세 글자, 세 가지 뜻 — 그 밖에는 없습니다. 화면에 네 번째 상태는 없습니다. 카탈로그가 돌아온다고 믿지만 이 폴더에서 아무도 증명하지 못한 캐시는 "아마 괜찮음"이 아니라 I입니다 — 호박색에 자물쇠, 실측이나 공급업체의 공식 문서가 R로 만들어 줄 때까지. 글자는 지우면 어떻게 되는지를 말하고, 색은 같은 말을 반복합니다 — 초록은 Latent가 자기 증거로 움직여도 된다는 뜻, 호박은 직접 결정할 몫이라는 뜻, 회색은 누구도 지울 수 없다는 뜻입니다.

글자가 붙는 자리. 글자는 제거와 함께 사라지는 것에 붙습니다 — 캐시, 데이터 폴더, 패키지, 앱 아래 나열되는 본체. 제거를 고르는 단위(Apps의 앱 행)에는 글자가 없고, 그 아래 구성요소에 붙습니다. 사용 중, 다른 패키지가 의존 중, 격리 대기 같은 것은 상태일 뿐이라 글자 옆에 회색 문장으로 적히지, 네 번째 글자가 되지 않습니다.

자물쇠가 신호입니다. Latent가 스스로 움직이는 것은 증명된 주장뿐이고, 그 밖의 행은 잠긴 채 사용자를 기다립니다. 자물쇠를 여는 것은 의도적인 행동이며, 그 결정은 자물쇠를 연 그 스캔에서만 유지됩니다 — 새 스캔은 새 내용이므로 다시 묻습니다.

증거 사다리 #

"지워도 안전함"은 얻어내는 것이지 가정하는 것이 아닙니다. Latent는 네 종류의 증거를 사용합니다. 강한 순서대로:

증거의미예시
레지스트리 대조 삭제 시점에 바로 그 산출물이 레지스트리에서 여전히 응답하는지 — 이름만이 아니라 다이제스트, 리비전, 파일명까지 대조합니다. Ollama 모델, Hugging Face 저장소, LM Studio 모델
기록된 출처 도구 자체 인덱스가 모든 항목의 출처를 기록해 두었고, 전부가 지금도 서비스 중인 공개 소스로 추적될 때만 일괄 삭제가 통과합니다. npm 캐시, Gradle 모듈
벤더 계약 벤더가 자체 비우기 명령을 제공합니다 — 도구 스스로 그 캐시를 버려도 된다고 선언한 셈. 그래도 Latent는 휴지통을 거치므로 되돌리기가 남습니다. pip (pip cache purge), uv (uv cache clean)
공급업체 문서 공급업체의 공식 문서나 소스가 "다음 사용 때 도구가 다시 받거나 다시 만든다"고 적고 있습니다 — 블로그나 추측이 아니라 공급업체 페이지에서 직접 읽은 것. 사용자가 손으로 재설치하는 것은 해당되지 않습니다. Core ML 컴파일 모델 캐시(Apple), pip이 빌드한 휠, Adobe 미디어 캐시, Gradle이 스스로 받는 Android SDK 패키지
관찰 실험 폴더를 옆으로 옮기고 앱을 다시 켜서 돌아오는지 지켜본 뒤, 원본을 그대로 되돌립니다. 격리는 잠금을 연 항목에 대해 같은 일을 7일 동안 합니다. 관찰 하나하나가 날짜와 함께 기록된 증거가 됩니다. Codex 앱의 컴포넌트 캐시, LM Studio 동봉 도구, Claude Desktop 에이전트 런타임, 그리고 잠금을 연 모든 항목

폴더 통째가 아니라 조각별로 등급이 매겨지는 곳도 있습니다: Xcode 기기 심벌은 이 Mac에 페어링된 기기가 아직 쓰는 빌드만 R이고 나머지는 I, Keras 가중치 폴더는 안의 파일이 전부 Keras Applications 가중치일 때만 R입니다.

증명 가능한 것과 불가능한 것이 한 저장소에 섞여 있으면, Latent는 증명된 부분만 지우고 무엇을 왜 남겼는지 정확히 알려줍니다. 내려받은 모델들 옆에 있는 직접 만든 파인튜닝은 언제나 그대로 남습니다.

잠금 #

모든 I 행에는 잠금이 걸려 있습니다. 잠금을 여는 것은 의도적인 동의 행위입니다: 행이 선택 가능해지고, 삭제는 기록에 강제 삭제로 남으며, 확인 시트에 빨간색으로 표시됩니다. 동의에는 범위가 있습니다 — 다시 스캔하면 열린 잠금이 모두 다시 잠깁니다. Latent는 잠금을 대신 열지 않고, 연결된 AI 어시스턴트는 잠금을 아예 열 수 없습니다. P 행에는 열 잠금이 없습니다 — Latent가 애초에 제안하지 않습니다.

다른 클리너는 왜 더 큰 숫자를 약속하나요? #

캐시처럼 보이는 것을 전부 세기 때문입니다. Latent의 숫자는 일부러 더 작습니다: 그 안의 모든 바이트에는 증거가 붙어 있습니다 — 레지스트리 응답, 기록된 출처, 벤더 계약, 관찰된 재생성 중 하나. 증거 없는 바이트도 보여주긴 합니다. 다만 그 결정은 직접 하며, 잠금을 여는 것도 사용자입니다.

화면별 사용법 #

원클릭 정리 #

Latent 탭이 곧 원클릭 정리입니다: 로고 자체가 버튼이고, 실행 중에는 로고를 진행 링이 감싸며, 끝나면 확보한 용량이 표시됩니다. 정리가 지우는 것은 기준 두 개를 모두 통과해야 합니다: 복구가 이미 증거로 뒷받침될 것, 그리고 지워져도 전혀 불편을 못 느낄 급일 것 — 벤더가 직접 비우기 명령을 제공하는 패키지 캐시, 브라우저 HTTP 캐시, 썸네일 저장소 같은 것들. 다시 마련하려면 수고가 드는 것들(내려받은 모델, 툴체인, 직접 설치한 플러그인)은 정리에 절대 포함되지 않고, 공간 탭에서 직접 클릭해 고르기를 기다립니다. 이 허용 목록은 연결된 AI 어시스턴트가 접근할 수 있는 범위와 일부러 동일하게 맞춰져 있습니다 — 클릭 한 번이 어시스턴트에게 허용된 것보다 멀리 갈 수 없도록.

정리는 미검증 항목, 사용자 파일, 보호 경로를 절대 건드리지 않습니다. 잠금을 대신 열지 않고, 앱이나 패키지를 삭제하지 않으며, 모델을 내리지 않고, 휴지통을 비우지 않습니다. 대상 일부를 실행 중인 앱이 붙잡고 있으면 먼저 물어봅니다 — 가로막는 앱들의 체크리스트가 뜨고, 체크를 남겨둔 앱만 정중하게 종료합니다(앱 자체의 저장 확인 창이 뜹니다). 체크를 풀면 그 앱의 파일은 그냥 건너뜁니다. 이동하는 모든 것은 하나의 되돌리기 매니페스트 아래 휴지통으로 가고, 가드는 삭제하는 그 순간에 다시 실행됩니다. 확인 시트에는 일부러 건드리지 않는 것들의 목록도 함께 표시됩니다 — 보이는 숫자는 과장이 아니라 하한선입니다.

공간: 하나의 목록 #

공간 탭은 Xcode, Homebrew, Hugging Face, Chrome 같은 소유자를 하나의 목록으로 보여줍니다. 각 소유자에는 무엇을 쥐고 있는지 색으로 나뉜 막대가 있습니다: 증명된 R은 초록, I는 호박. 소유자를 펼치면 R 행이 먼저, I 행이 다음, 각각 큰 순서로 옵니다. 모든 행에 글자, 경로(홈은 ~, 마우스를 올리면 전체 경로), Finder로 여는 ↗가 있습니다. 소유자 머리 줄에는 목록 맨 위와 같은 ☐ R 칩(그 소유자의 증명된 행만 고릅니다)과, 아래 잠긴 행을 한 번의 결정으로 여는 아래 잠긴 N건 잠금 해제… 버튼이 있습니다. 소유자들 아래에는 사용자 폴더(Documents, Downloads, 사진)가 나열되며, 미리 선택되지 않습니다.

내 파일: 공간 목록의 아래쪽 #

캐시는 Latent가 증명할 수 있는 영역이고, 정말 사용자의 것인 공간에는 다른 계약이 필요합니다. 공간 탭은 도구 소유자들 아래에 구분선을 긋고 사용자 파일 후보 여섯 종류를 나열하며, 전부 같은 규칙을 따릅니다: 목록에 올릴 뿐, 미리 선택하지 않고, 정리와 어시스턴트는 절대 건드리지 못합니다.

앱: 언인스톨러 #

Apps에는 소스 여덟 개가 탭으로 있습니다: Mac 앱, Homebrew, npm -g, Python (pip), Conda, Docker · 시뮬레이터, pkg 영수증, 잔여물. 지울 수 있는 것을 나타내는 모든 행은 공간 탭의 행처럼 R, I, P 중 하나를 답니다. 앱 행 자체에는 글자가 없습니다 — 앱 행은 제거할 때 고르는 단위이고, 그 아래 구성요소가 등급을 받습니다. 왼쪽 휠은 앱을 크기순으로 보여주고, 그 아래 막대는 앱 전체가 무엇을 쥐고 있는지 보여줍니다: 앱 본체, 그리고 글자별로 나뉜 남기는 것들.

앱을 클릭하면 그 번들 식별자가 소유한 모든 파일이 보입니다 — 본체, 캐시, 환경설정, 컨테이너, 실행 에이전트 — R이 먼저, I가 다음, 각각 큰 순서로. 앱 본체는 I 행입니다(앱을 되찾으려면 다시 설치해야 하고, 그건 사용자가 직접 할 일입니다). 공간 탭이 이미 저장소로 나열한 폴더는 저장소 이름이 적힌 공간 탭의 저장소: 한 행으로 접히고, 한 번 체크하면 모두 선택됩니다. Latent는 확실하게 귀속시킬 수 있는 것만 미리 체크하며, 두 종류의 행은 절대 미리 체크하지 않습니다:

앱 자체의 체크박스를 켜면 그 아래 전부가 선택됩니다 — 사용자 데이터가 섞여 있으면 한 번 물어보고, 그 답은 세션 동안 기억됩니다. 언인스톨은 하나의 매니페스트입니다: 되돌리기 한 번이 전체를 복원합니다. macOS가 앱 본체에 관리자 권한을 요구하면 Latent는 그 일을 Finder에 넘기고 — 표준 인증 창이 뜹니다. pkg 영수증은 관리자 소유 위치의 설치 잔여물을 보여주되 거기서는 아무것도 지우지 않습니다: 남은 것을 보여주고, 영수증이 공급업체 언인스톨러를 가리키면 실행해 주고, 아니면 Finder에서 직접 지울 수 있게 파일을 드러냅니다. 잔여물은 앱이 사라진 데이터를 나열합니다 — 전부 I이고, 체크는 직접 합니다.

Docker·시뮬레이터 런타임: 휴지통을 거치지 않는 곳

Docker는 이미지·컨테이너·볼륨·빌드 캐시를 불투명한 VM 디스크 하나에 담습니다. 파일 단위로 지우면 전체 초기화가 되므로, Latent는 그 디스크를 사용자 데이터로 표시하고 절대 미리 선택하지 않습니다. 대신 Docker 화면에서는 Docker 자체 기능으로 개별 항목(이미지 하나, 빌드 캐시)을 제거할 수 있게 합니다. 이 제거는 되돌릴 수 없습니다 — 휴지통을 거치지 않고 되돌리기도 없습니다. 그래서 그 사실을 그대로 적은 확인 시트가 뜨고, Latent는 명령을 실행하기 전에 기록을 남깁니다: 무엇이 얼마나 사라졌는지, 그리고 다시 받는 docker pull 명령까지. 컨테이너가 쓰고 있는 이미지는 거부되고, 볼륨은 아예 목록에 없습니다 — 볼륨은 누군가의 데이터베이스니까요.

iOS 시뮬레이터 런타임도 같은 이유로 같은 방식입니다. 런타임은 Apple이 서명한 디스크 이미지로, 라이브 마운트된 채 Apple 자체 레지스트리에 등록되어 있어 simctl만이 제거할 수 있습니다. 계약도 같습니다 — 되돌릴 수 없다고 시트가 말하고, 기록에는 xcodebuild -downloadPlatform iOS가 남으며, 시뮬레이터가 실행 중인 런타임은 거부되고, Xcode 동봉본은 애초에 제안되지 않습니다. 행은 다른 곳과 같은 세 글자로 말합니다: Apple이 다시 내려줄 수 있는 런타임은 R, Apple이 삭제 불가로 표시한 것은 P, 레지스트리가 있는 이미지는 R, 매달린 레이어는 I. "사용 중"은 글자 옆에 회색으로 적히는 상태이고, 버튼은 시뮬레이터나 컨테이너가 사라질 때까지 기다립니다.

Homebrew, npm, pip, Conda

소스 넷은 brew, npm -g, pip --user, conda가 설치한 것들 — 몇 년씩 조용히 쌓이는 그것들 — 을 관리합니다. keg의 심링크와 wheel의 흩어진 파일들 때문에 휴지통으로 옮겨서는 제대로 지워지지 않으므로, 제거는 벤더 자체 언인스톨을 실행하고 되돌리기 매니페스트에는 정확한 재설치 명령이 대신 기록됩니다. 같은 증명 규칙이 적용됩니다: 제거 전에 레지스트리(formulae.brew.sh / npm / PyPI)가 그 이름과 버전을 여전히 서비스하는지 확인하고 — 응답이 없으면 제거도 없습니다. 패키지 행마다 글자가 있습니다: 패키지 관리자가 재설치할 수 있으면 R, 다른 패키지가 의존하면 R이지만 묶여 있음(의존하는 패키지 이름이 적히고, 누르면 그리로 이동), 아무도 증명하지 못했거나 직접 pin을 걸었으면 I, 패키지 관리자 자신을 이루는 것 — pip과 setuptools, node와 npm, conda 본체, 홈 밖에 있거나 다른 계정 소유인 것 — 이면 P입니다. 인터프리터가 사라진 Python user-site(전형적인 ~/Library/Python/3.x 잔재)는 폴더째 휴지통 이동으로 제안되며 되돌리기도 평소대로 작동합니다.

메모리 #

비우기 버튼도, 건강 점수도 없습니다 — macOS는 이미 노는 메모리를 압축하고 페이징하므로, "램 확보"는 대부분 다시 읽어오는 비용을 내는 일일 뿐입니다. 진짜 문제는 잊힌 앱이 기가바이트를 쥐고 있는 것이라, 앱 메모리 카드는 사용자 앱을 실제 점유량 순으로 보여주고 종료 버튼은 정확히 Cmd-Q입니다: 앱이 자기 저장 확인 창을 띄우고, 어떤 것도 강제 종료되지 않습니다. 시스템 프로세스는 아예 목록에 없습니다. 이 탭은 통합 메모리가 무슨 일을 하는지, 어떤 모델 데몬(Ollama, LM Studio, llama.cpp, ComfyUI…)이 가중치를 상주시키고 있는지도 보여줍니다. 모든 버튼은 벤더 자체 명령을 실행합니다 — ollama stop, lms unload --all, ComfyUI의 /free, llama.cpp 라우터 언로드 — 그래서 모델은 다음 사용 때 그냥 다시 로드됩니다. Latent는 아무것도 강제 종료하지 않습니다. 휠은 사용자 앱만 보여주고, 시스템 몫·스왑·압축은 그 아래 작은 링에 있습니다. 여기와 개요 탭의 라이브 차트는 Latent가 켜지는 순간부터 표본을 쌓으므로, 탭에 들어가면 빈 그래프가 아니라 이력이 보입니다.

되돌리기 #

격리 #

일부 삭제에는 휴지통 대신 더 안전한 경로 — 7일 격리 — 가 제안됩니다. 단, 잃으면 불투명하거나 되돌리기 어려운 것에 한해서입니다: 보호 항목과 읽을 수 없는 "내 데이터" 저장소. 그 외(미검증 캐시, 목록에 오른 내 파일)는 바로 휴지통으로 가며, 복구 탭 행이 이미 그 위험을 알려줍니다. 권유일 뿐 강제가 아닙니다. 기간 중에는 복구 탭에서 클릭 한 번으로 복원됩니다. 기간이 끝나면 항목은 휴지통으로 넘어가고 — 그 사이 해당 도구가 그 경로를 다시 만들었는지를 Latent가 기록해, 원래 없던 증거를 쌓습니다. 바로 보내고 싶다면 확인 시트에서 "휴지통으로 바로"를 고르세요. 사용자의 선택이 우선합니다.

되찾는 방법: 복구 탭 #

되찾을 수 있는 모든 것이 하나의 정렬 가능한 표에, 삭제된 날짜와 함께 모여 있습니다:

초록 행(다시 받는 명령이 기록됐거나, 도구가 스스로 재생성함이 검증된 것)은 복구 탭에서 바로 비울 수도 있습니다 — 한 건씩 또는 전부 한 번에, 되돌릴 수 없음을 명시한 확인을 거쳐서요. 되찾는 명령이 바이트보다 오래 남기 때문입니다. 비우면 영영 사라질 행에는 그 버튼이 없습니다 — 그 결정은 Finder의 몫입니다.

행은 단계별(격리→휴지통→사라짐)로 묶여 최신순으로 나오고, 각 단계에 진입한 날짜가 그 단계의 칸에 적힙니다. 이름·출처·크기로 정렬하고, 단계로 거르고, 이름·출처·명령으로 검색할 수 있습니다. 각 행에는 지울 때 받았던 글자 — R 또는 I — 도 붙어 있습니다. 되찾는 길이 그 글자에 달려 있기 때문입니다. 마지막 단계(사라짐)가 핵심입니다: 기록은 휴지통보다 오래 남습니다. 그래서 휴지통을 비워도 의도적으로 되찾지 못할 것은 없습니다. 명령은 좁게 검증된 형태만 실행되며, 그 외에는 복사해 직접 실행하도록 보여줍니다.

휴지통의 다른 항목. Latent가 아니라 Finder가 휴지통에 넣은 것은 별도 제목 아래 읽기 전용으로 나열되고, Finder가 원래 자리를 기록해 둔 경우 제자리로 버튼으로 되돌릴 수 있습니다. Latent는 그것들을 비우거나 버리지 않습니다 — 자기 기록 옆에서 볼 수 있게 할 뿐입니다.

휴지통은 사용자의 것 #

Latent는 휴지통으로 옮길 뿐, 사용자 모르게 비우지 않습니다. 이 앱이 넣지 않은 파일은 건드리지 않고, 되찾을 길이 없는 파일은 버리지 않습니다. 개요 탭의 휴지통 카드가 안에 뭐가 있는지 보여주고, 버튼 하나로 Finder에서 열립니다.

다만 마무리를 대신해 주는 자리가 두 곳 있습니다. 복구 탭은 항목을 하나씩, 또는 안전한 것을 한꺼번에 비웁니다 — 여기서 '안전'이란 다시 받을 명령이 기록돼 있거나, 도구가 다시 만들어 준다는 것이 검증된 행을 말합니다. 그리고 정리는 실행 직후, 그 실행분에 한해 같은 일을 제안합니다. 정리는 증명된 안전 항목만 지우므로 옮긴 행은 전부 다시 받거나 다시 만들어집니다. 앱이 확신을 갖고 시작한 일을 공간 회수만 Finder에서 직접 하라고 미루는 건 앞뒤가 맞지 않습니다. 버튼에 몇 건인지, 몇 바이트인지 적혀 있고, 한 번 묻습니다.

그 밖에 휴지통에 있는 것은 — 공간 탭에서 직접 고른 항목까지 포함해 — 복구 탭이나 Finder에서 직접 판단하도록 남겨 둡니다.

되돌리거나, 다시 받거나 #

삭제는 휴지통으로 가지, 곧장 소멸로 가지 않습니다. 매 실행마다 무엇이 옮겨졌는지 정확히 복원하는 되돌리기 매니페스트가 기록됩니다. 시뮬레이터 런타임과 Docker 이미지는 휴지통이 없는 자체 도구로 제거되므로, 지우기 전에 다시 받는 명령을 기록해 둡니다. 공간 탭 정리가 무언가를 옮기기 전에는 네 가지 가드가 작동합니다: 소유 도구가 실행 중이 아닐 것, 대상 안에 실행 중인 바이너리가 없을 것, 어떤 프로세스도 내부 파일을 열어두지 않았을 것, 최근 10분간 변경이 없었을 것. 가드는 계획 시점이 아니라 삭제하는 순간에 다시 확인합니다. 앱 언인스톨러는 자체 가드 두 가지를 확인합니다 — 해당 앱이 실행 중이 아닐 것, 대상 안의 파일이 열려 있지 않을 것.

AI 어시스턴트 (MCP) #

Latent에는 MCP 서버가 내장되어 있어, MCP를 지원하는 어시스턴트라면 무엇이든 디스크 상황을 읽고 정리를 제안할 수 있습니다. 서버는 앱 바이너리 그 자체입니다:

/Applications/Latent.app/Contents/MacOS/Latent --mode mcp

한 줄로 설치 #

Latent가 이 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 Code

claude mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Codex CLI

codex mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Gemini CLI

gemini mcp add latent /Applications/Latent.app/Contents/MacOS/Latent --mode mcp

Grok CLI

grok mcp add latent /Applications/Latent.app/Contents/MacOS/Latent -- --mode mcp

--가 중요합니다: 이게 있어야 --mode mcp가 Grok의 플래그가 아니라 Latent에게 전달됩니다. 연결 상태는 Grok이 직접 확인해 줍니다 — grok mcp doctor는 서버가 뜨는지, 핸드셰이크가 끝나는지, 도구를 몇 개 찾았는지 보고합니다.

Cursor, Claude Desktop, Windsurf, VS Code 등 JSON 설정을 쓰는 모든 클라이언트

클라이언트의 MCP 서버 설정에 아래를 추가하세요 — Cursor는 ~/.cursor/mcp.json, Claude Desktop은 claude_desktop_config.json, VS Code는 .vscode/mcp.json(VS Code는 "mcpServers" 대신 "servers" 아래에 넣습니다):

{
  "mcpServers": {
    "latent": {
      "command": "/Applications/Latent.app/Contents/MacOS/Latent",
      "args": ["--mode", "mcp"]
    }
  }
}

전송 방식은 순수 stdio입니다 — 포트도, 데몬도, 켜둘 것도 없습니다. 클라이언트가 필요할 때 서버를 직접 실행합니다. 프로토콜은 두 세대를 다 받습니다: 현재 버전(2026-07-28, server/discover와 요청마다 붙는 버전)과 예전 핸드셰이크 — 2024년 이후의 어떤 클라이언트든 연결됩니다.

무엇을 시킬 수 있나요 #

서버는 도구 여섯 개를 제공하고, 이름을 외워 부를 필요는 없습니다 — 평소 쓰는 말로 물으면 어시스턴트가 고릅니다:

어디까지 지울지 #

개발자 디스크를 채우는 것들은 대개 지워서 위험한 게 아니라 되찾는 데 비용이 드는 것들입니다. 그 비용을 어디까지 감수할지는 사용자 말고는 아무도 답할 수 없는 질문입니다. 그래서 어시스턴트가 읽는 모든 행에는 레벨이 붙어 있고, 무엇을 제안하기 전에 네 개의 합계를 먼저 보여주게 되어 있습니다:

어디까지 갈지는 사용자가 정하고, 어시스턴트는 그 숫자를 전달하며, 돌아온 계획이 행마다 레벨을 밝히므로 동의하기 전에 직접 고른 선을 지켰는지 확인할 수 있습니다. 어시스턴트가 스스로 한도를 올릴 수는 없습니다. 무엇을 요청하든 서버는 레벨 3까지만 허용합니다.

이 Mac 밖으로 나가는 것 #

어시스턴트가 보는 것은 경로·크기·등급·증거 라벨이고 파일 내용은 아닙니다. 다만 경로도 정보입니다: 어시스턴트가 클라우드에서 돌아간다면 홈 폴더 아래 폴더 이름들이 그쪽으로 건너갑니다 — 채팅창에 붙여넣는 파일과 같습니다. 로컬 모델이라면 이 Mac에 남습니다. Latent 자체는 아무것도 밖으로 보내지 않습니다. 자기를 실행한 클라이언트에게 파이프로 답할 뿐이고, 그 답이 어디로 가는지는 클라이언트가 정합니다.

어시스턴트가 할 수 있는 것과 없는 것 #

어시스턴트의 권한은 언제나 사용자보다 좁습니다: 기본값으로는 검증된 다시 다운로드/자동 재생성 항목만(원클릭 정리와 동일한 허용 목록) 건드릴 수 있고, 그 이상은 사용자가 어디까지인지 정해 줄 때뿐입니다 (어디까지 지울지 참고). 절대 규칙이 하나 있습니다: 어시스턴트는 사용자에게 보여주고 동의를 받지 않은 것을 지울 수 없습니다. 어떤 항목이 해당되는지는 Latent가 직접 정해 그 목록을 어시스턴트에게 건네고, 그 목록 그대로만 한 번, 몇 분 안에 실행하며, 그 사이에 바뀐 항목은 거부합니다. 답이 없으면 삭제도 없습니다. 어시스턴트는 잠금을 열 수 없고, 사용자 파일에 닿을 수 없으며, 파일 내용을 볼 수 없습니다 — 크기, 경로, 증거 라벨만 봅니다. 어시스턴트가 가져갈 수 없는 항목에는 목록 안에 이유가 적혀 있습니다 — 미증명, 다시 만드는 데 시간이 듦, 사용자 파일, 보호 — 그래서 추측할 일이 없고, 개요에는 어시스턴트가 옮길 수 있는 숫자와 앱이 보여주는 더 큰 증명된 R 합계가 둘 다 나옵니다.

그래서 승인은 사용자가 이미 있는 곳, 대화 안에서 이뤄집니다. Latent가 무엇을 가져갈지 항목·크기·레벨까지 적어 건네면, 어시스턴트가 그 목록을 읽어주고 기다립니다. 아니라고 하거나 아무 말도 하지 않으면 아무것도 움직이지 않습니다. 계획은 몇 분 뒤 스스로 만료되고, 같은 목록을 다시 만들어야 합니다.

어시스턴트가 제안한 삭제도 다른 삭제와 똑같습니다: 휴지통으로 가고, 같은 되돌리기 기록을 남기고, 복구 탭에 같은 한 번의 클릭으로 나타납니다. 요청이 어시스턴트에게서 왔다고 해서 되돌리기가 더 어려워지는 부분은 없습니다.

라이선스와 문의 #

보는 건 무료, 지우는 건 라이선스 #

라이선스 없는 Latent는 모든 기능이 살아 있는 뷰어입니다: 스캔은 얼마든지, 휠과 링 탐색, 용량 증가 추이, 로그 열람까지. 만료되는 것은 없습니다. 라이선스가 여는 것은 파일 삭제뿐이고 — 복구(되돌리기, 격리 복원)는 라이선스와 무관하게 언제나 작동합니다. 이 앱이 절대 하지 않을 한 가지가 사용자 파일을 인질로 잡는 것이기 때문입니다.

라이선스·베타 키 활성화 #

메뉴 막대 → Latent → 라이선스 입력…에 키를 붙여넣으면 끝입니다. 키 하나로 여러 대를 쓸 수 있습니다(베타 키는 최대 2대). 스캔에는 애초에 키가 필요 없었고, 키가 입력되는 순간 삭제가 열립니다. 계정도, 이메일도, 따로 로그인할 것도 없습니다. 안에서는 키가 이 Mac용으로 서버가 서명한 라이선스 토큰으로 바뀝니다. 앱이 서명을 직접 검증하고 실행할 때마다 토큰을 갱신하므로, 설정 파일을 복사해도 다른 Mac이 열리지 않고, 오프라인인 Mac도 몇 주 동안은 서버를 다시 보지 않아도 그대로 씁니다. 라이선스가 없어도 모든 확인 시트는 무엇을 할지 그대로 보여주고, 버튼 자리에 라이선스 구매…를 내놓습니다.

다른 Mac으로 옮기기, 그리고 환불 #

구매한 키는 최대 3대까지 활성화됩니다. 쓰던 Mac을 정리하거나 파실 때는 그 Mac에서 Latent → 라이선스 입력…을 열고 해제를 누르세요. 자리가 곧바로 키로 돌아가 다른 곳에서 쓸 수 있습니다. 그 Mac에서 지워지는 것은 없고, 언제든 다시 활성화할 수 있습니다.

환불되거나 결제가 취소되면, 다음 실행부터 그 키로는 삭제할 수 없습니다. 복구는 어느 경우에도 계속됩니다. 되돌리기·격리 복원·제자리로 돌리기는 애초에 라이선스 밖에 있습니다 — 환불로 제품을 쓸 수 없게 될 수는 있어도, 사용자 파일을 묶어둘 수는 없습니다.

내려받은 파일이 정말 우리 것인지 확인하기 #

Latent는 Developer ID로 서명되고 Apple의 공증을 받았으며, 공증 티켓이 디스크 이미지에 스테이플되어 있습니다 — 처음 열 때 macOS가 오프라인에서도 확인합니다. 우리 빌드와 사용자의 Mac 사이 어디에선가 파일이 바뀌었다면 아예 열리지 않습니다.

직접 확인하려면, 앱을 응용 프로그램 폴더로 옮긴 뒤:

spctl -a -vv /Applications/Latent.app
accepted
source=Notarized Developer ID
origin=Developer ID Application: FatTail Labs (BUS4S7XFQV)

팀 식별자 BUS4S7XFQV는 우리 것이고 위조할 수 없습니다. 이 페이지에 체크섬을 적어두는 것으로는 줄 수 없는 보증입니다 — 내려받을 파일을 바꿀 수 있는 사람은 그 옆의 체크섬도 함께 바꿀 수 있기 때문입니다.

업데이트도 같은 시험을 거칩니다. 무엇을 교체하기 전에 Latent가 내려받은 번들의 서명을 검증하고, 팀 식별자를 확인하고, Gatekeeper에 묻습니다. 하나라도 실패하면 업데이트를 중단하고 쓰던 것을 그대로 둡니다.

Latent 제거 #

Latent는 앱 번들 하나와 폴더 하나입니다. 제거하려면 Latent를 종료하고(메뉴 막대 아이콘도 함께 사라집니다) Latent.app을 휴지통으로 옮기면 됩니다. 헬퍼도, 로그인 항목도, 커널 확장도 설치하지 않고 암호를 보관하지도 않습니다.

기록은 ~/.latent에 있습니다: 되돌리기 기록, 격리 폴더(아직 관찰 기간 중인 항목), 제외 목록, 활동 로그. 다시 설치할 수도 있다면 그대로 두세요 — 그것이 되찾는 길입니다. 완전히 끝낼 때만 지우세요. 격리 중인 항목은 함께 사라지므로 먼저 복구 탭에서 되찾거나 비우세요.

Latent는 Apps 목록에서 자기 자신을 P로 표시하며, 안에서 스스로를 제거하지 않습니다.

궁금한 점이 있나요? #

앱 안에서: 도움말 → 피드백 보내기…. 메시지와 함께 앱·macOS 버전이 전송되고, 활동 로그는 체크박스를 켠 경우에만 홈 폴더 이름을 지운 뒤 함께 갑니다. 백그라운드 전송은 없습니다 — 오직 그 버튼만 보냅니다. 또는 fattaillabs.ceo@gmail.com으로 보내주세요 — 전부 읽습니다.