Chuyển tới nội dung

Dành cho người dùng Goose

Goose chạy bằng extension. Hãy thêm một extension hiểu repo của bạn.

Goose làm việc thông qua extension, và mỗi extension là một MCP server. Maguyva là extension lập chỉ mục codebase của bạn, nên Goose hỏi mọi thứ nằm ở đâu thay vì liệt kê thư mục.

Gói Free: 3 repository, Tối đa 50K dòng repo đã index, không cần thẻ tín dụng.

Dùng .goosehints cho cách làm việc. Dùng Maguyva cho những gì mã đang nói lúc này.

Những điều cần biết về Goose

Bốn điều riêng của Goose.

// tệp cấu hình

config.yaml

Extension nằm dưới extensions trong ~/.config/goose/config.yaml. goose configure → Add Extension sẽ viết một mục cùng loại cho bạn.

// giao thức truyền tải

Một extension từ xa

Maguyva là một extension streamable_http, nên Goose tự kết nối tới endpoint: không có tiến trình cục bộ, không cần Node.js. URL đặt trong uri, không phải url.

// khóa

headers

Goose gửi map headers kèm mỗi yêu cầu, nên khóa đặt trong header Authorization. Goose cũng có thể điền khóa từ một biến môi trường được liệt kê trong env_keys.

// bộ lọc công cụ

available_tools

Một extension có thể chỉ cung cấp một phần công cụ: liệt kê những công cụ bạn muốn dưới available_tools, hoặc để trống để dùng tất cả.

Goose hints là một thỏa thuận làm việc. Cứ dùng nó.

# .goosehints
- Dùng pnpm, không dùng npm.
- Chạy integration test trước khi coi một thay đổi là xong.

Mặc định Goose nạp AGENTS.md và .goosehints: hint toàn cục từ ~/.config/goose/.goosehints, hint dự án từ repo, và các tệp lồng nhau khi làm việc trong thư mục con. Hint cần extension Developer. Đây là nơi phù hợp cho:

  • Lựa chọn công cụ và lệnh.
  • Quy ước Goose cần tuân theo.
  • Vị trí của tài liệu.

Hint mô tả dự án. Chúng không trả lời được “cái gì phụ thuộc vào thứ này?”

Khi hint và shell không còn đủ

Ba khoảng trống Goose lấp bằng lệnh shell, mỗi lần một tệp.

// danh sách không phải bản đồ

Trên một repo xa lạ, Goose định hướng bằng danh sách thư mục và đọc tệp. Mỗi lần như vậy tốn ngữ cảnh trước khi tác vụ bắt đầu.

// grep tìm chuỗi, không tìm nơi gọi

Tìm kiếm văn bản không phân biệt được lời gọi thật với comment, mock hay method trùng tên.

// hint bị lệch dần

Tệp hint viết từ quý trước mô tả cấu trúc của quý trước. Goose vẫn làm theo.

Maguyva làm extension của Goose

Một mục extensions mang lại cho Goose:

  • 11 công cụ trên repo đã lập chỉ mục của bạn tìm kiếm ngữ nghĩa, cấu trúc (AST), đồ thị và văn bản, cùng tra cứu ký hiệu, thành phần phụ thuộc và truy xuất tệp.
  • Câu trả lời kèm đường dẫn tệp và số dòng trên 285+ ngôn ngữ.
  • Công cụ chỉ đọc Công cụ của Maguyva truy vấn chỉ mục. Không công cụ nào sửa tệp của bạn.

Hint cho Goose biết cách làm việc.

Maguyva cho Goose bản đồ của mã.

Hai quy trình làm việc

Bản đồ trước, rồi để Goose chạy.

// workflow 01

Lần theo một lỗi tới tận gốc

goose> vì sao một số lần export kết thúc với không dòng nào?

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

→ Goose đọc hai tệp, không phải cả package export.
[exit 0]

Kết quả xếp hạng thu hẹp phạm vi tìm kiếm trước khi Goose mở shell.

// workflow 02

Kiểm tra thành phần phụ thuộc trước khi refactor

goose> tách class Notifier thành email và SMS

dependency_search("Notifier", dependents)
  11 tham chiếu trên 5 package

→ Kế hoạch bao quát cả mười một chỗ trước lần sửa đầu tiên.
[exit 0]

Goose nhận đầy đủ danh sách thành phần phụ thuộc trong một lần gọi thay vì một chuỗi grep.

Cài đặt trong Goose

Ba bước. Gói Free: 3 repository, Tối đa 50K dòng repo đã index, không cần thẻ tín dụng.

  1. // step 01

    Lập chỉ mục một repo tại maguyva.ai

    Chọn một repo bạn đã biết, để bạn có thể đánh giá các câu trả lời.

  2. // step 02

    Thêm Maguyva vào extensions trong 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

    Thay placeholder và bắt đầu một phiên

    Thay mgv_xxxx bằng khóa API của bạn, chạy goose session, và đặt một câu hỏi mà bạn đã biết câu trả lời. YAML nhạy với thụt lề: dùng dấu cách, không dùng tab.