sem - Công cụ quản lý phiên bản ngữ nghĩa bổ sung theo dõi thay đổi theo đơn vị hàm/lớp bên trên Git
(github.com/Ataraxy-Labs)- So sánh các thực thể mã thay vì từng dòng, cho biết hàm/phương thức/lớp nào đã được thêm/sửa/xóa/di chuyển/đổi tên
- "dòng x~y đã thay đổi" → "hàm
blahđã thay đổi"
- "dòng x~y đã thay đổi" → "hàm
- Hoạt động không cần cấu hình trong bất kỳ repo Git nào, và cũng có thể so sánh các tệp tùy ý bên ngoài Git
- Bộ nhớ đệm thực thể lưu trong SQLite được đặt ở thư mục cache của OS bên ngoài kho lưu trữ, nên không làm bẩn working tree
- Phân tích mã bằng tree-sitter, rồi liên kết mã trước/sau thay đổi theo thứ tự ID thực thể → hash cấu trúc AST → độ tương đồng token trên 80% để phát hiện đổi tên và di chuyển
-
Các lệnh được hỗ trợ
sem diff: so sánh working tree/staging/commit/khoảng commit/hai tệp bất kỳ, hỗ trợ đầu ra văn bản thường/Markdown/JSONsem impact: tìm mã phụ thuộc/caller/test bị ảnh hưởng khi một hàm cụ thể thay đổisem blame: hiển thị người sửa cuối cùng ở cấp thực thể của hàm/lớp/phương thứcsem log: theo dõi một thực thể đã thay đổi như thế nào qua git history- Nếu không chỉ định thực thể, phân tích hotspot (những phần thay đổi nhiều)/co-change pairs (các cặp thường xuyên thay đổi cùng nhau) trong kho lưu trữ ("đụng vào một cái thì đừng quên cái này")
sem entities: hiển thị tất cả thực thể bên dưới thư mục hiện tạisem context: dựng chỉ phần mã xung quanh cần thiết cho agent phù hợp với ngân sách tokensem setup: khi chạy,git diffhiện có sẽ chuyển sang đầu ra theo đơn vị thực thể, đồng thời cài đặt pre-commit hook hiển thị phạm vi ảnh hưởng của các thay đổi staged- Trên macOS và Linux, liên kết với Claude Code một đồ thị phụ thuộc thường trú và context hook khi bắt đầu prompt, giúp giảm chi phí phải phân tích lại kho lưu trữ hoặc đi tìm mã mỗi lần
sem mcp: cung cấpdiff,impact,context,entities,blame,logdưới dạng công cụ MCP để coding agent chỉ truy vấn các hàm và quan hệ phụ thuộc cần thiết thay vì toàn bộ tệp
- Khi thêm GitHub Action, mỗi PR sẽ cập nhật các hàm/lớp/phương thức đã thay đổi vào một bình luận cố định, đồng thời phân biệt cả PR chỉ thay đổi định dạng/chú thích
- Hỗ trợ 32 ngôn ngữ gồm TypeScript, Python, Go, Rust, Java, Swift, SQL, C/C++... cùng JSON/YAML/TOML/CSV/Markdown
- Các tệp chưa được hỗ trợ sẽ được xử lý bằng diff theo chunk
- Giấy phép: MIT OR Apache-2.0
Chưa có bình luận nào.