Lumaktaw papunta sa content

Para sa mga user ng Goose

Tumatakbo ang Goose sa mga extension. Magdagdag ng isang kilala ang repo mo.

Ginagawa ng Goose ang trabaho nito sa pamamagitan ng mga extension, at bawat extension ay isang MCP server. Ang Maguyva ang extension na nag-i-index ng codebase mo, kaya nagtatanong ang Goose kung nasaan ang mga bagay sa halip na maglista ng mga directory.

May Free tier: 3 repository, Hanggang 50K na naka-index na linya ng repo, walang card.

Gamitin ang .goosehints para sa paraan ng pagtatrabaho. Gamitin ang Maguyva para sa sinasabi ng code ngayon.

Ang kailangang malaman tungkol sa Goose

Apat na fact na partikular sa Goose.

// config file nito

config.yaml

Nasa ilalim ng extensions sa ~/.config/goose/config.yaml ang mga extension. Ang goose configure → Add Extension ang magsusulat ng kaparehong entry para sa iyo.

// paraan ng koneksyon

Isang remote extension

Isang streamable_http extension ang Maguyva, kaya ang Goose mismo ang kumokonekta sa endpoint: walang lokal na proseso, walang Node.js. Sa uri inilalagay ang URL, hindi sa url.

// ang key

headers

Ipinapadala ng Goose ang headers map sa bawat request, kaya sa Authorization header inilalagay ang key. Kaya rin itong punan ng Goose mula sa environment variable na nakalista sa env_keys.

// tool filter nito

available_tools

Puwedeng ilantad ng isang extension ang bahagi lang ng mga tool nito: ilista ang gusto mo sa ilalim ng available_tools, o iwanang walang laman para sa lahat.

Working agreement ang Goose hints. Gamitin ang mga ito.

# .goosehints
- Gamitin ang pnpm, hindi npm.
- Patakbuhin ang integration tests bago mo sabihing tapos na ang isang pagbabago.

By default, nilo-load ng Goose ang AGENTS.md at .goosehints: global hints mula sa ~/.config/goose/.goosehints, project hints mula sa repo, at mga nested file habang nagtatrabaho ito sa mga subfolder. Kailangan ng hints ang Developer extension. Ang mga ito ang tamang lugar para sa:

  • Mga pagpipilian sa tooling at mga command.
  • Mga convention na dapat sundin ng Goose.
  • Kung nasaan ang dokumentasyon.

Inilalarawan ng hints ang project. Hindi nito sinasagot ang “ano ang nakadepende rito?”

Kapag kulang na ang hints at ang shell

Tatlong puwang na pinupunan ng Goose gamit ang mga shell command, isang file bawat beses.

// hindi mapa ang listing

Sa hindi pamilyar na repo, nag-o-orient ang Goose gamit ang mga directory listing at pagbabasa ng file. Bawat isa ay gumagastos ng context bago pa magsimula ang task.

// string ang nahahanap ng grep, hindi caller

Hindi kayang ihiwalay ng text search ang totoong call sa isang comment, isang mock, o isang method na may parehong pangalan.

// naiiwan ang hints

Ang hints file na isinulat noong nakaraang quarter ay naglalarawan ng layout noong nakaraang quarter. Sinusunod pa rin ito ng Goose.

Maguyva bilang Goose extension

Ang isang extensions entry ay nagbibigay sa Goose ng:

  • 11 na tool sa naka-index mong repo semantic, structural (AST), graph, at text search, kasama ang symbol lookup, mga dependent, at pagkuha ng file.
  • Mga sagot na may file path at line number sa 285+ na wika.
  • Mga tool na nagbabasa lang Kinu-query ng mga tool ng Maguyva ang index. Wala sa mga ito ang nag-e-edit ng mga file mo.

Sinasabi ng hints sa Goose kung paano magtrabaho.

Binibigyan ng Maguyva ang Goose ng mapa ng code.

Dalawang workflow

Mapa muna, saka hayaang tumakbo ang Goose.

// workflow 01

Sundan ang isang bug hanggang sa pinagmulan nito

goose> bakit natatapos ang ilang export nang walang kahit isang row?

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

→ Dalawang file ang binabasa ng Goose, hindi ang buong export package.
[exit 0]

Pinapakitid ng naka-rank na resulta ang paghahanap bago magbukas ng shell ang Goose.

// workflow 02

Tingnan ang mga dependent bago mag-refactor

goose> hatiin ang Notifier class sa email at SMS

dependency_search("Notifier", dependents)
  11 reference sa 5 na package

→ Sakop ng plano ang lahat ng labing-isa bago ang unang edit.
[exit 0]

Nakukuha ng Goose ang buong listahan ng dependent sa isang call sa halip na sunud-sunod na grep.

Setup sa Goose

Tatlong hakbang. Free tier: 3 repository, Hanggang 50K na naka-index na linya ng repo, walang card.

  1. // step 01

    I-index ang isang repo sa maguyva.ai

    Pumili ng isang alam mo na, para masuri mo ang mga sagot.

  2. // step 02

    Idagdag ang Maguyva sa extensions sa 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

    Palitan ang placeholder at magsimula ng session

    Palitan ang mgv_xxxx ng API key mo, patakbuhin ang goose session, at magtanong ng isang bagay na alam mo na ang sagot. Sensitibo sa indentation ang YAML: gumamit ng space, hindi tab.