# การรองรับ Python ใน Maguyva: ค้นหาโค้ดและรีแฟกเตอร์ด้วย AI

Canonical source: https://maguyva.ai/th/languages/python

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva รองรับ Python ด้วยการแยกวิเคราะห์ AST และการดึงสัญลักษณ์ ช่วยให้เอเจนต์ AI ตามรอยเดคอเรเตอร์, เมธอดของ self/cls, import และ dependency ข้าม module ในรีโพซิทอรี Python จริง

## ภาพรวมการรองรับ

- ระดับ: รองรับ AST และสัญลักษณ์
- การเขียนโปรแกรม
- นามสกุลไฟล์: .py, .pyi, .pyw
- การแยกวิเคราะห์ AST จริงสำหรับการค้นหาที่รู้จักไวยากรณ์และบริบทเชิงโครงสร้าง
- สัญลักษณ์ที่มีชื่อป้อนข้อมูลให้การค้นหาเชิงความหมายและการอ้างอิงไขว้ การนำทางกราฟจะใช้งานได้เมื่อเปิดใช้การสกัดความสัมพันธ์
- ภาษานี้ส่งสัญลักษณ์และความสัมพันธ์ไปยังการค้นหาแบบรู้บริบทกราฟ โดยประเภทเอดจ์ที่รองรับจะแตกต่างกันตามโครงสร้างเฉพาะของภาษา
- รองรับทั้งการแยกวิเคราะห์ AST และการสกัดสัญลักษณ์

## เหมาะที่สุดสำหรับ

- รีโพของ FastAPI, Django, ดาต้าแพลตฟอร์ม หรือเครื่องมือภายใน ที่โค้ดแอปและสคริปต์ปฏิบัติการอยู่ด้วยกัน
- ทีมที่รีแฟกเตอร์ Python service ที่อยู่มานานซึ่งมีเดคอเรเตอร์, งานเบื้องหลัง และการเชื่อมต่อโดยนัยจำนวนมากอยู่แล้ว
- เวิร์กโฟลว์เอเจนต์ที่ต้องการมากกว่า grep ก่อนเปลี่ยน handler, service, model หรือตัวช่วย

## เวิร์กโฟลว์ของเอเจนต์

- ตามรอย endpoint, task หรือคำสั่ง CLI ผ่านตัวช่วยและ module ที่ใช้ร่วมกันก่อนแก้ไข
- หาว่า service, คลาส หรือฟังก์ชันยูทิลิตี้ถูกสร้างอินสแตนซ์และใช้ซ้ำที่ไหนบ้างทั่วทั้งรีโพ
- เปรียบเทียบการอิมพลีเมนต์ที่อยู่ใกล้เคียงกัน เพื่อให้เอเจนต์แก้ไขแอบสแตรกชันที่ถูกต้อง แทนที่จะแก้ตามข้อความที่คล้ายที่สุด

## จุดที่รีโพ Python มักทำให้เครื่องมือ AI แบบตื้นๆ พัง

Python คือจุดที่เครื่องมือโค้ด AI จำนวนมากดูดีในตอนแรกแล้วเริ่มเดาสุ่มในโปรดักชัน ส่วนที่ยากนั้นคุ้นเคยกันดี: จุดเริ่มต้นที่มีเดคอเรเตอร์, คลาส service, type stub, ตัวช่วย module เล็กๆ อยู่ทุกที่ และเมธอดที่จะเข้าใจได้ก็ต่อเมื่อคุณเชื่อม `self` หรือ `cls` กลับไปยังคลาสที่มันสังกัดอยู่

สำหรับ Python คำถามจริงไม่ใช่ "มันอ่านไฟล์ `.py` ได้ไหม" แต่เป็นว่าเอเจนต์จะยึดโยงกับความจริงได้หรือไม่ ขณะที่มันเคลื่อนจาก endpoint ไปยัง service จากงานเบื้องหลังไปยังตัวช่วย หรือจากชื่อคลาสไปยังเมธอดที่อิมพลีเมนต์พฤติกรรมจริง

## สิ่งที่ Maguyva ดึงออกมาจริงใน Python

Maguyva ถือว่า Python เป็นภาษาเชิงโครงสร้างเต็มรูปแบบ การตั้งค่าครอบคลุม `.py`, `.pyw` และ `.pyi` แมป `decorated_definition` กลับไปยัง function symbol และระบุคลาสกำกับให้การเรียกเมธอด `self` / `cls` โดยอ้างอิงคลาสที่ครอบอยู่ สิ่งนี้สำคัญเพราะนี่คือจุดที่รีโพซิทอรี Python เริ่มดูชัดเจนสำหรับมนุษย์ แต่ดูพร่ามัวสำหรับ LLM

นอกจากนี้ยังกรองสัญญาณรบกวนจากไลบรารีมาตรฐานออกจากการดึงความสัมพันธ์จำนวนมาก หมายความว่าการเรียกรันไทม์ทั่วไปจาก module อย่าง `pathlib`, `typing` หรือ `logging` มีโอกาสน้อยลงที่จะกลบความสัมพันธ์เฉพาะของรีโพซิทอรีที่คุณสนใจจริงๆ

## เวิร์กโฟลว์ MCP ที่มีประโยชน์สำหรับรีโพของ Python

เวิร์กโฟลว์ที่ใช้ได้จริงที่สุดคือ:

- เริ่มด้วย `intelligent_search` สำหรับคำถามระดับพฤติกรรม เช่น "ลอจิกการลองใหม่รอบการ sync invoice" หรือ "การตรวจสอบสิทธิ์ใน endpoint การเรียกเก็บเงิน"
- สลับไปใช้ `find_symbol` เมื่อคุณรู้ชื่อคลาสหรือ function ที่สนใจแล้ว
- ใช้ `dependency_search` พร้อมการไล่แบบขาเข้า ก่อนรีแฟกเตอร์ service ที่ใช้ร่วมกัน, ตัวช่วย หรือคลาสฐาน

รูปแบบนี้ดีกว่าการขอให้เอเจนต์ "อัปเดตโฟลว์การเรียกเก็บเงิน" จากศูนย์ มันช่วยให้เอเจนต์สร้างแผนผังโค้ดก่อน แล้วค่อยเปลี่ยนโค้ดทีหลัง

## เมื่อใดที่หน้านี้มีประโยชน์

หน้านี้เหมาะกับรีโพ Python ที่มีอายุและความซับซ้อนอยู่แล้ว: โค้ด service, job, สคริปต์, type ที่สร้างขึ้นโดยอัตโนมัติ และ config โดยรอบ หากการเปรียบเทียบหลักของคุณคือข้าม web โมโนรีโพแบบหลายภาษา ให้อ่าน [คู่มือ TypeScript](/th/languages/typescript) ด้วย หากต้องการแค่ตาราง compatibility เต็มรูปแบบ ให้ใช้ [compatibility](/th/docs/compatibility)

## รายละเอียดเอนจิน

- นิยามที่มีเดคอเรเตอร์ยังคงถูกมองว่าเป็นฟังก์ชัน ดังนั้น วิว และทาสก์ที่มีเดคอเรเตอร์จึงยังค้นหาได้ในฐานะสัญลักษณ์
- การเรียกเมธอดของ `self` และ `cls` จะถูกอ้างอิงกลับไปยังคลาสที่ครอบอยู่ ซึ่งช่วยให้กราฟยังมีประโยชน์ในโค้ดบริการที่เน้นคลาสหนักๆ
- ตัวปรับมาตรฐานสำหรับ import การเรียก และสัญลักษณ์ถูกเปิดใช้งาน ในขณะที่สัญญาณรบกวนทั่วไปจาก stdlib เช่น `pathlib.*`, `typing.*`, และ `logging.*` จะถูกกรองออกจากความสัมพันธ์

## จุดเริ่มต้น MCP ที่มีประโยชน์

- `intelligent_search`: เริ่มด้วยคำค้นหาเชิงแนวคิด เช่น “ลอจิกการลองใหม่รอบๆ invoice sync” และตั้งค่า `language_filter="python"` ถ้ารีโพมีหลายภาษาปนกัน
- `find_symbol`: ใช้เมื่อคุณรู้ชื่อคลาสหรือฟังก์ชัน และต้องการดูนิยามพร้อมการอ้างอิงก่อนแก้ไข
- `dependency_search`: ใช้ทิศทาง incoming ก่อนรีแฟกเตอร์เซอร์วิสหรือฟังก์ชันช่วยเหลือที่ใช้ร่วมกัน เพื่อดูว่าอะไรพึ่งพามันอยู่บ้าง
