本文へスキップ

Gooseユーザー向け

Gooseは拡張機能で動く。リポジトリを知っている拡張機能を足そう。

Gooseは拡張機能を通じて作業し、拡張機能はどれもMCPサーバーです。Maguyvaはコードベースをインデックス化する拡張機能なので、Gooseはディレクトリを一覧する代わりに、どこに何があるかを尋ねられます。

Freeプラン:リポジトリ3個, インデックス済みリポジトリ行数、最大5万行、カード不要。

.goosehintsは作業の仕方に。Maguyvaは今のコードの中身に。

Gooseについて知っておくこと

Goose特有の4つの事実。

// 設定ファイル

config.yaml

拡張機能は~/.config/goose/config.yamlのextensionsの下に置きます。goose configure → Add Extensionでも同じ種類のエントリが書き込まれます。

// トランスポート

リモート拡張機能

Maguyvaはstreamable_http拡張機能なので、Gooseがエンドポイントに直接接続します。ローカルプロセスもNode.jsも不要です。URLはurlではなくuriに書きます。

// キー

headers

Gooseはリクエストのたびにheadersマップを送るので、キーはAuthorizationヘッダーに書きます。env_keysに列挙した環境変数から埋めることもできます。

// ツールフィルター

available_tools

拡張機能はツールの一部だけを公開できます。使いたいツールをavailable_toolsに列挙するか、空のままにしてすべてを使います。

Gooseのヒントは作業上の取り決めです。使いましょう。

# .goosehints
- npmではなくpnpmを使う。
- 変更を完了とする前に結合テストを実行する。

GooseはデフォルトでAGENTS.mdと.goosehintsを読み込みます。グローバルなヒントは~/.config/goose/.goosehintsから、プロジェクトのヒントはリポジトリから、さらにサブフォルダで作業する際にはネストされたファイルも読みます。ヒントにはDeveloper拡張機能が必要です。向いているのは:

  • ツールの選択とコマンド。
  • Gooseが従うべき規約。
  • ドキュメントの置き場所。

ヒントはプロジェクトを説明します。“これに依存しているのは何?”には答えません。

ヒントとシェルの限界

Gooseがシェルコマンドで1ファイルずつ埋めている3つの穴。

// 一覧は地図ではない

見慣れないリポジトリでは、Gooseはディレクトリ一覧とファイルの読み込みで状況を把握します。そのたびに、タスクが始まる前からコンテキストを消費します。

// grepは呼び出し元ではなく文字列を見つける

テキスト検索では、本当の呼び出しと、コメントやモックや同名のメソッドとを区別できません。

// ヒントはずれていく

前の四半期に書かれたヒントファイルは、前の四半期の構成を説明しています。それでもGooseは従います。

Gooseの拡張機能としてのMaguyva

extensionsのエントリ1つで、Gooseが得られるもの:

  • インデックス済みリポジトリに対する11個のツール セマンティック、構造(AST)、グラフ、テキスト検索に加え、シンボル検索、依存元、ファイル取得。
  • ファイルパスと行番号付きの回答 285以上の言語に対応。
  • 読み取りだけのツール Maguyvaのツールはインデックスを照会するだけです。あなたのファイルを編集するものはありません。

ヒントは、Gooseに作業の仕方を教える。

Maguyvaは、Gooseにコードの地図を与える。

2つのワークフロー

まず地図、それからGooseに任せる。

// workflow 01

バグを発生源までたどる

goose> エクスポートが0行で終わることがあるのはなぜ?

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

→ Gooseはexportパッケージ全体ではなく、2つのファイルを読みます。
[exit 0]

Gooseがシェルを開く前に、ランク付けされた結果が探す範囲を絞り込みます。

// workflow 02

リファクタリングの前に依存元を確認する

goose> Notifierクラスをメール用とSMS用に分割して

dependency_search("Notifier", dependents)
  5パッケージにまたがる11件の参照

→ 最初の編集の前に、計画が11件すべてをカバーします。
[exit 0]

Gooseはgrepを何度も重ねる代わりに、1回の呼び出しで依存元の完全なリストを得ます。

Gooseでのセットアップ

3ステップ。Freeプラン:リポジトリ3個, インデックス済みリポジトリ行数、最大5万行、カード不要。

  1. // step 01

    maguyva.aiでリポジトリをインデックス化

    回答を評価できるよう、すでによく知っているリポジトリを選びましょう。

  2. // step 02

    config.yamlのextensionsにMaguyvaを追加

    ~/.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

    プレースホルダーを置き換えて、セッションを始める

    mgv_xxxxをあなたのAPIキーに置き換え、goose sessionを実行して、答えをすでに知っている質問を1つしてみましょう。YAMLはインデントに敏感です。タブではなくスペースを使ってください。