# Goose ทำงานด้วยส่วนขยาย เพิ่มสักตัวที่รู้จักรีโพของคุณ

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

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

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

> ใช้ .goosehints สำหรับวิธีทำงาน ใช้ Maguyva สำหรับสิ่งที่โค้ดบอกอยู่ตอนนี้

## สิ่งที่ต้องรู้เกี่ยวกับ Goose

ข้อเท็จจริงสี่ข้อเฉพาะของ Goose

### config.yaml

ส่วนขยายอยู่ใต้ `extensions` ใน `~/.config/goose/config.yaml` คำสั่ง `goose configure` → Add Extension จะเขียนรายการแบบเดียวกันให้คุณ

### ส่วนขยายระยะไกล

Maguyva เป็นส่วนขยาย `streamable_http` Goose จึงเชื่อมต่อกับ endpoint เองได้: ไม่มีโปรเซสบนเครื่อง ไม่ต้องใช้ Node.js URL ใส่ใน `uri` ไม่ใช่ `url`

### headers

Goose ส่งแมป `headers` ไปกับทุกคำขอ คีย์จึงใส่ในเฮดเดอร์ `Authorization` และ Goose ยังเติมค่าจากตัวแปรสภาพแวดล้อมที่ระบุไว้ใน `env_keys` ได้ด้วย

### available_tools

ส่วนขยายเปิดให้ใช้เครื่องมือเพียงบางส่วนได้: ลิสต์ตัวที่ต้องการไว้ใต้ `available_tools` หรือเว้นว่างไว้เพื่อใช้ทั้งหมด

## คำใบ้ของ Goose คือข้อตกลงในการทำงาน ใช้มันให้เต็มที่

```text
# .goosehints
- ใช้ pnpm ไม่ใช่ npm
- รัน integration test ก่อนถือว่างานเสร็จ
```

โดยค่าเริ่มต้น Goose โหลด `AGENTS.md` และ `.goosehints`: คำใบ้ส่วนกลางจาก `~/.config/goose/.goosehints` คำใบ้ของโปรเจกต์จากรีโพ และไฟล์ที่ซ้อนอยู่เมื่อทำงานในโฟลเดอร์ย่อย คำใบ้ต้องใช้ส่วนขยาย Developer เหมาะสำหรับ:

- ตัวเลือกเครื่องมือและคำสั่ง
- ข้อตกลงที่ Goose ควรปฏิบัติตาม
- ตำแหน่งของเอกสาร

คำใบ้อธิบายโปรเจกต์ แต่ไม่ได้ตอบว่า “อะไรพึ่งพาสิ่งนี้อยู่?”

## เมื่อคำใบ้และเชลล์ไม่พอ

ช่องว่างสามจุดที่ Goose เติมด้วยคำสั่งเชลล์ ทีละไฟล์

### // รายการไฟล์ไม่ใช่แผนที่

ในรีโพที่ไม่คุ้นเคย Goose หาทิศทางด้วยการลิสต์ไดเรกทอรีและอ่านไฟล์ ทุกครั้งใช้บริบทไปก่อนที่งานจะเริ่ม

### // grep เจอสตริง ไม่ใช่ผู้เรียก

การค้นหาข้อความแยกการเรียกจริงออกจากคอมเมนต์ mock หรือเมธอดชื่อเดียวกันไม่ได้

### // คำใบ้ค่อย ๆ ล้าสมัย

ไฟล์คำใบ้ที่เขียนเมื่อไตรมาสก่อนอธิบายโครงสร้างของไตรมาสก่อน แต่ Goose ก็ยังทำตาม

## Maguyva ในฐานะส่วนขยายของ Goose

รายการ extensions เดียวให้สิ่งเหล่านี้แก่ Goose:

- **เครื่องมือ 11 รายการบนรีโพที่ทำดัชนีแล้วของคุณ**: การค้นหาเชิงความหมาย เชิงโครงสร้าง (AST) เชิงกราฟ และข้อความ รวมถึงการค้นหาสัญลักษณ์ ส่วนที่พึ่งพา และการดึงไฟล์
- **คำตอบพร้อมพาธไฟล์และหมายเลขบรรทัด**: ครอบคลุม 285+ ภาษา
- **เครื่องมือที่อ่านอย่างเดียว**: เครื่องมือของ Maguyva สืบค้นดัชนี ไม่มีตัวไหนแก้ไขไฟล์ของคุณ

> คำใบ้บอก Goose ว่า*ต้องทำงานอย่างไร*
> Maguyva มอบ*แผนที่ของโค้ด*ให้ Goose

## สองเวิร์กโฟลว์

ดูแผนที่ก่อน แล้วค่อยปล่อยให้ Goose ทำงาน

### 01. ไล่บั๊กไปจนถึงต้นตอ

```text
goose> ทำไมการ export บางครั้งจบด้วยศูนย์แถว?

semantic_search("export job empty result")
  src/export/runner.ts:118   flushBatch()
  src/export/filters.ts:40   applyTenantFilter()

→ Goose อ่านสองไฟล์ ไม่ใช่ทั้งแพ็กเกจ export
[exit 0]
```

ผลลัพธ์ที่จัดอันดับช่วยแคบขอบเขตการค้นหาก่อน Goose จะเปิดเชลล์

### 02. ตรวจส่วนที่พึ่งพาก่อนรีแฟกเตอร์

```text
goose> แยกคลาส Notifier เป็นอีเมลกับ SMS

dependency_search("Notifier", dependents)
  การอ้างอิง 11 จุดใน 5 แพ็กเกจ

→ แผนครอบคลุมครบทั้งสิบเอ็ดจุดก่อนการแก้ไขครั้งแรก
[exit 0]
```

Goose ได้รายการส่วนที่พึ่งพาครบถ้วนในการเรียกครั้งเดียว แทนการ grep ต่อกันหลายรอบ

## ตั้งค่าใน Goose

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

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

เลือกรีโพที่คุณรู้จักอยู่แล้ว เพื่อให้คุณประเมินคำตอบได้

### 02. เพิ่ม Maguyva ใน extensions ใน config.yaml

`~/.config/goose/config.yaml`

```yaml
extensions:
  maguyva:
    name: maguyva
    type: streamable_http
    uri: https://maguyva.tools/mcp
    enabled: true
    headers:
      Authorization: Bearer mgv_xxxx
    timeout: 300

```

### 03. แทนที่ตัวยึดตำแหน่งแล้วเริ่มเซสชัน

เปลี่ยน `mgv_xxxx` เป็นคีย์ API ของคุณ รัน `goose session` แล้วถามหนึ่งคำถามที่คุณรู้คำตอบอยู่แล้ว YAML ไวต่อการเยื้อง: ใช้ช่องว่าง ไม่ใช่แท็บ

[เอกสารส่วนขยาย](https://goose-docs.ai/docs/getting-started/using-extensions/) ของ Goose อธิบายเรื่องส่วนขยายระยะไกล การหมดเวลา และตัวกรองเครื่องมือ

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

เชื่อมต่อ Goose ผ่าน MCP แล้วถามคำถามเดียวที่คุณตรวจสอบได้
