Chạy Codex trên card đồ hoạ của chính bạn

Cách nối Codex với Strata để chạy model 125B trên một card 16 GB, và bốn bài test từ app to-do tới web app có 44 test.

Đã duyệt độc lập · cập nhật 27/10/2026 · 19 min

1. Một dòng trong release notes của Strata

NetworkCoder kể rằng tuần trước đó (tính theo lúc quay video), anh đang lướt release notes của Strata thì một dòng làm anh dừng lại: bản 0.1.39 giờ chạy được với Codex của OpenAI (theo video đăng ngày 18/10/2026). Anh giới thiệu Strata là engine anh dùng để chạy những AI model khổng lồ trên một chiếc PC chơi game bình thường. Còn Codex là coding agent của OpenAI, thứ tự lên plan, viết code, chạy test và tự sửa lỗi của chính nó. Vậy nên với anh, dòng đó có nghĩa là một chuyện "hơi điên": Codex mà không có OpenAI đứng phía sau.

Trang release v0.1.39 trên GitHub của Strata, đăng ngày 04/10/2026, có ghi trong tóm tắt "the OpenAI Responses API for Codex" (đọc ngày 27/10/2026). Trang chủ stratallm.org mô tả Strata là một inference engine mã nguồn mở chạy trên máy (local), giấy phép MIT, của tác giả Niko1221, dùng để chạy các model mixture of experts cỡ 125B trở lên trên card đồ hoạ phổ thông (đọc ngày 27/10/2026).

Không cần account, không cần API key, không có hoá đơn, theo NetworkCoder (video đăng ngày 18/10/2026). Ý nghĩ đầu tiên của anh là: không đời nào. Mọi demo Codex anh từng xem đều chạy trên những model cloud lớn và trả phí. Một model 125 tỷ tham số trên đúng một card đồ hoạ 16 GB mà làm được việc của agent thật? Nghe như kiểu thứ về mặt kỹ thuật thì chạy được, rồi bắt bạn chờ mãi không xong. Nên trước khi hào hứng, anh test nó cho đàng hoàng.

Và đây là kết quả anh đưa lên trước, theo các lần chạy của anh (video đăng ngày 18/10/2026): bốn việc từ dễ tới khó, bốn lần pass, không tốn đồng nào. Trong đó có cả một web app hoàn chỉnh gồm server, database và trang web, với 44 test pass, và một bug mà nó tìm ra hoàn toàn tự mình. Mọi thứ trong video được test trên Codex bản 0.162 và Strata 0.1.39, trong tháng 10/2026.

2. Lý lẽ phản bác: cái giá thật là việc đọc

Trước khi chỉ cách làm, NetworkCoder muốn công bằng với lập luận phản đối, vì theo anh đó là một lập luận tốt. Cái giá thật của một coding agent không nằm ở việc viết, mà ở việc đọc. Mỗi lượt, nó đọc lại các file của bạn, các tool của nó và toàn bộ cuộc hội thoại. Một data center làm việc đó trong vài giây. Một chiếc PC ở nhà có thể để bạn ngồi nhìn con trỏ nhấp nháy (theo NetworkCoder, video đăng ngày 18/10/2026).

Anh cũng nói thẳng: đây không phải một model frontier trên cloud, và anh sẽ không giả vờ là nó như vậy. Nên câu hỏi không phải là "nó có chạy không?", vì thứ gì cũng chạy được. Câu hỏi là: nó có thật sự làm xong việc không? Và anh sẽ trả lời câu đó từng level một (video đăng ngày 18/10/2026).

file của bạntool của agenttoàn bộhội thoại model đọcmỗi lượt viết data center: vài giây · PC ở nhà: có thể ngồi nhìn con trỏ nhấp nháy "cái giá thật là việc đọc, không phải việc viết"
Hình 2.1Lập luận phản đối mà NetworkCoder nêu (video đăng ngày 18/10/2026): mỗi lượt agent đọc lại file, tool và cả hội thoại, nên phần đọc mới là phần nặng.

3. Setup hôm nay và bốn level

Setup của video, theo NetworkCoder (video đăng ngày 18/10/2026): một card RTX 5060 Ti với 16 GB bộ nhớ đồ hoạ (VRAM). Model là Qwen3.8-Flash-Next, 125 tỷ tham số, chạy qua một engine tên là Strata. Agent là Codex của OpenAI, và trong cả video không có cloud ở đâu cả.

Slide Today's setup: RTX 5060 Ti 16 GB VRAM, Qwen 3.8 Flash Next 125B parameters, Strata engine, OpenAI Codex agent, trong khung one PC, kèm chữ no cloud
Setup trong video đăng ngày 18/10/2026: tất cả nằm trong một PC, từ RTX 5060 Ti (16 GB VRAM) tới Qwen 3.8 Flash Next (125B tham số), Strata (engine) và OpenAI Codex (agent), và một đám mây bị gạch chéo kèm chữ "no cloud".

Anh sẽ chạy bốn level, theo kế hoạch trong video đăng ngày 18/10/2026:

  • Level 1: một app to-do.
  • Level 2: đi tìm bug trong code của người khác.
  • Level 3: một game Snake.
  • Level 4: một web app hoàn chỉnh có backend, database và frontend.

4. Codex là gì: model là bộ não, Codex là đôi tay

Nhưng trước hết, Codex thực ra là gì, và làm sao nó chạy được mà không có OpenAI? NetworkCoder giải thích (video đăng ngày 18/10/2026): một AI model tự nó chỉ làm được một việc. Bạn đưa nó text, nó trả lại text. Nó không mở được file của bạn, không chạy được code của bạn, không kiểm tra được câu trả lời của nó có thật sự chạy không. Đó là lúc cần tới một harness.

Codex là coding agent của OpenAI, và nó chạy ngay trong terminal của bạn. Anh đưa ra một hình ảnh: model là bộ não, Codex là đôi tay. Codex đọc file của bạn, viết file mới, chạy lệnh, chạy test và đưa kết quả về lại cho bộ não. Rồi nó lặp: đọc task, lên plan, viết một ít code, chạy test. Nếu có gì fail, nó đọc lỗi và đi thêm một vòng nữa, cho tới khi mọi thứ pass (theo NetworkCoder, video đăng ngày 18/10/2026).

read taskplanwrite coderun testsread the error until everything passes
Hình 4.1Vòng lặp NetworkCoder mô tả trên slide "Then it loops" (video đăng ngày 18/10/2026): đọc task, lên plan, viết code, chạy test, đọc lỗi, lặp tới khi mọi test pass.

Bình thường, Codex gửi toàn bộ những thứ đó lên server của OpenAI: mọi file nó đọc, mọi kết quả test, mọi vòng lặp. Và bạn trả tiền cho từng token (theo NetworkCoder, video đăng ngày 18/10/2026).

5. Điều gì đã thay đổi: endpoint Responses

Vậy điều gì đã thay đổi? Theo NetworkCoder (video đăng ngày 18/10/2026), Codex nói chuyện bằng một "ngôn ngữ" cụ thể là định dạng Responses của OpenAI. Bản cập nhật mới của Strata nói được ngôn ngữ đó: nó thêm một endpoint Responses. Vì vậy Codex tưởng là đang nói chuyện với OpenAI, nhưng câu trả lời lại đến từ một card đồ hoạ dưới gầm bàn của anh.

Phiên bản của anh, tất cả trên một PC, xếp từ dưới lên (video đăng ngày 18/10/2026): dưới cùng là RTX 5060 Ti. Trên nó là Strata, engine nhét vừa một model 125 tỷ tham số vào một card 16 GB. Tiếp theo là Qwen, bộ não. Và trên cùng là Codex, đôi tay. Không có gì rời khỏi máy này, theo lời anh.

Codex: đôi tay (agent)Qwen: bộ não (model)Strata: engineRTX 5060 Ti · 16 GB định dạng Responsescủa OpenAI một PC
Hình 5.1Bốn tầng theo cách NetworkCoder xếp (video đăng ngày 18/10/2026): Codex gửi yêu cầu theo định dạng Responses, Strata nhận và trả lời bằng Qwen chạy trên card RTX 5060 Ti.

6. Bước 1 và 2: card đồ hoạ, Strata và mixture of experts

Rồi anh dựng setup từng bước. Bước 1: kiểm tra phần cứng. Lệnh nvidia-smi cho thấy card NVIDIA GeForce RTX 5060 Ti với 16 GB VRAM (trên màn hình là 16311MiB). Theo NetworkCoder (video đăng ngày 18/10/2026), đó là toàn bộ "ngân sách đồ hoạ" cho cả video.

Bước 2: engine. Cài Strata, bản 0.1.39 hoặc mới hơn, vì đó là bản có endpoint Responses (theo video đăng ngày 18/10/2026). Vậy làm sao một model 125 tỷ tham số vừa được một card 16 GB? Vì nó là một mixture of experts: với mỗi từ, chỉ một nhóm nhỏ expert làm việc. Nên phần lớn model nằm trong RAM hệ thống, còn những expert được dùng nhiều thì được cache trên card đồ hoạ (theo NetworkCoder, video đăng ngày 18/10/2026).

Và Strata tự tune theo PC của bạn, theo các số đo của NetworkCoder trên máy anh (video đăng ngày 18/10/2026): với 47 CPU worker, tốc độ là 39 token mỗi giây. Với 31 worker là 57,8. Với 24 worker là 73,5. Nhiều thread hơn lại chậm hơn, vì chúng tranh nhau bộ nhớ. Sau đó Strata tune cách các expert được đổi vào và ra khỏi card đồ hoạ, và dừng ở 77,7 token mỗi giây.

Slide Strata tunes itself for your PC: 47 workers 39.0 tok/s, 31 workers 57.8 tok/s, 24 workers 73.5 tok/s, more threads = slower
Số đo của NetworkCoder trên RTX 5060 Ti (video đăng ngày 18/10/2026): 47 worker cho 39,0 tok/s, 31 worker cho 57,8 tok/s, 24 worker cho 73,5 tok/s. Dòng chữ đỏ bên dưới: "more threads = slower".

Trong bản benchmark đầy đủ của anh, chat bình thường chạy khoảng 70 token mỗi giây, còn việc của agent khoảng 74. Đó là tốc độ cho suốt cả video (số đo của NetworkCoder, video đăng ngày 18/10/2026).

7. Bước 3 đến 5: cài Codex, file config và lần chạy thử

Bước 3: cài Codex. Một lệnh (video đăng ngày 18/10/2026). Anh đọc là "npm install -g @openai/codex"; trên màn hình, lệnh được gõ ở dạng ngắn:

npm i -g @openai/codex
codex --version

Bảy giây sau, theo số đo của anh (màn hình ghi "added 2 packages in 7s"), Codex đã ở bản 0.162.1: lệnh codex --version in ra codex-cli 0.162.1 (video đăng ngày 18/10/2026).

Bước 4: file config. Theo NetworkCoder (video đăng ngày 18/10/2026), đây là phần setup thật sự duy nhất: một file nhỏ trong thư mục .codex, và vài dòng trong đó là quan trọng. Trên màn hình, anh tạo file ~/.codex/config.toml như sau:

mkdir -p ~/.codex && cat > ~/.codex/config.toml <<'EOF'
model = "strata"
model_provider = "strata"
model_context_window = 131072
show_raw_agent_reasoning = true

[model_providers.strata]
name = "Strata (local)"
base_url = "http://127.0.0.1:8082/v1"
wire_api = "responses"
stream_idle_timeout_ms = 600000
EOF
Terminal Step 4 the config file: lệnh tạo ~/.codex/config.toml với model, model_provider, base_url, wire_api và stream_idle_timeout_ms
Bước 4 trong video đăng ngày 18/10/2026: file ~/.codex/config.toml trỏ Codex về Strata chạy trên chính máy này ở cổng 8082, với wire_api = "responses".

Anh giải thích từng dòng (video đăng ngày 18/10/2026). Model và provider đều đặt là strata. Base URL trỏ tới Strata trên máy này, cổng 8082, chứ không phải tới OpenAI. Wire API đặt là responses: đó là endpoint mới. Context window, anh nói, là 128.000 token, tức lượng model giữ được trong đầu cùng lúc; trên màn hình dòng đó ghi model_context_window = 131072. Hai dòng nữa có mặt vì đây là model chạy local: stream timeout đặt 10 phút (trên màn hình là stream_idle_timeout_ms = 600000), để Codex kiên nhẫn chờ trong lúc model suy nghĩ, và raw reasoning được bật, để mình xem được nó nghĩ.

Bước 5: lần test đầu tiên. Theo video đăng ngày 18/10/2026, anh chạy codex exec với yêu cầu chào và liệt kê các file trong thư mục:

codex exec "Say hello and list the files in this folder"
Terminal Step 5 a first test: header OpenAI Codex v0.162.1 với model strata, provider strata, và hai dòng warning về bubblewrap và model metadata
Lần chạy thử trong video đăng ngày 18/10/2026: header của OpenAI Codex v0.162.1 ghi model strata, provider strata, kèm hai dòng warning màu vàng.

Nhìn phần header: model là strata, provider là strata. Nó chạy (demo trong video đăng ngày 18/10/2026). Anh chỉ ra hai warning. Một cái nói Codex không tìm thấy bubblewrap, tool sandbox. Cái kia nói Codex không nhận ra model nào tên là strata nên dùng thiết lập mặc định (trên màn hình: "Defaulting to fallback metadata"). Theo NetworkCoder, cái thứ hai vô hại: nó chạy ổn suốt cả video.

8. Bước 6 đến 8, hai trục trặc và YOLO mode

Bước 6: cài Bubblewrap, tool sandbox, và đặt reasoning effort ở mức medium bằng một dòng trong config. Trên màn hình, hai lệnh anh chạy là (video đăng ngày 18/10/2026):

apt install -y bubblewrap
sed -i '1i model_reasoning_effort = "medium"' ~/.codex/config.toml

Bước 7: khởi động Codex. Anh mô tả màn hình đầy đủ: logo OpenAI, và ở dưới cùng là "Strata Medium", tức model local của anh ở mức reasoning medium. Vẫn là Codex đó, chỉ không có OpenAI phía sau (theo video đăng ngày 18/10/2026).

Bước 8: các project để test. Bốn thư mục trống, mỗi level một cái. Với level 2, một script nhỏ dựng project có bug và commit nó vào Git, để mọi thay đổi Codex làm đều dễ thấy. Với level 4, một sao kê ngân hàng có 22 giao dịch trông như thật (theo video đăng ngày 18/10/2026).

Trước khi đưa ra kết quả nào, NetworkCoder muốn cho xem chỗ trục trặc, vì có hai thứ không chạy như anh nghĩ (video đăng ngày 18/10/2026).

Trục trặc 1: auto mode đã biến mất. Các bản Codex cũ có một lối tắt tên là --full-auto, để nó tự làm việc. Trên bản 0.162, lệnh đó báo "unexpected argument": nó không còn tồn tại nữa, theo lần chạy của anh (video đăng ngày 18/10/2026).

Trục trặc 2: sandbox. Bình thường Codex chạy mọi lệnh bên trong một sandbox an toàn, để nó không chạm được vào thứ gì ngoài project của bạn. Anh đã cài bubblewrap, vậy mà lệnh đầu tiên vẫn fail với lỗi không có quyền tạo namespace mới ("No permissions to create new namespace"). Theo NetworkCoder (video đăng ngày 18/10/2026), máy test của anh đơn giản là không cho phép loại sandbox đó.

Cách sửa cho cả hai là một lệnh khởi động. Trên màn hình, lệnh bắt đầu bằng codex --sandbox danger-f, và anh đọc các tuỳ chọn: sandbox ở mức danger full access, ask for approval đặt là never. Codex khi đó hiện một nhãn mới ở đầu màn hình: YOLO mode (theo video đăng ngày 18/10/2026).

Slide Showing you this on purpose: throwaway test machine, YOLO mode is fine; your own computer với files, passwords, bank details, keep the sandbox on
Slide cảnh báo trong video đăng ngày 18/10/2026: trên máy test dùng xong bỏ thì "YOLO mode is fine"; trên máy của bạn, với file, mật khẩu và thông tin ngân hàng, "keep the sandbox on".

Anh nói anh cố tình cho xem chuyện này. Trên một máy test dùng xong bỏ như máy này, YOLO mode là ổn. Trên máy của chính bạn, với file của bạn, mật khẩu của bạn, thông tin ngân hàng của bạn, hãy để sandbox bật, hoặc chạy Codex trong một container. Theo lời anh, AI thì tốt, nhưng bạn không muốn bất kỳ agent nào chạy lệnh trên máy thật của bạn mà không có rào chắn (NetworkCoder, video đăng ngày 18/10/2026). Phần mô tả video cũng ghi lại điều này: Codex chạy ở chế độ full access trên một máy test dùng xong bỏ, và trên máy của bạn thì nên giữ sandbox bật hoặc dùng container.

9. Level 1: app to-do bằng Python

Level 1 là một app to-do chạy trên command line, viết bằng Python: thêm một task, liệt kê chúng, đánh dấu một task đã xong, xoá một task, lưu tất cả vào một file JSON. Nếu dùng một ID không tồn tại thì in ra "ERR: no such task". Và luật quan trọng nhất trong đề bài: viết test cho mọi lệnh, chạy chúng, và cứ sửa cho tới khi tất cả pass. Anh coi đây là màn khởi động (video đăng ngày 18/10/2026). Prompt trên màn hình:

Build a command-line to-do app in Python: todo.py.
Commands: add "<text>", list, done <id>, delete <id>. Save tasks to tasks.json in this folder.
List shows id, [x] or [ ], and the text. Unknown id prints "ERR: no such task".
Write pytest tests in test_todo.py covering every command and the error, run them, and fix until all pass.
Slide Level 1 a to-do app in Python với bốn gạch đầu dòng và ô prompt gửi cho Codex
Level 1 trong video đăng ngày 18/10/2026: bốn việc app phải làm (add a task, list them, mark one done, delete one) và prompt gửi cho Codex ở dưới.

Nó bắt đầu đúng như một developer sẽ làm, theo NetworkCoder (demo trong video đăng ngày 18/10/2026): xem quanh thư mục, kiểm tra bản Python đang cài, và kiểm tra pytest có sẵn không. Rồi nó viết app và test.

Và test là test đàng hoàng (demo trong video đăng ngày 18/10/2026). Chúng không chỉ gọi các hàm bên trong code, mà chạy app thật, theo cách bạn chạy từ terminal, rồi kiểm tra thứ nó in ra và exit code. Mỗi test có một file nháp riêng, nên danh sách task thật của bạn không bao giờ bị đụng tới.

Đây là phần NetworkCoder thích (demo trong video đăng ngày 18/10/2026). Codex viết một helper nhỏ cho test của chính nó, và viết sai. Một lỗi đó làm hỏng cả 19 chỗ dùng helper. Nó nhận ra, đơn giản hoá helper và chạy lại tất cả. Rồi nó tìm thấy một chỗ kiểm tra giữ chỗ (placeholder) nó để quên trong một test và thay bằng một phép kiểm tra thật. Không ai bảo nó làm cả hai việc đó.

Nó còn cover nhiều hơn anh yêu cầu (demo trong video đăng ngày 18/10/2026): task còn nguyên sau khi khởi động lại, ID sau khi xoá, một lệnh sai, một task không tồn tại, và một workflow đầu cuối hoàn chỉnh. Nó thậm chí xoá file task còn sót lại từ lần chạy thử của chính nó. Kết quả: 21 test, tất cả pass, trong 1,4 giây.

Tổng thời gian là 10 phút 15 giây, theo số đo của NetworkCoder (video đăng ngày 18/10/2026). Anh nói đó là chậm cho một app to-do. Và để công bằng, con số này bị đội lên: máy của anh đang bận một việc khác trong lần chạy này. Thời gian của ba level sau là sạch.

Slide Level 1 one more number: dòng Token usage so far total=145,984 input=140,397 output=5,587, chữ ~146,000 tokens và hai thanh input và output
Số token của level 1 trong video đăng ngày 18/10/2026: màn hình ghi total=145,984, input=140,397, output=5,587 (reasoning 1,116). Thanh input (reading) dài gần hết khung, thanh output chỉ là một ô nhỏ.

Thêm một con số (số đo của NetworkCoder, video đăng ngày 18/10/2026): màn khởi động này dùng khoảng 146.000 token, và gần như tất cả là input, tức Codex đọc đi đọc lại file và lịch sử của chính nó. Đó là cái giá của việc đọc mà anh nói ở đầu video. Trên một cloud API, đó chính là thứ bạn trả tiền. Ở đây là 0 đô. Level 1: pass.

10. Level 2: đi tìm bug trong code của người khác

Level 2 đảo ngược bài toán: thay vì viết code mới, Codex phải sửa code của người khác. NetworkCoder viết một chương trình tính hoá đơn nhỏ cho một cửa hàng: giá, số lượng, hai mã chiết khấu, và thuế GST 18%. Anh giấu trong đó một bug, nên một số test fail. Luật là: tìm nguyên nhân gốc, sửa nó, và không được đụng vào test (theo video đăng ngày 18/10/2026).

Nó làm việc như một thám tử (demo trong video đăng ngày 18/10/2026). Đầu tiên nó liệt kê thư mục. Rồi đọc code hoá đơn. Rồi đọc test để biết đáp án đúng phải là gì. Và rồi nó nói: tìm thấy rồi, subtotal bỏ qua món đầu tiên (trên màn hình, Codex ghi "Found it", rồi "subtotal skips the first item. Fixing now."). Đó đúng là bug anh đã cài.

Slide Level 2 exactly the bug I planted: hàm subtotal trong invoice.py lặp qua items[1:], bên cạnh là test order pen, book, bag với subtotal 930
Bug được cài trong video đăng ngày 18/10/2026: hàm subtotal trong invoice.py lặp qua items[1:] nên bắt đầu từ món thứ hai. Đơn test có pen (10 × 3 = 30), book (250 × 2 = 500), bag (400 × 1 = 400), subtotal đúng là 930.

Vòng lặp bắt đầu từ món thứ hai chứ không phải món đầu, nên mọi hoá đơn âm thầm làm rơi dòng đầu tiên. Trong đơn test của anh gồm cây bút, quyển sách và cái túi, cây bút đơn giản là biến mất khỏi hoá đơn. Và vì subtotal sai, khoản chiết khấu và thuế cũng sai theo (theo NetworkCoder, video đăng ngày 18/10/2026).

Cách sửa: bỏ một dòng, thêm một dòng. Rồi nó chạy test: bốn trên bốn, pass, test không bị đụng tới. Và vì project nằm trong Git, bạn thấy được chính xác thay đổi một dòng đó. Tổng thời gian: 34 giây (màn hình ghi "Worked for 34s"). 0 đô. Level 2: pass (demo và số đo trong video đăng ngày 18/10/2026).

11. Level 3: game Snake trong một file HTML

Level 3: làm một game. Một game Snake hoàn chỉnh trong một file HTML, không thư viện. Phím mũi tên để di chuyển. Ăn mồi thì rắn dài ra. Điểm hiện trên màn hình. Và cứ mỗi năm miếng mồi thì game nhanh hơn (đề bài trong video đăng ngày 18/10/2026).

Nó nhìn quanh, thấy một thư mục trống, và viết cả game trong một lượt, khoảng 10 kilobyte. Rồi kiểm tra nhanh cú pháp của phần code bên trong (demo trong video đăng ngày 18/10/2026).

Nhưng đây là chỗ khó: máy test của NetworkCoder không có màn hình và không có browser. Vậy làm sao test một game mà bạn không nhìn thấy được? Theo lời anh (demo trong video đăng ngày 18/10/2026), Codex làm giả một cái. Nó dựng một trang web giả bằng code: màn hình giả, phím bấm giả, bộ nhớ lưu trữ giả, rồi nạp game thật vào đó. Lần thử đầu crash. Nó vá lại, và các phần cơ bản pass: tạm dừng, chơi tiếp.

Rồi nó đi xa hơn (demo trong video đăng ngày 18/10/2026). Để test việc ăn mồi và tăng tốc, nó cần con rắn thật sự tìm được mồi. Nên nó viết một bot nhỏ để chơi game. Mỗi tick, bot nhìn mọi hướng và chọn hướng gần mồi nhất mà không làm rắn chết. NetworkCoder gọi đó là một AI viết ra một AI để test game của chính nó.

Slide Level 3 the result: dòng All 13 checks pass, 443 snake.html, số 13/13 lớn và bảy ô hit a wall, bite yourself, growing, speed-up at 5 and 10, high score survives reload, pause, restart
Kết quả level 3 trong video đăng ngày 18/10/2026: màn hình ghi "All 13 checks pass" và 443 snake.html, bên phải là các phép kiểm tra từ đâm vào tường tới restart.

13 trên 13 phép kiểm tra pass (demo trong video đăng ngày 18/10/2026):

  • Đâm vào tường (demo trong video đăng ngày 18/10/2026).
  • Tự cắn vào mình (demo trong video đăng ngày 18/10/2026).
  • Dài ra (demo trong video đăng ngày 18/10/2026).
  • Tăng tốc ở mốc 5 và 10 (demo trong video đăng ngày 18/10/2026).
  • High score còn nguyên sau khi tải lại trang (demo trong video đăng ngày 18/10/2026).
  • Tạm dừng (demo trong video đăng ngày 18/10/2026).
  • Restart (demo trong video đăng ngày 18/10/2026).

Tất cả pass, 443 dòng, trong 3 phút 50 giây, theo số đo của NetworkCoder (video đăng ngày 18/10/2026).

Và nó thêm những thứ không ai yêu cầu (demo trong video đăng ngày 18/10/2026): phím WASD bên cạnh phím mũi tên, phím P để tạm dừng. Khi bạn chết, nó nói lý do: đâm tường ("Wall hit") hay tự cắn mình ("Bit yourself"). Nó chặn bạn quay đầu thẳng vào cổ của chính mình, kể cả khi bạn bấm phím dồn dập. Mồi chỉ xuất hiện trên ô trống, nên bạn thật sự có thể thắng. Và nếu bạn lấp đầy cả bảng, sẽ có màn hình "You win". Trên màn hình, phần ghi chú của Codex còn ghi rằng cứ mỗi 5 miếng mồi thì mỗi tick ngắn đi 12 ms (từ 140 ms, tối đa xuống 55 ms), và phím R để chơi lại bất cứ lúc nào.

Tất nhiên anh phải chơi thử. Theo NetworkCoder (video đăng ngày 18/10/2026), nó thật sự vui: nó tăng tốc đúng lúc bạn bắt đầu thấy tự tin. 0 đô. Level 3: pass.

12. Level 4: một web app thật để theo dõi chi tiêu

Level 4, theo NetworkCoder, là level quan trọng. Không phải đồ chơi mà là một app thật: một server Python dùng FastAPI, một database SQLite, và một trang web duy nhất không dùng framework. Thêm, sửa, xoá các khoản chi, và import một sao kê ngân hàng (đề bài trong video đăng ngày 18/10/2026).

Sao kê được đưa vào là 22 dòng, viết theo đúng cách một ngân hàng Ấn Độ viết, theo lời anh: đơn hàng Swiggy, hoá đơn điện Bescom, rạp PVR Cinemas, thẻ tập gym ở Cult, một khoản lương được ghi có, một khoản thanh toán thẻ tín dụng. App phải tự hiểu mỗi dòng là gì (video đăng ngày 18/10/2026).

Slide Level 4 the bank statement: bank_statement.csv 22 lines với các dòng như SALARY CREDIT ACME LTD, SWIGGY ORDER, BESCOM ELECTRICITY BILL, PVR CINEMAS, GYM MEMBERSHIP CULT
File bank_statement.csv 22 dòng dùng trong video đăng ngày 18/10/2026: từ SALARY CREDIT ACME LTD (85000.00) tới INTEREST CREDIT (212.35), các khoản chi mang dấu âm.

Hãy xem cách nó làm, NetworkCoder nói (demo trong video đăng ngày 18/10/2026): nó không viết hết mọi thứ rồi cầu may. Nó dựng từng phần một và test mỗi phần ngay lập tức. Đầu tiên là bộ phân loại (classifier), phần sắp xếp các giao dịch. Lần thử đầu crash. Nó sửa, rồi cho từng dòng chạy qua. Nó còn test cả những dòng không có trong file của anh: trên màn hình, "COSTA COFFEE BAR" được xếp vào Food, "RANDOM UNKNOWN THING" vào Other. Và cả 22 dòng của anh đều vào đúng nhóm.

Tiếp theo là database (demo trong video đăng ngày 18/10/2026). Mỗi giao dịch có một dấu vân tay (fingerprint) riêng, nên cùng một dòng không bao giờ được lưu hai lần.

Rồi tới phần importer (demo trong video đăng ngày 18/10/2026). Bản nháp đầu của nó lộn xộn, nên nó vứt đi và viết lại cho gọn. Nó cũng xử lý được các định dạng tiền lộn xộn: ký hiệu đô la, dấu phẩy, dấu ngoặc cho số âm, các kiểu viết ngày khác nhau. Rồi nó test importer bằng cách cố tình import cùng một file hai lần. Lần thứ hai: 0 dòng được import, 22 dòng trùng. Import sao kê hai lần thì bạn không bị gấp đôi chi tiêu.

Sau đó là server với các endpoint để thêm, sửa, xoá, import và tổng hợp. Rồi một bộ test đầy đủ (demo trong video đăng ngày 18/10/2026).

13. Bug thread của SQLite và lần kiểm tra trên browser thật

Và đây là khoảnh khắc làm NetworkCoder ấn tượng hơn cả, theo lời anh (demo trong video đăng ngày 18/10/2026). Mọi unit test đều đang pass. Anh nói phần lớn mọi người sẽ dừng ở đó. Nhưng Codex khởi động web server thật trên một cổng ngẫu nhiên và gửi cho nó những request thật. Và mọi request đều hỏng.

Lý do, theo giải thích của anh (video đăng ngày 18/10/2026): web server xử lý mỗi request trên một worker thread khác nhau. Nhưng SQLite, mặc định, khoá một connection vào đúng thread đã mở nó. Nên mọi thread khác đều bị từ chối.

web server thread 1thread 2thread 3thread 4 SQLitelocked to thread 1 thread 2, 3, 4: bị từ chối
Hình 13.1Bug mà Codex tìm ra khi chạy server thật, theo slide "Here's why" trong video đăng ngày 18/10/2026: web server chia request cho nhiều thread, còn connection SQLite bị khoá vào thread 1.

Codex tìm ra nó và sửa nó (demo trong video đăng ngày 18/10/2026): cho phép connection dùng qua nhiều thread và thêm một khoảng chờ ngắn cho lúc database đang bận. Trên màn hình, ghi chú của Codex nhắc tới file tests/test_server_threading.py chạy uvicorn thật trên một cổng ngẫu nhiên, và check_same_thread=False cùng busy timeout được đặt trong app/db.py.

Và rồi nó làm điều mà NetworkCoder gọi là việc kỹ sư giỏi vẫn làm (demo trong video đăng ngày 18/10/2026): viết một test cho đúng bug đó, và kiểm tra rằng test fail khi không có bản sửa (trên màn hình: "Verified the test fails without the fix"). Nhờ vậy bug này không bao giờ âm thầm quay lại được. Theo anh, không unit test nào bắt được lỗi đó: nó chỉ hiện ra vì Codex chạy thứ thật. Kết quả: 44 test, tất cả pass.

Rồi nó đi thêm một bước (demo trong video đăng ngày 18/10/2026). Không có browser, nó điều khiển chính trang web thật bằng code: thêm, đoán nhóm chi tiêu, sửa, xoá, bộ lọc, import, chuyển tháng, biểu đồ cùng nhãn và tooltip của nó. 26 trên 26 phép kiểm tra, không có lỗi nào trong console hay trên server. Tổng thời gian: 21 phút 51 giây, theo số đo của NetworkCoder.

Nhưng anh nói anh không tin lời AI, nên tự mở app trong một browser thật (demo trong video đăng ngày 18/10/2026). Đây là app: thêm một khoản chi ở bên trái, và có nút Guess điền nhóm chi tiêu giúp bạn. Import sao kê ngân hàng ở bên phải. Và đúng vậy, tiền tính bằng rupee.

App Expense Tracker trong browser: khung Add expense với nút Guess được khoanh vàng và khung Import bank statement với nút Import CSV
App Expense Tracker mở trong browser thật (video đăng ngày 18/10/2026): khung Add expense với nút Guess được khoanh tròn, chú thích vàng "guess fills in the category", và khung Import bank statement nhận file CSV.

Anh chọn file và import. Kết quả trên app (demo trong video đăng ngày 18/10/2026): 22 dòng được import, 0 bỏ qua, 0 không hợp lệ; 6 vào nhóm ăn uống, 4 đi lại, 3 hoá đơn, 3 giải trí, 2 sức khoẻ, 2 thu nhập, 1 mua sắm và 1 tiền thuê nhà. Bấm monthly summary, và đó là nơi tiền đã đi: một biểu đồ mà nó tự vẽ tay bằng code. Di chuột lên một cột là ra số tiền chính xác.

Và bài test cuối cùng: import lại đúng file đó (demo trong video đăng ngày 18/10/2026). 0 dòng được import, 22 dòng trùng. Không có một mục nào bị ghi đôi. Một web app hoàn chỉnh gồm backend, database, frontend và 44 test, được dựng bởi một model miễn phí trên một card 16 GB. 0 đô. Level 4: pass.

14. Bảng điểm và ba chỗ còn yếu

Bảng điểm, theo các lần chạy của NetworkCoder (video đăng ngày 18/10/2026): 21 trên 21, 4 trên 4, 13 trên 13 và 44 trên 44. Bốn việc, từ màn khởi động tới một web app hoàn chỉnh, được dựng và test bởi một model miễn phí trên một card 16 GB. Tổng hoá đơn: 0 đô. Và không có gì từng rời khỏi chiếc PC này. Tốc độ khoảng 70 đến 77 token mỗi giây, theo anh là đủ nhanh để xem agent làm việc theo thời gian thực.

Slide The scoreboard: L1 to-do app 21/21 tests, L2 bug hunt 4/4 tests, L3 Snake game 13/13 checks, L4 full web app 44/44 tests, tất cả có dấu tích
Bảng điểm trong video đăng ngày 18/10/2026: L1 to-do app 21/21 tests, L2 bug hunt 4/4 tests, L3 Snake game 13/13 checks, L4 full web app 44/44 tests.

Quay lại câu hỏi ban đầu: setup này có thay được một agent frontier trên cloud không? Câu trả lời của NetworkCoder (video đăng ngày 18/10/2026): không, chưa. Nhưng nó có làm được việc thật, có test, trên một PC, miễn phí không? Có, bốn lần trên bốn.

Vậy nó vất vả ở đâu? Ba chỗ, theo NetworkCoder (video đăng ngày 18/10/2026):

  • Tốc độ. Một model cloud vẫn sẽ làm xong những việc này nhanh hơn. 22 phút cho app lớn thì ổn vào cuối tuần; khi đang chạy deadline, bạn sẽ thấy rõ (theo NetworkCoder, video đăng ngày 18/10/2026).
  • Mỗi lần một việc. Card này chạy một model cho một người. Bạn không bắn ra năm agent Codex song song được như trên cloud (theo NetworkCoder, video đăng ngày 18/10/2026).
  • Không có web search. Nếu project cần docs mới cho một thư viện nào đó, bạn sẽ phải tự đưa cho nó (theo NetworkCoder, video đăng ngày 18/10/2026).
tốc độcloud nhanh hơn22 phút cho app lớnổn cuối tuần, chậm khi gấp mỗi lần một việcmột model cho một ngườikhông chạy năm agentsong song không web searchdocs mới của thư việnphải tự đưacho agent
Hình 14.1Ba giới hạn NetworkCoder liệt kê cho setup của anh (video đăng ngày 18/10/2026): tốc độ, chỉ một việc mỗi lần, và không có web search.

15. Lưu ý về sandbox và những việc hợp với setup này

Và một lưu ý quan trọng, theo NetworkCoder (video đăng ngày 18/10/2026): trên máy của anh, sandbox không chạy được, nên Codex có toàn quyền truy cập (slide ghi "sandbox off -> Codex had full access"). Hãy chạy setup này trên một máy phụ hoặc trong một container, không phải trên chiếc máy chứa file cá nhân của bạn.

Nhưng theo anh, những cách dùng tốt là có thật (video đăng ngày 18/10/2026): học lập trình, side project, các tool nhỏ cho công việc của chính bạn, và bất cứ thứ gì bạn muốn giữ riêng tư.

NetworkCoder chào tạm biệt và hẹn gặp lại.

Nguồn và liên kết 7 nguồn

  1. Tên gốc: The Ultimate FREE Coding Agent: Run Codex on Your Own GPU
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=b2T5ineu7ek youtube.com
  4. Kênh YouTube NetworkCoder (NetworkCoder): youtube.com/channel/UCvO8HVTrwI8-YHeO-I66MdA youtube.com
  5. Strata, inference engine mã nguồn mở chạy trên máy cho model mixture of experts, tác giả Niko1221 (đọc ngày 27/10/2026): stratallm.org · repo github.com/Niko1221/Strata stratallm.org
  6. Release v0.1.39 của Strata, đăng ngày 04/10/2026, tóm tắt có ghi "the OpenAI Responses API for Codex" (đọc ngày 27/10/2026): github.com/Niko1221/Strata/releases/tag/v0.1.39 github.com
  7. Repo Codex của OpenAI, mô tả là "Lightweight coding agent that runs in your terminal" (đọc ngày 27/10/2026): github.com/openai/codex github.com