Giải thích cho người mới · 10/2026

Nhật ký
cho agent

Giao việc rồi đi họp, về lại có biết nó đã làm gì không? Ghi gì, che gì, và đọc lại thế nào.

Ví dụ đời thường Chạy thật 25 hành động Bài tập có đáp án Danh sách kiểm
exit=1 lúc 09:01:27 Ai đã chạy lệnh này?
Câu hỏi của bài này

Agent chạy lúc bạn vắng, rồi sao?

1Bạn không thấy từng bước. Có sự cố thì chỉ còn đọc lại cả cuộc trò chuyện để đoán.
2Nhật ký hành động: mỗi việc một dòng. Tìm được trong vài giây bằng script hoặc jq.
3Hình ảnh trong bài chỉ để dễ nhớ. Chưa ai hiểu hết cách AI quyết định hành động. Ta chỉ ghi lại được điều nó đã làm.
Hình dung trước

Camera cửa hàng và sổ biên nhận

Lời kể

Cuộc trò chuyện

Nhân viên nói “em làm xong rồi”. Có thể rất thật thà mà vẫn nhớ sai.

Sổ biên nhận

Nhật ký hành động

Mỗi giao dịch một dòng: mấy giờ, làm gì, kết quả. Mở sổ là thấy chỗ lệch.

Nhật ký ghi việc đã làm, không ghi lời đã nói.
Từ khó, nói dễ

Sáu từ sẽ gặp trong bài

Nhật ký hành động

tên kỹ thuật: audit trail

Cuốn sổ ghi từng việc đã làm theo thứ tự thời gian, như sổ biên nhận của cửa hàng.

JSON Lines

mỗi dòng một bản ghi

Thêm bản ghi chỉ là thêm một dòng cuối tệp. Dễ tìm bằng vài dòng code.

Che bí mật

tên kỹ thuật: redaction

Gạch đen phần bí mật trước khi viết vào sổ, như che số thẻ trên biên lai.

Hook (móc)

chỗ gắn lệnh vào sự kiện

Chỗ công cụ cho bạn chạy một đoạn lệnh mỗi khi có sự kiện, ví dụ ngay sau khi agent chạy lệnh.

Chỉ thêm

tên kỹ thuật: append-only

Sổ chỉ cho viết xuống cuối, không cho tẩy xóa trang cũ.

Chuỗi băm

dấu vân tay của dòng trước

Mỗi dòng mang dấu vân tay dòng trước. Sửa một dòng thì các dòng sau lệch.

Vì sao cần

Agent đã thành việc hằng ngày

69,9%

người trả lời hỏi AI agent khi gặp việc lạ. Khảo sát Stack Overflow 2026, đọc qua bản tóm tắt.

Trang giới thiệu báo cáo xu hướng 2026 của Anthropic nhắc việc cân bằng năng suất với giám sát, chất lượng, bảo mật.

Tôi chỉ đọc được trang giới thiệu. Chưa đọc phần thân báo cáo, nên không trích số liệu từ đó.

Ghi gì

Tám trường cho mỗi dòng nhật ký

ts

Giờ, có múi giờ

session

Mã phiên làm việc

actor

Ai hoặc cái gì làm

request

Yêu cầu gốc dẫn đến việc này

tool, args

Lệnh và tham số, đã che bí mật

exit_code

Mã kết thúc và tóm tắt

files_changed

Các tệp bị đổi

prev

Dấu vân tay dòng trước (tùy chọn)

Không được ghi

Ba thứ không được vào nhật ký

1Khóa bí mật và mật khẩuChe trước khi ghi. Nhật ký nhiều người đọc hơn tệp cấu hình
2Dữ liệu cá nhân của người dùngChỉ ghi mã nội bộ hoặc định danh đã che
3Toàn bộ nội dung tệp hay đầu ra dàiGhi tóm tắt (số dòng, số test đạt) và nơi để mở lại
Một dòng thật

Dòng số 12 của phiên chạy thật

{"seq": 12,
"ts": "2026-10-31T09:01:27+07:00",
"tool": "run_command",
"args": {"cmd": "python -m pytest -q"},
"exit_code": 1,
"summary": "ran 20 tests, 18 passed, 2 failed",
"prev": "5d5c9ffa0389"}

Hành động 12, lúc 09:01:27: chạy kiểm thử, mã kết thúc 1, hai test hỏng.

Trường prev là dấu vân tay của dòng 11. Dùng để phát hiện dòng bị sửa. Tệp thật mỗi bản ghi nằm trên một dòng.

Cơ chế

Bốn mắt xích của dây chuyền ghi

1
Agent làmChạy lệnh, sửa tệp, gọi công cụ
2
Lớp ghi bắt lạiNằm trong công cụ, không nằm trong lời nhắc
3
Che rồi ghiChỉ thêm dòng, không sửa dòng cũ
4
Truy vấnScript hoặc jq khi cần
Chỉ dặn agent “tự ghi nhé” thì có thể thiếu, sai hoặc bị sửa. Lớp ghi phải nằm ngoài.
Trong công cụ thật

Claude Code có hook cho việc này

tool_name, tool_input,
tool_response, tool_use_id,
session_id, transcript_path,
duration_ms (optional)

Theo tài liệu, hook nhận JSON qua stdin. Thoát mã 0 thì không đổi việc gọi công cụ, mã 2 thì chặn.

Bản ghi phiên có đuôi .jsonl trong ví dụ của tài liệu, nên là JSON Lines (suy ra từ ví dụ).

Mình chỉ thử đoạn ghi nhật ký với dữ liệu giả, chưa chạy trong phiên thật.
Chạy thật · dòng thời gian

Thất bại đầu tiên hiện ngay trong sổ

10 09:00:54 run_command exit=0 pytest
11 09:01:19 edit_file exit=0 tests/test_discount.py
12 09:01:27 run_command exit=1 pytest
13 09:01:29 read_file exit=0 tests/test_discount.py
14 09:01:44 edit_file exit=0 src/pricing.py
15 09:01:52 run_command exit=0 pytest

Phiên mô phỏng 25 hành động, tệp 7.170 byte. Lỗi đầu tiên: hành động 12.

Sau lỗi, agent sửa code (hành động 14), không sửa test. Nhật ký cho thấy điều đó.

Chạy thật · phát hiện dòng bị sửa

Sửa một dòng thì chuỗi báo lệch

== chain check ==
line 13: chain broken,
an earlier line was changed

chain NOT ok
== first failure ==
none found

Tôi đổi mã kết thúc của dòng 12 từ 1 thành 0 để “xóa” thất bại. Dòng 13 giữ dấu vân tay cũ nên báo lệch.

Không kiểm chuỗi thì “none found” khiến bạn tưởng phiên chạy sạch.

Chuỗi băm chỉ phát hiện, không ngăn. Hãy cất dấu vân tay cuối ở nơi khác.
Chạy thật · che bí mật

Che bằng mẫu cố định vẫn sót

Đã che
echo password=abc123
echo [REDACTED]
Lọt qua
echo pwd=abc123
echo pwd=abc123

Mẫu của tôi có từ password, token, api_key và khóa dạng sk-, nhưng không có pwd. Tôi chạy thật, kết quả: một dòng lọt.

Bản đầu của tôi che sau khi đổi sang chuỗi JSON, làm dòng bị cụt. Sửa: che từng giá trị trước khi ghi.

Che bí mật là lớp phòng thủ đầu tiên, không phải lớp duy nhất.
Trong công việc

Nhật ký cũng có chỗ hỏng

1Ghi quá ít: chỉ lời nói, không có lệnhGhi công cụ, tham số, mã kết thúc, tệp đổi
2Ghi cả khóa bí mật hoặc dữ liệu cá nhânChe trước khi ghi, thử bằng khóa giả
3Văn bản tự do, không ai tìm đượcDùng JSON Lines, tên trường cố định
4Agent tự ghi hoặc sửa được nhật kýLớp ghi nằm ngoài, chỉ thêm dòng, kiểm chuỗi
5Giữ vĩnh viễn mọi thứĐặt thời hạn lưu, xem lại theo ngày
Minh họa, không có thật

Minh họa: một buổi sáng, hai kịch bản

Không có nhật ký
11:35 · Đồng nghiệpSao tệp test bị đổi?
11:40 · DevCuộn cả cuộc trò chuyện dài. Agent chỉ nói “đã sửa”.
12:20 · DevĐoán một câu trả lời, không chắc.
Có nhật ký
11:35 · Đồng nghiệpSao tệp test bị đổi?
11:37 · DevTruy vấn: hành động 11 thêm test, hành động 14 sửa code.
11:40 · DevTrả lời kèm số thứ tự hành động.
Gắn câu trả lời với một hành động có số thứ tự, không với trí nhớ.
Danh sách kiểm

Tám câu hỏi cho nhật ký của agent

1Có lớp ghi nằm ngoài agent chưa?
2Mỗi dòng đủ tám trường chưa?
3Khóa bí mật đã che, đã thử khóa giả?
4Có ghi dữ liệu cá nhân hay nội dung tệp không?
5Nhật ký chỉ cho thêm dòng chứ?
6Đã cất dấu vân tay cuối ở nơi khác?
7Có truy vấn mẫu cho ba câu hỏi chưa?
8Ai được đọc, giữ bao lâu, xem lại khi nào?
Nhìn cân bằng

Nhìn cân bằng: được gì, chưa được gì

Làm được
  • Rút ngắn việc dựng lại sự việc
  • Trả lời “làm gì lúc mấy giờ”
  • Làm lộ dòng bị sửa nếu kiểm chuỗi
Chưa làm được
  • Không nói kết quả có đúng không
  • Không ngăn thiệt hại, chỉ giúp biết sau
  • Tốn dung lượng, cần chăm sóc về riêng tư
Kết luận

Cho agent một cuốn sổ biên nhận do lớp khác ghi.

Ghi vừa đủ, che bí mật, chỉ cho thêm dòng, biết cách đọc lại. Nhật ký không thay bằng chứng và kiểm thử, nhưng rút buổi chiều điều tra xuống vài phút.