Chuyển tới nội dung

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

Cursor chỉnh sửa tệp.
Maguyva thấy cả repo.

Cursor là trình soạn thảo. Trong một monorepo, tác nhân vẫn cần một bản đồ để biết tệp nào quan trọng. Maguyva lập chỉ mục codebase của bạn và trả về qua MCP (ngữ nghĩa, AST, đồ thị, và văn bản), để câu hỏi “auth xảy ra ở đâu” trả về đúng luồng auth thực tế, chứ không phải bảy test stub.

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

Cursor chỉnh sửa nơi bạn trỏ tới. Maguyva cho tác nhân biết nên trỏ tới tệp nào.

Mỗi lớp làm gì

Bốn mảnh ghép. Mỗi mảnh có một nhiệm vụ.

// trình soạn thảo

Cursor

Nơi bạn thực sự viết mã.

// ngữ cảnh thủ công

@ mentions + pins

Ngữ cảnh thủ công vẫn ổn, cho đến khi repo trở nên lớn.

// codebase

Maguyva

Dữ kiện codebase tự động qua MCP.

// ai trả tiền

Workspace, không phải theo ghế

Tác nhân không phải trả tiền theo ghế. Xem bảng giá

Cursor là trình soạn thảo. Cứ dùng nó.

Vấn đề không nằm ở IDE. Tab completion, edit-with-AI, chỉnh sửa đa tệp, và .cursor/rules của Cursor đều xuất sắc, và bạn đã dùng chúng cho:

  • Gợi ý inline và edit-with-AI trong tệp đang mở.
  • Chỉnh sửa đa tệp khi thay đổi mang tính cục bộ.
  • .cursor/rules cho quy ước repo và các rào chắn phong cách viết mã.
  • @-mentions để đưa một tệp cụ thể vào ngữ cảnh.

Cứ tiếp tục làm vậy. Không có gì trong số đó biến mất cả.

Nhưng trong một monorepo thực thụ (TypeScript với các phụ thuộc workspace, dịch vụ Python, các package hỗn hợp) ngữ cảnh của tác nhân sẽ vỡ ngay khi tệp liên quan chưa nằm trong tầm nhìn của bạn.

Những cách khắc phục thủ công bạn đã thử, và chúng vỡ ở đâu

Bốn cách khắc phục thủ công đi kèm với kiểu thất bại của chúng. Trái = điều bạn làm hôm nay. Phải = nơi nó vỡ.

// the fix

// ghim các tệp

Bạn @-mention ba tệp mà bạn nghĩ là quan trọng. Cursor chỉnh sửa gọn gàng bên trong chúng.

// where it breaks

// ghim tệp chỉ là phỏng đoán

Ghim tệp chỉ hiệu quả khi bạn đã biết những tệp nào liên quan. Cả điểm mấu chốt của công cụ ngữ cảnh là làm nổi lên những tệp mà bạn không biết để ghim.

// the fix

// dán đoạn mã

Bạn dán 200 dòng từ một package khác vào chat để cho tác nhân đủ ngữ cảnh.

// where it breaks

// mã dán vào sẽ trở nên lỗi thời

Đoạn mã bạn dán lúc 9 giờ sáng không phản ánh lần rebase mà đồng đội của bạn đã đẩy lên lúc 11 giờ. Tác nhân đang chỉnh sửa dựa trên một phiên bản ma của package đó.

// the fix

// viết tài liệu ngữ cảnh

Bạn viết một tệp .cursor/rules hoặc một tài liệu markdown về kiến trúc. Nó đúng ở thời điểm hôm nay.

// where it breaks

// tài liệu trôi nhanh hơn mã

Bất cứ thứ gì bạn viết tay đều sẽ trôi dần. Mã nguồn mới là nguồn sự thật. Một tài liệu giải thích lớp hàng đợi đúng trong một tuần, rồi sai mãi mãi.

// the fix

// giữ các tệp rules

Bạn thêm .cursor/rules cho quy ước đặt tên, lint, các lệnh build. Rất tốt cho hành vi.

// where it breaks

// rules ≠ chỉ mục

.cursor/rules là nơi đúng để ghi “luôn chạy pnpm tsc -b trước khi commit.” Nó không phải là một chỉ mục có thể truy vấn của mọi ký hiệu, tệp, và call-site trong monorepo của bạn.

Maguyva là lớp nằm bên dưới

Không phải để thay thế Cursor. Đây là lớp ngữ cảnh repo gắn vào khả năng hỗ trợ MCP của Cursor.

  • Ngữ nghĩa + AST + đồ thị + văn bản tìm kiếm theo ý nghĩa, cấu trúc, phụ thuộc, hoặc văn bản chính xác. Mỗi kết quả trả về đường dẫn tệp và số dòng.
  • Xuyên package theo mặc định call-site và importer trên mọi package trong monorepo, không chỉ package đang mở.
  • Nhận biết nhánh Maguyva thấy đúng phiên bản mã mà Cursor đang chỉnh sửa.
  • Bổ trợ, không cạnh tranh .cursor/rules vẫn tiếp tục làm việc của nó. @-mentions vẫn tiếp tục làm việc của chúng. Maguyva lấp đầy khoảng trống mà chúng không lấp được.

Cursor chỉnh sửa tệp bạn trỏ tới.

Maguyva cho tác nhân biết nên trỏ tới tệp nào.

Ba quy trình làm việc trong monorepo

Xuyên package, xuyên ngôn ngữ. Có căn cứ vào đồ thị lệnh gọi thực tế, không phải grep của Cursor.

// workflow 01

Tìm luồng auth xuyên package, mà không cần ghim gì cả

cursor> xác thực xảy ra ở đâu trong monorepo này?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       middleware
  packages/api/src/auth/jwt.ts:88           xác thực token
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  cổng rbac

 4 điểm vào trên 4 package, xếp hạng theo mật độ call-site.
[exit 0]

Bạn không ghim tệp nào. Bạn không dán đoạn mã nào. Tác nhân có sẵn bốn tệp quan trọng, đúng thứ tự xếp hạng, và có thể thực hiện một chỉnh sửa có căn cứ.

// workflow 02

Tìm cài đặt thực sự, chứ không phải test stub

cursor> normalizePhoneNumber xử lý E.164 như thế nào?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← cài đặt thực
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← stub
[exit 0]

Tên gọi có thể lừa dối. Mock che khuất mã thực. Maguyva xếp hạng cài đặt thực cao hơn test mock, trên mọi package.

// workflow 03

Kiểm tra phạm vi ảnh hưởng trước khi bạn tái cấu trúc

cursor> điều gì gọi QueueDispatcher.publish trên toàn monorepo?

graph::callers(QueueDispatcher.publish)
  3 in packages/billing/*
  1 in packages/audit/*
  1 in packages/notifications/*
  1 in services/python-worker/*  ← xuyên ngôn ngữ qua gRPC stub
[exit 0]

Xuyên package, và xuyên ngôn ngữ khi bạn có một repo đa ngôn ngữ, call-site hiện ra ngay trong dòng kết quả. Diff có căn cứ vào các importer thực tế, không phải grep của Cursor.

Cài đặt với Cursor

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

  1. // step 01

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

    Chọn monorepo mà bạn cảm thấy đau đầu nhất về ngữ cảnh.

  2. // step 02

    Thêm Maguyva làm MCP server trong cài đặt của Cursor

    // ~/.cursor/mcp.json
    {
      "mcpServers": {
        "maguyva": {
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer <your-key>"
          }
        }
      }
    }
  3. // step 03

    Đặt một câu hỏi mà bạn đã biết câu trả lời

    Đừng bắt đầu với toàn bộ công ty của bạn. Hãy bắt đầu với một repo và một câu hỏi có thể kiểm chứng, như “điều gì gọi formatInvoice xuyên package?”