# 更新紀錄 CHANGELOG > 每次改了什麼,都記在這。版號對應 `template/.claude/VERSION`。 > 想更新到最新版?看 [README → 一鍵更新](README.md#-已安裝舊版一鍵更新)。 版號規則(語意化版本,簡化版): - **大版號**(1.x → 2.x):破壞性變動,舊專案更新後可能要手動調整。 - **中版號**(1.0 → 1.1):加了新功能,向下相容,更新即用。 - **小版號**(1.1.0 → 1.1.1):修 bug、改文件,無新功能。 --- ## 1.5.0 — wiki 連結升級成 typed-edge 三元組(issue #5) **背景**:`## 關聯` 原本只列裸 `[[頁面]]`(沿用 Karpathy LLM Wiki)。但裸 `[[A]]` 是**弱連結**——只說「A 和本卡有關」,沒說關係是什麼。下游要從 wiki 抽 knowledge graph 時,拿到一堆無類型 edges,仍得回讀兩張卡才知道關係,等於關係沒被預編譯、退回 O(N²)。 **變更** - `wiki-init.md` 與 `docs/SKILL.md` 的 `## 關聯` 升級成 **typed-edge 三元組**:`[[A]] >> 謂詞 >> [[B]]`。下游 ingest 可直接 parse 出帶類型的有向邊,全局 graph 不必再讀卡片內容就知道關係。 - 規則:① 方向性——`A >> 謂詞 >> B` 須讀成「A(謂詞)B」一句通順的話,順序=主→賓真實方向;② 謂詞用動詞/動詞短語(天然帶方向);③ 謂詞自由書寫不受控詞彙(下游 embedding 會聚類同義謂詞,但方向靠書寫順序保證);④ 向後相容:純 `[[A]]` 仍合法(無類型邊)。 - `>>` 為分隔語法,repo 可自選符號,全程一致即可。 --- ## 1.4.1 — wiki = AI 改寫的記憶(拿掉索引模式)+ 量大建議 Haiku(issue #4) **修正 1.4.0 的方向**:1.4.0 把「索引 vs 改寫」做成兩種並列模式,預設一般專案走索引、只有 vault 走改寫。這方向錯了—— > **記憶系統的目的是讓 AI 之後讀得快。** 不管 vault 還是一般開發專案,人類原文都是亂的(重複、流水帳、半成品)。若 wiki 只是指回原文的索引,每次未來用都得重新解析那團亂=沒省到。**wiki 的價值就在「改寫一次,之後每次讀都便宜」。** **變更** - `wiki-init.md` **拿掉索引模式**,改寫成 wiki 是**所有專案的唯一預設**(vault 與一般開發一致)。原文=唯讀 SSoT,wiki=AI 改寫過的記憶,AI 是總編輯。 - 唯一例外:原文是不可改動的正式文件(簽署規格/法規/合約,須逐字讀)才用指針指回原文並註明「逐字依原文」。 - **量大建議用 Haiku**:逐份原文改寫成 wiki 格式是重複、機械、判斷成本低的工作,正適合 Haiku。原文數量多時,命令會主動建議派 Haiku subagent 並行改寫,主模型只負責切概念、定條目邊界、審稿與互連。 - `INDEX.md` 範本:統一成「概念索引指向 wiki 內部條目」,不再提索引模式。 --- ## 1.4.0 — wiki-init 新增「草稿改寫模式」:AI 當總編輯(issue #4) **背景**:在 Logseq vault(234 篇 pages + journals)壓測 `/wiki-init`,發現它整套指令語言只有「分類歸檔/導航」,把人和 AI 都導向做出一個 `[[原文檔名]]` 指回原文的**索引**。但 PKM / vault 使用者的心智模型常是相反的——原文只是**草稿**(轉錄稿、隨手記),要 AI **改寫萃取成自包含 wiki**,之後讀 wiki 就好、不必回原文。template 沒區分這兩種,且預設了「原文是成品」。 **新增** - `wiki-init.md` 開頭新增**模式分岔(第零步)**:索引模式 vs **草稿改寫模式(AI 當總編輯)**,附對照表講清楚原文角色、INDEX 連結、回答方式的差異。 - **偵測到 PKM vault(Logseq/Obsidian)→ 預設草稿改寫模式**,但明確問一句讓使用者可切回索引模式。 - **一般專案 → 預設索引模式**(維持原行為,向下相容)。 - 草稿改寫模式的產出規則(第五步):概念原子化、自包含、保留來源指針(可追溯但不必回讀)、`[[wikilink]]` 互連——與 claude.ai Cowork 的 `docs/SKILL.md` 改寫邏輯**一致**,CC / Cowork 兩條路徑產出同一種 wiki。 - `INDEX.md` 範本:草稿模式下改成「概念索引」指向 wiki **內部**改寫條目,而非指回原文。 **不變**:raw source 永遠唯讀,兩種模式都只往 `.claude/wiki/` 寫,絕不搬移/改名原文。 --- ## 1.3.1 — 修:update.sh 不再覆蓋客製的 pre-write-guard.sh(issue #3) **修正** - `scripts/update.sh` 原本把 `pre-write-guard.sh` 列在「覆蓋更新」區,**無條件**用模板空殼蓋掉。 但此檔的定位是「使用者手填的 guardrail 客製檔」(CHANGELOG 1.2.0),下游通常已塞滿自己的 enforcement, 且 `update_file` 覆蓋**無 `.bak` 備份**——跑一次 update 等於無聲關掉整套 guardrail(如 Arcrun 的 KNOWN_SDDS 白名單、薄殼原則強制等數百行)。 - 改法(issue 建議方案 1):新增 `keep_with_template()`,把 `pre-write-guard.sh` 移出覆蓋區。 **原檔永不覆蓋**,改把最新模板版另存成 `pre-write-guard.template.sh` 旁邊,更新結尾印出 `diff` 指令供使用者自行採納。 首次安裝(原檔不存在)才會直接抓本體。`install.sh` 路徑本就用 `download_if_missing`(已存在即跳過),無此問題。 --- ## 1.3.0 — vault 偵測(Logseq / Obsidian)+ Cowork 整理 skill **新增** - `install.sh` 在建立 `CLAUDE.md` 前**自動偵測資料夾類型**,把對應的「原始文件來源(raw source)」寫進 `CLAUDE.md`: - `logseq/` → raw source `pages/`、`journals/` - `.obsidian/` → raw source 根目錄下所有 `.md` - 都沒有 → `docs/`(維持原行為) 寫入的宣告是給 AI 讀的指令,對 vault **明令不得搬動/改名/重新分類 `.md`**,整理結果一律只寫進 `.claude/wiki/`, 面對筆記 vault 不會破壞它原本的結構。已有 `CLAUDE.md` 一律不覆蓋,改在結尾列出該補的宣告提醒手動貼。 - `docs/SKILL.md`:給 **claude.ai Cowork** 的 `wiki-cowork-scan` skill。 與 CC 的 `/wiki-init`、`/wiki-capture` 共用同一套規則,用**與 install.sh 一致的偵測邏輯**掃描 `~/Documents` 下所有裝了本模板的資料夾,只讀 raw source、只往 `.claude/wiki/` 增補(不覆蓋、不刪除), 絕不動 raw source、`CLAUDE.md`、`logseq/`、`.obsidian/`、`assets/`。讓整理 wiki 不再只限終端機裡的 CC。 **變更** - README 新增「不只程式碼,也認得 Logseq / Obsidian vault」「Cowork 也能整理 wiki」兩節,並更新目錄樹。 --- ## 1.2.0 — GitHub issue 指引 + pre-write-guard 定位釐清 **新增** - `/issue-handle` slash command(`template/.claude/commands/issue-handle.md`): CC 處理 GitHub issue 的普世指引,三層界線—— ①讀/回/結案自己 repo 的 issue(直接做); ②發 issue 給別的 repo(先問人,不擅自); ③**禁止掛 Actions/cron/webhook 自動輪詢 issue**(會觸發 GitHub 異常偵測、被 rate limit)。 屬共用指引,install/update 不分模組都裝。(issue #1) **變更** - `pre-write-guard.sh` 釐清定位(issue #2):它是「按需手填的空插槽」,不是裝上就生效的警察。 - 檔頭明講:**有 CC 在場時,直接叫 CC 寫貼合的 guard hook 更好**,這個空殼範本只對「手動 DIY」用戶有價值。 - 解決安全錯覺:install.sh / update.sh 安裝它時提示「預設不攔任何東西,要手填+掛 settings 才生效」, 讓用戶不會誤以為裝了就有保護。(hook 執行時維持安靜,避免每次 Write 洗版。) --- ## 1.1.0 — 一鍵更新 **新增** - `scripts/update.sh`:已安裝舊版的人,一行指令更新到最新版。 只覆蓋模板/邏輯檔(hooks、commands、TEMPLATE-*),**完全不碰**使用者資料 (`wiki/status.md`、`mistakes.md`、`decisions-summary.md`、`.wikiignore`、`settings.json`、`CLAUDE.md`)。 會先比對版本、列出新功能、依已裝模組自動偵測該更新什麼,跑完自我更新。 - `template/.claude/VERSION`:版本基準檔,讓「檢查新版」有依據。 - `CHANGELOG.md`(本檔)。 **第一次更新的雞生蛋問題**:舊版本機還沒有 `update.sh`,所以第一次靠 README 那行 `curl` 從遠端抓更新器來跑;跑完它把自己裝進 `scripts/update.sh`,之後直接跑本機的即可。 --- ## 1.0.0 — 模組化安裝(基準版) 此版本之前無 VERSION 檔,以下為依 git 歷史回溯的功能基準。 - `scripts/install.sh` 模組化安裝:`--wiki` / `--sdd` / `--all`,無參數則互動詢問。 - **LLM Wiki**:CC 記憶系統(INDEX / status / mistakes / decisions-summary) + 接關 hook(session-start-recall)+ 對應 slash commands。 - **wiki 機敏防護三層**:`.wikiignore`(檔案層)+行內標記(局部)+ `wiki-secret-scan.sh`(機械兜底攔截)。 - **SDD 強制**:動 code 前必須有 `design.md`,由 `sdd-guard.sh` hook 把關,附 TEMPLATE 範本。 - docs 分類結構(1-vision ~ 6-user)與 ADR 範本。