Viết chậm,
hiểu sâu.
Ghi chép kỹ thuật về hạ tầng phân tán, kiến trúc hệ thống production-grade và tư duy phản biện bởiTú (tusgino).
Coverage 100% mà vẫn không chạy
Một tính năng chết hẳn trong sản phẩm, trong khi 178 test xanh và coverage vẫn 100%. Coverage đo dòng đã chạy, chứ không đo đường mà sản phẩm thật sự đi.
Tất cả bài viết
Xem toàn bộ kho bài (12) →Sổ ghi là nguồn, không phải bản sao
Mọi thứ model nhìn thấy phải nằm trong sổ trước. Ngữ cảnh gửi cho model không được lưu song song — nó được suy ra, và đó là khác biệt giữa nguồn với bản sao.
Vòng lặp giống nhau, chỗ thay được thì khác
Mọi harness đều có sổ ghi, sổ tool, ngân sách và tầng quyền. Chúng khác nhau ở chỗ cái nào bạn được phép thay — tôi đã đọc mã nguồn bốn harness để trả lời.
Harness bắt đầu từ chỗ nào
Vòng lặp chỉ là bộ điều phối. Thứ biến nó thành harness là bốn mảnh cắm rời được, và trong một harness thật cả bốn đều là plugin thay được từ cấu hình.
System One AI: Đừng đốt 800ms chỉ để lấy một từ khóa rẽ nhánh
Khám phá System One AI với TypeSafe Jev: thay thế LLM chậm chạp bằng Typed Decisions, phân phối xác suất và 3 primitive Choice, Score, Noul trong thực tế.
Vòng while chạy được, cho tới lúc không
Một agent loop chạy được sau mười dòng. Bản production của cùng vòng lặp đó dài 101 dòng, và phần dôi ra đều là những chỗ nó từng vỡ. Đây là bốn chỗ đó.
Model đề nghị, code của bạn thực thi
Model chỉ thấy phần khai báo của tool, không thấy phần thực thi. Một tool call là yêu cầu có cấu trúc mà code của bạn kiểm tra, kiểm quyền, rồi quyết định chạy.
Cửa sổ ngữ cảnh không phải trí nhớ
Cửa sổ ngữ cảnh là ngân sách hữu hạn, không phải trí nhớ. Cùng một request, hai tỉ lệ ước lượng token lệch nhau 1,6 lần, và bạn không biết mình ở đâu.
Một lần gọi API, rồi quên hết
Mỗi lần gọi API là một hàm thuần: text vào, text ra, xong là hết. Cái bạn tưởng là trí nhớ của model thực ra là lịch sử bạn tự gửi lại, và bạn trả tiền cho nó.