Chuyển đến nội dung
Chandler Nguyen
AI10 phút đọc

Mac Của Tôi Chết. Tôi Dựng Lại Nó Bằng Chrome và DeepSeek.

Mac của tôi chết, nên tôi xóa sạch ổ đĩa và bắt đầu lại chỉ với Chrome và một agent harness. Máy giờ có thêm khoảng 60 GB dung lượng trống so với trước, và tôi đã ngừng tư duy theo kiểu ứng dụng.

Mac mini của tôi chết. Không kịch tính gì — nó chỉ đơn giản là không còn là cỗ máy tôi tin được nữa, và việc hợp lý nhất là xóa sạch ổ đĩa rồi cài lại từ đầu.

Tôi đã nhảy điệu này nhiều lần rồi. Nghi thức chẳng bao giờ đổi: cài lại hệ điều hành, rồi tốn cả một buổi tối để cài lại mọi thứ. Homebrew. Node. Python. Cả tá công cụ dòng lệnh mà bạn không nhớ nổi mình đã cài chúng lúc nào. Rồi ba tuần sau, bạn phát hiện ra cái mình đã quên, vì có thứ trước đây chạy được giờ lại không.

Lần này tôi thử một cách khác.

Tôi cài Chrome, rồi chạy một lệnh trong Terminal để cài chính cái harness. Danh sách chỉ có vậy. Sau đó tôi bảo nó dựng nốt phần còn lại.

Chrome trong câu chuyện này không phải để trang trí. Nó là ứng dụng GUI duy nhất tôi thực sự muốn, và cũng là trình duyệt mà agent điều khiển khi công việc cần đến. Bộ công cụ trình duyệt được khai báo trong config của harness y như mọi thứ khác, chứ không cài bằng tay.

Harness mới là phần tôi đã bỏ qua

Hai năm qua, tôi nghĩ về các công cụ AI coding chủ yếu qua lăng kính model. Model nào thông minh nhất, model nào rẻ nhất, model nào viết frontend code hay hơn. Tôi đã hủy gói đăng ký vì đúng câu hỏi đó, và viết về nó không chỉ một lần.

Thứ tôi đã đánh giá thấp chính là harness — cái thực sự nằm giữa tôi và cỗ máy. Model cung cấp trí tuệ. Harness cung cấp đôi tay, ký ức về cách tôi làm việc, và giao diện.

Trong lần dựng lại này, OpenCode là harness và DeepSeek V4.1 Flash là model. Nhưng tôi đã thôi tin rằng lớp nào trong hai lớp đó phải cố định vào một lựa chọn, vì hai lớp được chọn dựa trên những cơ sở hoàn toàn khác nhau.

Model thì tôi chọn theo bốn thứ: nó thông minh đến đâu, nó sinh chữ nhanh đến đâu (token mỗi giây, thứ tôi cảm nhận được nhiều hơn hẳn so với tôi tưởng), nó tốn bao nhiêu tiền, và dữ liệu tôi gửi cho nó sẽ ra sao.

Chi phí đáng được nhìn kỹ hơn cả cái giá niêm yết, vì cái giá niêm yết không phải là thứ bạn trả. Con số thực sự quan trọng là tỷ lệ cache hit. Khi harness giữ được một context ổn định, phần lớn input được phục vụ từ cache và hóa đơn sụp xuống — tỷ lệ cache hit của tôi với DeepSeek thường xuyên trên 99%. Hai model cùng giá mỗi token có thể khác nhau rất xa về số tiền bạn thực sự tiêu, tùy vào việc harness của bạn có giữ được cache hay không.

Tôi cũng không đẩy mọi thứ qua một model. Các công việc khác nhau hợp với các model khác nhau, và một model miễn phí thường là đủ tốt cho việc máy móc — đem một model hàng đầu ra làm việc đó thì chỉ là lãng phí.

Harness thì tôi chọn theo sở thích. Giao diện, và thói quen. Tôi dùng OpenCode vì thói quen của tôi sống ở đó, và tôi chạy harness của chính DeepSeek song song, vì tôi thích làm việc trong cả hai. Ở cơ quan tôi lại dùng một cái khác nữa — Antigravity CLI điều khiển Gemini 4 Argon hoặc 3.8 Flash — vì công việc ở đó có hình dạng khác: tôi đưa nó một kế hoạch và nó làm xuyên qua đó hàng giờ.

Không có benchmark nào phân xử được những điều trên, theo cách một benchmark phân xử được một model. Bạn phải biết mình cần gì, rồi chọn theo đó.

Tôi đã viết hồi tháng 8 về việc chuyển sang một model duy nhất và một harness duy nhất mà không gọi tên thứ thực sự đã thay đổi ở mình. Bài đó kết thúc bằng một ghi chú rằng tôi sẽ bắt đầu dùng Flash nhiều hơn, vì ở mức giá đó thì chẳng có lý do gì để không. Đây chính là nó, với một chỉnh sửa: duy nhất mới là bản năng sai.

Sự phân biệt đó nghe có vẻ hàn lâm cho đến khi bạn dựng lại một chiếc máy tính bằng nó. Lúc đó nó hết hàn lâm rất nhanh. Một harness có thể chạy lệnh, đọc và ghi file, cài package và thử tự kiểm tra lại việc mình vừa làm thì không phải một ô autocomplete. Nó gần hơn với một tầng vận hành — và một khi đã có nó, danh sách những thứ bạn tự cài tay trở nên rất ngắn.

Quy trình, từng bước một

Mô thức lần nào cũng giống nhau, và nó không giống cách tôi từng làm:

  1. Mô tả kết quả cuối, không phải từng bước. Không phải "đây là lệnh brew", mà là "tôi cần chạy được loại script này ở máy local, dựng nó lên giúp tôi."
  2. Để agent cài và cấu hình, kể cả sửa luôn thứ nó vừa làm hỏng.
  3. Kiểm chứng — phần này vẫn là của tôi. Agent có thể cho bạn xem chính xác nó đã chạy gì, và đó là lý do việc kiểm chứng trở nên rẻ.
  4. Khi không kiểm chứng được thứ gì đó, tôi tự làm. Service key và thông tin đăng nhập SSH là hai thứ tôi tự tạo bằng tay và không giao lại.
  5. Đọc xem nó thực sự đã làm gì, và hãy chờ đợi một câu trả lời sai nghe rất hợp lý, sớm muộn gì cũng tới. Không phải từng dòng — đủ để biết cái gì đã thay đổi trên máy mình, và đủ để nhận ra cái thay đổi trông có vẻ đúng mà lại không đúng.

Khác biệt so với những lần dựng lại trước đây thì dễ chỉ hơn là dễ tả:

Những lần dựng lại trướcLần này
Cài bằng tayHệ điều hành, rồi cả một buổi tối với Homebrew, Node, Python và cả tá CLI toolChrome, cộng một lệnh cho harness
Phần còn lạiTôi, suốt một buổi tốiAgent, theo yêu cầu
Trạng thái nằm ở đâuCác service local, runtime, container imageMột file config và một kết nối tôi cấp quyền một lần
Thứ tích tụ lạiCặn lắng từ mọi thí nghiệmKhông cài gì "để phòng"

Có hai thứ khiến điều đó khả thi. Một là harness giữ cấu hình trong những file tôi đọc và sửa được — tôi thấy chính xác cái gì đang được nối với cái gì và đổi được. Hai là ngày càng nhiều MCP server của tôi nằm ở remote. Supabase, Resend và Vercel là những URL tôi cấp quyền một lần, không phải service trên ổ đĩa của tôi. Những cái local chạy qua npx theo nhu cầu, nên chúng không được cài cho tới đúng lúc tôi dùng.

Máy tôi từng chứa service. Giờ nó chứa một file config và một token, còn service thì sống ở đâu đó khác.

Ổ đĩa vẫn trống

Tôi không đặt ra mục tiêu benchmark chuyện này, nên hãy coi đây là một quan sát chứ không phải một phép đo. Nhưng con số thì khó mà phớt lờ: so với setup cũ, giờ tôi có thêm khoảng 60 GB dung lượng trống trên cùng một chiếc máy.

Với một chiếc máy có SSD hàn chết, đó không phải sai số làm tròn. Dung lượng là một trong số ít thứ bạn không thể nâng cấp sau này trên Mac đời mới, và giá của nó cũng đúng kiểu đó. Sáu mươi gigabyte lấy lại được là một phần đáng kể so với số tiền bạn phải bỏ thêm cho bậc dung lượng kế tiếp.

Chỗ dung lượng đó đi đâu thì dễ giải thích hơn là chứng minh. Một số tool giờ chạy theo nhu cầu thay vì thường trú vĩnh viễn trên ổ đĩa, và thói quen cài sẵn mọi thứ đã phai đi, vì khi cần thì gọi chúng ra rất rẻ.

Từ xoay quanh ứng dụng sang xoay quanh ý định

Đây là sự dịch chuyển, và tôi vẫn đang tìm hiểu xem nó đi xa tới đâu.

Phần lớn cuộc đời dùng máy tính của tôi xoay quanh ứng dụng. Tôi muốn làm một việc, nên tôi tìm ứng dụng làm được việc đó, cài nó, học giao diện của nó, và sống trong cái khuôn mà nó đặt ra. Ứng dụng là đơn vị công việc.

Làm theo cách này là xoay quanh ý định. Tôi mô tả thứ mình cần. Một thứ có khả năng hành động trên máy sẽ tự tìm ra cần những mảnh nào, dựng chúng lên và làm. Ứng dụng trở thành một chi tiết triển khai, và có khi là thứ tôi không hề chủ động cài.

Nó là một thay đổi lớn hơn "AI viết code cho tôi". Code chưa bao giờ là nút thắt của tôi; khoảng cách giữa việc muốn một thứ và có nó mới là nút thắt. Khoảng cách đó giờ ngắn hơn nhiều.

Đó cũng là lý do tôi cứ nửa đùa nửa thật rằng rồi có thể tôi sẽ sang Linux. Lý do tôi ở lại macOS suốt bao năm chưa bao giờ là hệ điều hành — mà là đống setup tích cóp tôi sẽ phải dựng lại. Nếu môi trường của bạn chủ yếu là một file config và một agent đủ giỏi, thì cái nền bên dưới trở nên ít quan trọng hơn trước. Tuần này tôi chưa chuyển đâu. Chỉ là tôi không còn chắc điều gì sẽ giữ tôi lại.

Phải thừa nhận là tôi không lường trước được chuyện này. Nếu năm năm trước bạn nói với tôi rằng một chiếc Mac mới tinh cộng một trình duyệt cộng một agent là đủ để quay lại làm việc, tôi sẽ tưởng bạn đang tả một bản demo, chứ không phải một tối thứ Ba yên ắng.

Những gì tôi không khẳng định

Vài lưu ý thành thật, vì tôi đã đọc đủ nhiều sự hào hứng về chuyện này để thấy nghi ngờ chính mình.

  • Harness giờ mới là thứ trói buộc tôi. Việc đổi model đang ngày càng dễ, nhưng thói quen, config và workflow của tôi nằm trong harness. Đó là một sự phụ thuộc thật, và tôi đang để mắt tới nó.
  • "Nó cài hết mọi thứ" không giống với "tôi hiểu cỗ máy của mình". Tôi hiểu setup của mình ít hơn so với hồi tôi tự tay lắp ráp. Nó là một cái giá thật, và là lý do bước thứ năm ở trên tồn tại.
  • Chuyện này không miễn phí. Khoảng $60 trong 30 ngày qua, và con số đó không chỉ là việc code của tôi — nó còn gồm DeepSeek API đứng sau vài sản phẩm của tôi đang chạy production. Để so sánh, đúng thói quen đó cách đây một năm tốn của tôi khoảng $200 một tháng. (Tôi đã viết về sự thay đổi đó hồi tháng 8.)

Câu hỏi thường gặp

Harness trong AI coding là gì?

Harness là chương trình nối một model với một môi trường thật. Model suy luận; harness đưa cho nó công cụ — chạy lệnh, đọc và ghi file, gọi các service bên ngoài — rồi quản lý cuộc hội thoại và quyền hạn xoay quanh đó. OpenCode cố tình không phụ thuộc vào model nào, nên tôi mới đổi được model bên dưới nó mà không phải đổi gì khác. Claude Code và Codex cũng là harness, chỉ có điều mỗi cái được dựng quanh model của chính nhà cung cấp nó. Quy tắc ngón tay cái của tôi: chọn model dựa trên năng lực, tốc độ, chi phí và cách xử lý dữ liệu; chọn harness dựa trên việc bạn có thực sự thích làm việc trong đó không.

Bạn có thật sự dựng được một chiếc máy tính mới chỉ với một trình duyệt và một AI agent?

Với setup của tôi — một developer làm việc chủ yếu trong terminal và trình duyệt — thì phần lớn là được, và cần một lệnh, không phải không lệnh nào. Bạn cần một trình duyệt để với tới model và internet, cần một cách để cài chính cái harness, và cần sẵn lòng kiểm chứng những gì agent đã làm. Tôi sẽ không cho rằng điều này đúng với máy của một designer hay một kế toán.

Vì sao setup này dùng ít ổ đĩa hơn nhiều đến vậy?

Ít hơn setup cũ của tôi khoảng 60 GB, vì ba lý do. Một số service giờ chạy remote và được với tới qua URL thay vì cài tại máy. Một số tool chạy theo nhu cầu thay vì thường trú trên ổ đĩa. Và thói quen cài trước mọi thứ "để phòng" sẽ mờ dần đi khi việc gọi chúng ra sau này rất rẻ.


Vẫn còn ngạc nhiên vì "cài Chrome rồi xem chuyện gì xảy ra" lại thành một chiếc máy tính chạy được.

Thân mến, Chandler :P