Bắt đầu nhanh — Đường chạy cơ bản
Đây là toàn bộ quy trình cốt lõi để tạo ra tệp evidence_bundle.md cho ChatGPT rà soát ngữ nghĩa:
model/Cấu hình Chuẩn của Dự án
* Môi trường chạy thuần native, không yêu cầu Ollama, Python hay máy chủ mô hình ngoại vi.
Kiến trúc & Luồng xử lý chính
Sơ đồ Luồng Cầu nối Bằng chứng (Evidence Bridge Flow)
Đầu vào & Xác định
Nhận câu hỏi từ TSV. Đọc lược đồ SQLite DDL. Bộ tiền lập kế hoạch xác định Rust kiểm tra các mẫu SQL thông dụng.
Qwen & Rust Safety Guard
Nạp Qwen3-8B 1 lần cho các ca chưa xử lý. Dịch NL → SQL. Chuyển câu SQL sang Rust SQL Guard kiểm tra an toàn nghiêm ngặt.
Gói Bằng chứng & ChatGPT
Tổng hợp kết quả SQLite thô, SQL, chẩn đoán vào evidence_bundle.md. ChatGPT thực hiện rà soát ngữ nghĩa cuối cùng.
Lập kế hoạch chuyển đổi ngôn ngữ tự nhiên sang câu lệnh SQL.
Nguồn dữ kiện cục bộ chạy ở chế độ chỉ đọc tuyệt đối (Read-Only).
Kiểm soát an toàn thực thi SQL, ngăn chặn ghi, DDL, hoặc SQL injection.
Rà soát và đưa ra kết luận ý nghĩa cuối cùng bên ngoài qwen-native.
Vận hành Cầu nối Bằng chứng
Trình Tạo Lệnh Điều Tra Nhiều Vòng (Multi-round Generator)
Liên kết bằng chứng giữa các vòng điều tra thông qua cờ --batch-parent-bundle.
--batch-parent-bundle PHẢI trỏ tới tệp evidence_bundle.md của vòng trước. KHÔNG truyền tệp TSV vào cờ này!
./dist/qwen-native \ --model ./model/qwen3-8b-q4_k_m.gguf \ --db /path/to/database.sqlite \ --batch-question-file ./followup_questions.tsv \ --batch-output-dir ./evidence \ --batch-round-id round-2 \ --batch-parent-bundle ./evidence/evidence_bundle.md
Mẫu Cấu trúc Nội dung `evidence_bundle.md`
Mỗi ca điều tra trong tệp bằng chứng Markdown giữ các trường chuẩn:
Cơ chế Kỹ thuật & An toàn SQLite
Lớp An toàn SQLite (Rust Guard)
-
Mở database native bằng
SQLITE_OPEN_READONLY. -
Thực thi Pragma an toàn:
PRAGMA query_only=ON. -
Chỉ cho phép:
SELECT,WITH ... SELECT,EXPLAIN QUERY PLANvà Safe PRAGMAs. - Từ chối nhiều lệnh SQL (multi-statement), NUL byte, hoặc từ khóa DDL/Write nguy hiểm.
- Giới hạn mặc định: 50 dòng / truy vấn, 4096 bytes, timeout 2000 ms.
Whitelist SAFE_PRAGMAS (`src/sql_guard.rs`)
Chỉ các PRAGMA đọc thông tin lược đồ dưới đây mới được cho phép. Dạng gán giá trị bị từ chối tuyệt đối:
Bảng Trạng thái Chẩn đoán Kỹ thuật (Technical Diagnostic States)
| Trạng thái (Literal) | Mô tả Kỹ thuật | Ghi chú Vận hành |
|---|---|---|
| executed | Truy vấn thành công, không có chẩn đoán lỗi. | Bằng chứng hoàn chỉnh. |
| executed_with_diagnostics | Truy vấn thành công đồng thời có chẩn đoán đi kèm. | Có thể có truy vấn phụ bị lỗi. |
| runtime_capability_error | Runtime SQLite thiếu tính năng/extension cần thiết. | Cần kiểm tra bản SQLite hệ thống. |
| result_truncated | Kết quả vượt quá giới hạn dòng (50) hoặc byte (4096). | Báo cáo chưa được xem là hoàn tất. |
| planner_missed | Qwen không tạo được kế hoạch SQL cho ca. | Trở thành bằng chứng kỹ thuật rỗng. |
Xử lý sự cố nhanh
| Hiện tượng | Kiểm tra trước |
|---|---|
| Không tìm thấy mô hình | Kiểm tra model/qwen3-8b-q4_k_m.gguf hoặc truyền --model PATH đúng. |
| Nạp mô hình lỗi | Kiểm tra tệp GGUF có tồn tại, đúng đường dẫn và dùng được; chuẩn bị lại tệp tương thích nếu cần. |
command not found ở cờ CLI |
Kiểm tra dòng lệnh shell trước đó có thiếu ký tự nối \ hay không. |
| Một vòng mất nhiều phút | Đối chiếu thời gian lập kế hoạch Qwen; SQLite có thể không phải nút thắt. |
runtime_capability_error |
Xem chẩn đoán SQLite chính xác; không tự diễn giải thành lỗi ngữ nghĩa. |
result_truncated |
Tăng giới hạn phù hợp hoặc thu hẹp câu hỏi; không coi báo cáo là hoàn tất. |
Thử nghiệm Thực tế với Code Graph
Thử nghiệm đầu-cuối thực hiện trên SQLite của dự án mcp-app qua 3 vòng điều tra liên kết bằng chứng.
Bảng Chỉ số Hiệu năng Quan sát được qua 3 Vòng
Tổng thời gian: ~46m 39s| Chỉ số Hiệu năng | Vòng 1 | Vòng 2 | Vòng 3 |
|---|---|---|---|
| Số ca (Cases) | 9 | 9 | 6 |
| Ca lập kế hoạch bằng Qwen | 8 | 8 | 6 |
| Thời gian lập kế hoạch Qwen | ~8m 48s | ~16m 29s | ~21m 6s |
| Thời gian SQLite thực thi | 0.001s | 0.551s | 0.300s |
| Tổng thời gian vòng | ~8m 53s | ~16m 35s | ~21m 12s |
Nút thắt hiệu năng nằm ở phần lập kế hoạch Qwen (Natural Language → SQL), trong khi tốc độ truy vấn của SQLite chỉ chiếm một phần nhỏ của giây (< 0.6s).