跳到主內容

Theme / v0.12.1

Codebase Memory

程式碼記憶與知識圖譜 MCP

Changelog

版本更新紀錄

收錄 Codebase Memory 的版本變遷軌跡。每條紀錄以舊值→新值呈現,舊值以紅線劃掉但保留可見,方便對照改動軌跡。

當前記錄版本

v0.12.1

查看上游所有 Release ↗
  1. v0.12.1

    已同步2026-10-18
    • 2026-11-06 查核:上游最新 release 仍為 v0.12.1(2026-10-16 發布),其後無新版本。
    • 版本定位:v0.12.0→v0.12.1(2026-10-16 發布,單一 release;官方定位:"Every install path works again, and Helm charts join the graph.")。兩大主軸:修復 v0.12.0 的各種安裝路徑,以及 Helm charts 連入圖譜。
    • 安裝路徑全修復:npm i、pnpm add、pip install 與 Go wrapper 在任何平台都裝不了 v0.12.0——每個 wrapper 拒絕超過 256 MiB 的 archive 成員,而 v0.12.0 的每個 binary 都是 331–335 MB;三個 wrapper 的大小限制已移除(仍先對 release 的 checksums.txt 驗證、內容必須與預期完全一致、binary 必須回應 --version,#2657)。Homebrew formula 原卡在 0.10.3,且 Linux 裝的是需 glibc 2.38 的 dynamic build(Ubuntu 22.04、Debian 12、RHEL 9 都沒有)——現在安裝當前版,Linux 改裝任何發行版都能跑的 static -portable build。go install [email protected] 從未可用、@latest 裝到舊版——releases 現在帶 pkg/go/vX.Y.Z tags。npm 的 next dist-tag 不再指向舊 RC;文件移除從未發布的 winget 與 Chocolatey,補列 Windows arm64。
    • Install-path smoke tests:每個 PR 與每個 release 現在都以使用者套件管理器的方式,對真實 release archives 安裝 npm、PyPI 與 Go wrappers 並執行裝出的 binary——安裝不過關的 release 不再發布。
    • Helm charts 連入圖譜(#2663):chart 過去是孤立節點,現在 HelmRelease → Chart → Deployment → Image 是一條可走訪路徑:chart → 它 templates/ 渲染出的每個 Kubernetes object(DEPLOYS,via: chart;subchart 的 objects 屬於 subchart);values.yaml 與 values-<x>.yaml → chart(CONFIGURES);chart → 其 objects 字面指名的每個 image(DEPLOYS,ref: image;templated image 不指名)。在 20 個基礎設施 repos 實測:無出邊的 charts 從 238/260 降到 109,新增 2,511 條 chart-to-object 邊,其他邊完全相同。
    • Image 保留程式碼寫法的 registry:無 registry host 的 image 過去被存到發明的 docker.io/library/...(#2654)——Docker Hub 只是 Docker 的預設,Podman/CRI-O 走搜尋清單、mirror 會改寫、本地 build 可能不存在任何 registry。image 現在保留原寫法,無 host 時標 registry: unknown;FROM nginx 與 image: docker.io/library/nginx 現在是兩個節點。
    • 升級注意:image identities 改變,升級後每個既有專案的第一次索引是一次完整重建(一次);無 registry 的 image 節點改帶 registry: unknown 與原寫法名稱。
    上游 Release Notes ↗
  2. v0.12.0

    舊版本2026-10-16
    • 版本定位:v0.11.0→v0.12.0(2026-10-15 發布,單一 release;官方定位:the biggest release of codebase-memory-mcp yet: 231 merged pull requests since v0.11.0, 40 of them from the community)。四大主軸:CBM Lens Beta、文件進入圖譜、Smart CI(圖譜挑測試)、基礎設施即程式碼進入圖譜。
    • CBM Lens Beta:給人的 code graph 介面(#2068):內建於 binary(codebase-memory-mcp --ui=true --port=9749),只聽 loopback;把原始碼、圖譜、架構、索引覆蓋率與瀏覽器本地 assistant 並排顯示,每個事實都標註出處。功能含 Explore(跟隨當前檔案或標記的原始碼)、Galaxy(搜尋節點並展開關係)、Architecture、Coverage、ADR 編輯與本地 chat(推論在瀏覽器內執行,模型權重從 Hugging Face 下載)。@BernhardJackiewicz 以此作品加入專案並擔任 UI subsystem owner。
    • 文件加入圖譜(#2550、#2551、#2593):doc comments、Markdown、reStructuredText、AsciiDoc 與 PDF 文件、ADR、圖表與 OpenAPI specs 成為圖的一部分,各自連到所談到的函式、型別與檔案——agent 可從文件走到的確切程式碼,也可從函式走回每個解釋它的頁面。連結從嚴:只有指名恰好一個定義的引用才成為邊;未達準確率門檻的連結家族只計數與回報,不猜進圖譜。ADR 檔成為帶狀態、日期、決策者的 ADR 節點(Supersedes ADR-3 產生 SUPERSEDES 邊);Mermaid、PlantUML、Graphviz、D2、draw.io 與 Excalidraw 圖表成為 Diagram/DiagramElement 節點;每個 OpenAPI operation 成為與程式碼註冊路由同一身分的 Route 節點。
    • Smart CI:圖譜挑測試(#2458):detect_changes 可回報一個變更會影響哪些測試——從 diff 播種圖譜、走訪所有依賴變更程式碼的節點、命名路徑終點的測試與其原因;證據不足或可疑時回答「全部都跑」並說明原因,絕不靜默縮小範圍。codebase-memory-mcp 自身的 CI 是第一個使用者(PR 只跑其變更觸及的 test lanes)。新增 edge_types、fixpoint、via walk 參數;test-impact publish|select 打包 frozen graph 與 per-test coverage map 供團隊使用。
    • 基礎設施即程式碼(#2597):Kubernetes manifests、Helm charts、Flux 與 Argo CD、Compose 檔、Dockerfiles 與部署它們的 scripts、Makefiles、CI jobs 連結起來——trace_path 的 run 模式可從 Service 走到 workload、Image、Dockerfile 到容器執行的程式;另有 deploy 與 topology 模式。
    • 圖譜本身的強化:C typedef、macro 與 enumerator 有自己的身分;process launches 成為 SPAWNS 邊(約 30 種語言);每個 #if branch/#[cfg]/Go build tag 只寫一次的定義合為單一節點;C#、C++、TypeScript、Python、PHP、Rust 與 Go 的解析修正。長索引可非同步:index_repository(async: true) 在 daemon 啟動索引後立即交回控制權(#2357)。
    • 升級注意(Breaking):索引格式 1→2,升級後每個專案第一次索引是完整重建(一次);部分 qualified name 改變(C macro 成為 <module>.<NAME>#macro、Rust #[cfg] twins 合為一節點等),需更新儲存的查詢;SPAWNS 取代 program launch 的 CALLS;Windows 的 search_code 改為與 macOS/Linux 一致(大小寫敏感、ERE、跳過 binary);uninstall -y 保留專案索引(加 --delete-indexes 才刪);detect_changes 預設 base 改為 origin/HEAD。
    • 既有使用者影響:第一個索引是 full rebuild(大 repo 需規劃時間,舊圖在重建前仍可回答);Terraform/Ansible 檔變更觸發完整重新索引;cross-repo linking 需重跑 index_repository(mode="cross-repo-intelligence");舊 graph UI 由 CBM Lens Beta 取代(一樣以 --ui=true 啟動)。
    上游 Release Notes ↗
  3. v0.11.0

    舊版本2026-09-15
    • 2026-10-14 查核:上游最新 release 仍為 v0.11.0(2026-09-15 發布),其後無新版本。
    • 2026-10-13 查核:上游最新 release 仍為 v0.11.0(2026-09-15 發布),其後無新版本。
    • 版本定位:v0.10.8→v0.11.0。自 v0.10.8 起合併 171 個 PR(9 個是依賴升級),其中 76 個來自維護者以外的貢獻者。升上 minor 的原因有二:索引格式遷移(File 節點 qualified name 保留副檔名)與工具輸出契約改變(CLI/MCP 回應預設精簡)。存在理由是安裝、解除安裝、daemon 啟動可靠性與記憶體:若 cbm 曾拒絕安裝、無法乾淨解除安裝、啟動死亡不說原因,或在大 repo 上爆記憶體——這版就是為你而生的。
    • 升級後第一次執行會重建索引一次(#1104,@LA-10):File 節點的 qualified name 現在保留副檔名——同目錄的 auth.py 與 auth.ts 終於是不同節點,不再碰撞成單一名稱。這移動了 on-disk 索引格式邊界;cbm 以 PRAGMA user_version 蓋格式戳記,舊格式索引會走一次完整 reindex(ADR 與索引 metadata 會保留)。第一次 index_repository 會像冷索引一樣久,之後恢復增量;首次可能出現一行 orphan_removed(#2111 清播舊 worker 留下的 staging 檔),同樣是一次性且無害。
    • 精簡但無損的輸出(#1597):CLI 與 MCP 回應預設精簡——沒有移除任何工具、沒有任何欄位變得查不到、答案不會更難找;變的是營運細節移到明確旗標與參數後面,預設回應只帶圖譜答案本身。預設保留:graph rows、node identities、精確總數(非「約 N」)、截斷狀態、被省略內容的 continuation cursors。改為 opt-in:diagnostics、evidence columns、進度雜訊與 JSON 輸出。
    • 語意分頁與 quiet CLI:max_output_tokens 以確定性、模型中立的方式實現——在完整語意單元邊界切分,不在 record 中間切位元組,且每個省略項都可獨立分頁(14c229b1);cursor 綁定查詢參數、結果狀態與索引世代,stale cursor 會 fail closed 而非默默翻到不同快照;新增明確的 quiet CLI mode 供腳本使用(4a9fcd97)。實測同一 MCP tools/list 序列化 fixture 從 23,075 降到 15,071 bytes(−34.7%),cl100k/o200k token 各降 −31.4%/−30.7%。
    • 移除 / Breaking Change:無宣告的工具或欄位移除;「升 minor」反映的是索引格式戳記變更與輸出契約改變,兩者都是向上相容(舊索引自動重建一次、詳細輸出改 opt-in)。
    • 既有使用者影響:升級後第一次索引會久(大 monorepo 明顯),之後恢復正常;若你的腳本解析 CLI/MCP 的詳細輸出欄位,需加上對應的 opt-in 旗標。
    • 學習重點:「節點身分含副檔名」示範了 identity 設計的運作——省略副檔名看似精簡,卻讓同目錄同名異語言檔案互相碰撞並靜默丟邊;「精簡但無損」的輸出契約則是 token 經濟學的好教材——省 34% 不是刪資訊,是把營運雜訊移到明確要求的後面。
    上游 Release Notes ↗
  4. v0.10.8

    舊版本2026-08-19
    • v0.10.4→v0.10.8:version 欄位更新為 v0.10.8;合併收錄 v0.10.5(安裝與啟動修復)、v0.10.6(0.10.x 索引效能回歸修復)與 v0.10.8(19 個社群 PR 修復批次)三個正式版,不需索引、快取或設定遷移。上游曾以錯誤 tag 0.10.7(無 v 前綴)發布 prerelease,npm/PyPI 安裝器無法解析該 tag,已由 v0.10.8 以相同內容取代,本站不採用該 prerelease。
    • 0.10.x 索引效能回歸全面修復(v0.10.6,#1669):自 0.10.0 起大型 repo 索引持續變慢——Java 慢 6 倍、C# 2.6 倍、TypeScript 2 倍——根因是多處 per-file 工作隨整個 corpus 縮放;修復後 elasticsearch (Java) 477 秒 → 86 秒、dotnet/runtime (C#) 1211 秒 → 450 秒且比 0.9.0 多 48% edges、TypeScript repo 37 秒 → 約 24 秒;Linux 記憶體暴增一併修復(#1654,v0.10.4 曾在索引時把 36 GB 機器 OOM);CI 新增 complexity guard 防止再度回歸,CBM_PROFILE=1 可印各 pipeline pass 耗時。
    • 安裝與設定寫入修復(v0.10.5/v0.10.6):Windows installer 暫存目錄改為 owner-only ACL,不再被自家 binary 以 acl-grants-cross-account-mutation 拒絕;Hermes、goose、OpenCode、Codex 設定中的四類 YAML 建構(空 flow collections、行首 block sequences、反斜線續行字串、中綴 apostrophe)全部接受;含 UTF-8 BOM 的設定檔可正常編輯;cbm 自身寫入、後經 client 加註欄位(如 "enabled": true)的 MCP entry 不再被誤判為外來而拒改,修復時保留註解與 client 欄位;uninstall --help 不再真的執行解除安裝(#1038)。
    • Windows DACL 不再反覆重寫(v0.10.6):runtime 目錄僅在非 owner-only 狀態時重蓋安全描述元,受 pre-v0.10.3 空 DACL 破壞的目錄偵測後原位修復(#1416/#1601/#1620);CBM_RUNTIME_DIR 在正式 build 可搬移 daemon rendezvous 目錄,並轉發至 Codex 產生的設定(#1664)。
    • Cypher 聚合不再漏算(v0.10.8,#1196):unlabeled scan 在 max_rows 前提前截斷(#1323)與 relationship-expansion buffer 內部上限(#1698)兩處修復後,count()/collect() 可見完整 match set,max_rows 僅限制回傳列數,與文件語意一致。
    • Graph 準確度(v0.10.8):Python aliased from-import(如 from .gate import execute as bridge_execute)正確產生指向真實定義的 CALLS edge,django benchmark 找回 26 條 INHERITS 與 42 條 OVERRIDE edges(#1371);search_graph 不再回傳僅由 similarity edge 支撐的 semantic-only ghost 結果(#1319);list-valued 欄位不再折疊為第一個元素(#1325)。
    • Windows 與平台支援(v0.10.8):search_code 管線強制 UTF-8,非 ASCII(CJK 等)內容不再變成 ?(#1704),並支援 UTF-8 輸出路徑與 context 欄位(#1253);查詢可取消、不殘留孤兒 scan(#1608);新增 FreeBSD 支援(#1467);list_projects 支援 offset/limit 分頁(#1181);無副檔名腳本以 shebang 偵測語言(#1203)。
    • Release pipeline 強化(v0.10.8):gate 取消即 fail closed,逾時 gate 不再靜默跳過測試矩陣(#1719);preflight 拒絕無 v 前綴的版本輸入,杜絕 0.10.7 事件重演。
    上游 Release Notes ↗
  5. v0.10.4

    舊版本2026-08-14
    • version 欄位更新為 v0.10.4;install-and-diagnostics release,修正 v0.10.3 在 Windows 或套件管理員環境拒絕安裝/啟動的問題,不需索引、快取或設定遷移。
    • Windows 系統管理員帳號可正常安裝與啟動(@spam0115、@gotspatel,#1416):先前 installer 以 token 的 user SID 比對檔案 owner,但 Windows 對新建立物件蓋的是 owner SID(Administrators 群組預設為 BUILTIN\Administrators),導致自身建立的暫存檔被拒用;現在同時接受 Windows 實際蓋上的 owner SID,檔案真的屬於其他帳號時仍會拒絕。
    • 套件管理員安裝不再被覆寫(@SC-CTS):mise、Homebrew、nix、asdf、cargo 管理的 binary 不再被 install 複製一份到 ~/.local/bin,也不改 shell rc;update 會誠實拒絕並指名改用 mise upgrade/brew upgrade 等對應指令。
    • install --clients 可指定要設定的客戶端(@PsyTech-Rob):不再對每個偵測到的 client 都寫 MCP config、agents、skills 與 hooks;不帶參數的 --clients 會列出所有支援的 token。
    • 錯誤訊息與診斷改進(@listepo、@PsyTech-Rob):啟用拒絕改為指名目錄與觸發規則;client-path 啟動失敗改以 JSON-RPC error 回傳原因,不再只寫到 stderr 造成「transport closed unexpectedly」;ui_enabled 與 ui_port 成為 config set/config list 支援的第一級設定鍵。
    • Codex 重複安裝不再破壞設定(@astandrik):重複的 inline hook 指派會被併回 canonical block,外部 hook 保留,曖昧 TOML 直接拒絕修改;OpenCode 安裝已修正寫入 opencode.json/opencode.jsonc 的目標選擇,但寫入本身在 v0.10.4 仍失敗(追蹤 #1630)。
    • 查詢正確性與平台支援(@SEPURI-SAI-KRISHNA、@PR9000):OPTIONAL MATCH 在 hop buffer 飽和時不再丟棄 no-match 列;FreeBSD 可正確解析自身執行檔路徑。
    • 安全與可靠性:release pipeline 在執行前 pin 並驗證下載的外部工具(#1245);子程序 spawn 在核心回 EAGAIN 時改為指數 backoff(最長約 0.5 秒)後重試,機器真正耗盡時仍快速失敗。
    上游 Release Notes ↗
  6. v0.10.3

    舊版本2026-08-13
    • version 欄位更新為 v0.10.3;fixes-only 版本,收錄 6 個社群 PR 與 2 個 v0.10.2 回歸修復,不需索引、快取或設定遷移。
    • 並行實例不再互相 quarantine(#1206,@LynxBay):兩個 cbm 實例競爭同一專案時,輸者曾把健康資料庫誤判為損毀並 quarantine 重建。完整性檢查改為三向判定——僅確認損毀才 quarantine、lock race 回報「專案忙碌」並保留資料、深層 quick_check 抓出 shallow 探測漏掉的 page-level 損壞(#1037)。
    • Graph 決定性兩處修正(@Studnicky):同一 logical edge 重複產生時改由 total order 合併(高信心勝出、平手鍵決定性、結果與到達順序無關);CONFIGURES 候選收集改以純內容鍵排序後再套上限,不再隨 worker merge 順序漂移。
    • Windows daemon 空 ACL(#1351,@Kiborgik):受保護 DACL 加非繼承 ACE 使子檔案繼承不到任何權限、連擁有者都無法讀取;目錄改為可繼承的 owner-only ACE,安全 posture 不變且檔案可用,並以 SID 識別帳號修掉「機器名等同使用者名」的空 principal 陷阱。
    • 兩個 v0.10.2 回歸修復:update --ui 恢復接受舊旗標(#1544,@ehendrix23,旗標已無作用但不再 hard error);產生的 Pi 擴充改為 default-export factory,不再讓載入失敗拖垮所有 pi 指令(#1550,@musichen)。
    • trace_path 結構化輸出不再丟失證據(#1542,@asemraza):format: "json" 原本悄悄丟掉 strategy 與 confidence 欄位,現與 tree 格式語意一致、缺值以 null 呈現。
    • 子程序 spawn 容忍忙碌機器:核心回傳 EAGAIN(程序表暫滿)時改為短暫重試,真正的錯誤(缺二進位、權限)仍立即失敗、語意不變。
    • 安裝與啟用拒絕訊號修正(#1537,@listepo):daemon 原本因祖先目錄 group-writable(WSL2 預設 0775)而永久拒絕、無從關閉也無從重開,現僅拒絕 world-writable 祖先、私目錄仍強制 owner-only;錯誤訊息不再虛構 ENOENT,改為指名目錄與觸發規則;啟用防護也把「無程序運行」與「無法停止程序」分為兩則訊息。
    • 其他修正:Codex 在 CBM_CACHE_DIR 下看不到工具的設定轉發(#1562,@anton-matosov);skill YAML 在嚴格 parser 下因未引用冒號載入失敗(#1554,@xezzon);search_code 把負 limit 回顯為結果數(#1511);OpenCode 安裝寫錯檔名(.json vs .jsonc,#1560,@iandol);release 封包解壓前驗證成員集並拒絕 symlink(#1510)。
    上游 Release Notes ↗
  7. v0.10.2

    舊版本2026-08-10
    • version 欄位更新為 v0.10.2;0.9.x 更新器與 npx 暫存安裝的連線問題已修正,且不需索引、快取或設定遷移。
    • Robustness + platform-support release(自 v0.8.1 以來):First-class Windows 支援(含非 ASCII path、native windows-arm64 build)、indexing 效能與記憶體安全、跨多語言抽取準確度修正、Graph UI 改進。
    • Indexing:kernel-scale campaign 減少 ~61% 索引時間且輸出 deterministic;新增 crash/hang supervisor 會 quarantine 單一壞檔並繼續索引其餘檔案,而非全部 abort。
    • Graph UI:node budget 上限 10M 節點(含 scaled rendering 與 contrast controls)、dead-code filtering、node code preview、GitHub deep-links、URL routing、離線 label rendering(不抓 remote font)。
    • 上游已發佈 pre-release v0.9.1-rc.1(prerelease: true,2026-07-30 發布,body 約 30KB);目前 version 暫不跟 pre-release,待正式 v0.9.1 發布再升版。
    • 上游 main 分支最新 commit 為 2026-08-09T00:43:24Z,屬持續 commit、無新正式 release。
    上游 Release Notes ↗

圖例

  • 當前版本 本站現在記錄的版本
  • 舊版本 已被取代,保留作歷史對照
  • 已同步 與上游 release 對齊
  • 僅上游變動 上游 main 有 commit,但未發佈新版