我把和AI的所有对话,都存进了自己的知识库

Image

原始來源與檔名:2026-07-09T093825+0800-我把和AI的所有对话,都存进了自己的知识库.md


SOURCE | 資訊源評估

NAPKIN | 餐巾紙

餐巾紙公式

對話 = 思考過程;過程不存檔 = 知識最大浪費;腳本把 JSONL 轉 Markdown 卡片,過程即資產 作者主張每天與 AI 的對話是「最高頻、最密集的思考產物」,卻從不被保存。用一個 Python 腳本把 AI 工具本地的 SQLite 元資訊 + JSONL transcript 解析成 Obsidian 卡片,配合截斷與增量同步,讓過程變成可檢索、可回溯的知識資產。

一句話

作者寫腳本把 Codex/WorkBuddy 的 AI 對話自動同步進 Obsidian,意外發現對話是最高頻卻最被忽略的思考產物——回看後浮現出寫作素材、決策脈絡,甚至自己的思維盲區。

餐巾紙草圖

(ASCII 圖,方框禁止畫右側直線)

┌──────────────────────────────────────
│  AI 工具本地存儲(資料源)
│  Codex:    ~/.codex/state_5.sqlite (threads 表)
│         + ~/.codex/sessions/rollout-*.jsonl
│  WorkBuddy: ~/.workbuddy/workbuddy.db (sessions 表)
│           + ~/.workbuddy/projects/{proj}/{sid}.jsonl
└──────────────────────────────────────

                  ▼  解析 JSONL(每行 type 區分角色)
┌──────────────────────────────────────
│  處理腳本(Python)
│  ├─ 按角色截斷:用戶全文 / AI 分三檔
│  └─ 增量同步:YAML transcript_mtime 比對
└──────────────────────────────────────

                  ▼  Windows 定時任務,每天 10:00,pythonw 靜默
┌──────────────────────────────────────
│  Obsidian  01_Sources/AI對話/
│  一個會話 = 一張 Markdown 卡片
└──────────────────────────────────────

                  ▼  三大價值浮現
┌──────────────────────────────────────
│  寫作素材庫  /  決策回溯  /  思維盲區
└──────────────────────────────────────

ROUND 1: SKELETON | 骨架掃描

章節骨架

  1. 01 為什麼想做這件事:對話是思考過程,文章/代碼只是結果;過程比結果更珍貴,卻從不被保存(複製貼上不可持續)。
  2. 02 怎麼做到的:Codex 用 SQLite(threads 表)+ rollout JSONL;WorkBuddy 用 workbuddy.db(sessions 表)+ projects JSONL;統一邏輯是「找會話檔 → 解析 → 轉 Markdown」。
  3. 03 兩個關鍵問題:太長和更新:太長用「按角色分檔截斷」;更新用「transcript_mtime 增量同步 + Windows 定時任務」。
  4. 04 場景一:寫文章的素材庫:寫作瓶頸不是「寫不出來」而是「想不起來」;AI 的追問直接變成文章第一部分素材。
  5. 05 場景二:項目決策的回溯分析:短影片口播對齊方案演進(2-gram → whisper 時間戳 → 字符比例)全散在對話裡,現在一搜即得。
  6. 06 場景三:發現自己的思維盲區:三張卡片排在一起,浮現「先啟動、再定義問題」的固定模式——這是全文最意外的收穫。

ROUND 2: DISSECTION | 血肉解剖

論證鏈

(ASCII 流程)

觀察: 每天跟 AI 聊,對話質量高、密度大

判斷: 對話 = 思考過程,比結果(文章/代碼)更珍貴

痛點: 過程散落、聊完即棄、複製貼上不可持續

方案: 腳本解析本地存儲 → Markdown 卡片進 Obsidian

難點1 太長 → 按角色分檔截斷(用戶全文/AI 三檔)
難點2 更新 → mtime 增量同步 + 定時任務

驗證: 三場景(寫作素材/決策回溯/思維盲區)反向證明價值

昇華: 讓最高頻卻最易被忽略的思考產物,變成知識資產

關鍵證據

  1. Codex 雙層存儲架構~/.codex/state_5.sqlitethreads 表存會話元資訊(標題、模型、創建時間、工作目錄),對話本體在 ~/.codex/sessions/rollout-*.jsonl,JSONL 每行一個 JSON 物件,按時間排序,type 欄位區分用戶消息/AI 回復/工具調用。
  2. WorkBuddy 同構但分目錄~/.workbuddy/workbuddy.dbsessions 表存元資料,transcript 在 ~/.workbuddy/projects/{project}/{sessionId}.jsonltype 欄位含 messagereasoning(AI 推理過程)/function_call(工具調用)。
  3. 截斷策略三檔:用戶消息一律不截斷(提問是最高價值);AI 回復 ≤6000 字全文保留、6000~15000 字保留頭尾去中間、>15000 字只保留開頭分析+結尾輸出。
  4. 增量同步機制:卡片頭部 YAML frontmatter 記錄 transcript_mtime,每次運行對比當前 mtime 與記錄值,有變化才重生,沒變化跳過(「一秒都不花」)。
  5. 規模佐證:最長一條 WorkBuddy 會話 transcript 達 4MB、對話數十輪、單條 AI 回覆動輒上萬字——印證「不截斷 Obsidian 會卡死」是真實痛點。
  6. 思維盲區案例:三個專案(微信小程序/短影片工具/知識庫)都是先說「我想要一個⋯⋯」,被 AI 一問「場景是什麼?目標用戶是誰?」才發現需求沒想清——單看一次只是「那次沒想清」,三張卡片並列才浮現模式。

隱形假設與邊界

ROUND 3: SOUL | 靈魂提取

留白提問

跨域映射

DEEP READ | 精讀指引

  1. 03 兩個關鍵問題:太長和更新:截斷策略(按角色分檔)與增量同步(mtime 比對)是整個方案可持續運行的工程基礎,沒有這兩個機制,腳本要麼把 Obsidian 搞卡、要麼覆蓋掉手動標註。值得反覆推敲設計取捨。
  2. 06 場景三:發現自己的思維盲區:從「存檔」躍升到「自我發現」,是全文最意外也最有啟發的段落——知識庫的價值不只是檢索過去,而是讓模式(pattern)在並列時自己浮現。

STRUCTURE MAP | 全書結構圖

(ASCII 流程圖,方框禁止畫右側直線)

              ┌───────────────────────────
              │ 為什麼(價值判斷)
              │ 對話 = 思考過程 > 結果
              │ 過程散落、聊完即棄
              └───────────────────────────


              ┌───────────────────────────
              │ 怎麼做(技術方案)
              │ SQLite 元資訊 + JSONL transcript
              │ → Markdown 卡片
              └───────────────────────────

          ┌─────────────┼─────────────
          ▼             ▼             ▼
   ┌────────────  ┌────────────  ┌────────────
   │ 截斷策略     │ 增量同步     │ 定時任務
   │ 按角色分檔   │ mtime 比對   │ 每天 10:00
   │ 用戶全文     │ 有變化才重生 │ pythonw 靜默
   │ AI 三檔      │ 無變化跳過   │ 不彈窗
   └────────────  └────────────  └────────────


              ┌───────────────────────────
              │ 用了之後(三場景驗證)
              │ 04 寫作素材 / 05 決策回溯
              │ 06 思維盲區(意外收穫)
              └───────────────────────────


              ┌───────────────────────────
              │ 昇華:過程即資產
              │ 最高頻的思考產物
              │ 終於被保存、被檢索
              └───────────────────────────

我把和AI的所有对话,都存进了自己的知识库 (Architectural Deep Dive)

前言/背景

這篇解決的核心問題是:人們每天與 AI 產生大量高質量對話(思考過程),卻從不系統性地保存它。文章/代碼/筆記都是「結果」,對話才是產生結果的「過程」,但過程散落在 AI 對話框裡,聊完即棄。

作者的做法是寫一個 Python 腳本,把兩個本地 AI 工具(Codex、WorkBuddy)存儲的對話(SQLite 元資訊 + JSONL transcript),自動同步成 Obsidian 的 Markdown 卡片,並用「按角色截斷」與「mtime 增量同步」解決太長與持續更新兩個工程問題。最後用三個實戰場景(寫作素材、決策回溯、思維盲區)反向驗證:保存對話的價值遠超預期。

章節詳細總結

01 為什麼想做這件事

作者用 AI 寫代碼、寫文章、做產品、討論選題,幾乎每天都在跟它聊。他觀察到很多對話的質量非常高——不是指 AI 的答案有多對,而是整個對話過程本身非常有價值。

兩個典型例子:

作者以前的做法是「聊完覺得有用就複製貼上到筆記」,但大部分時候聊完就聊完了,再也沒打開過。時間一長,三四十個會話堆在那裡,翻都懶得翻。

核心洞察是這一句:

我和 AI 的對話,是我每天思考最密集的產物,但我幾乎沒有真正保存過它。保存文章、保存代碼、保存筆記,但從不保存對話。文章和代碼是結果,對話其實是整個過程。

02 怎麼做到的

有了「對話是過程、過程該被保存」的判斷,作者要一個自動化方案:每天把 AI 對話同步到知識庫,不用手動複製貼上。

輸出目標很清楚:Obsidian 知識庫裡有一個 01_Sources/AI對話/ 目錄專門放原始材料,每一條 AI 會話生成一張 Markdown 卡片放進去。

Image

但問題來了——AI 的對話存在哪?作者平時用兩個 AI 工具,存儲格式完全不同:

Codex(VS Code 裡的 AI 編輯器)的雙層存儲:

WorkBuddy 的分目錄存儲:

核心邏輯一致——從 AI 工具的本地存儲裡找到會話檔案,解析成結構化的對話紀錄,轉為 Markdown 卡片。差異只在「去哪找檔案」與「JSONL 裡的 type 欄位語義」。

03 兩個關鍵問題:太長和更新

問題一:對話太長

最長一條 WorkBuddy 會話 transcript 有 4MB,對話數十輪,單條 AI 回覆動輒上萬字。如果全部保留,每張卡片會大到 Obsidian 打開都卡。

作者的策略是按角色區別對待

問題二:對話持續更新

一個會話今天聊了,明天可能繼續。如果腳本每次運行都重新生成卡片,之前寫過的筆記、標註全丟了。

作者的方案是跨天增量同步

整個腳本最後用 Windows 定時任務每天 10 點自動執行pythonw.exe 靜默跑,不彈窗口、不輸密碼。

Image

實作過程踩了一些坑(例如 mtime 精度問題、pythonw 下 stdout 崩潰),不過都修掉了,作者認為不是重點。

04 場景一:寫文章的素材庫

作者寫公眾號文章,最頭痛的不是「寫不出來」,而是「想不起來」。

很多文章的起點不是完整選題,而是跟 AI 聊著聊著冒出來的想法。例如這篇「我把對話存進知識庫」的文章,最初的討論發生在兩天前——在 WorkBuddy 裡跟 AI 討論知識庫結構怎麼改、對話怎麼存、格式怎麼定。討論過程中作者提了一個觀點:「對話才是思考過程,文章只是結果。」AI 追問了好幾輪——「那保存對話的價值到底是什麼?」「你以前試過什麼方案?」「為什麼不行?」

這些追問直接變成了文章第一部分的素材。如果沒有那天的對話卡片,寫這篇文章時只能憑記憶,很多細節肯定漏了。

現在的做法是:想寫文章時,先去 AI對話/ 裡搜一下,看最近有沒有聊過相關話題;有就直接引用對話裡的思考過程,比從零開始寫順暢得多。

05 場景二:項目決策的回溯分析

做項目時,很多決策是當時拍腦袋下的。過一周回頭看,可能已經忘了為什麼選 A 不選 B。

短影片工作流是典型例子。作者跟 AI 討論過至少十輪關於「配圖和口播文本怎麼對齊」的問題:

這些討論散在三四次不同時間的會話裡。以前想看決策過程,只能憑記憶回憶「好像有一次聊過這個」——根本找不到。現在直接在 Obsidian 搜「口播對齊」或「字幕時間戳」,所有相關討論瞬間列出來。

Image

更關鍵的是,通過這些對話能回看自己當時的思維軌跡:我為什麼會覺得 2-gram 方案可行?看到什麼文檔?踩了什麼坑?這些資訊寫代碼的時候不會記錄,但對話裡有。

作者現在做項目復盤的習慣變了——打開關聯的幾張對話卡片,一頁一頁翻過去,比看代碼提交日誌更接近真實的決策過程。

06 場景三:發現自己的思維盲區

這是最意外的收穫。

有一天翻之前的對話卡片,發現一個模式:作者跟 AI 討論需求時,總是先說「我想要一個⋯⋯」,然後 AI 問「這個場景是什麼?目標用戶是誰?」——作者答不上來。同樣的情景出現了三次:做微信小程序、做短影片工具、搭這個知識庫。每次都是急著動手,被 AI 一問才發現需求沒想清楚。

如果沒有對話紀錄,不會意識到這個模式。單個對話看,只會覺得「那一次沒想清楚」。但三張卡片排在一起,模式就浮出來了——作者習慣先啟動、再定義問題,而不是先定義清楚再動手。這個認知本身就是一個值得寫的文章選題。

還有一次更直接的:翻到一張討論「做副業要不要追求專業」的卡片,發現 AI 提了一個作者完全沒接茬的問題:「你定義的專業是什麼?誰的標準?」作者直接跳過去繼續說自己的。因為對話被完整記錄下來,才看見這個細節——第一反應不是回答,是迴避。這個信號如果不是事後回看,根本抓不住。

總結與結論