Pure Patch Protocol
Bảo toàn tính nguyên vẹn mã nguồn & Xác thực Tree-sitter độc lập

Đồng bộ mã nguồn hai chiều
bằng Git Diff nguyên bản

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.

0 Byte
Mã dư thừa truyền lại
100%
Kiểm tra cây Git ảo
7+ Ngôn ngữ
Cú pháp Tree-sitter
Rollback
Phục hồi tự động khi lệch

Thiết kế an toàn

Tại sao Pure Patch Protocol khác biệt?

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ộ.

Định danh nền bất biến

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.

  • Không bao giờ vá nhầm branch hay commit khác
  • Dùng index tạm thời, không phụ thuộc git add

Shadow Tree Verification

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.

  • Chặn triệt để tệp hỏng cú pháp (SyntaxError)
  • Snapshot trạng thái trước khi ghi để rollback

Quy ước Bắt tay ACK

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.

  • Tránh lệch pha ngữ cảnh khi LLM mất gói tin
  • Tùy chọn Discard an toàn không xóa mã nguồn thật
Trải nghiệm tương tác

Mô phỏng Máy trạng thái (FSM)

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.

Sơ đồ chuyển trạng thái trực quan
1. Inactive

Chưa có session. Cần Start Session trên repo sạch.

2. Ready

Khớp checkpoint. Sẵn sàng nhận bản vá đi xuống.

3. Dirty

Code cục bộ thay đổi. Cần chạy Export Delta.

4. PendingExport

Đã xuất delta. Chờ ChatGPT xác nhận ACK hoặc Discard.

5. NeedsManualRecovery

Lỗi rollback/drift nghiêm trọng. Khóa thao tác để bảo vệ repo.

Không gian làm việc (Current Workspace ID) ws1_none
Checkpoint ID: none
Pending Hash: none
Active Files: 0 file(s)
Diff Lines: +0 / -0
Mô phỏng hành động người dùng:
Protocol Execution Terminal
[INIT] Pure Patch Protocol v1.0.0 daemon ready.
[INFO] Kho lưu trữ cục bộ đang ở trạng thái Inactive.
> Nhấn "Start Session" để thiết lập cây neo (Anchor Tree).
Storage: ~/.local/share/patch-protocol/ ● Tree-sitter active
Quy trình vận hành

Hai luồng truyền dữ liệu độc lập

Đượ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á.

01

Kiểm tra Envelope & Base

Xác thực hash BLAKE3, kiểm tra hướng `direction == Downward` và so khớp `current_ws_id == baseWorkspaceId`.

Lỗi chặn: BaseMismatch
02

Cây Git tạm (Shadow Tree)

Á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.

Sandbox an toàn 100%
03

Soi cú pháp Tree-sitter

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.

Lỗi chặn: SyntaxError
04

Snapshot & Áp dụng thật

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.

Tự động tiến Checkpoint
Cơ chế phát hiện thay đổi lệch (Drift Detection): Nếu mã nguồn bị phần mềm khác (hoặc dev sửa tay) thay đổi giữa lúc giao thức đang kiểm tra cây ảo và lúc chuẩn bị ghi thật, hệ thống phát hiện DriftDetected, hủy ghi và khôi phục trạng thái an toàn ngay lập tức.
Đặc tả chuẩn dữ liệu

Định dạng gói MCP-PATCH-V1

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.

envelope_payload.patch
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>;
 }

Phân giải các trường bắt buộc

1. Header Token
Bắt buộc phải là MCP-PATCH-V1 ở dòng đầu tiên.
2. Metadata JSON
Chứa direction, baseWorkspaceId, patchHash (BLAKE3). Hướng đi lên có thêm resultWorkspaceId.
3. Giới hạn phân tách
Dòng phân cách chuẩn ---BEGIN-GIT-DIFF--- báo hiệu bắt đầu nội dung diff chuẩn của Git.
Tương thích cả Raw Git Diff (Hệ thống tự bọc gói nội bộ)
Lớp bảo vệ chủ động

Bộ quy tắc An toàn & Giới hạn Tài nguyên

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ính sách đường dẫn tệp

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.

Tuyệt đối từ chối Nhị phân

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.

Bộ phân tích Tree-sitter

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 sách tài nguyên (Budget)

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.

Cấm Symbolic Links

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.

Lưu trữ mốc kiểm soát bền vững

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.

Bách khoa lỗi giao thức

Bảng tra cứu mã lỗi & Khắc phục

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.
Kiến trúc mô-đun

Tách biệt rõ rệt giữa Rust Core & React UI

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.

Rust / Tauri Engine: Đảm nhiệm đọc/ghi cây Git ảo, thực thi Tree-sitter parser, chụp snapshot byte và lưu trữ checkpoint bảo mật.
React Frontend: Giữ giao diện mạch lạc với bảng điều khiển trạng thái tập trung bên trái, bảng thao tác ở giữa và Terminal nhật ký bên dưới.
Rust Backend Core Map (`src-tauri/src/patch_protocol/`) Tauri V2 Compatible
📄 apply.rs - Xác minh & áp dụng
📄 checkpoint.rs - Quản lý mốc lưu
📄 envelope.rs - Đóng/mở MCP-PATCH-V1
📄 export.rs - Xuất Git diff đi lên
📄 git.rs - Xử lý Index & Tree ảo
📄 syntax.rs - Tích hợp Tree-sitter
📄 policy.rs - Chính sách path/budget
📄 workspace.rs - Tính toán ws1_<hash>
📄 error.rs - Phân loại mã lỗi an toàn
📄 model.rs - Structs & Enums FSM
📄 usePatchProtocol.tsx - Custom Hook
📄 PatchInspector.tsx - Giao diện soi diff