# Goose toimii laajennuksilla. Lisää sellainen, joka tuntee repoasi.

Canonical source: https://maguyva.ai/fi/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 tekee työnsä laajennusten kautta, ja jokainen laajennus on MCP-palvelin. Maguyva on se, joka indeksoi koodikantasi, joten Goose kysyy, missä asiat ovat, eikä listaa hakemistoja.

> .goosehints kertoo, miten työskennellä. Maguyva kertoo, mitä koodi sanoo nyt.

## Mitä Goose-agentista pitää tietää

Neljä Goose-agentille ominaista asiaa.

### config.yaml

Laajennukset määritetään kohtaan `extensions` tiedostossa `~/.config/goose/config.yaml`. `goose configure` → Add Extension kirjoittaa samanlaisen merkinnän puolestasi.

### Etälaajennus

Maguyva on `streamable_http`-laajennus, joten Goose yhdistää päätepisteeseen itse: ei paikallista prosessia, ei Node.js:ää. URL kuuluu kenttään `uri`, ei kenttään `url`.

### headers

Goose lähettää `headers`-kartan jokaisen pyynnön mukana, joten avain menee `Authorization`-otsakkeeseen. Goose voi myös täyttää sen ympäristömuuttujasta, joka on listattu kohtaan `env_keys`.

### available_tools

Laajennus voi tarjota vain osan työkaluistaan: listaa haluamasi kohtaan `available_tools` tai jätä se tyhjäksi, niin kaikki ovat käytössä.

## Goose-vihjeet ovat työskentelysopimus. Käytä niitä.

```text
# .goosehints
- Käytä pnpm:ää, älä npm:ää.
- Aja integraatiotestit ennen kuin julistat muutoksen valmiiksi.
```

Goose lataa oletuksena tiedostot `AGENTS.md` ja `.goosehints`: globaalit vihjeet tiedostosta `~/.config/goose/.goosehints`, projektin vihjeet reposta ja sisäkkäiset tiedostot, kun se työskentelee alikansioissa. Vihjeet vaativat Developer-laajennuksen. Ne sopivat näihin:

- Työkaluvalinnat ja komennot.
- Käytännöt, joita Goose-agentin pitää noudattaa.
- Missä dokumentaatio on.

Vihjeet kuvaavat projektia. Ne eivät vastaa kysymykseen “mikä riippuu tästä?”

## Missä vihjeet ja kuori eivät enää riitä

Kolme aukkoa, jotka Goose paikkaa kuorikomennoilla tiedosto kerrallaan.

### // listaus ei ole kartta

Tuntemattomassa repossa Goose suunnistaa hakemistolistauksilla ja tiedostojen luvuilla. Jokainen niistä kuluttaa kontekstia jo ennen kuin tehtävä alkaa.

### // grep löytää merkkijonoja, ei kutsujia

Tekstihaku ei erota todellista kutsua kommentista, mockista tai samannimisestä metodista.

### // vihjeet jäävät jälkeen

Viime neljänneksellä kirjoitettu vihjetiedosto kuvaa viime neljänneksen rakennetta. Goose noudattaa sitä silti.

## Maguyva Goose-laajennuksena

Yksi extensions-merkintä antaa Goose-agentille:

- **11 työkalua indeksoituun repoosi**: semanttinen, rakenteellinen (AST-), graafi- ja tekstihaku sekä symbolihaku, riippuvaiset ja tiedostojen haku.
- **Vastaukset tiedostopoluilla ja rivinumeroilla**: yli 285 kielellä.
- **Työkalut, jotka vain lukevat**: Maguyva-työkalut kyselevät indeksiä. Mikään niistä ei muokkaa tiedostojasi.

> Vihjeet kertovat Goose-agentille, *miten työskennellä*.
> Maguyva antaa Goose-agentille *kartan koodista*.

## Kaksi työnkulkua

Ensin kartta, sitten Goose saa ajaa.

### 01. Jäljitä bugi lähteeseensä

```text
goose> miksi jotkin viennit päättyvät nollaan riviin?

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

→ Goose lukee kaksi tiedostoa, ei koko export-pakettia.
[exit 0]
```

Priorisoidut tulokset rajaavat haun ennen kuin Goose avaa kuoren.

### 02. Tarkista riippuvaiset ennen refaktorointia

```text
goose> jaa Notifier-luokka sähköpostiin ja tekstiviestiin

dependency_search("Notifier", dependents)
  11 viittausta 5 paketissa

→ Suunnitelma kattaa kaikki yksitoista ennen ensimmäistä muokkausta.
[exit 0]
```

Goose saa riippuvaisten koko listan yhdellä kutsulla eikä grep-ketjulla.

## Asennus Goose-agentissa

Kolme vaihetta. Free-taso: 3 repositoriota, Enintään 50 000 indeksoitua repo-riviä, ei luottokorttia.

### 01. Indeksoi repo osoitteessa maguyva.ai

Valitse jo tuntemasi repo, jotta voit arvioida vastauksia.

### 02. Lisää Maguyva config.yaml-tiedoston extensions-kohtaan

`~/.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. Korvaa paikkamerkki ja aloita istunto

Korvaa `mgv_xxxx` omalla API-avaimellasi, aja `goose session` ja kysy yksi kysymys, jonka vastauksen jo tiedät. YAML on tarkka sisennyksistä: käytä välilyöntejä, älä sarkaimia.

Goose-agentin [laajennusdokumentaatio](https://goose-docs.ai/docs/getting-started/using-extensions/) kattaa etälaajennukset, aikakatkaisut ja työkalusuodattimet.

## Indeksoi yksi repo, jonka jo tunnet.

Yhdistä Goose MCP:n yli ja kysy yksi kysymys, jonka voit tarkistaa.
