跳至主要內容

給 Goose 使用者

Goose 靠擴充功能運作。加一個懂你程式碼庫的。

Goose 透過擴充功能完成工作,而每個擴充功能都是一個 MCP 伺服器。Maguyva 就是那個為你的程式碼庫建立索引的擴充功能,所以 Goose 會直接問東西在哪裡,而不是一層層列出目錄。

Free 方案:3 個儲存庫, 最多索引 5 萬行儲存庫程式碼,免信用卡。

.goosehints 管怎麼做事,Maguyva 管程式碼現在長什麼樣。

關於 Goose 你需要知道的

四項 Goose 專屬事實。

// 設定檔

config.yaml

擴充功能放在 ~/.config/goose/config.yaml 的 extensions 底下。goose configure → Add Extension 也會替你寫入同類項目。

// 傳輸方式

一個遠端擴充功能

Maguyva 是 streamable_http 擴充功能,Goose 會自己連線到端點:沒有本機程序,也不需要 Node.js。URL 寫在 uri,不是 url。

// 金鑰

headers

Goose 每次請求都會送出 headers 對應表,所以金鑰放在 Authorization 標頭裡。Goose 也能從 env_keys 列出的環境變數填入它。

// 工具篩選

available_tools

擴充功能可以只公開部分工具:把想要的工具列在 available_tools 底下,留空就全部啟用。

Goose 提示是一份工作約定,儘管用。

# .goosehints
- 用 pnpm,別用 npm。
- 宣告變更完成前,先跑整合測試。

Goose 預設會載入 AGENTS.md 和 .goosehints:全域提示來自 ~/.config/goose/.goosehints,專案提示來自程式碼庫,進到子資料夾工作時還會讀取巢狀的檔案。提示需要啟用 Developer 擴充功能。適合寫進去的有:

  • 工具選擇與指令。
  • Goose 應該遵守的慣例。
  • 文件放在哪裡。

提示描述的是專案。它們回答不了“什麼依賴於它?”

提示和 shell 不夠用的地方

Goose 靠 shell 指令、一次一個檔案補上的三個缺口。

// 目錄清單不是地圖

面對陌生的程式碼庫,Goose 用目錄清單和讀檔來摸清狀況。每一步都在任務開始前就消耗脈絡。

// grep 找到的是字串,不是呼叫端

文字搜尋分不清真正的呼叫、註解、測試替身和同名方法。

// 提示會走樣

上一季寫的提示檔,描述的是上一季的結構。Goose 照樣會遵循。

作為 Goose 擴充功能的 Maguyva

一筆 extensions 項目讓 Goose 獲得:

  • 針對已索引程式碼庫的 11 個工具 語意、結構(AST)、圖譜與文字搜尋,外加符號查找、依賴方與檔案擷取。
  • 附檔案路徑與行號的答案 涵蓋 285+ 種語言。
  • 只會讀取的工具 Maguyva 的工具只查詢索引,沒有一個會修改你的檔案。

提示告訴 Goose 怎麼工作。

Maguyva 給 Goose 一張程式碼地圖。

兩種工作流程

先看地圖,再讓 Goose 上工。

// workflow 01

把缺陷追到源頭

goose> 為什麼有些匯出結束時是零列?

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

→ Goose 只讀兩個檔案,而不是整個 export 套件。
[exit 0]

在 Goose 開啟 shell 之前,排序結果就已縮小搜尋範圍。

// workflow 02

重構前先查依賴方

goose> 把 Notifier 類別拆成電子郵件和簡訊兩部分

dependency_search("Notifier", dependents)
  分布在 5 個套件中的 11 處參照

→ 第一次編輯前,規劃已涵蓋全部十一處。
[exit 0]

Goose 一次呼叫就拿到完整的依賴方清單,不必連續 grep。

在 Goose 中設定

三個步驟。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,再問一個你已經知道答案的問題。YAML 對縮排很敏感:請用空格,不要用 Tab。