Sverklo, một máy chủ tìm kiếm mã nguồn được lưu trữ cục bộ, hiện cho phép các nhà phát triển kiểm tra từng bước của một truy vấn – từ việc khám phá tệp đến lập luận đồ thị symbol – trước khi một tác nhân AI thực hiện hành động dựa trên kết quả đó.

Tại sao các tác nhân lập trình hiện nay thường gặp khó khăn

Hầu hết các công cụ tạo mã đều coi một kho lưu trữ (repository) như một đống văn bản khổng lồ. Chúng nhúng các đoạn mã (snippets), chạy tìm kiếm tương đồng và trả về phân đoạn có điểm số cao nhất. Khi phân đoạn đó đã lỗi thời, nằm ngoài phạm vi hoặc chỉ đơn thuần là một tên tệp, tác nhân AI không thể chỉ ra nguồn gốc của nó. Kiểu lỗi ở đây không phải là thiếu một từ ngữ; mà là thiếu một lớp ngữ cảnh để cho con người biết sự thật đó đến từ đâu và liệu nó còn áp dụng được hay không.

Mô hình xác minh bốn lớp của Sverklo

Sverklo định vị mình là một máy chủ "giả thuyết kỹ thuật" (engineering hypothesis), kết hợp tìm kiếm truyền thống với phân tích cấu trúc:

  • Khám phá tệp (File Discovery) – Chỉ mục (index) sẽ đọc tệp .gitignore và các tệp bỏ qua khác. Trước khi tin tưởng một kết quả, bạn có thể truy vấn chỉ mục để xem những đường dẫn nào thực sự đã được quét.
  • Cấu trúc mã (Code Structure) – Các symbol tồn tại trong một đồ thị ghi lại các định nghĩa, các lệnh import và các mối quan hệ gọi hàm (call relationships). Việc tra cứu sẽ trả về đối tượng symbol chứ không chỉ là đường dẫn tệp, nhờ đó bạn có thể xác nhận đúng bề mặt API đang được tham chiếu.
  • Cung cấp ngữ cảnh (Context Delivery) – Khi bạn thiết lập ngân sách token, Sverklo sẽ trả về một bản đồ các đoạn mã đã đóng góp vào câu trả lời. Bản đồ này bao gồm một trường found_by cho bạn biết kết quả khớp đến từ việc khớp từ khóa BM25, các embedding được tạo bởi ONNX, hay đồ thị symbol được xếp hạng bằng PageRank.
  • Sổ cái bộ nhớ (Memory Ledger) – Máy chủ ghi lại (log) từng quyết định. Nếu một tệp thay đổi, sổ cái sẽ đánh dấu mục bộ nhớ tương ứng là lỗi thời, cho biết liệu câu trả lời được lưu trong bộ nhớ đệm còn hiệu lực hay không.

Cách thức hoạt động của ngăn xếp truy xuất (retrieval stack)

Sverklo không chỉ dựa vào embeddings. Nó chạy một công cụ từ khóa BM25 cổ điển để khớp các thuật ngữ chính xác, bổ sung các kết quả đó bằng vector embeddings dựa trên ONNX để tìm kiếm sự tương đồng về ngữ nghĩa, và sau đó áp dụng thuật toán PageRank trên đồ thị symbol để làm nổi bật các định nghĩa có tác động cao. Bằng cách công khai phương pháp tạo ra mỗi kết quả, các nhà phát triển có thể phát hiện sự không nhất quán—ví dụ: một kết quả khớp từ BM25 mà mô hình embedding coi là không liên quan—và chọn tín hiệu nào đáng tin cậy để sử dụng.

Ứng dụng thực tế

  • Khám phá các kho mã nguồn lạ – Chuyển nhanh từ tên một hàm đến tất cả các hàm gọi nó mà không cần dùng lệnh grep thủ công.
  • Lập bản đồ đồ thị phụ thuộc – Trực quan hóa các chuỗi import trải dài qua nhiều package.
  • Ước tính tác động của việc tái cấu trúc (refactor) – Xem những symbol nào sẽ bị lỗi nếu một tệp nhất định thay đổi.
  • Trả lời các câu hỏi về ngữ nghĩa – Hỏi "hàm helper này làm gì?" và nhận được một đoạn trích ngắn gọn, có nguồn gốc rõ ràng.

Những sai lầm cần lưu ý

  • Tính cập nhật (Freshness) – Một quá trình lập lại chỉ mục (reindex) có thể đã hoàn tất trong khi dấu thời gian của chỉ mục vẫn là cũ. Hãy luôn truy vấn endpoint index-status thay vì mặc định rằng lần chạy mới nhất là hiện tại.
  • Đăng ký dự án – Khi hủy đăng ký một dự án, hãy sử dụng tên dự án nội bộ do Sverklo cung cấp, thay vì đường dẫn hệ thống tệp tuyệt đối, nếu không thao tác sẽ thất bại một cách âm thầm.
  • Điểm kỳ lạ trong cách đặt tên công cụ – Các MCP host đôi khi chèn tên dự án hai lần, tạo ra các định danh như sverklo_sverklo_impact. Hãy kiểm tra kỹ tên trước khi gọi một công cụ.

Việc cần thử tiếp theo

  1. Clone một kho lưu trữ tạm thời và khởi chạy Sverklo cục bộ.
  2. Chạy một lệnh tra cứu symbol đơn giản và kiểm tra trường found_by.
  3. Chỉnh sửa một tệp nguồn và chạy lại lệnh tra cứu; lưu ý cách sổ cái bộ nhớ đánh dấu mục lỗi thời.
  4. Tích hợp việc kiểm tra index-status vào script build của bạn để tự động phát hiện các chỉ mục lỗi thời.

Điểm mấu chốt

Sverklo biến một công cụ tìm kiếm mã nguồn thành một chuỗi bằng chứng có thể kiểm chứng. Bằng cách buộc các nhà phát triển phải xác minh phạm vi tệp, độ chính xác của symbol, phương pháp truy xuất và tính cập nhật của bộ nhớ, nó cho phép họ quyết định liệu một gợi ý do AI thúc đẩy có đáng tin cậy hay không trước khi đưa vào môi trường production.