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 种编程语言和结构化数据格式,提取实体(如函数和类),并通过三阶段匹配过程进行比较:
- 完全相同的 ID 匹配
- 结构哈希(忽略空白和注释,以检测重命名/移动)
- 基于 token 重叠的模糊相似度
它在仓库外部维护一个 SQLite 实体缓存,以保持高性能。对于非常大的 monorepo,还提供可选的云加速服务,提供预构建的代码库图谱。
Who it’s for
- 开发者:希望获得更有意义的 diff 和变更影响分析。
- AI 编码代理:需要精确、token 高效的上下文(通过 MCP 服务器),而不是读取整个文件。
- DevOps / CI 流水线:需要在 Pull Request 中进行实体层级的变更追踪。
Highlights
- 实体层级 diff:识别特定函数、类和方法的修改。
- 影响分析:跨文件依赖图,展示如果修改特定实体会导致哪些破坏。
- MCP 服务器:与 AI 代理(如 Claude Code 或 Cursor)集成,提供
impact、context、diff查询工具。 - 广泛语言支持:支持 32 种语言,包括 Rust、Python、Go、TypeScript 和 Java。
- Git 集成:可通过
sem setup设置为默认的git diff输出。 - GitHub Action:自动在 Pull Request 中添加实体层级变更摘要。