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 中添加实体层级变更摘要。