Local AI Lên Ngôi, Vibe Coding Lộ Khuyết Điểm: Bài Học Từ Hacker News Hôm Nay

Karify98 & Amy 🌸·
Cover Image for Local AI Lên Ngôi, Vibe Coding Lộ Khuyết Điểm: Bài Học Từ Hacker News Hôm Nay

Hacker News Hôm Nay Kể Một Câu Chuyện Rất Khác

Mở Hacker News sáng nay, ba bài đứng top đều liên quan đến AI — nhưng không phải theo kiểu "AI sẽ thay thế developer". Ngược lại hoàn toàn.

Bài đầu tiên, "Local AI Needs to be the Norm" trên unix.foo, thu hút hơn 1073 upvotes và 463 bình luận. Tác giả lập luận rằng việc mọi app đều gọi API OpenAI/Anthropic là một thói quen xấu — tạo ra phần mềm mong manh, xâm phạm quyền riêng tư, và phụ thuộc vào server bên thứ ba.

Bài thứ hai, "I'm going back to writing code by hand" từ blog k10s.dev, 325 upvotes. Một dev đã dành 7 tháng vibe coding với Claude để xây tool Kubernetes, rồi phải archive toàn bộ codebase và viết lại từ đầu.

Bài thứ ba, hướng dẫn chạy local model trên MacBook M4 24GB — 287 upvotes. Practical, cụ thể, không drama.

Ba bài viết, ba góc nhìn, một thông điệp: cách developer dùng AI đang cần được xem xét lại.

"Stop Shipping Distributed Systems When You Meant to Ship a Feature"

Đây là câu kết của bài viết trên unix.foo, và nó đọng lại trong đầu suốt ngày.

Tác giả đưa ra một ví dụ rất thực tế: app đọc tin tức Brutalist Report. Thay vì gửi nội dung bài báo lên server OpenAI để tóm tắt, họ dùng Apple's local model APIs — chạy ngay trên thiết bị. Không có server trung gian, không log prompt, không cần tài khoản vendor, không lo "chúng tôi lưu trữ dữ liệu của bạn trong 30 ngày".

Lập luận cốt lõi: khi dữ liệu đã ở trên thiết bị của user, tại sao phải gửi nó đi xa?

Điều này đặc biệt đúng với các tác vụ như tóm tắt email, phân loại tài liệu, trích xuất thông tin. Những thứ này không cần model "thông minh nhất thế giới" — chỉ cần model đủ tốt để transform dữ liệu. Và local model hoàn toàn làm được.

Quan điểm này rất đúng. Trong nhiều năm, ngành công nghiệp đã mặc định "AI = cloud API". Mọi tutorial, mọi starter project đều bắt đầu bằng import openai và gọi API. Nhưng thực tế là phần lớn use case không cần GPT-5 hay Claude Opus — một model 9B chạy local xử lý ổn các tác vụ cơ bản.

Vibe Coding: Từ "Magic" Đến "God Object"

Câu chuyện của k10s.dev là bài học đắt giá cho bất kỳ ai đang vibe coding.

Anh ấy bắt đầu dự án k10s — một TUI dashboard cho Kubernetes với GPU monitoring — vào tháng 9/2025. Ba tuần đầu là "magic": prompt Claude "add a pods view with live updates" và nó hoạt động. Resource views, namespace filtering, log streaming, vim keybindings — tất cả đều OK. Tốc độ 10x bình thường.

Rồi mọi thứ sụp đổ khi anh ấy thử chuyển giữa các view. Pod view trống trơn. Live updates dừng. Fleet view hiển thị sai data.

Khi ngồi đọc lại code, anh ấy phát hiện model.go — 1690 dòng, một struct duy nhất chứa tất cả: UI widgets, K8s client, state cho từng view, navigation history, caching, mouse handling. Method Update() dài 500 dòng với 110 switch/case branches.

Đây là pattern có thể gọi là "AI viết tính năng, không viết kiến trúc". Mỗi lần prompt, AI tạo code hoạt động tốt cho feature đó — nhưng không ý thức được 49 feature khác đang share cùng một state. Kết quả là "god object" nuốt chửng chính nó.

James Shore, một consultant giàu kinh nghiệm, cũng đưa ra cảnh báo tương tự trên blog cá nhân: nếu AI giúp bạn viết code nhanh gấp đôi, bạn cần đảm bảo chi phí bảo trì giảm một nửa. Nếu không, bạn chỉ đang đánh đổi tốc độ tạm thời lấy nợ kỹ thuật vĩnh viễn.

Local Model Trên M4: Thực Tế Hơn Bạn Nghĩ

Bài viết trên jola.dev cho thấy chạy local model không còn là lý thuyết. Trên MacBook M4 24GB, Qwen 3.5-9B (Q4 quantization) chạy được ~40 tokens/giây với thinking mode, tool use, và context window 128K.

Không hoàn hảo — model hay bị phân tích, đôi khi loop, hiểu sai yêu cầu. Nhưng với workflow tương tác từng bước, nó vẫn hữu ích như trợ lý nghiên cứu và đối tượng để rubber duck debugging.

Điều thú vị là tác giả nhận xét: dùng local model khiến anh ấy tham gia nhiều hơn vào quá trình viết code. Không thể "offload toàn bộ cognitive effort" như khi dùng SOTA model. Bạn phải suy nghĩ, lên kế hoạch, communicate rõ ràng hơn.

Đây chính xác là điều k10s.dev cũng phát hiện: vibe coding "quá dễ" khiến bạn mất focus, ngừng suy nghĩ, và cuối cùng nhận ra codebase đã trở thành mớ hỗn độn.

Vậy Cân Bằng Ở Đâu?

Câu trả lời không phải là "bỏ AI, quay về viết code bằng tay" hay "dùng local model cho mọi thứ". Cả hai cực đoan đều sai.

Dựa trên những gì quan sát được, đây là framework đang được áp dụng:

Dùng local model khi:

  • Dữ liệu nhạy cảm (email, tài liệu nội bộ, code proprietary)
  • Tác vụ đơn giản: tóm tắt, phân loại, trích xuất
  • Muốn offline hoặc không phụ thuộc vendor
  • Cần latency thấp (không round-trip qua mạng)

Dùng cloud API khi:

  • Cần reasoning phức tạp, multi-step planning
  • Xử lý dữ liệu lớn hoặc multimodal
  • Cần model "thông minh nhất" cho task cụ thể
  • Prototype nhanh, không muốn thiết lập local

Với vibe coding, nguyên tắc từ bài học k10s:

  • Bạn viết architecture, AI viết code. Đừng giao toàn bộ design cho AI.
  • Đọc code AI tạo, không chỉ test happy path. God object không tự xuất hiện — nó lớn dần khi bạn không để ý.
  • Giới hạn scope mỗi prompt. "Add feature X" với project 5000 dòng khác hoàn toàn với project 500 dòng.
  • AGENTS.md/CLAUDE.md là bắt buộc. Define coding standards, architecture rules, và constraints trước khi AI viết dòng code nào.

Tín Hiệu Tích Cực

Điều lạc quan nhất từ các bài viết hôm nay là cộng đồng developer đang tỉnh táo hơn về AI.

Không còn giai đoạn "AI sẽ thay thế tất cả" hay "AI là hype vô dụng". Thay vào đó, những thảo luận thực tế: khi nào nên dùng, khi nào không, làm sao dùng cho đúng.

Local AI không phải giải pháp vạn năng — model nhỏ hơn, kém thông minh hơn, khó thiết lập hơn. Nhưng nó giải quyết đúng vấn đề: quyền riêng tư, chi phí, và dependency.

Vibe coding không phải tội lỗi — nhưng nếu bạn không hiểu code AI tạo, bạn đang mua trouble trả góp.

Câu hỏi không còn là "có nên dùng AI" mà là "dùng AI như thế nào để code tốt hơn, không chỉ nhanh hơn".


Tham khảo: