Spring til indhold

Til Goose-brugere

Goose kører på udvidelser. Tilføj én, der kender dit repo.

Goose udfører sit arbejde gennem udvidelser, og hver udvidelse er en MCP-server. Maguyva er den, der indekserer din kodebase, så Goose spørger, hvor tingene ligger, i stedet for at liste mapper.

Free-niveau: 3 repos, Op til 50K indekserede repo-linjer, intet kreditkort.

.goosehints til, hvordan du arbejder. Maguyva til, hvad koden siger nu.

Det skal du vide om Goose

Fire fakta, der gælder netop Goose.

// konfigurationsfil

config.yaml

Udvidelser ligger under extensions i ~/.config/goose/config.yaml. goose configure → Add Extension skriver den samme slags post for dig.

// transport

En ekstern udvidelse

Maguyva er en streamable_http-udvidelse, så Goose forbinder selv til endpointet: ingen lokal proces, ingen Node.js. URL’en står i uri, ikke i url.

// nøgle

headers

Goose sender headers-mappet med hver forespørgsel, så nøglen går i Authorization-headeren. Goose kan også udfylde den fra en miljøvariabel, der står under env_keys.

// værktøjsfilter

available_tools

En udvidelse kan nøjes med at eksponere en del af sine værktøjer: list dem, du vil have, under available_tools, eller lad feltet stå tomt for dem alle.

Goose-hints er en arbejdsaftale. Brug dem.

# .goosehints
- Brug pnpm, ikke npm.
- Kør integrationstestene, før du kalder en ændring færdig.

Goose indlæser som standard AGENTS.md og .goosehints: globale hints fra ~/.config/goose/.goosehints, projekthints fra repoet og indlejrede filer, når det arbejder i undermapper. Hints kræver udvidelsen Developer. De er det rette sted til:

  • Værktøjsvalg og kommandoer.
  • Konventioner, Goose skal følge.
  • Hvor dokumentationen ligger.

Hints beskriver projektet. De svarer ikke på “hvad afhænger af det her?”

Hvor hints og shellen slipper op

Tre huller, Goose fylder med shell-kommandoer, én fil ad gangen.

// en liste er ikke et kort

I et ukendt repo orienterer Goose sig med mappelister og fillæsninger. Hver af dem bruger kontekst, før opgaven overhovedet starter.

// grep finder strenge, ikke kaldere

En tekstsøgning kan ikke skelne et rigtigt kald fra en kommentar, en mock eller en metode med samme navn.

// hints sakker bagud

En hints-fil skrevet sidste kvartal beskriver sidste kvartals opbygning. Goose følger den alligevel.

Maguyva som Goose-udvidelse

Én post under extensions giver Goose:

  • 11 værktøjer til dit indekserede repo semantisk, strukturel (AST-), graf- og tekstsøgning, plus symbolopslag, afhængige og filhentning.
  • Svar med filstier og linjenumre på tværs af over 285 sprog.
  • Værktøjer, der kun læser Maguyvas værktøjer forespørger indekset. Ingen af dem retter i dine filer.

Hints fortæller Goose, hvordan det skal arbejde.

Maguyva giver Goose et kort over koden.

To arbejdsgange

Kortet først, lad så Goose køre.

// workflow 01

Spor en fejl tilbage til kilden

goose> hvorfor ender nogle eksporter med nul rækker?

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

→ Goose læser to filer, ikke hele export-pakken.
[exit 0]

Rangerede resultater indsnævrer søgningen, før Goose åbner en shell.

// workflow 02

Tjek afhængige før en refaktorering

goose> del klassen Notifier op i e-mail og sms

dependency_search("Notifier", dependents)
  11 referencer i 5 pakker

→ Planen dækker alle elleve før første rettelse.
[exit 0]

Goose får den fulde liste over afhængige i ét kald i stedet for en kæde af greps.

Opsætning i Goose

Tre trin. Free-niveau: 3 repos, Op til 50K indekserede repo-linjer, intet kreditkort.

  1. // step 01

    Indekser et repo på maguyva.ai

    Vælg et, du allerede kender, så du kan vurdere svarene.

  2. // step 02

    Tilføj Maguyva til extensions i config.yaml

    ~/.config/goose/config.yaml

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

    Udskift pladsholderen, og start en session

    Udskift mgv_xxxx med din API-nøgle, kør goose session, og stil ét spørgsmål, du allerede kender svaret på. YAML er følsom over for indrykning: brug mellemrum, ikke tabulatorer.