Không còn phải gửi lại toàn bộ tệp cồng kềnh sau mỗi lượt trò chuyện. Pure Patch Protocol đồng bộ chính xác qua định danh ws1_<blake3>, thử nghiệm trước trên cây Git ảo và cam kết không bao giờ ghi đè sai nền.
Giao thức không thay thế Git hay tự ý tạo commit; nó đóng vai trò lớp bảo vệ dữ liệu siêu tin cậy giữa AI và không gian làm việc cục bộ.
Mỗi trạng thái không gian làm việc được gắn nhãn định danh hàm băm ws1_<blake3> tính từ định dạng Git object + cây hiệu lực thật. Nếu bản vá tạo từ nền khác, giao thức lập tức từ chối BaseMismatch.
Trước khi ghi 1 byte nào vào đĩa thật, bản vá được thử nghiệm trên cây Git tạm (Git shadow index). Tại đây Tree-sitter kiểm tra cú pháp AST; chính sách giới hạn tài nguyên và bảo mật đường dẫn được rà soát đồng thời.
Khi máy cục bộ xuất thay đổi (Export Delta), mốc kiểm soát cục bộ không tự động tiến. Hệ thống khóa ở trạng thái PendingExport cho đến khi ChatGPT nhận và xác nhận rõ ràng bằng mã hash băm.
Quan sát sự chuyển dịch trạng thái, mốc kiểm soát và phản hồi của giao thức trong thời gian thực.
Chưa có session. Cần Start Session trên repo sạch.
Khớp checkpoint. Sẵn sàng nhận bản vá đi xuống.
Code cục bộ thay đổi. Cần chạy Export Delta.
Đã xuất delta. Chờ ChatGPT xác nhận ACK hoặc Discard.
Lỗi rollback/drift nghiêm trọng. Khóa thao tác để bảo vệ repo.
Được thiết kế để loại bỏ rủi ro ghi đè mất mã nguồn hoặc áp dụng sai bản vá.
Xác thực hash BLAKE3, kiểm tra hướng `direction == Downward` và so khớp `current_ws_id == baseWorkspaceId`.
Áp dụng `git apply --cached` trên index tạm, tạo shadow tree để kiểm tra không chạm vào code thật trên đĩa.
Quét AST của các file vừa sửa (.rs, .ts, .tsx, .js, .py, .cs, .dart). Nếu lỗi cú pháp, dừng ngay tại cây tạm.
Chụp byte snapshot đề phòng Rollback; ghi vào đĩa thật; tính lại ws_id so với shadow tree; cập nhật Checkpoint.
DriftDetected, hủy ghi và khôi phục trạng thái an toàn ngay lập tức.
Khi mã cục bộ khác mốc Checkpoint, trạng thái tự chuyển sang `Dirty`. Cho phép bấm nút `Export delta`.
Tạo Git diff với `--no-renames --binary`, sinh hash BLAKE3, gắn `baseWorkspaceId` và `resultWorkspaceId`.
Lưu bản vá vào `pending.patch`. Khóa nhận bản vá đi xuống mới để tránh va chạm. Chờ kết quả từ ChatGPT.
Nếu ChatGPT xác nhận đã đồng bộ -> Bấm `ACK` để tiến Checkpoint. Nếu hủy -> Bấm `Discard` (giữ nguyên code máy).
ACK sau khi ChatGPT đã thực sự nhận gói tin và xác nhận ngữ cảnh. Xác nhận vội sẽ làm mốc kiểm soát tin rằng 2 bên đã khớp, trong khi LLM có thể chưa nhận được.
Cấu trúc truyền tải siêu nhẹ gồm 3 phần: Tiêu đề giao thức, Metadata JSON 1 dòng và Khối Git Diff.
MCP-PATCH-V1
{"direction":"down","baseWorkspaceId":"ws1_9bfa382c4819d","patchHash":"a8f5c3819e01ba472"}
---BEGIN-GIT-DIFF---
diff --git a/src/App.tsx b/src/App.tsx
index 4a12c8e..8f9b231 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -12,3 +12,5 @@ export function App() {
+ // Tối ưu hóa tính toán với Pure Patch Protocol
+ const isSynced = useMemo(() => checkProtocolState(), []);
return <div>Ready</div>;
}
MCP-PATCH-V1 ở dòng đầu tiên.direction, baseWorkspaceId, patchHash (BLAKE3). Hướng đi lên có thêm resultWorkspaceId.
---BEGIN-GIT-DIFF--- báo hiệu bắt đầu nội dung diff chuẩn của Git.
Mọi bản vá đi xuống đều bị kiểm tra nghiêm ngặt qua 5 cổng bảo vệ trước khi cấp phép ghi vào thư mục dự án.
Chặn đứng các lỗ hổng Path Traversal. Bất kỳ bản vá nào chứa đường dẫn tuyệt đối, ký tự .., đường dẫn đi vào .git hoặc danh sách tệp nhạy cảm đều bị từ chối với UnsafePath.
Pure Patch Protocol V1 chỉ vận chuyển mã nguồn văn bản thuần định dạng UTF-8. Tệp chứa byte NUL, binary patch hoặc dữ liệu không giải mã được sang UTF-8 sẽ kích hoạt lỗi BinaryFile.
Tích hợp bộ phân tích cú pháp AST trực tiếp cho: Rust (.rs) TS/TSX JS/JSX Python C# Dart
Ngăn chặn làm tê liệt ứng dụng bằng các ngưỡng chặn cứng: Tối đa 50 tệp thay đổi / bản vá; 512 KiB tối đa mỗi tệp; Tổng kích thước các tệp thay đổi không quá 5 MiB.
Tệp đích bị sửa hoặc thêm mới không được là symlink, và đường dẫn không được duyệt xuyên qua một thư mục symlink để loại bỏ nguy cơ ghi tệp ra ngoài dự án. Chế độ tệp chỉ chấp nhận 100644 hoặc 100755.
Dữ liệu checkpoint lưu hoàn toàn bên ngoài repo dự án (trong ~/.local/share/patch-protocol/). Không làm ô nhiễm git history, tự phục hồi phiên sau khi khởi động lại ứng dụng.
Tìm kiếm nhanh mã lỗi phát sinh trong Terminal và xem giải pháp chuẩn hóa.
| Mã lỗi (Rust Error) | Nguyên nhân bản chất | Hướng xử lý khuyến nghị |
|---|---|---|
| BaseMismatch | Không gian làm việc cục bộ hiện tại có mã hash khác với baseWorkspaceId của bản vá. Do dev sửa tay hoặc vá sai branch. |
Không được sửa hash thủ công! Yêu cầu ChatGPT tạo lại bản vá dựa trên workspace ID mới nhất, hoặc đưa code về đúng mốc. |
| SyntaxError(...) | Bộ phân tích Tree-sitter phát hiện lỗi cú pháp AST trên cây Git tạm (chưa hề chạm vào mã nguồn thật). | Xem số dòng, cột và đoạn mã báo lỗi trong Terminal tích hợp; sửa lại bản vá và chạy lại Verify & Apply. |
| DriftDetected | Mã nguồn cục bộ bị thay đổi ngay trong thời gian hệ thống đang kiểm tra cây ảo và trước khi ghi thật, hoặc cây ghi xong khác cây tạm. | Dừng thao tác. Hệ thống tự giữ nguyên code cũ. Lấy lại trạng thái và xuất bản chênh lệch mới từ workspace hiện tại. |
| InvalidEnvelope(...) | Tiêu đề bị sai định dạng, thiếu trường JSON bắt buộc hoặc BLAKE3 của diff không khớp với patchHash. |
Kiểm tra lại xem gói tin có bị ngắt giữa chừng do đường truyền không, tính lại hash BLAKE3 đúng chuẩn UTF-8. |
| RollbackFailed(...) | Khi ghi thật thất bại, hệ thống cố nạp lại snapshot ban đầu nhưng kiểm tra byte hoặc file mode không khớp 100%. | Chuyển ngay sang NeedsManualRecovery. Không được áp dụng thêm bản vá nào; kiểm tra `git status` thủ công. |
| BudgetExceeded(...) | Vượt quá ngân sách an toàn (quá 50 tệp, file > 512 KiB hoặc tổng các file > 5 MiB). | Chia nhỏ nhiệm vụ thành nhiều bản vá độc lập liên tiếp thay vì gom vào một lần thay đổi lớn. |
| UnsafePath(...) | Đường dẫn tệp trong diff có dấu hiệu vi phạm (tuyệt đối, đi ra ngoài bằng `..`, đi vào `.git`). | Loại bỏ các đường dẫn nhạy cảm hoặc bất thường ra khỏi phạm vi bản vá Git. |
Hệ thống áp dụng kiến trúc Micro-kernel tại phía Rust/Tauri để đảm bảo hiệu năng I/O tối đa, tính toán hàm băm BLAKE3 và quản lý Git object mà không làm đơ giao diện người dùng.