• เปรียบเทียบเป็นเอนทิตีของโค้ดแทนบรรทัด เพื่อแสดงว่าฟังก์ชัน/เมธอด/คลาสใดถูกเพิ่ม แก้ไข ลบ ย้าย หรือเปลี่ยนชื่อ
    • "มีการเปลี่ยนแปลงที่บรรทัด x~y" → "ฟังก์ชัน blah ถูกแก้ไข"
  • ทำงานได้กับ Git repository ใดก็ได้ โดยไม่ต้องตั้งค่า และยังสามารถเปรียบเทียบไฟล์ใดๆ นอก Git ได้ด้วย
  • แคชเอนทิตีที่เก็บใน SQLite จะถูกจัดเก็บไว้ในไดเรกทอรีแคชของระบบปฏิบัติการที่อยู่นอก repository จึง ไม่ทำให้ working tree ปนเปื้อน
  • แยกวิเคราะห์โค้ดด้วย tree-sitter และเชื่อมโยงโค้ดก่อน/หลังการเปลี่ยนแปลงตามลำดับ ID ของเอนทิตี → แฮชโครงสร้าง AST → ความคล้ายของโทเคนเกิน 80% เพื่อตรวจจับการเปลี่ยนชื่อและการย้าย
  • คำสั่งที่รองรับ

    • sem diff: เปรียบเทียบ working tree/staging/commit/ช่วงของ commit/ไฟล์ใดๆ สองไฟล์ พร้อมรองรับเอาต์พุตแบบข้อความทั่วไป/Markdown/JSON
    • sem 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น