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

Canonical source: https://maguyva.ai/th/for-windsurf

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).

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

> Devin Desktop แก้ไขสิ่งที่คุณชี้ไป Maguyva บอก Devin Local ว่าควรชี้ไปที่ไฟล์ไหน

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

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

### Devin Desktop

ที่ที่คุณและ Devin Local ทำงานกันจริงๆ

### @ mentions + .devin/rules/

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

### Maguyva

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

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

ไม่คิดค่าบริการต่อที่นั่งสำหรับเอเจนต์ [ดูราคา](https://maguyva.ai/th/pricing)

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

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

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

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

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

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

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

### // mention ไฟล์ที่คิดว่าใช่

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

### // การ mention คือการเดา

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

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

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

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

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

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

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

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

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

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

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

### // กฎ ≠ ดัชนี

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

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

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

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

> Devin Local แก้ไขไฟล์ที่คุณชี้ไป
> Maguyva บอกเอเจนต์ว่า*ควรชี้ไปที่ไฟล์ไหน*

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

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

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

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

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]
```

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

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

```text
devin> 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 ในทุกแพ็กเกจ

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

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

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

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

## ตั้งค่ากับ Devin Desktop

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

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

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

### 02. เพิ่ม Maguyva เป็นเซิร์ฟเวอร์ MCP ใน Devin Desktop

`~/.config/devin/mcp_config.json`

```json
{
  "mcpServers": {
    "maguyva": {
      "url": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
      }
    }
  }
}
```

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

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

## ทำดัชนีรีโพเดียวที่คุณรู้จักดีอยู่แล้ว

ลองถามคำถามเดียวที่คุณตรวจสอบคำตอบได้
