Ataraxy-Labs/sem

Semantic version control => entity-level diffs, blame, and impact analysis on top of git. 28 languages via tree-sitter. Built for coding agents.

What it solves

sem 是一款建構於 Git 之上的語意化版本控制工具,將傳統的行為基礎 diff 取代為實體層級的變更。使用者不再只看到哪些行被修改,而是直接看到哪些函式、類別或方法被修改、重新命名或搬移,讓人更容易理解程式碼庫的實際邏輯變動。

How it works

此工具使用 tree‑sitter 解析 32 種程式語言與結構化資料格式,抽取實體(如函式與類別),並透過三階段比對流程進行比較:

  1. 完全相同的 ID 匹配
  2. 結構雜湊(忽略空白與註解,以偵測重新命名/搬移)
  3. 基於 token 重疊的模糊相似度

它會在儲存庫外部維護一個 SQLite 實體快取,以保持高效能。對於極大型的 monorepo,還提供可選的雲端加速服務,供應預先建好的程式碼圖譜。

Who it’s for

  • 開發者:想要更有意義的 diff 與變更影響分析。
  • AI 程式編寫代理:需要精確且 token 效率高的上下文(透過 MCP 伺服器),而非讀取整個檔案。
  • DevOps / CI 流程:需要在 Pull Request 中追蹤實體層級的變更。

Highlights

  • 實體層級 diff:辨識特定函式、類別與方法的修改。
  • 影響分析:跨檔案依賴圖,顯示若修改特定實體會造成哪些破壞。
  • MCP 伺服器:與 AI 代理(如 Claude Code 或 Cursor)整合,提供 impactcontextdiff 查詢工具。
  • 廣泛語言支援:支援 32 種語言,包括 Rust、Python、Go、TypeScript 與 Java。
  • Git 整合:可透過 sem setup 設為預設的 git diff 輸出。
  • GitHub Action:自動在 Pull Request 中加入實體層級變更摘要。