Lần gần nhất tôi mất một phiên chạy agent qua đêm, chẳng có gì crash. Chẳng có lỗi nào. Tôi đã khởi động một đợt migration dài trên cái repo mà tôi né tránh suốt mấy tháng, ngồi xem nó nghiền qua phần đầu buồn tẻ, rồi gập máy lại vì hôm đó tôi xong việc. Sáng hôm sau mở ra trong một quán cà phê. Phiên làm việc đã biến mất. Không phải thất bại. Nó dừng lại, ở đâu đó giữa chừng, với một nhánh làm dở và không một dòng ghi lại nó sắp làm gì tiếp theo.
Mà tôi thì đã chạy cái cách khắc phục đó rồi. Chính chỗ đó mới đau.
Vậy nên bài này nói về lý do cách khắc phục ấy vốn không bao giờ có cơ hội thành công, và về cái máy thuê cực kỳ nhàm chán đang làm thay công việc đó. Giờ tôi dùng nó để chạy AI agent 24/7, và đã thôi hẳn việc nghĩ đến thiết lập nguồn điện của laptop.
Cách khắc phục ai cũng khuyên dùng
caffeinate -dimsu. Hoặc một app trên thanh menu với biểu tượng tách cà phê. Hoặc, nếu bạn đào sâu hơn, sudo pmset -a disablesleep 1, tức là phương án cực đoan nhất và cũng là thứ hay xuất hiện trong những lời khuyên nghe chắc nịch nhất. Tôi đã chạy đúng cái đó. Cảm giác như đã giải quyết xong vấn đề.
macOS có nhiều hơn một cách để chìm vào giấc ngủ, và hai cách quan trọng ở đây độc lập với nhau: ngủ khi rảnh là một bộ đếm chạy xuống khi không có gì diễn ra, còn gập nắp máy thì thông thường kích hoạt chế độ ngủ cưỡng bức qua một đường riêng. Thứ mà caffeinate tạo ra là một tập hợp power assertion, và tài liệu tham chiếu caffeinate của ss64 cho thấy các cờ của nó bao phủ ngủ màn hình, ngủ khi rảnh, ngủ đĩa khi rảnh và ngủ hệ thống. Còn tài liệu quản lý nguồn điện của Apple nêu rõ điểm phân biệt quan trọng: một assertion ngủ khi rảnh vẫn không ghi đè lên việc gập nắp bình thường, menu Apple, hay pin yếu.
Vậy nên các công cụ giữ máy thức đúng là có tác dụng với những điều kiện ngủ mà chúng được tạo ra để kiểm soát. Nhưng gập nắp máy bình thường lại là một vấn đề khác, và caffeinate không phải là chiến lược chạy server khi gập nắp.
Lưu ý:
disablesleeplà trường hợp kỳ lạ. Nó hoàn toàn không xuất hiện trong tài liệu tham chiếu tùy chọn pmset . Cách khắc phục mà mọi người tìm đến là một thiết lập không được ghi trong tài liệu. Nó không phải power assertion. Nó có thể giữ cho MacBook thức khi đã gập nắp, kể cả khi chạy pin, cho đến khi bạn tắt nó đi hoặc pin cạn.
Laptop có hình dạng sai cho một công việc 24/7
Có một quãng thời gian trong thập niên chín mươi khi người ta chạy web server production trên những thùng máy để bàn nhét dưới gầm bàn ai đó, và cả tòa nhà học được cách đừng đá vào ổ cắm điện. Chúng ta không sửa chuyện đó bằng cách dán một tấm biển lên ổ cắm. Chúng ta sửa nó bằng cách chuyển khối lượng công việc sang một cỗ máy mà toàn bộ nhiệm vụ là đứng yên và luôn có điện.
Vẫn cùng một hình dạng vấn đề, ba mươi năm sau. MacBook là cỗ máy được thiết kế quanh việc bị gập lại và mang đi. Đó không phải lỗi trong khâu quản lý nguồn điện của nó. Đó chính là sản phẩm. Mỗi cách chống ngủ là một cuộc tranh cãi với một quyết định thiết kế mà ai đó đã cố ý đưa ra, và bạn có thể thắng cuộc tranh cãi ấy một thời gian, với cái giá là phải nghĩ về nó mãi mãi.
Bạn có thể đi xa hơn và tắt hẳn chế độ ngủ. Xin chúc mừng: giờ bạn sở hữu một server chạy liên tục có kèm pin bên trong, cộng thêm một thiết lập toàn hệ thống mà bạn phải nhớ hoàn tác trước khi nhét laptop vào cặp. Lần đầu tiên bạn vội vàng thu dọn, tiến trình vẫn không dừng. Nó để lại cỗ máy trong trạng thái thức, rút cạn pin và tích nhiệt đúng ở nơi bạn hoàn toàn không muốn.
Cũng chẳng có gì mới ở đây cả. Các daemon agent tự host đâm vào đúng bức tường ấy vì đúng lý do ấy: chúng phải luôn chạy khi bạn không ngồi ở bàn làm việc, điều đó loại chiếc laptop ra khỏi cuộc chơi trước cả khi bạn cấu hình bất cứ thứ gì. Chuyện này đã đúng với cả nhóm sản phẩm ấy từ lâu. Chỉ là nó chưa từng khiến tôi mất trắng một đêm làm việc.
Agent của bạn không suy nghĩ trên cỗ máy đó
Yêu cầu hệ thống do chính Claude Code công bố đòi hỏi 4 GB or more of RAM and an x64 or ARM64 processor. Dòng yêu cầu phần cứng chỉ có bấy nhiêu. Không có dòng nào về GPU. Không có dòng nào về VRAM. Chẳng có gì nói về model cả, vì trên máy bạn vốn không có model nào.
Tôi mất một khoảng thời gian dài đến mức xấu hổ mới thấm được điều này, và đó là lý do cái giá kia thôi nghe có vẻ đáng ngờ. Tiến trình agent trên máy bạn làm ba việc: lắp ghép ngữ cảnh rồi gửi đi dưới dạng các lệnh gọi API, giữ trạng thái hội thoại giữa các lượt, và chạy bất kỳ công cụ nào model yêu cầu. Đó là công việc điều phối. (Tôi cứ mãi đi tìm con GPU trong câu chuyện này. Không có GPU nào trong câu chuyện này cả.) Phần đắt đỏ, phần đòi cả một rack bộ tăng tốc, đang diễn ra trong trung tâm dữ liệu của người khác.
Agent không suy nghĩ trên cỗ máy đó. Nó chỉ đang gọi tới một thứ khác, thứ thực sự suy nghĩ.
Đó là lý do một cỗ máy làm được việc này có giá đúng như thế. Tính đến cuối tháng 8 năm 2026, Basic Droplet rẻ nhất của DigitalOcean là $4 mỗi tháng cho 512 MiB và một vCPU, còn thang Cloud Compute của Vultr bắt đầu từ $2.50 cho một instance 512 MB chỉ dùng IPv6 và lên tới $5 ở mức 1 GB. Hai nhà cung cấp, cùng một hình dạng đáy. Cả hai nấc thấp nhất đều nằm dưới mức 4 GB trong dòng yêu cầu ấy, và các gói hạng $5 cũng vậy. Nếu bạn chạy đúng Claude Code, 4 GB là mức sàn được công bố. Đầu giá rẻ chỉ dùng được khi agent bạn thực sự chạy có yêu cầu thấp hơn.
Một ranh giới, vì hiểu sai chỗ này thì tốn tiền: điều trên đúng với những agent gọi tới một model được lưu trữ ở nơi khác. Nếu thứ bạn muốn là một model chạy cục bộ trên phần cứng của chính mình, thì không điều nào ở trên còn đúng nữa. Một cái máy có một gigabyte RAM không chạy nổi model mà bạn muốn dùng để viết code.
Cỗ máy rẻ vì phần đắt đỏ đang diễn ra ở một nơi khác.
Mac mini có giá bao nhiêu, và số tiền đó mua được gì
Một chiếc Mac mini giờ có giá $899, và bạn chưa thể nhận máy trước ngày 22 tháng 9. Cấu hình M6 cơ bản (CPU 12 nhân, GPU 12 nhân, 16GB bộ nhớ, 256GB dung lượng lưu trữ) đang mở đặt trước và sẽ giao đúng ngày đó; bài viết về đợt ra mắt của TechCrunch có nêu con số đó. Apple không bán bất cứ máy nào rẻ hơn.
Con số đó đáng để ngồi lại ngẫm một lát. Vẫn 16GB ấy, vẫn 256GB ấy: cấu hình bộ nhớ và lưu trữ đó ra mắt với giá $599 vào tháng 10 năm 2024. Đắt thêm một nửa cho chiếc Mac mini bản thấp nhất, trong chưa đầy hai năm. Giữa chừng có một nấc $799, khi Apple ngừng bán cấu hình 256GB vào tháng 5 năm 2026 và giá khởi điểm nhích lên theo. Đó là nền đất mà lập luận mua đứt đang đứng lên, và nền đất ấy cứ dịch chuyển mãi.
Phía bên kia có nhiều điểm mạnh hơn tôi muốn thừa nhận. Máy hoàn toàn là của bạn, có giá bán lại và không có khoản chi hằng tháng nào. Tiền điện lúc máy rảnh gần như không đáng kể: Apple công bố 4W khi rảnh cho cấu hình M4, tương đương khoảng $6.40 mỗi năm theo giá điện sinh hoạt trung bình tại Mỹ tháng 6 năm 2026. Khối lượng công việc thật thì ngốn nhiều hơn, nên tôi sẽ không giả vờ rằng 4W là con số vận hành. Và sức tính toán đi thuê chỉ rẻ ở đáy thang. Cũng chính bảng giá DigitalOcean mở ra ở $4 ấy kết thúc ở $96 mỗi tháng cho một máy 16 GB, và ba năm như thế tốn gấp mấy lần giá chiếc Mac mini.
Nên là đúng vậy. Nếu câu hỏi là một lượng sức tính toán nhất định thì sở hữu hay đi thuê rẻ hơn trong ba năm, hãy mua Mac mini. Câu hỏi đó có đáp án, và đó không phải đáp án tôi đang bênh vực.
Có hai thứ mà một chiếc Mac mini mua được, và chúng làm thay đổi bài toán. Thứ nhất là chính macOS: một agent chạy ở đó có thể được nối vào Notes, Messages, Shortcuts, Calendar và Reminders thông qua cơ chế tự động hóa của macOS và quyền ứng dụng. Một máy Linux không màn hình thì không có những ứng dụng cục bộ đó. Nếu công việc của agent là làm việc với chúng, Mac mini chính là cỗ máy đúng, và tôi sẽ không giả vờ ngược lại.
Thứ hai là inference cục bộ, nơi một lượng lớn bộ nhớ nhanh nằm cạnh một con chip nhanh thực sự đáng đồng tiền, và không VPS giá rẻ nào đọ được. Những người bình luận trong một thread trên Hacker News bàn đúng chuyện này lập luận rất chắc và tôi nghĩ họ đúng. Chỉ có điều đó là một câu hỏi khác với câu hỏi của tôi.
Cả hai thứ đó đều không phải cách khắc phục cho một chiếc laptop bị gập lại. Mua máy để bàn để ngăn laptop ngủ là mua phần cứng để giải một bài toán về hình thái hệ thống.
Điều gì đã thay đổi sau khi tôi chuyển nó đi
Suốt mấy tuần liền tôi quên mất là nó tồn tại. Đó chính là bài đánh giá.
Tôi bật nó lên, chuyển agent sang đó, kiểm tra vài lần vì chưa tin tưởng, rồi thôi không kiểm tra nữa. Các phiên chạy đều xong. Cái nắp máy chẳng còn liên quan gì đến bất cứ điều gì. Chiếc Mac của tôi giờ ngủ, và đó chính là điều tôi muốn ở một cái laptop.
Ma sát là có thật, nên tôi kể ra đây. Tôi mất đi cỗ máy tại chỗ: bất cứ việc gì agent từng làm bằng cách chạm vào desktop của chính tôi, giờ nó không làm được nữa, và điều đó đã phá hỏng hai luồng công việc nhỏ mà tôi dựng lên chẳng cần nghĩ ngợi. Giờ có một cái server, có SSH trên đó, có firewall chắn phía trước, và một bản phân phối luôn đòi cập nhật, tức là một khoản thuế nhỏ nhưng vĩnh viễn đánh vào sự chú ý của tôi. Ai bảo bạn rằng một cỗ máy đi thuê là không cần bảo trì thì người đó đang bỏ qua một bước. Và nó rẻ là vì inference nằm ở xa: cái ngày tôi muốn chạy thứ gì đó cục bộ trên nó, hạng giá rẻ sẽ thôi là con số ấy.
Một agent được khởi chạy thẳng trong shell SSH có thể chết khi kết nối đó rớt. Hãy khởi chạy nó bên trong một phiên bền vững trước đã. tmux là câu trả lời tiêu chuẩn, và giữ cho phiên làm việc sống trên máy từ xa có nêu chi tiết.
Rồi tới phản bác sắc bén nhất mà người ta đưa ra: chẳng phải một cỗ máy đi thuê là ngôi nhà tệ hơn cho agent so với phần cứng bạn thực sự sở hữu hay sao? Với một agent kiểu điều hành có quyền truy cập vào tệp cá nhân của bạn, phản bác đó xác đáng. Với một agent lập trình, một VPS bạn kiểm soát bằng quyền root và một firewall do chính bạn cấu hình là một hồ sơ rủi ro khác hẳn so với một dịch vụ agent bạn phơi rộng ra internet công cộng. Nó vẫn là một máy ảo trên phần cứng của người khác, và mọi thứ bạn để cho internet chạm tới được vẫn thuộc về bề mặt tấn công của bạn. Còn phần vượt khỏi tầm kiểm soát của bạn, tức lệnh gọi API mang mã nguồn của bạn tới nhà cung cấp model, thì đằng nào cũng đi. Mac hay Linux, ranh giới tin cậy ấy vẫn thế.
Thứ tôi muốn là một cỗ máy mà tôi có thể thôi bận tâm. Bật lên, gia cố, đặt agent vào, rồi quên nó đi. Nếu bạn đang định dựng một cái, một VPS Linux thuần túy là tất cả những gì khối lượng công việc này đòi hỏi, và VPS của chúng tôi trao cho bạn quyền root qua SSH một phút sau khi bạn chọn khu vực và bản phân phối. Đại khái đúng bằng cái nghi thức mà việc này xứng đáng có.
Xây dựng trên VPS Linux với quyền root, NVMe và sức mạnh AMD EPYC.
Xem các gói LinuxĐiều tôi sẽ nói với người bắt đầu hôm nay
Ba điều, rồi tôi dừng.
Hiện tôi chạy gì: một máy Linux thuê nhỏ, một hai gigabyte RAM, một vCPU, ổ NVMe, đặt ở khu vực gần chỗ tôi. Khối lượng công việc của tôi cần đúng bấy nhiêu; nếu agent của bạn công bố mức sàn cao hơn, hãy theo mức đó. Trên máy có: CLI của agent, tmux, một firewall, và cập nhật tự động. Nó chiếm sự chú ý của tôi ngang ngửa cái router trong nhà.
Lời khuyên, nếu có thể gọi là lời khuyên: hãy đặt agent lên cỗ máy rẻ nhất đáp ứng yêu cầu công bố của nó, trước khi mua bất cứ thứ gì. Không phải như một quyết định vĩnh viễn. Mà như một phép thử. Trong vòng một tuần bạn sẽ biết khối lượng công việc của mình có phải là điều phối API hay không; nếu phải thì bạn xong rồi và vừa giữ lại được $899, còn nếu không thì nó thật sự cần phần cứng riêng.
Điều duy nhất tôi sẽ không làm lại: dành hàng tuần liền để tinh chỉnh quản lý nguồn điện. Tôi đã thử caffeinate, rồi tới một app trên thanh menu, rồi disablesleep, rồi tới lịch đánh thức tự động, và coi mỗi lần thất bại là một lỗi cấu hình mà tôi chưa tìm ra. Không phải vậy. Dấu hiệu nằm ngay ở đó: mỗi cách khắc phục lại khiến cỗ máy tệ đi một chút với tư cách một chiếc laptop. Mất trắng một đêm làm việc là cái giá đắt để nhận ra điều đó.
Câu hỏi thường gặp
Caffeinate có giữ cho Mac thức khi đã gập nắp không?
Số caffeinate dùng power assertion để chặn các điều kiện ngủ như ngủ khi rảnh và ngủ màn hình. Chính tài liệu của Apple về assertion đó nói rằng hệ thống vẫn có thể ngủ vì gập nắp, menu Apple, hoặc pin yếu. Việc gập nắp bình thường kích hoạt chế độ ngủ cưỡng bức, thứ mà các power assertion ấy không ngăn được, và đó là lý do các công cụ giữ máy thức hoạt động đáng tin cậy cho tới đúng khoảnh khắc nắp máy đóng lại.
Một AI coding agent cần bao nhiêu RAM trên server?
Ít hơn hầu hết mọi người tưởng, bởi model không chạy trên đó. Yêu cầu hệ thống công bố của Claude Code đòi 4 GB RAM trở lên và một bộ xử lý x64 hoặc ARM64, không có yêu cầu về GPU, vì inference diễn ra trên phần cứng của nhà cung cấp model. Mức sàn do chính bộ công cụ của agent quyết định (bản checkout của bạn, các bước build, runtime ngôn ngữ), chứ không phải do model.
Trong ba năm, Mac mini có rẻ hơn thuê server không?
Còn tùy bạn cần bao nhiêu máy. Ở đáy thị trường cho thuê, ba năm của một máy nhỏ chỉ tốn một phần nhỏ so với chiếc Mac mini, vốn giờ khởi điểm ở $899 cho cấu hình M6 cơ bản, giao hàng ngày 22 tháng 9. Leo lên cao hơn trên thang và phần cứng sở hữu sẽ thắng, vì giá mua có điểm dừng còn hóa đơn hằng tháng thì không. Dù thế nào, đó cũng là câu trả lời cho một câu hỏi về chi phí, chứ không phải câu hỏi rằng khối lượng công việc luôn chạy của một cỗ máy di động nên ở đâu.
Điều gì giữ cho phiên agent tiếp tục chạy sau khi tôi ngắt kết nối khỏi server?
Một trình ghép kênh terminal. Hãy khởi chạy agent bên trong một phiên tmux (hoặc screen) trên server rồi detach; nó vẫn chạy tiếp sau khi kết nối SSH của bạn rớt, và về sau bạn attach lại từ bất cứ đâu. Không có nó, việc đóng terminal có thể giết một tiến trình gắn thẳng vào shell đó, tái hiện ngay trên server đúng cái vấn đề mà bạn đã rời bỏ laptop để tránh.

Thảo luận
Bình luận
Đăng nhập để tham gia thảo luận.