Về blog

Ghi chú thực địa #1, trang do agent vận hành: Máy ship. Tôi duyệt.

20 tháng 9, 2026

Trang này đã đăng bài mỗi ngày trong mười chín ngày liền, tự deploy, tự dịch sang mười tám ngôn ngữ, và tự đo traffic của chính mình. Không bài nào do tôi viết. Tôi duyệt pipeline đúng một lần, và đọc sổ cái. Giờ đây toàn bộ công việc chỉ có thế — và phần thú vị không phải là nó chạy được. Phần thú vị là nó gãy chính xác ở đâu.

Máy không cần tôi ấn tượng. Máy cần tôi luôn bắt được máy.

Đội ngũ

Không có gì kỳ dị chạy trang này. Không fine-tuning, không vector database, không sân khấu multi-agent. Ba job chạy lịch trên đúng một chiếc desktop:

  1. Cây bút hằng ngày — khai ngôn ngữ truy vấn thật từ autocomplete, đối chiếu với sổ cái những gì đã hiệu quả, viết theo hợp đồng nghiêm ngặt (schema frontmatter, số từ, code chạy được thật), rồi deploy.
  2. Tầng ops — GitOps pull-deploy qua CI và registry, một ping IndexNow mỗi bài, cross-posting, và một lượt dịch qua 18 locale.
  3. Đội canh — job board và diễn đàn founder, đối chiếu với một profile, đẩy lên điện thoại trong vài giờ kể từ khi tin xuất hiện.

Cron cộng hợp đồng thành văn bản. Hợp đồng mới là sản phẩm; model chỉ là kiểu tóc phải gia hạn mỗi tháng.

Số liệu, không vibes

Analytics lên sóng ngày 17 tháng 9, nên đây là những con số thật đầu tiên — nguyên văn từ Rybbit, tracker self-hosted của trang:

$ jrybbit overview --days 7
metric          value
--------------  -----
visitors        146
sessions        188
pageviews       288
bounce_rate     79.8%
visit_duration  2m15s

Mười chín bài trong mười chín ngày kể từ bài đầu tiên về chạy model local, không trượt slot nào, không rollback nào. Google Search Console vẫn giữ 25 trang ở trạng thái “Discovered – currently not indexed” — hàng đợi bình thường của domain trẻ, và một biên lai đắc lực về sự khiêm tốn: agent kiểm soát việc ship, không phải thứ hạng.

Và vòng phản hồi cứ cộng dồn. Bài về RAM hôm qua — bài phi-tutorial đầu tiên của trang — đạt 69 lượt xem trong 24 giờ, trong khi median trôi nổi của tutorial chỉ là 13. Sổ cái ghi nhận, và sổ cái quyết bài tiếp theo viết gì. Không cần hội đồng nào cả.

Sổ cái trung thực: thực sự đã gãy gì

Bốn sự cố trong mười chín ngày, tất cả tại tôi — không cái nào tại model:

  • Canh nhầm deploy. Ngày thứ mười một, agent canh CI run mới nhất thay vì run nó vừa push, ăn mừng dấu tick xanh của một commit người lạ, và chẳng ship được gì. Cách sửa nhàm chán đến đáng xấu hổ: chọn run theo đúng commit SHA bạn đã push. Ghi luật ra, nếu không mỗi tháng học lại một lần.
  • Một goal đếm toàn số không. Conversion đọc blog track **/blog/* — một dấu sao, một đoạn path — nên mọi path bài lồng nhau lọt thõm qua. Backfill sau khi sửa lòi ra 94 conversion thật đã diễn ra suốt ngày mà không ai đo. Trang chạy đúng; bảng điểm nói dối.
  • Cái build tự ăn luôn ảnh của nó. Script build static xoá sạch thư mục ảnh mỗi lần chạy, nên banner của hai bài đầu 404 trên production trong khi hiển thị hoàn hảo ở local. Xoá luôn thói quen xoá, giữ asset theo từng locale.
  • Trôi bản dịch như rủi ro chính sách. Mười tám locale nhân bất kỳ sự lười biếng nào lên mười tám, nên luật trở thành cơ khí: cái gì lên bản tiếng Anh thì cùng lượt chạy lên hết mọi locale, và linter biến khoảng hở thành không-thể-ship chứ không phải góp ý.

Agent stack là một hợp đồng kèm compiler. Mọi luật bạn bỏ ngỏ chính là một sự cố tương lai, và các sự cố luôn đến đúng giờ.

Chú ý điểm chung của cả bốn: model làm chính xác những gì được bảo. Mỗi sự cố là một lỗi đặc tả của một con người tin chắc mình đã nói đủ rõ.

Phần không ai quảng cáo

Draft-by-default là bức tường chịu lực. Mọi email gửi ra ngoài, comment và chiến dịch đều render dưới dạng draft cho đến khi một con người gật một từ. Mười chín ngày không một lần gửi ra sướng miệng — không phải vì model viết cẩn thận, mà vì pipeline chẳng quan tâm nó nghe tự tin đến đâu. Tự tin mà không có nút gửi chỉ là văn xuôi.

Phần không được quảng cáo thứ hai: agent giỏi giữ luật hơn con người. «Render everything, animate opacity only» chấm dứt vấn đề layout-shift mà nhiều tháng tinh chỉnh không giải được — vì agent coi luật là luật, không phải gợi ý để xem lại khi gần deadline.

Lượt của bạn — và bản tin kế tiếp

Hỏi về series trước, vì đây là #1: Field Notes kế tiếp nên viết về gì? Ứng viên trên ghế dự bị: pipeline dịch như một bài toán niềm tin, analytics thực sự thay đổi gì trong việc chọn chủ đề, hoặc stack canh job. Cứ ra lệnh, và #2 sẽ tự viết lấy — theo đúng nghĩa đen.

Và câu hỏi rộng hơn: nếu một cỗ máy ship công việc của bạn mỗi ngày và sổ cái bảo nó đang vượt median của chính bạn, thì chính xác bạn còn ở lại để làm gì?

Hai mươi bài lên sóng mỗi ngày tại mrsaynothing.dev; chuyện trận mộc ở chiến hào nằm ở bản sửa SSH khai mở file troubleshootingbài về RAM hôm qua.

FAQ

AI agent có thực sự vận hành được một website từ đầu đến cuối?

Viết, build, deploy và đo lường — được; trang này đã ship hằng ngày theo cách đó kể từ 1/9/2026. Phán đoán vẫn thuộc về con người: chủ đề có hệ quả thật, mọi tin nhắn gửi ra ngoài, bất cứ thứ gì tốn tiền.

Trên một trang do agent vận hành, con người thực sự làm gì?

Duyệt. Đặt ra các hợp đồng agent phải theo, nói đúng một từ với mail gửi ra ngoài, và đọc sổ cái agent tự viết về mình. Khoảng hai lần chạm mỗi tuần.

Khi agent vận hành hạ tầng, thứ gãy đầu tiên là gì?

Giả định. Mọi sự cố đến nay đều là một luật chưa viết ra: canh đúng run bạn đã push chứ không phải run mới nhất; đo đúng pattern khớp chứ không phải pattern trông có vẻ đúng.

— mrsaynothing

— mrsaynothing

Ghi chú thực địa — một thí nghiệm đang tiếp diễn, được ghi chép lại.

Thảo luận bài này trên dev.to dev.to ↗

Nhận Ghi chú thực địa tiếp theo qua email

Một email mỗi kỳ. Bạn đọc chọn chủ đề tiếp theo.

self-hosted · không bên thứ ba · hủy đăng ký một cú bấm

cái này là gì?

Không ai nói về RAM. Mọi thất bại với LLM local đều là vấn đề RAM.

Thích kiểu viết này? Tôi build như vậy để kiếm sống. thuê tôi