ProofRun – 'Biên lai' xác minh cục bộ giúp kiểm chứng lời hứa của AI coding agents

16 tháng 8, 2026·6 phút đọc

ProofRun là công cụ mã nguồn mở giải quyết vấn đề niềm tin khi làm việc với trợ lý lập trình AI. Thay vì tin vào lời nói 'tất cả test đã pass', ProofRun cung cấp bằng chứng mật mã ràng buộc kết quả kiểm tra với chính xác trạng thái mã nguồn tại thời điểm chạy, tự động đánh dấu STALE nếu code thay đổi dù chỉ một byte.

ProofRun – 'Biên lai' xác minh cục bộ giúp kiểm chứng lời hứa của AI coding agents

ProofRun – 'Biên lai' xác minh cục bộ giúp kiểm chứng lời hứa của AI coding agents

Trong thời đại các trợ lý lập trình AI ngày càng thông minh, câu hỏi "Làm sao để tin rằng chúng thực sự làm đúng?" trở nên cấp thiết hơn bao giờ hết. ProofRun là một công cụ mã nguồn mở mới ra mắt, cung cấp một cách tiếp cận độc đáo: thay vì cố gắng làm cho AI trung thực hơn, nó tạo ra một cơ chế để chính những lời khẳng định đó có thể bị kiểm chứng một cách độc lập, dựa trên mật mã và quan sát thực tế.

Công cụ này không dùng AI để kiểm tra AI, không gọi API, không có telemetry. Toàn bộ cơ chế hoạt động dựa trên việc chạy các tiến trình thực tế (subprocess) và ghi lại exit code một cách chính xác, sau đó ràng buộc kết quả đó với một "dấu vân tay" (fingerprint) duy nhất của mã nguồn, bao gồm cả nội dung chưa commit. Nếu bạn thay đổi code một byte, kết quả test cũ sẽ tự động chuyển sang trạng thái STALE.

Vấn đề mà ProofRun giải quyết

Một AI coding agent nói "tất cả test đã pass". Liệu điều đó có đúng?

Có thể. Nhưng đó là sự thật tại thời điểm agent chạy test, có thể đã cách đó vài lần chỉnh sửa code. Thực tế, agent có thể không hề chạy test mà chỉ suy luận rằng "thay đổi trông có vẻ hợp lý, test chắc vẫn pass". Từ những lời nói suông, người dùng không thể phân biệt được đâu là "Tôi đã chạy và nó pass" với "Tôi khá chắc là nó sẽ pass".

ProofRun không phán xét mã của bạn đúng hay sai. Nó chứng minh — bằng mật mã, không phải bằng cách hỏi khéo — rằng những kiểm tra nào đã thực sự chạy trên chính xác mã nguồn bạn đang có.

Cách hoạt động đơn giản nhưng chặt chẽ

$ proofrun run test -- pytest
...
test: pass (exit 0, 1841ms)

$ proofrun status
test                 PASS    (exit 0, 1841ms)

# thay đổi code sau thời điểm này — dù do AI hay con người
$ proofrun status
test                 STALE   (last run: pass, exit 0 — code changed since)

Mỗi kết quả kiểm tra được gắn với một fingerprint của trạng thái mã nguồn: mã git commit, cộng với hash SHA-256 của tất cả nội dung chưa commit. Thay đổi một byte duy nhất, kết quả tự động chuyển thành STALE. Không ai cần phải nhớ để hỏi lại "liệu PASS này còn giá trị không?"

Vì sao không chỉ đơn giản là tin agent?

Điểm mạnh của ProofRun nằm ở các quyết định thiết kế cốt lõi:

  • Không dùng AI để xác minh AI: Chạy subprocess thực tế và đọc exit code thật – đó là toàn bộ cơ chế. Không có cuộc gọi LLM nào.
  • Bốn trạng thái rõ ràng: PASS, FAIL, STALE, NOT RUN – mỗi trạng thái đến từ một lần thực thi đã quan sát hoặc sự vắng mặt được ghi nhận. Không có trạng thái thứ năm kiểu "chắc là ổn".
  • Hoạt động hoàn toàn ngoại tuyến: Không gọi mạng, không telemetry, không tài khoản.
  • So sánh argv chính xác đến từng ký tự: Lệnh khai báo pytest -k "foo bar" không thể bị đánh lừa bởi lệnh tương tự khi chuyển thành chuỗi. ProofRun so sánh mảng tham số thực tế, không phải chuỗi.

GoGo

Cấu hình và sử dụng

Cài đặt nhanh chóng bằng lệnh curl hoặc go install. Khởi tạo và chạy:

proofrun init                      # tạo file .proofrun.yml
proofrun run test -- pytest        # chạy pytest thực tế, ghi nhận kết quả
proofrun status --strict           # exit code khác 0 nếu có check không ở trạng thái PASS

File cấu hình .proofrun.yml mô tả các check cần thiết:

checks:
  test:
    command: [pytest]
    required: true
  build:
    command: [npm, run, build]
    required: true
  lint:
    command: [ruff, check, .]
    required: false

Điểm thú vị: Chính công cụ cũng bị soi xét

Điểm đáng chú ý nhất có lẽ là ProofRun được chính một AI coding agent (Claude Code) viết dưới sự chỉ đạo của con người, sau đó trải qua nhiều vòng phản biện độc lập. Quá trình này đã phát hiện ra một lỗ hổng nghiêm trọng: cơ chế so sánh lệnh có thể bị đánh lừa bởi một tham số shell bị sai, khiến check chạy 0 test nhưng vẫn báo PASS.

Một công cụ tạo ra để giữ trách nhiệm cho AI không có lý do gì tồn tại nếu nó không thể chịu được sự soi xét tương tự.

Mọi bản sửa lỗi đều được xác minh bằng cách tái hiện lỗi thực tế trước khi được chấp nhận.

Triển khai với GitHub Action

ProofRun cung cấp sẵn GitHub Action để tích hợp vào quy trình CI/CD:

on: pull_request
permissions:
  contents: read
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: yebiguo/proofrun@v1

Điểm đặc biệt: Action tự checkout chính xác commit của PR, không bao giờ tin tưởng vào những gì workflow đã checkout sẵn, và không bao giờ tin vào bất kỳ receipt.json nào được commit kèm trong nhánh PR. Mọi kết quả đều được tạo mới từ lần chạy này. Tuy nhiên, hiện tại vẫn có giới hạn: file .proofrun.yml có thể bị PR làm yếu đi (ví dụ gỡ bỏ check). Action chỉ cảnh báo khi file này khác với nhánh gốc, chưa chặn hoàn toàn.

Test WorkflowTest Workflow

Tương lai và lộ trình

Dự án còn rất trẻ (pre-1.0) nhưng có phạm vi rõ ràng. Lộ trình bao gồm:

  • v0.3: Hỗ trợ output có cấu trúc cho các test runner phổ biến (pytest, Jest, JUnit)
  • Receipt có chữ ký số: Chống giả mạo bằng chứng, đang được nghiên cứu thiết kế
  • Bảo vệ .proofrun.yml: Ngăn chặn việc PR làm suy yếu chính cấu hình

Với cộng đồng lập trình viên Việt Nam đang ngày càng ứng dụng AI vào quy trình phát triển phần mềm, ProofRun mở ra một hướng tư duy mới: thay vì đặt niềm tin mù quáng vào các công cụ AI, hãy xây dựng những cơ chế kiểm chứng độc lập, khách quan và có thể kiểm toán được. Đây chính là nền tảng để hợp tác hiệu quả và an toàn với AI trong môi trường sản xuất thực tế, nơi mà một lời hứa "test pass" sai lầm có thể dẫn đến những hậu quả nghiêm trọng.

CodecovCodecov ReleaseRelease

Dự án được phát hành dưới giấy phép MIT, khuyến khích cộng đồng đóng góp và phát triển.

MIT LicenseMIT License

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗