sem - เครื่องมือจัดการเวอร์ชันเชิงความหมายที่เพิ่มการติดตามการเปลี่ยนแปลงระดับฟังก์ชัน/คลาสบน Git
(github.com/Ataraxy-Labs)- เปรียบเทียบเป็นเอนทิตีของโค้ดแทนบรรทัด เพื่อแสดงว่าฟังก์ชัน/เมธอด/คลาสใดถูกเพิ่ม แก้ไข ลบ ย้าย หรือเปลี่ยนชื่อ
- "มีการเปลี่ยนแปลงที่บรรทัด x~y" → "ฟังก์ชัน
blahถูกแก้ไข"
- "มีการเปลี่ยนแปลงที่บรรทัด x~y" → "ฟังก์ชัน
- ทำงานได้กับ Git repository ใดก็ได้ โดยไม่ต้องตั้งค่า และยังสามารถเปรียบเทียบไฟล์ใดๆ นอก Git ได้ด้วย
- แคชเอนทิตีที่เก็บใน SQLite จะถูกจัดเก็บไว้ในไดเรกทอรีแคชของระบบปฏิบัติการที่อยู่นอก repository จึง ไม่ทำให้ working tree ปนเปื้อน
- แยกวิเคราะห์โค้ดด้วย tree-sitter และเชื่อมโยงโค้ดก่อน/หลังการเปลี่ยนแปลงตามลำดับ ID ของเอนทิตี → แฮชโครงสร้าง AST → ความคล้ายของโทเคนเกิน 80% เพื่อตรวจจับการเปลี่ยนชื่อและการย้าย
-
คำสั่งที่รองรับ
sem diff: เปรียบเทียบ working tree/staging/commit/ช่วงของ commit/ไฟล์ใดๆ สองไฟล์ พร้อมรองรับเอาต์พุตแบบข้อความทั่วไป/Markdown/JSONsem impact: ค้นหาโค้ดที่พึ่งพา ผู้เรียกใช้ และการทดสอบที่จะได้รับผลกระทบเมื่อฟังก์ชันหนึ่งถูกแก้ไขsem blame: แสดงผู้แก้ไขล่าสุดระดับเอนทิตีของฟังก์ชัน/คลาส/เมธอดsem log: ติดตามผ่าน git history ว่าเอนทิตีหนึ่งเปลี่ยนแปลงมาอย่างไร- หากไม่ระบุเอนทิตี จะวิเคราะห์ hotspot (สิ่งที่ถูกเปลี่ยนบ่อย)/co-change pairs (คู่ที่มักถูกเปลี่ยนพร้อมกันซ้ำๆ) ใน repository ("ถ้าแตะอันนี้ อย่าลืมอันนี้ด้วย")
sem entities: แสดงเอนทิตีทั้งหมดภายใต้โฟลเดอร์ปัจจุบันsem context: จัดเตรียมเฉพาะโค้ดโดยรอบที่เอเจนต์ต้องใช้ ให้พอดีกับงบประมาณโทเคนsem setup: เมื่อรันแล้วgit diffเดิมจะเปลี่ยนเป็นเอาต์พุตระดับเอนทิตี และยังติดตั้ง pre-commit hook ที่แสดงขอบเขตผลกระทบของการเปลี่ยนแปลงที่ staged ไว้ด้วย- บน macOS และ Linux จะเชื่อมต่อ กราฟ dependency แบบ resident และ context hook ตอนเริ่มพรอมป์ต์ ให้กับ Claude Code เพื่อลดต้นทุนจากการต้องวิเคราะห์ repository ใหม่ทุกครั้งหรือไล่หาโค้ดเอง
sem mcp: ให้diff,impact,context,entities,blame,logเป็นเครื่องมือ MCP เพื่อให้ coding agent ดึงเฉพาะฟังก์ชันและความสัมพันธ์ของ dependency ที่ต้องใช้ แทนการอ่านทั้งไฟล์
- เมื่อเพิ่ม GitHub Action จะอัปเดต คอมเมนต์ปักหมุดเพียงอันเดียว ในทุก PR ด้วยรายการฟังก์ชัน/คลาส/เมธอดที่เปลี่ยนไป และยังแยกแยะ PR ที่เปลี่ยนแค่รูปแบบหรือคอมเมนต์ได้
- รองรับ 32 ภาษา รวมถึง TypeScript, Python, Go, Rust, Java, Swift, SQL, C/C++ เป็นต้น และรองรับ JSON/YAML/TOML/CSV/Markdown
- ไฟล์ที่ไม่รองรับจะถูกจัดการด้วย diff แบบแบ่งเป็นชังก์
- ไลเซนส์: MIT OR Apache-2.0
ยังไม่มีความคิดเห็น