ข้ามไปที่เนื้อหา

สำหรับผู้ใช้ Cursor

Cursor แก้ไขไฟล์
Maguyva มองเห็นทั้งรีโพ

Cursor คือเอดิเตอร์ แต่ในโมโนรีโพ เอเจนต์ก็ยังต้องมีแผนที่ว่าไฟล์ไหนสำคัญ Maguyva ทำดัชนีโค้ดเบสของคุณและส่งข้อมูลกลับผ่าน MCP (เชิงความหมาย เชิง AST เชิงกราฟ และเชิงข้อความ) ทำให้คำถาม “auth ทำงานตรงไหน” ได้คำตอบเป็นโฟลว์การยืนยันตัวตนจริง ไม่ใช่ test stub เจ็ดตัว

แผน Free: รีโพซิทอรี 3 แห่ง, บรรทัดที่ทำดัชนีสูงสุด 50,000 บรรทัด ไม่ต้องใช้บัตร

Cursor แก้ไขสิ่งที่คุณชี้ไป Maguyva บอกเอเจนต์ว่าควรชี้ไปที่ไฟล์ไหน

แต่ละชั้นทำหน้าที่อะไร

สี่ส่วนประกอบ แต่ละส่วนมีหน้าที่ของตัวเอง

// เอดิเตอร์

Cursor

ที่ที่คุณเขียนโค้ดจริงๆ

// บริบทแบบแมนวล

@ mentions + pins

บริบทแบบแมนวลเวิร์กดี จนกว่ารีโพจะใหญ่ขึ้น

// โค้ดเบส

Maguyva

ข้อมูลจริงของโค้ดเบสแบบอัตโนมัติผ่าน MCP

// ใครจ่ายเงิน

เวิร์กสเปซ ไม่ใช่ที่นั่ง

เอเจนต์ไม่ต้องจ่ายค่าที่นั่ง ดูราคา

Cursor คือเอดิเตอร์ ใช้มันให้เต็มที่

IDE ไม่ใช่ปัญหา ทั้งการเติมคำอัตโนมัติแบบแท็บ, edit-with-AI, การแก้ไขหลายไฟล์ และ .cursor/rules ของ Cursor ยอดเยี่ยมอยู่แล้ว และคุณก็ใช้มันอยู่แล้วสำหรับ:

  • คำแนะนำแบบอินไลน์และ edit-with-AI ในไฟล์ที่เปิดอยู่
  • การแก้ไขหลายไฟล์เมื่อการเปลี่ยนแปลงอยู่ในขอบเขตจำกัด
  • .cursor/rules สำหรับข้อตกลงของรีโพและกฎด้านสไตล์
  • การ @-mention เพื่อดึงไฟล์ที่ต้องการเข้ามาในบริบท

ทำแบบนี้ต่อไปได้เลย ไม่มีอะไรหายไปไหน

แต่ในโมโนรีโพจริง (TypeScript ที่มีการพึ่งพาระดับเวิร์กสเปซ, บริการ Python, แพ็กเกจปะปนกัน) บริบทของเอเจนต์จะพังทันทีที่ไฟล์ที่เกี่ยวข้องยังไม่อยู่ในสายตาของคุณ

วิธีแก้แบบแมนวลที่คุณลองมาแล้ว และจุดที่มันพัง

วิธีแก้แบบแมนวลสี่แบบ คู่กับจุดที่มันล้มเหลว ฝั่งซ้าย = สิ่งที่คุณทำอยู่ทุกวันนี้ ฝั่งขวา = จุดที่มันพัง

// the fix

// ปักหมุดไฟล์

คุณ @-mention ไฟล์สามไฟล์ที่คิดว่าสำคัญ Cursor ก็แก้ไขในไฟล์เหล่านั้นได้เนียนๆ

// where it breaks

// การปักหมุดคือการเดา

การปักหมุดได้ผลก็ต่อเมื่อคุณรู้อยู่แล้วว่าไฟล์ไหนเกี่ยวข้อง ประเด็นทั้งหมดของเครื่องมือบริบทคือการเปิดเผยไฟล์ที่คุณไม่รู้ว่าต้องปักหมุด

// the fix

// วางโค้ดที่ก็อบมา

คุณวางโค้ด 200 บรรทัดจากแพ็กเกจอื่นลงในแชท เพื่อให้เอเจนต์มีบริบทเพียงพอ

// where it breaks

// โค้ดที่วางไว้ล้าสมัยไว

สนิปเป็ตที่คุณวางไว้ตอน 9 โมงเช้า ไม่สะท้อนการ rebase ที่เพื่อนร่วมทีมทำเสร็จตอน 11 โมง เอเจนต์กำลังแก้ไขโดยอิงกับแพ็กเกจเวอร์ชันผีที่ไม่มีอยู่จริงแล้ว

// the fix

// เขียนเอกสารบริบท

คุณเขียนไฟล์ .cursor/rules หรือ markdown อธิบายสถาปัตยกรรม วันนี้มันยังถูกต้องอยู่

// where it breaks

// เอกสารล้าหลังโค้ดเร็วกว่าที่คิด

อะไรก็ตามที่คุณเขียนด้วยมือจะค่อยๆ คลาดเคลื่อนไปเรื่อยๆ โค้ดคือแหล่งความจริงเดียว เอกสารที่อธิบายชั้นคิวถูกต้องอยู่แค่หนึ่งสัปดาห์ แล้วก็ผิดตลอดกาลหลังจากนั้น

// the fix

// เก็บไฟล์กฎไว้

คุณเพิ่ม .cursor/rules สำหรับการตั้งชื่อ lint และคำสั่งบิลด์ เหมาะมากสำหรับควบคุมพฤติกรรม

// where it breaks

// กฎ ≠ ดัชนี

.cursor/rules คือที่ที่เหมาะสำหรับ “ต้องรัน pnpm tsc -b ก่อน commit เสมอ” แต่มันไม่ใช่ดัชนีที่สอบถามได้ของทุกสัญลักษณ์ ไฟล์ และจุดเรียกใช้ในโมโนรีโพของคุณ

Maguyva คือชั้นที่อยู่ข้างใต้

ไม่ได้มาแทนที่ Cursor แต่เป็นชั้นบริบทของรีโพที่ต่อยอดจากการรองรับ MCP ของ Cursor

  • เชิงความหมาย + AST + กราฟ + ข้อความ ค้นหาได้ทั้งตามความหมาย โครงสร้าง การพึ่งพา หรือข้อความตรงตัว ทุกผลลัพธ์คืนพาธไฟล์และเลขบรรทัดมาให้
  • ข้ามแพ็กเกจโดยค่าเริ่มต้น จุดเรียกใช้และผู้นำเข้าครอบคลุมทุกแพ็กเกจในโมโนรีโพ ไม่ใช่แค่แพ็กเกจที่เปิดอยู่ตอนนี้
  • รับรู้แบรนช์ Maguyva มองเห็นโค้ดเวอร์ชันเดียวกับที่ Cursor กำลังแก้ไขอยู่
  • เสริมกัน ไม่ได้แข่งกัน .cursor/rules ก็ยังทำหน้าที่ของมันต่อไป @-mentions ก็ยังทำหน้าที่ของมันต่อไป Maguyva เข้ามาเติมเต็มช่องว่างที่ทั้งสองอย่างเติมไม่ได้

Cursor แก้ไขไฟล์ที่คุณชี้ไป

Maguyva บอกเอเจนต์ว่าควรชี้ไปที่ไฟล์ไหน

สามเวิร์กโฟลว์สำหรับโมโนรีโพ

ข้ามแพ็กเกจ ข้ามภาษา อ้างอิงจากกราฟการเรียกใช้จริง ไม่ใช่การ grep ของ Cursor

// workflow 01

ค้นหาโฟลว์การยืนยันตัวตนข้ามแพ็กเกจ โดยไม่ต้องปักหมุดอะไรเลย

cursor> ระบบยืนยันตัวตนในโมโนรีโพนี้ทำงานที่ตรงไหน?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       middleware
  packages/api/src/auth/jwt.ts:88           token verify
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  rbac gate

 จุดเริ่มต้น 4 จุด ครอบคลุม 4 แพ็กเกจ จัดอันดับตามความหนาแน่นของจุดเรียกใช้
[exit 0]

คุณไม่ได้ปักหมุดไฟล์ไหนเลย ไม่ได้วางสนิปเป็ตด้วย เอเจนต์มีไฟล์สำคัญทั้งสี่ไฟล์พร้อมลำดับที่ถูกต้อง และแก้ไขได้อย่างมีหลักฐานอ้างอิงจริง

// workflow 02

หาการอิมพลีเมนต์จริง ไม่ใช่ test stub

cursor> normalizePhoneNumber จัดการ E.164 ยังไง?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← ของจริง
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← stub
[exit 0]

ชื่อบอกอะไรไม่ได้เสมอไป mock บดบังโค้ดจริงได้ Maguyva จัดอันดับการอิมพลีเมนต์จริงให้อยู่เหนือ test mock ในทุกแพ็กเกจ

// workflow 03

เช็ครัศมีผลกระทบก่อนรีแฟกเตอร์

cursor> อะไรเรียก QueueDispatcher.publish บ้างในโมโนรีโพนี้?

graph::callers(QueueDispatcher.publish)
  3 ครั้งใน packages/billing/*
  1 ครั้งใน packages/audit/*
  1 ครั้งใน packages/notifications/*
  1 ครั้งใน services/python-worker/*  ← ข้ามภาษาผ่าน gRPC stub
[exit 0]

ข้ามแพ็กเกจ และข้ามภาษาด้วยถ้ารีโพของคุณเป็นแบบหลายภาษา จุดเรียกใช้จะโผล่ขึ้นมาให้เห็นทันที การเปลี่ยนแปลงอ้างอิงจากผู้นำเข้าจริง ไม่ใช่การ grep ของ Cursor

ตั้งค่ากับ Cursor

สามขั้นตอน แผน Free: รีโพซิทอรี 3 แห่ง, บรรทัดที่ทำดัชนีสูงสุด 50,000 บรรทัด ไม่ต้องใช้บัตร

  1. // step 01

    ทำดัชนีรีโพที่ maguyva.ai

    เลือกโมโนรีโพที่คุณเจอปัญหาเรื่องบริบทมากที่สุด

  2. // step 02

    เพิ่ม Maguyva เป็นเซิร์ฟเวอร์ MCP ในการตั้งค่าของ Cursor

    // ~/.cursor/mcp.json
    {
      "mcpServers": {
        "maguyva": {
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer <your-key>"
          }
        }
      }
    }
  3. // step 03

    ถามคำถามเดียวที่คุณรู้คำตอบอยู่แล้ว

    อย่าเริ่มจากทั้งบริษัทของคุณ เริ่มจากรีโพเดียวและคำถามเดียวที่ตรวจสอบได้ เช่น “มีอะไรเรียก formatInvoice บ้างข้ามแพ็กเกจ?”