在 Apple Silicon macOS 上透過 katok CLI 搜尋本地的 KakaoTalk 對話封存紀錄。
KakaoTalk katok 搜尋
此 Skill 的作用
以 katok CLI 作為唯一的執行介面,將 macOS KakaoTalk 對話紀錄同步至本地封存庫與搜尋索引中,並支援關鍵字 (keyword)、BM25、語意 (semantic) 搜尋以及 chunk 查詢。
本 Skill 雖然保留了既有的 kakaotalk-mac 安裝路徑,但內部運作完全基於 katok。傳送/刪除訊息、UI 自動化、直接讀取 DB、處理驗證快取或解密素材(material)均不屬於本 Skill 的範疇。
隱私規則
- 請勿透過本 Skill 檢查本地資料庫的內部結構。
- 請勿直接讀取 KakaoTalk 的 DB 檔案。
- 請勿處理驗證快取(auth cache)或解密素材(decryption material)。
- 如需擷取 macOS 實時 KakaoTalk 資料,請使用
katok sync --source macos --json。 - 搜尋命令應優先回傳摘要片段(snippets)與 chunk ID。
- 僅在使用者明確要求開啟搜尋結果或提供 chunk ID 時,才擷取完整的 chunk 內容。
適用時機
- 「幫我在 KakaoTalk 裡面搜尋特定關鍵字」
- 「幫我在 KakaoTalk 找出之前討論過的會議/合約/約定紀錄」
- 「請幫我開啟這個搜尋結果的 chunk」
- 「請確認最近的對話是否已同步,然後再進行搜尋」
不適用時機
- 非 macOS 環境
- 需要在 Intel Mac 上使用本地 EmbeddingGemma 語意索引時
- 需要傳送或刪除 KakaoTalk 訊息時
- 要求直接存取 KakaoTalk DB 檔案、驗證快取或解密素材時
- 要求串接官方 Kakao 伺服器對伺服器(Server-to-Server)API 時
先決條件
- Apple Silicon macOS
- 已安裝 KakaoTalk for Mac
- 已安裝 Homebrew 或 Cargo
- 已安裝
katokCLI - 目前使用的終端機應用程式已獲取完全磁碟存取權限(Full Disk Access)
安裝 katok
Homebrew:
brew tap NomaDamas/katok https://github.com/NomaDamas/katok.git
brew install katok
Cargo:
cargo install katok
export PATH="$HOME/.cargo/bin:$PATH"
安裝完成後,確認 CLI 是否能正常運作:
katok --help
katok doctor --json
工作流程
1. 檢查就緒狀態(不觸發應用程式資料存取提示)
katok doctor --json
檢查 doctor --json 輸出結果中 freshness 區段的最新同步/索引狀態。預設的 doctor 檢查不會執行 macOS app-data 探測(probe),因此適合在不觸發系統權限提示的情況下確認就緒狀態。
2. 必要時開啟 macOS 權限設定
若需要設定完全磁碟存取權限(Full Disk Access),可開啟設定頁面以便使用者手動允許:
katok permissions macos
KakaoTalk UI 自動化並不屬於本 Skill 的範疇;僅在需要進行上游診斷且必須開啟輔助功能(Accessibility)設定頁面時,才執行以下命令:
katok permissions macos --accessibility
3. 僅在需要時執行明確的 macOS 環境診斷
僅在需要確認 KakaoTalk 應用程式安裝狀態、container 或 DB 檔案存取權等 macOS source adapter 狀態時,才執行探測。此命令可能會觸發 macOS 跳出應用程式資料存取權限提示。
katok doctor --macos-probe --json
4. 同步本地 KakaoTalk 對話封存
若最新對話內容至關重要,或者 freshness.recommendation.sync_before_search 數值為 true,請在搜尋前先執行同步:
katok sync --source macos --json
使用設定檔中預設的 source adapter 時:
katok sync --json
5. 建立或更新語意索引
執行語意搜尋(semantic search)前,若 freshness.recommendation.index_before_semantic_search 為 true,或需要將剛同步的內容反映至語意搜尋中,請建立/更新索引:
katok index --json
katok index 預設使用本地端的 embeddinggemma-300m-q4 嵌入模型(embedder)。不需要 Python、Jina、TEI 或額外架設 HTTP embedding 伺服器。
6. 使用最適切且精準的模式進行搜尋
搜尋精確字串、人名、帳號或專有名詞時,優先使用關鍵字搜尋(keyword search):
katok search keyword "搜尋詞" --json
包含多個詞彙的自然語言查詢,請使用 BM25:
katok search bm25 "上週會議資料" --json
記不清確切措辭、需根據文意搜尋時,請使用語意搜尋(semantic search):
katok search semantic "最近討論的報稅時程" --json
7. 僅在必要時擷取特定 chunk
搜尋結果應先以摘要片段(snippet)與 chunk ID 為主進行彙總。僅當使用者要求開啟特定結果或提供 chunk ID 時,才查詢完整的 chunk 原文。
katok chunk get <chunk-id> --json
katok chunk context <chunk-id> --json
katok chunk parent <chunk-id> --json
katok chunk get <chunk-id> --json:查詢該 chunk 的完整原文katok chunk context <chunk-id> --json:查詢同一聊天室中緊鄰前後的微型 chunk(micro chunk)katok chunk parent <chunk-id> --json:查詢語意搜尋的父級視窗(parent window)
僅限合成 QA / 模擬測試
僅在未安裝實際 KakaoTalk、需使用上游 fixture 進行測試時,才使用 fixture source 與確定性嵌入模型(deterministic embedder)。
katok sync --source fixture tests/fixtures/kakao/replies.jsonl --json
KATOK_EMBEDDER=local-test katok index --json
KATOK_EMBEDDER=mock katok index --json
在正式使用情境下,請勿使用 fixture、mock embedder 或遠端 embedding 端點。
完成標準
- 若為就緒狀態請求,已彙總
katok doctor --json的執行結果與 freshness 建議事項。 - 若為最新對話搜尋請求,已在必要時明確說明是否需要執行
katok sync --source macos --json與katok index --json。 - 若為搜尋請求,已說明在 keyword、BM25、semantic 中選擇該模式的原因,並提供 JSON 搜尋結果的摘要。
- 若為 chunk 查詢請求,僅針對使用者指定之 chunk ID 彙總
katok chunk get/context/parent的結果。
失敗模式
- 未安裝
katok或 Cargo binary PATH 未設定 - 非 Apple Silicon macOS 環境
- 未安裝 KakaoTalk for Mac
- 未授予完全磁碟存取權限(Full Disk Access)
katok doctor --macos-probe --json執行時無法存取 container 或 DB 檔案- 尚未執行同步,導致本地封存庫內容空白
- 語意索引過期或尚未建立
- 搜尋結果僅憑摘要片段 / chunk ID 不足以回答,需要進一步查詢完整的 chunk
備註
- 本 Skill 僅供讀取 / 搜尋 / 檢索(read/search/retrieve)使用。
- 不支援傳送或刪除訊息。
- 不會直接存取 DB 內部結構、驗證快取(auth cache)或解密素材(decryption material)。
- 雖然既有的 Skill 名稱為
kakaotalk-mac,但實際執行的 CLI 介面為katok。






