Blog
Ghi chép về engineering, AI agents và hạ tầng — những thứ tôi học được khi xây hệ thống thật.
Khi UNIQUE vẫn trùng: điều tra MySQL corrupt
Trong tình huống giả định, quá trình dựng replica đã phơi bày 43 bảng InnoDB bị corrupt âm thầm: secondary index trả về một dòng, trong khi scan theo PRIMARY cho thấy hai bản ghi trùng `obj_id`. Chuỗi bằng chứng cho thấy ZFS-backed NFS với synchronous-write semantics bị nới lỏng có thể phá vỡ cam kết `fsync()`, khiến index lệch khỏi clustered data sau các sự cố và làm truy vấn production trả kết quả sai mà không báo lỗi. Bài học cốt lõi là phải dùng storage bảo đảm durability, duy trì backup đã thử restore và kiểm tra tính toàn vẹn định kỳ, bởi replica không thay thế backup nhưng có thể vô tình trở thành phép thử phát hiện corruption.
Subagent trong Claude Code: context riêng, quyền hạn và cách điều phối
Subagent trong Claude Code là đơn vị thực thi có context, system prompt, model và phạm vi công cụ riêng, giúp cách ly log cùng dữ liệu trung gian khỏi phiên chính nhưng không mặc nhiên tách biệt filesystem. Delegation hiệu quả khi nhiệm vụ có ranh giới, quyền hạn và đầu ra rõ ràng—đặc biệt với chạy test, khảo sát codebase, review độc lập hoặc tra cứu tài liệu—đồng thời cần cân nhắc chi phí tái tạo context, xung đột khi sửa file và các lớp kiểm soát như permission, hook hoặc worktree.
Từ prompt đến mascot chuyển động trong Codex
Bài viết trình bày pipeline thực hành biến ảnh raster do GPT Image tạo hoặc chỉnh sửa thành mascot chuyển động, từ đặc tả nhân vật, ảnh tham chiếu, chuẩn hoá frame và đóng gói spritesheet đến manifest và state machine trong runtime. Chất lượng của mascot phụ thuộc chủ yếu vào tính nhất quán, khả năng kiểm tra và hợp đồng rõ ràng giữa asset với runtime; mô hình chỉ cung cấp nguyên liệu thị giác, còn code và visual QA biến chúng thành một thành phần phần mềm ổn định, có thể tái tạo và vận hành lâu dài.
ZFS vận hành ra sao và những rủi ro cần tính trước
ZFS hợp nhất filesystem và volume manager với checksum, copy-on-write, redundancy, snapshot và replication để phát hiện lỗi dữ liệu, đồng thời có thể tự sửa khi còn bản dư thừa hợp lệ. Tuy nhiên, độ an toàn và hiệu năng phụ thuộc lớn vào topology pool/vdev, đặc tính workload, phần cứng và các thiết lập như record size, SLOG hay special vdev—nhiều lựa chọn rất khó thay đổi về sau. Vì vậy, cần xác định rõ loại lỗi phải chịu, kế hoạch dung lượng, giám sát và quy trình backup–khôi phục trước khi tạo pool.
MCP không phải API: cách kết nối LLM với tool và dữ liệu
Giải thích kiến trúc Model Context Protocol, sự khác nhau giữa tools, resources và prompts, kèm một MCP server Python có thể chạy và kiểm tra bằng Inspector.
Vibe coding và phần trách nhiệm không thể giao cho AI
Vibe coding giúp rút ngắn thời gian tạo phần mềm chạy được, nhưng không thay thế quá trình hiểu, kiểm chứng và thiết lập các ranh giới bảo mật cần thiết. AI có thể viết code và đề xuất kiểm thử, song con người vẫn phải chịu trách nhiệm xác định quyền hạn, áp dụng đặc quyền tối thiểu, kiểm tra cả hành vi bị từ chối và chỉ phát hành khi có đủ bằng chứng về độ an toàn.
Poison Context: khi một giả định sai sống dai trong phiên làm việc
Poison Context khiến agent liên tục dựa vào dữ liệu sai, kết quả cũ hoặc giả định chưa kiểm chứng. Bài viết giải thích cách nhận diện, cô lập và phục hồi context trước khi lỗi lan sang các bước tiếp theo.
SM của NVIDIA và CU của AMD không phải hai đơn vị cùng thước đo
SM, CU, CUDA core hay Stream Processor nói gì về sức mạnh GPU? Bài viết bóc tách kiến trúc NVIDIA và AMD, rồi đưa ra checklist chọn card theo đúng workload thay vì đếm core.
Bên trong GPU: vì sao kiến trúc này hợp với nhân ma trận?
Đi từ SM, warp và hệ thống bộ nhớ tới matrix tiling, xử lý ảnh và Transformer để hiểu GPU mạnh ở đâu, và vì sao nhiều core chưa bao giờ là toàn bộ câu chuyện.
GPU và hành trình của một token
Đi từ prompt tới token kế tiếp qua CPU, VRAM, các tầng Transformer và những cụm nhân tính toán bên trong GPU; đồng thời chỉ ra điều gì thực sự quyết định tốc độ chạy model local.
Token của LLM không phải là một từ
Token được tạo ra thế nào, đếm ra sao, chiếm context window ở đâu và vì sao token/giây chưa đủ để nói một LLM nhanh. Một bản đồ thực dụng từ tokenizer tới chi phí và hiệu năng inference.
Bộ nhớ của agent: nhớ đúng còn khó hơn nhớ nhiều
Bộ nhớ của agent không chỉ là nhét lịch sử chat vào vector database. Bài này đi từ các loại bộ nhớ tới luồng ghi, truy xuất, hợp nhất, quên và cách đo một hệ thống bộ nhớ dùng được trong thực tế.
Agent loop: vòng lặp biến LLM thành tác nhân biết hành động
Một mô hình ngôn ngữ chỉ sinh chữ. Thứ biến nó thành agent là một vòng lặp nghĩ – làm – nhìn. Đi từ Chain-of-Thought, ReAct, tool use tới self-reflection, với paper gốc và vài quan sát từ thực tế.
Skill library của Voyager: cái kho khiến agent càng chơi càng giỏi
Voyager học suốt đời trong Minecraft nhờ một skill library dạng vector database — nơi mỗi kỹ năng là đoạn code agent tự viết, tự kiểm rồi cất lại để dùng sau. Bài này mổ xẻ cơ chế đó.
Skills: khi agent tự xây và tái sử dụng kỹ năng
Một agent giỏi không giải lại từ đầu mỗi lần — nó tích luỹ kỹ năng rồi gọi lại khi cần. Từ skill library của Voyager tới progressive disclosure của Agent Skills, kèm paper gốc và vài suy nghĩ.
Hooks trong Claude Code hoạt động thế nào?
Hooks biến những chỉ dẫn 'nhớ làm giúp tôi' thành đảm bảo chắc chắn. Bài này mổ xẻ vòng đời hook, cách cấu hình, luồng vào/ra bằng exit code & JSON, kèm ví dụ thật.