Kiến trúcv0.2.0 / schema 1.1

Kiến trúc

Cách một cuộc gọi MCP được xác thực trở thành các chẩn đoán được cache và gom cụm trong khi các engine cục bộ vẫn giữ quyền nguồn sự thật.

Signalint là một MCP server chạy qua stdio cục bộ. Adapters là các module duy nhất thực thi các engine chẩn đoán; mọi tầng phía trên chúng đều hoạt động trên các đối tượng issue đã được chuẩn hóa. Luồng triển khai là tĩnh và cục bộ: không cần bất kỳ dịch vụ đám mây nào.

MCP clientGọi quy chuẩn công cụ nghiêm ngặt qua stdio.
MCP serverXác thực tham số, đọc cấu hình, điều phối kiểm tra và chuyển đổi phản hồi schema 1.1.
AdaptersRanh giới tiến trình con của Oxlint, tsc và Biome với thời hạn timeout và giới hạn đầu ra.
CacheKết quả file trong SQLite và trạng thái toàn bộ chương trình, với key tạo từ nội dung, cấu hình, phiên bản Signalint và phiên bản engine.
ClustersGom nhóm theo rule, gán mức ưu tiên, mẫu lỗi riêng biệt và cắt giảm phản hồi khi quá giới hạn.
Session memoryChữ ký vòng lặp cùng lịch sử số liệu có giới hạn và xoay vòng.

Luồng dữ liệu của check_files

  1. Server xác thực đối tượng tool thông qua các Zod schema nghiêm ngặt.
  2. Các đường dẫn được yêu cầu được giải quyết theo gốc dự án và kiểm tra lại sau khi chuẩn hóa symlink.
  3. Các mẫu glob ignore và việc loại trừ node_modules vô điều kiện sẽ loại bỏ các đường dẫn ngoài phạm vi.
  4. Signalint đọc các snapshot và tính toán hash cấu hình engine.
  5. Các kết quả cache theo file được tái sử dụng; Oxlint và Biome (tùy chọn) chỉ nhận các trường hợp cache miss.
  6. tsc chỉ được bỏ qua khi các snapshot liên quan đến TypeScript được cung cấp vẫn trùng khớp với kết quả toàn bộ chương trình mới nhất.
  7. Các engine được bật hoạt động độc lập, do đó một thất bại không làm mất chẩn đoán của engine khác.
  8. Các lỗi được chuẩn hóa, lọc, gom cụm, sắp xếp với ưu tiên 1 đứng đầu và mặc định giới hạn ở 10 cụm.
  9. Trạng thái vòng lặp và số liệu được ghi lại trước khi trả về phản hồi JSON.

Chiến lược thực thi engine

Oxlint và Biome

Các engine này hoạt động theo từng file. Một cuộc gọi check_files sẽ hash từng file, dùng lại các mục trong SQLite khi key trùng khớp hoàn toàn và chỉ gửi các file cache miss tới adapter.

TypeScript

tsc kiểm tra toàn bộ chương trình (whole-program). Các hash file được cung cấp quyết định xem việc chạy tsc có cần thiết hay không, nhưng các file không bao giờ được truyền dưới dạng root của compiler. Cấu hình root thông thường sử dụng --project với trạng thái tăng dần (incremental state). Cấu hình root kiểu solution chứa references sẽ sử dụng --build, nhờ đó các dự án composite được tham chiếu sẽ được duyệt qua.

Giới hạn lưu trữ

Cache SQLite cập nhật mốc thời gian khi đọc và loại bỏ các hàng ít được sử dụng nhất (LRU) khi vượt quá 10.000 mục. Khi khởi động phiên, chỉ phần đuôi gần nhất có giới hạn được nạp lại; các lượt ghi xoay vòng file JSONL sang bản sao lưu .1 khi chạm giới hạn kích thước. Lệnh stats tính toán trên cả hai file được giữ lại.

Ranh giới tin cậy

Các tham số MCP được xử lý như dữ liệu không đáng tin vì một mô hình AI có thể bị prompt-inject bởi nội dung dự án. các đường dẫn tuyệt đối, thoát ra ngoài, bắt đầu bằng dấu gạch ngang và chứa ký tự NUL bị từ chối, mảng tham số bị giới hạn và các adapter thực thi các file nhị phân đã giải quyết mà không qua shell.

Đọc tổng quan chi tiết về bản triển khai hiện tại trong ARCHITECTURE.md và mô hình đe dọa trong SECURITY.md.