// 設定檔
config.yaml
擴充功能放在 ~/.config/goose/config.yaml 的 extensions 底下。goose configure → Add Extension 也會替你寫入同類項目。
給 Goose 使用者
Goose 透過擴充功能完成工作,而每個擴充功能都是一個 MCP 伺服器。Maguyva 就是那個為你的程式碼庫建立索引的擴充功能,所以 Goose 會直接問東西在哪裡,而不是一層層列出目錄。
Free 方案:3 個儲存庫, 最多索引 5 萬行儲存庫程式碼,免信用卡。
.goosehints 管怎麼做事,Maguyva 管程式碼現在長什麼樣。 四項 Goose 專屬事實。
// 設定檔
擴充功能放在 ~/.config/goose/config.yaml 的 extensions 底下。goose configure → Add Extension 也會替你寫入同類項目。
// 傳輸方式
Maguyva 是 streamable_http 擴充功能,Goose 會自己連線到端點:沒有本機程序,也不需要 Node.js。URL 寫在 uri,不是 url。
// 金鑰
Goose 每次請求都會送出 headers 對應表,所以金鑰放在 Authorization 標頭裡。Goose 也能從 env_keys 列出的環境變數填入它。
// 工具篩選
擴充功能可以只公開部分工具:把想要的工具列在 available_tools 底下,留空就全部啟用。
# .goosehints
- 用 pnpm,別用 npm。
- 宣告變更完成前,先跑整合測試。Goose 預設會載入 AGENTS.md 和 .goosehints:全域提示來自 ~/.config/goose/.goosehints,專案提示來自程式碼庫,進到子資料夾工作時還會讀取巢狀的檔案。提示需要啟用 Developer 擴充功能。適合寫進去的有:
提示描述的是專案。它們回答不了“什麼依賴於它?”
Goose 靠 shell 指令、一次一個檔案補上的三個缺口。
面對陌生的程式碼庫,Goose 用目錄清單和讀檔來摸清狀況。每一步都在任務開始前就消耗脈絡。
文字搜尋分不清真正的呼叫、註解、測試替身和同名方法。
上一季寫的提示檔,描述的是上一季的結構。Goose 照樣會遵循。
一筆 extensions 項目讓 Goose 獲得:
提示告訴 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。
三個步驟。Free 方案:3 個儲存庫, 最多索引 5 萬行儲存庫程式碼,免信用卡。
// step 01
挑一個你已經熟悉的,這樣你才能評分答案。
// step 02
~/.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
// step 03
把 mgv_xxxx 換成你的 API 金鑰,執行 goose session,再問一個你已經知道答案的問題。YAML 對縮排很敏感:請用空格,不要用 Tab。