26 điểm bởi GN⁺ 2026-03-03 | 4 bình luận | Chia sẻ qua WhatsApp
  • git-memento là một công cụ mở rộng tự động ghi lại các phiên tạo mã do AI sinh ra vào Git commit, lưu lịch sử hội thoại AI tương ứng với từng commit dưới dạng git notes
  • Khi chỉ định ID phiên AI lúc commit, bản tóm tắt được lưu trong refs/notes/commits, còn toàn bộ hội thoại được lưu tách biệt trong refs/notes/memento-full-audit, giúp đảm bảo đồng thời khả năng truy vết và quyền riêng tư
  • Hỗ trợ nhiều nhà cung cấp AI như CodexClaude; khi tạo tóm tắt có thể áp dụng kỹ năng tùy chỉnh để kiểm soát chất lượng ghi chú commit
  • Tích hợp với GitHub Actions, cung cấp các tính năng tự động tạo bình luận từ ghi chú commit, xác thực cổng CI, và tự động chuyển ghi chú khi hợp nhất (merge-carry)
  • Hỗ trợ Windows/macOS/Linux. Đây là công cụ giúp tăng tính minh bạch của việc AI tạo mã và đảm bảo khả năng kiểm toán (audit) các đóng góp của AI trong môi trường cộng tác

Tổng quan về git-memento

  • git-memento là một công cụ mở rộng Git ghi lại các phiên lập trình với AI theo từng commit
    • Khi commit, công cụ sắp xếp nội dung hội thoại của phiên AI và lưu thành ghi chú Markdown
    • Mỗi commit đều lưu lại nguồn gốc và ngữ cảnh hội thoại của phiên AI để có thể truy vết quá trình tạo mã
  • Mặc định hỗ trợ Codex, đồng thời có thể cấu hình các mô hình AI khác như Claude
  • Được phát hành theo giấy phép MIT và phân phối dưới dạng tệp thực thi đơn dựa trên NativeAOT

Các lệnh và tính năng chính

  • Dùng git memento init để khởi tạo cấu hình theo từng kho lưu trữ và lưu thông tin nhà cung cấp AI vào .git/config
  • Dùng lệnh git memento commit để thêm ghi chú phiên cùng lúc với commit
    • Nếu dùng tùy chọn --summary-skill, bản tóm tắt và toàn bộ phiên sẽ được lưu tách biệt
    • Bản tóm tắt được ghi vào refs/notes/commits, còn toàn bộ nhật ký được ghi vào refs/notes/memento-full-audit
  • git memento amend cho phép thêm phiên mới vào commit hiện có hoặc chỉnh sửa
  • git memento audit kiểm tra việc thiếu ghi chú trong một phạm vi commit và xác thực tính hợp lệ của metadata
  • git memento doctor kiểm tra cấu hình, tham chiếu ghi chú và trạng thái đồng bộ từ xa

Quản lý và đồng bộ ghi chú

  • Dùng git memento share-notes để đẩy ghi chú lên kho từ xa (origin v.v.)
  • git memento notes-sync hợp nhất an toàn các ghi chú từ xa và tạo bản sao lưu
    • Đồng bộ cả refs/notes/commitsrefs/notes/memento-full-audit
  • git memento notes-carry chuyển ghi chú sang commit mới sau khi rebase hoặc squash
  • git memento notes-rewrite-setup kích hoạt cấu hình chuyển ghi chú tự động

Tích hợp GitHub Actions

  • Kho lưu trữ có kèm GitHub Action có thể tái sử dụng
    • mode: comment — đọc ghi chú commit để tự động tạo bình luận
    • mode: gatekiểm tra việc thiếu ghi chú ở bước CI, chặn build nếu thất bại
    • mode: merge-carrychuyển ghi chú sang merge commit khi PR được hợp nhất
  • Mỗi chế độ được định nghĩa trong action.yml và có kèm artifact dành cho đăng ký Marketplace (dist/note-comment-renderer.js)
  • PR có gắn nhãn ignore-notes sẽ bỏ qua kiểm tra cổng và để lại bình luận “Notes ignored”

Định dạng ghi chú và quản lý phiên bản

  • Ghi chú được lưu theo định dạng git notes add -f -m ""
  • Dùng thẻ phiên bản(``) và dấu phân tách đoạn để hỗ trợ nhiều phiên
  • Tin nhắn của người dùng được gắn nhãn bằng tên người dùng Git, phản hồi AI được gắn nhãn bằng tên nhà cung cấp
  • Các ghi chú phiên đơn hiện có sẽ được tự động nâng cấp khi cần để duy trì tính tương thích

4 bình luận

 
wedding 2026-03-03

Với dự án private thì tôi export session rồi commit, còn dự án public thì chỉ commit file tóm tắt khi thấy thật sự cần thiết.
Dù sao cũng có thông tin cá nhân nữa... và tùy công cụ nhưng mỗi session thường dễ vượt quá 10 MB... nên tôi thấy không tiện cứ thế đẩy lên.

 

Nhưng chúng ta đang sống trong thời đại mà ổ đĩa rẻ hơn bao giờ hết!

 
GN⁺ 2026-03-03
Ý kiến trên Hacker News
  • Khi viết code với AI, tôi bắt đầu bằng file project.md
    Trong đó tôi mô tả kết quả mình muốn, rồi để AI viết plan.md dựa trên nội dung đó
    Sau đó tôi chỉnh sửa plan.md nhiều lần, và khi kế hoạch mong muốn đã hoàn chỉnh thì tạo danh sách todo chi tiết rồi gắn vào cuối plan.md
    Khi đã hoàn toàn hài lòng, tôi bảo AI thực hiện todo, không hỏi thêm gì nữa và làm cho đến hết
    Cuối cùng tôi commit project.md, plan.md và toàn bộ code
    Làm vậy thì plan.md trở thành một dạng artifact có thể tái lập, để sau này các model tốt hơn có thể dựa vào đó chỉnh sửa hoặc tìm lỗi

    • Tôi cũng làm tương tự nhưng tách thành ba tài liệu — design, plan, debug
      design được viết theo từng tính năng và nêu rõ các câu hỏi chưa được giải quyết
      plan được quản lý theo cấu trúc plan/[feature]/phase-N-[description].md, và sẽ dừng lại nếu đụng phải giới hạn build hay chạy
      Ở giai đoạn debug, tôi đưa ra các giả thuyết về nguyên nhân có thể có, kiểm chứng bằng logging/tracing rồi mới sửa
      Cách này cho thấy tỷ lệ thành công gần như 100% ở cả dự án mới lẫn legacy
      Nhược điểm là tích lũy quá nhiều file markdown, nhưng vì lịch sử cũ vẫn hữu ích cho các thay đổi trong tương lai nên tôi chưa tự động hóa
    • Nghe giống một cách tiếp cận dựa trên spec
      Có thể tham khảo GitHub spec-kit
    • Tính năng “brainstorming” của obra/superpowers gần như là đúng quy trình này. Dùng thử sẽ thấy rất tuyệt
    • Trước đây tôi dùng Beads theo kiểu này, rồi sau đó tạo ra GuardRails
      Khi để model lặp đi lặp lại việc nghiên cứu thị trường và xem xét đề xuất, cuối cùng bạn sẽ thiết kế prompt bằng thứ ngôn ngữ mà chính model có thể hiểu
      Gần đây tôi phát hiện XML ảnh hưởng đến cách Claude hoạt động, nên đang nghĩ lại về cấu trúc của GuardRails
      Link bài giới thiệu
    • Tôi cũng dùng cấu trúc tương tự, nhưng có thêm file “context” riêng
      Khi plan hoàn tất, tôi tạo “context.md” để sau này tham khảo khi cần quay lại một kế hoạch sai
      Thực tế thì tôi chưa cần dùng đến lần nào, nhưng về mặt khái niệm nó khá hữu ích
      Chỉ là tôi vẫn thấy mơ hồ nên đặt các file này ở đâu, nên hiện chưa đưa vào repo
      Tôi khá tò mò không biết mọi người lưu các file md theo từng công việc ở đâu
  • Theo tôi thì đây giống câu hỏi “có nên commit mọi dòng không?”
    Cuối cùng thì trọng tâm là bản ghi đó phục vụ cho ai
    Phần lớn các session có rất nhiều nhiễu, nhiều lần thử sai và thông tin không cần thiết
    Điều quan trọng là đầu ra của session, chứ không phải toàn bộ quá trình
    Tuy vậy, spec ban đầu hay prompt đầu tiên vẫn có giá trị. Tốt hơn là tóm tắt chúng trong commit message hoặc file markdown

    • Với con người thì phức tạp và ồn ào, nhưng loại thông tin session này có thể hữu ích cho AI trong tương lai
      Có thể dùng các session cũ như ngữ cảnh học tập để tiếp tục công việc hiện tại
      Đặc biệt, nó có thể giúp hiểu giới hạn của model và tìm ra những điểm mà code lệch khỏi ý định của người dùng
      Cuối cùng tôi nghĩ rằng việc ghi lại mọi đầu vào của con người là quan trọng cho sự phát triển của các model mã nguồn mở
    • Thay vì “có commit mọi dòng không”, có lẽ phép so sánh phù hợp hơn là “có giữ lại mọi ghi chú và các lần thử thất bại hay không”
    • Trong nghiên cứu khoa học, người ta đã gặp vấn đề này từ lâu — khủng hoảng tái lập
      Kết quả vẫn phải giống nhau ngay cả khi có cả điều kiện ban đầu và nhiễu
      Nếu không, việc bảo trì code trong tương lai sẽ trở thành một trò chơi đoán ý định
      Bài viết liên quan
    • Với các tổ chức coi trọng tính minh bạch, nó có thể có giá trị cho việc audit, nhưng thực tế thì ai sẽ đọc mớ log dài đó
    • Không cần lưu mọi session, nhưng những khoảnh khắc yêu cầu được làm rõ trong quá trình chỉnh sửa chi tiết thì có giá trị
  • Một tuần trước tôi cũng đề xuất ý tưởng tương tự (link)
    Nhưng cũng có nhiều ý kiến phản đối — dự án AI không được tạo ra từ một đầu vào duy nhất, mà là một quá trình hội thoại nên khó biến thành artifact như source code
    Dù vậy, hiện có quá nhiều dự án tạo sinh được đăng lên Show HN nên mức độ nhiễu đã rất nghiêm trọng
    Không thể loại bỏ hoàn toàn, nhưng ở trạng thái hiện tại thì tôi thấy ngày càng kém hứng thú
    Tôi đang nghĩ xem cộng đồng nên xử lý vấn đề này như thế nào

    • Tôi tham khảo cách Boris Tane dùng Claude để viết code
      Tôi commit research.md và plan.md để dùng như một từ điển sống về kiến trúc và tính năng
      Tôi thêm tiền tố tên tính năng vào tên file để Claude có thể nhanh chóng gọi ra bản thiết kế liên quan
      Blog tham khảo
    • Vấn đề không phải là thiếu ngữ cảnh, mà là tiêu chuẩn về công sức đã hạ thấp
      Những dự án từng thú vị giờ lại được làm ra quá dễ dàng
      Bắt mọi người đọc log session dài không phải giải pháp. Khả năng tóm tắt và năng lực lập kế hoạch mới ngày càng quan trọng
    • Sẽ rất hay nếu Codex có thể xuất toàn bộ session ra markdown
      Giá trị thật sự của vibe coding nằm ở việc nhìn thấy quá trình thử và thất bại
    • Tôi cũng đang cân nhắc có nên đăng hai dự án lên Show HN hay không
      So với chỉ đăng kết quả, những bài có quy trình làm ra và phần giải thích sẽ thú vị hơn
      Vì vậy tôi muốn có thêm một hạng mục kiểu [Creations] tách riêng khỏi [Show HN]
      Ví dụ: một chess engine đơn thuần thì là [Creations], còn chess engine làm với 1k thì là [Show HN]
      PerfBoardLerc là ví dụ như vậy
  • Session chỉ là đầu ra trung gian, không nhất thiết phải nằm trong thành phẩm cuối cùng
    Nếu lý do thay đổi code là quan trọng, thì nên ghi lại bằng commit message hoặc tài liệu

    • Cuối cùng thì đây là vấn đề của việc tóm tắt
      Ở thời điểm commit, bạn không biết người đọc tương lai sẽ có câu hỏi gì
      Vì vậy tôi thích cách lưu session rồi sau đó tạo bản tóm tắt từ câu hỏi
      Git AI dùng cách tiếp cận này
      Dạo này kỹ sư làm việc quá nhanh, nên chỉ sau một tuần nhiều người đã không nhớ vì sao mình làm như vậy
    • Tối thiểu thì cần có bản tóm tắt của session
      Prompt mang tính nghiên cứu thì nên tóm tắt, còn prompt tạo code thì nên lưu nguyên bản
      Như vậy mới đảm bảo được khả năng tái lập và khả năng review
    • Trước đây tôi chỉ để LLM viết commit message, nhưng giờ tôi thấy quản lý phiên bản file plan tốt hơn
      Kế hoạch phản ánh cả quá trình sửa lỗi, nên trở thành tài liệu hữu ích cho vòng lặp sau
    • Với tôi, chính repo là kho lưu trữ trí nhớ của agent
      Mỗi repo trao đổi thông điệp với nhau để quản lý yêu cầu tính năng
      Tôi lưu cả hội thoại gốc lẫn ký ức đã được nén ngữ nghĩa, rồi sắp xếp lại spec và yêu cầu
    • Lưu session cũng hữu ích cho việc truy vết nguyên nhân bug hay phân tích hậu kiểm
  • Log session phần lớn là nhiễu
    Nó là chuỗi các lần thử sai và hoàn tác, nên đặt cạnh commit chẳng khác gì lưu lịch sử trình duyệt
    Điều quan trọng là commit message chứa ý định và các ràng buộc
    Nếu AI viết code, thì cốt lõi không phải cuộc hội thoại mà là vì sao lại đưa ra yêu cầu như vậy
    Cuối cùng vấn đề có thể không phải lưu session, mà là thói quen xem nhẹ commit message

  • Dù dùng AI, tôi vẫn giữ quy trình thiết kế truyền thống
    Yêu cầu → use case → thiết kế lớp → định nghĩa ràng buộc → chạy AI
    Làm như vậy vừa giữ được năng lực phán đoán kiến trúc của con người, vừa để AI tăng tốc phần triển khai lặp lại
    Nếu thay vì log session mà đưa các tài liệu UML/ràng buộc này vào commit, bạn sẽ để lại ý định và ngữ cảnh rõ ràng hơn
    Tôi nghĩ các lập trình viên của năm 2026 nên giữ gìn cấu trúc cộng tác có phẩm chất như vậy

  • Điều này giống với việc có squash commit hay không
    Nếu thích squash thì chỉ coi trọng kết quả và không giữ lại quá trình
    Nếu không thì bạn ghi lại cả hành trình
    Session AI cũng vậy: nó hữu ích để debug quá trình tư duy, nhưng những người thích lịch sử gọn gàng thì không nhất thiết muốn xem
    Thực tế hơn là quản lý session riêng bên ngoài repo

    • Tôi cũng thuộc phe squash, nhưng nếu có hệ thống cho phép bung lịch sử nội bộ ra xem thì tôi vẫn muốn thấy cả session
      Tôi nghe nói Mercurial hay Fossil làm tốt mảng này hơn
    • Tôi nghĩ đây là phép so sánh phù hợp nhất
      Trong vibe-coding, hơn cả code, prompt cho thấy dấu vết của tư duy
      Có đưa vào git hay không là chuyện khác, nhưng để nó ở trạng thái có thể truy cập được thì vẫn có giá trị
    • Nếu là phát triển do con người dẫn dắt, thì việc dùng AI chỉ đơn thuần là một công cụ
      Trong trường hợp đó không cần xem quá trình theo thời gian thực
      Nhưng nếu là code hoàn toàn do AI viết, thì cần công khai prompt
  • Tôi cũng đã thử trích xuất session
    Có rủi ro mất một phần thông tin, nhưng tính dễ đọc và khả năng truy cập tốt hơn nhiều

  • Tôi nghĩ ít nhất cũng nên lưu prompt đã được tóm tắt của session
    AI review code kém nghiêm khắc hơn con người, còn ý định thì chỉ nằm trong prompt
    Nếu không sẽ lặp lại cùng một sai lầm
    Giá trị của code review là học hỏi và cải thiện, mà AI thì không học, nên việc ghi lại prompt phải thay thế vai trò đó
    Nó cũng cần thiết cho đánh giá kỹ năng viết prompt hay đào tạo junior

    • Nhưng tôi không đồng ý rằng điều đó là “đương nhiên”
      Chúng ta không đưa phím gõ, cú nhấp menu hay các lần thử debug vào commit
      Nếu lưu mọi cuộc hội thoại thì nhiễu sẽ quá nhiều
      Thực tế hơn là chỉ giữ lại tài liệu chứa ý định và giả định
    • Nhân tiện, tôi cũng tò mò mọi người nghĩ kích thước session thường vào khoảng bao nhiêu
  • Điều này giống như hỏi “có nên đưa lịch sử tìm kiếm Google vào commit không?” — tôi nghĩ tất nhiên là không

    • So sánh quá chuẩn. Ghi lại mọi mảnh suy nghĩ có tỷ lệ tín hiệu trên nhiễu quá kém
      Thay vào đó, chỉ nên để lại lý do, giả định và tóm tắt các phương án thay thế
    • Nhưng nếu lưu session thì bạn cũng giữ được cả các truy vấn tìm kiếm và kết quả mà AI đã dùng, điều này có thể hữu ích cho ngữ cảnh của dự án
    • Chẳng ai muốn biết bạn đã tìm “căn giữa div” bao nhiêu lần
      Tương tự, log model loay hoay với những vấn đề vặt vãnh là không cần thiết
    • Hơn nữa, không phải mọi tìm kiếm đều liên quan đến commit. Có thể còn chứa thông tin nhạy cảm
 

> “Có nên đưa lịch sử tìm kiếm Google vào commit không?” — tôi nghĩ tất nhiên là không

Tôi thích bình luận này