# OpenCode 2.0 đấu Claude Code: token, code mode và hoá đơn

[Bruno Vega](https://homus.dev/speakers/bruno-vega) · [Bruno Vega](https://homus.dev/orgs/bruno-vega)

> So sánh OpenCode 2.0 với Claude Code: cài đặt, ba setting cần đổi, code mode cho MCP, số token cùng model, chi phí, chạy local và vụ breach.

Topics: Coding Agents, Dev Tools, Context Engineering, Security

Canonical: https://homus.dev/talks/i-tested-opencode-2-0-vs-claude-code-the-results-will-surprise-you

## 1. Cùng một model, hai harness

Bruno mở đầu bằng một tình huống: bạn có thể chạy cùng một model Claude trong Claude Code và trong OpenCode 2.0, trên cùng một repo, với cùng một prompt. Và theo anh (video đăng ngày 30/10/2026), thứ quyết định bạn nên dùng cái nào lại không nằm trong harness nào cả.

Theo video đăng ngày 30/10/2026, OpenCode 2.0 ra mắt ngày 12/10/2026, lúc đó đang có 223.000 star trên GitHub, và Anomaly, công ty đứng sau OpenCode, nói rằng mỗi tháng có hơn 16 triệu developer dùng nó. Bruno thêm một chữ "supposedly" sau con số này. Theo anh, những con số đó đặt OpenCode ngay cạnh Claude Code, như một trong những coding agent lớn nhất hiện có (tính đến ngày video đăng, 30/10/2026).

Nhưng nếu bạn đang trả tiền cho gói Claude Pro hoặc Max, có một điểm mà theo Bruno hầu hết các bài review bỏ qua: bạn không thể đăng nhập OpenCode bằng subscription đó, vì Anthropic đã đóng cánh cửa này từ trước đó trong năm 2026 (theo video đăng ngày 30/10/2026). Vì vậy câu hỏi "OpenCode có phải lựa chọn thay thế thật sự cho Claude Code không" thật ra là hai câu hỏi: harness có tốt hơn không, và hoá đơn có tốt hơn không?

![Hình vẽ cái cân với hai câu hỏi is the harness better và is the bill better, bên dưới là trục các phần của video](https://homus.dev/photos/9da97FP75lk-0103.jpg)

Hai câu hỏi của video (đăng ngày 30/10/2026): "is the harness better?" và "is the bill better?". Trục bên dưới liệt kê các phần sẽ đi qua: set up, 3 settings, Code Mode, same model, cheapest route và the breach.

Bruno liệt kê những gì anh sẽ cho xem trong video (đăng ngày 30/10/2026): cách cài đặt, ba setting anh đổi trước khi chạy bất cứ thứ gì, code mode thực sự tiết kiệm được gì, chuyện gì xảy ra khi đặt cùng một model vào cả hai harness, và vì sao con đường rẻ nhất với phần lớn người xem lại không phải cái họ sẽ đoán. Anh nhắc thêm rằng video cũng sẽ nói tới vụ breach. Anh giới thiệu mình là Bruno, và nói rằng tới một lúc nào đó trong video, anh sẽ đặt cả thứ này lên một GPU local.

## 2. Harness là gì, và vì sao lớp này chưa ổn định

Trước hết là một chút bối cảnh. Theo Bruno (video đăng ngày 30/10/2026), harness về cơ bản là mọi thứ bọc quanh model: system prompt, các tool, các quyền (permission), cách nó nén context cũ, và các sub-agent. Trong AI stack, harness nằm ngay trên lớp model một tầng. Điều đó có nghĩa OpenCode hoàn toàn không làm ra model nào.

Vậy model từ đâu ra? Theo video đăng ngày 30/10/2026, OpenCode cắm vào hơn 75 nhà cung cấp model thông qua models.dev, hoặc dùng một model chạy trên GPU của chính bạn. Claude Code là cách đặt cược ngược lại: cùng một công ty vừa train model vừa build harness, và tinh chỉnh cái này cho hợp với cái kia.

Hai cách đặt cược mà Bruno mô tả (video đăng ngày 30/10/2026): OpenCode chỉ là harness và lấy model từ hơn 75 nhà cung cấp qua models.dev hoặc từ GPU của bạn; Claude Code thì cùng một công ty làm cả model lẫn harness.

Phần Bruno thích nhất trong thông báo ra mắt 2.0 là sự thẳng thắn của nó. Theo video đăng ngày 30/10/2026, Anomaly viết rằng API cũ đã lớn lên một cách chắp vá, trong lúc mọi người vẫn còn đang tìm hiểu agent thậm chí nên là cái gì. Và rồi, theo đúng chữ của họ, nó "bad". Nên họ vứt nó đi và làm lại từ đầu.

Họ không phải trường hợp duy nhất. Theo video đăng ngày 30/10/2026, Manus nói đã build lại framework agent của mình bốn lần, và giờ thì một trong những harness phổ biến nhất thế giới cũng bỏ luôn server API của chính nó. Điều Bruno rút ra (video đăng ngày 30/10/2026): harness vẫn là lớp ít ổn định nhất trong toàn bộ stack. Và điều đó quan trọng với bạn, vì bất cứ thứ gì bạn build bên trên nó đều có thể phải dịch chuyển theo.

## 3. Cài OpenCode 2.0: cái bẫy ngay từ bước đầu

Giờ tới phần cài đặt, và theo Bruno (video đăng ngày 30/10/2026) có một cái bẫy ngay từ đầu. Nếu bạn `npm install` package cũ `opencode-ai`, bạn sẽ nhận được version 1 chứ không phải 2, vì version 2 nằm dưới một cái tên mới là `@opencode/cli`. Anh buông một câu: "Cool. Very intuitive."

Trang docs v2 của OpenCode (đọc ngày 31/10/2026) ghi lệnh npm cho bản 2 là:

```
npm install -g @opencode/cli
```

Trên Mac và Linux, theo Bruno (video đăng ngày 30/10/2026), cách gọn nhất là dùng script cài đặt tại `opencode.ai/v2/install`. Trang docs v2 (đọc ngày 31/10/2026) ghi lệnh đầy đủ như sau:

```
curl -fsSL https://opencode.ai/v2/install | bash
```

Trên Windows, theo Bruno (video đăng ngày 30/10/2026), giờ đã có các package Winget chính thức: Anomaly OpenCode và Anomaly OpenCode Desktop. Còn trang docs v2 (đọc ngày 31/10/2026) ghi "Windows package managers are not supported" và đưa link tải binary độc lập cho Windows.

Nếu bạn đang ở version 1, theo video đăng ngày 30/10/2026, bạn phải lên bản 1.x mới nhất trước, rồi chạy lệnh upgrade của OpenCode với tuỳ chọn major, một lệnh mà các bản build cũ thậm chí không có.

Lúc Bruno ghi hình, bản build mới nhất là một bản ra ngày 29/10/2026. Theo anh (video đăng ngày 30/10/2026), như vậy là khoảng một chục bản phát hành trong 17 ngày kể từ lúc ra mắt, nên bản bạn thấy khi xem rất có thể đã mới hơn. "Somebody over there isn't sleeping", anh nói.

## 4. Ba setting Bruno đổi ngay ngày đầu

Đây là phần Bruno thật sự quan tâm: ba setting anh đổi ngay ngày đầu, cả ba đều bị chôn trong migration guide.

**Setting số một.** Theo Bruno và migration guide (video đăng ngày 30/10/2026), version 1 hỏi trước khi đụng vào file nằm ngoài thư mục project. Version 2 thì không: permission `external_directory` được allow mặc định, về cơ bản là agent có thể đọc và ghi ở bất cứ đâu trên máy bạn mà không hỏi. Điểm đáng chú ý hơn: trong vài bản build 2.0 đầu tiên, nó vẫn hỏi. Theo chính bot GitHub của OpenCode (như Bruno dẫn trong video đăng ngày 30/10/2026), bản 2.0.25 đã bỏ rule đó mà không ghi một chữ nào trong release notes, và một người dùng nói rằng một model đã commit code vào một repo khác. "Not great", anh nói.

Vì vậy, theo Bruno (video đăng ngày 30/10/2026), hãy thêm một rule để đưa nó về chế độ ask. Permission trong 2.0 là một danh sách có thứ tự gồm action, resource và effect, trong đó rule khớp cuối cùng sẽ thắng. Nên hãy đặt rule này ở cuối. Thứ gì không khớp rule nào sẽ nhận ask. Một dòng thôi là bạn quay về trạng thái an toàn.

![Danh sách permission read allow, edit allow, bash ask, external_directory ask và dòng chữ last matching rule wins](https://homus.dev/photos/9da97FP75lk-0403.jpg)

Ví dụ trong video (đăng ngày 30/10/2026): danh sách rule dạng action · resource · effect, với `external_directory · * · ask` đặt ở cuối, kèm câu từ docs "The last matching rule wins, so the specific exceptions follow the broad rule."

Migration guide của OpenCode (đọc ngày 31/10/2026) ghi rule cần thêm vào `permissions` để giữ hành vi của V1 như sau:

```
{ "action": "external_directory", "resource": "*", "effect": "ask" }
```

**Setting số hai.** Theo video đăng ngày 30/10/2026, version 2 chỉ đọc `AGENTS.md`. Nếu chỉ dẫn của project bạn nằm trong `CLAUDE.md`, OpenCode sẽ không thấy chúng, nên hãy copy sang, nếu không thì agent đang bay mù. Trên màn hình là đoạn trích migration guide: một setup V1 dựa vào fallback `CLAUDE.md` thì nên chuyển chỉ dẫn đó vào `AGENTS.md`, vì V2 hiện "only discovers AGENTS.md".

**Setting số ba** thì giống một lời cảnh báo hơn. Theo Bruno (video đăng ngày 30/10/2026), version 2 nhận config LSP của bạn (phần language server cho bạn thấy lỗi trực tiếp), nhưng thật ra không chạy language server nào cả, nên bạn không nhận được diagnostics nào. Lời khuyên của Anomaly, theo video, là trỏ agent sang linter hoặc type checker của bạn.

## 5. Bản 2.0 thay đổi gì: service, background và plugin

Cài xong và khoá chặt rồi. Vậy họ thực sự đã đổi những gì? Bruno kể ba thứ.

**Thứ nhất là service.** Theo Bruno (video đăng ngày 30/10/2026), OpenCode xưa nay luôn có thiết kế client và server, nhưng gần như không ai dùng. Trong bản 2, server tự khởi động như một background process trên máy bạn, còn terminal và desktop app chỉ là các client nói chuyện với nó, web interface cũng vậy. Session nằm trong process chứ không nằm trong cửa sổ. Vì thế bạn có thể bắt đầu một task trong terminal, đóng nó lại, rồi mở lại đúng session đó trong desktop app, hoặc ghép thêm một thiết bị khác bằng lệnh pair.

Mô hình service của OpenCode 2.0 theo lời Bruno (video đăng ngày 30/10/2026): server chạy như một background process giữ session, còn terminal, desktop app và web interface đều là client.

**Thứ hai là background work.** Theo video đăng ngày 30/10/2026, agent chính có thể giao một việc cho một sub-agent chạy nền, thậm chí trên một model khác, trong lúc bạn vẫn tiếp tục gõ prompt. Một bộ test dài hay một bản build có thể chạy async rồi báo cho agent khi xong. Và nếu có thứ gì đang chạy ở foreground mà bị kéo dài, tổ hợp phím `Ctrl+B` sẽ đẩy nó xuống background.

**Thứ ba là plugin**, và Bruno nói cái này "kind of wild". Theo anh (video đăng ngày 30/10/2026), Anomaly tự ép mình build gần như mọi tính năng của 2.0 thành plugin nội bộ, hơn 80 cái, và làm cho mọi thứ đều hot reload. Hệ quả: agent có thể tự viết một plugin cho chính nó ngay giữa session và dùng plugin đó trong cùng một lượt. Anh dặn người xem nhớ điểm này, vì nó sẽ quay lại ở phần security.

## 6. Code mode: lời hứa một nghìn MCP server

Bruno tự đặt câu hỏi thay người xem: Claude Code đã có sub-agent, background task và plugin rồi, vậy có gì to tát? Anh công nhận là đúng. Theo anh (video đăng ngày 30/10/2026), nếu giấu logo đi thì phần lớn các coding agent có vị giống nhau, kiểu như Pepsi và Coke trong một bài test bịt mắt, và nếu chỉ xét tính năng thì điều đó phần lớn vẫn đúng. Chỗ OpenCode khác, theo anh, là ai kiểm soát nó và chạy nó tốn bao nhiêu tiền. Nên anh dừng đọc danh sách tính năng để đi vào con số, bắt đầu từ tính năng mà Anomaly có vẻ tự hào nhất: code mode.

Lời quảng bá, theo video đăng ngày 30/10/2026, là bạn có thể kết nối một nghìn MCP server mà context chỉ phình lên rất ít. "A thousand. Okay, let's see", Bruno nói.

![Câu trích All MCP servers in 2.0 are opted into codemode by default, chữ 1,000 MCP servers và hình model gọi tool qua lại](https://homus.dev/photos/9da97FP75lk-0643.jpg)

Câu trích trên màn hình (video đăng ngày 30/10/2026): "All MCP servers in 2.0 are opted into codemode by default. This means you can add a thousand of them with minimal context bloat", cạnh hình vẽ model gọi tool rồi nhận kết quả về, từng lượt chồng lên nhau trong context.

Trước tiên, agent bình thường gọi tool như thế nào? Theo Bruno (video đăng ngày 30/10/2026): model gọi một tool rồi chờ. Kết quả được dán ngược vào context. Model đọc nó, rồi gọi tool tiếp theo. Như vậy mọi kết quả trung gian đều đi theo trong context ở mọi lượt sau đó. Và trước khi bạn kịp gõ gì, mỗi MCP server bạn kết nối đã chèn tool definitions của nó vào prompt.

Code mode lật ngược cách đó. Theo video đăng ngày 30/10/2026, OpenCode kèm theo một JavaScript interpreter rất nhỏ (trên màn hình là câu "We've built a minimal JavaScript interpreter in the `@opencode/codemode` package"), biến các MCP server và các endpoint OpenAPI thành những function bình thường. Thay vì 10 lượt đi về, model viết một script ngắn: tìm các tool nó cần, gọi một cái, map qua kết quả, gọi cái khác, và chỉ giá trị cuối cùng được đưa trở lại context.

Bruno ghi công đúng chỗ: theo anh (video đăng ngày 30/10/2026), Cloudflare đã phổ biến cùng ý tưởng này, dưới cùng cái tên, từ năm ngoái (năm 2025, tính theo ngày video đăng). Và trong 2.0, mọi MCP server đều chạy code mode theo mặc định. Trang docs MCP servers v2 của OpenCode (đọc ngày 31/10/2026) cũng ghi trường `codemode` mặc định là `true`, đặt thành `false` để expose tool trực tiếp.

## 7. Napkin math: tool definitions tốn bao nhiêu

Vậy code mode thực sự tiết kiệm cho bạn bao nhiêu? Bruno làm một phép tính napkin math (video đăng ngày 30/10/2026), và anh nói trước là có đơn giản hoá một chút. Giả sử một setup vừa phải: năm MCP server, mỗi server 20 tool, mỗi tool schema khoảng 500 token. Như vậy là 50.000 token tool definitions nằm sẵn trong context trước cả prompt đầu tiên.

"50,000!", anh nhấn lại. Theo phép tính trong video (đăng ngày 30/10/2026), đó là một phần tư của một context window 200k mất đi trước khi agent đọc được một dòng code nào của bạn. Với Opus 5.5 ở mức 4 đô cho mỗi triệu input token (giá theo video đăng ngày 30/10/2026), khối đó tốn 20 cent ở lần đầu tiên được gửi đi. Và ngay cả khi có prompt caching ở mức 20 cent mỗi triệu token (cũng theo video đăng ngày 30/10/2026), nó vẫn là thêm một cent cho mỗi lượt.

Phép tính napkin math của Bruno (video đăng ngày 30/10/2026): năm MCP server với tool definitions chiếm 50.000 token, bằng một phần tư context window 200k, trước khi bạn gõ prompt đầu tiên.

Một cent nghe như chẳng là gì, Bruno nói (video đăng ngày 30/10/2026). Giờ hãy nhân nó với mọi lượt của mọi session.

## 8. Bằng chứng, cách tự đo và chỗ cần thận trọng

Theo Bruno (video đăng ngày 30/10/2026), có bằng chứng thật cho thấy sự phình context này gây hại. OpenCode có một công tắc rõ ràng cho code mode: nếu bạn deny permission `execute`, code mode bị gỡ đi và các MCP tool được expose trực tiếp. Theo một GitHub issue mà anh dẫn, việc tắt nó giữa session đã khiến 42.372 input token bị gửi lại mà không có token nào được cache. Theo anh, đó chính là kiểu hoá đơn mà code mode sinh ra để tránh.

![Dòng permission execute với ghi chú a deny removes Code Mode, và đoạn trích 42372 input tokens, 0 cached](https://homus.dev/photos/9da97FP75lk-0843.jpg)

Trên màn hình (video đăng ngày 30/10/2026): dòng permission `execute *` với ghi chú "a deny removes Code Mode and the tools reached only through it", và đoạn trích từ GitHub issue: lượt kế tiếp gửi lại toàn bộ context, "42372 input tokens, 0 cached".

Nếu muốn tự so sánh, Bruno gợi ý (video đăng ngày 30/10/2026): chạy hai session mới, một session cho phép `execute` và một session deny nó, rồi xem usage của cả hai.

Còn một nghìn server thì có thực tế không? Bruno nói anh sẽ cẩn thận. Theo anh (video đăng ngày 30/10/2026), với một nhúm server, tool definitions thường không phải phần lớn hoá đơn của bạn; phần lớn là cuộc hội thoại.

Và không phải ai cũng thích ý tưởng này. Theo video đăng ngày 30/10/2026, một người bình luận trên Hacker News nói thẳng: một JavaScript interpreter được vibe-code nghe có vẻ nguy hiểm. Bruno công nhận đó là một ý đúng, và hẹn quay lại chuyện security sau. "Pretty neat, right?", anh khép lại phần code mode.

## 9. Cùng một model trong hai harness

Nhưng code mode chỉ chạm tới lớp tool. Câu hỏi lớn hơn, theo Bruno, là chuyện gì xảy ra khi đặt cùng một model vào hai harness. Theo anh (video đăng ngày 30/10/2026), gần như mọi video so sánh OpenCode với Claude Code đều cho OpenCode chạy một model miễn phí, đấu với Claude Code chạy Opus, và cách đó đo cả harness lẫn model cùng một lúc: hai biến, một kết luận.

Phép so sánh cùng model có đo đạc duy nhất mà Bruno tìm được là một bài đăng hồi tháng 7/2026, và nó chạy trên OpenCode version 1 chứ không phải 2, với cùng một model Sonnet ở cả hai bên. Trên màn hình là tiêu đề bài: "Claude Code Is Way More Token-Hungry Than OpenCode. We Measured Exactly How Much", và dòng ghi hai harness là Claude Code 2.1.207 và OpenCode 1.17.18, cả hai ghim vào `claude-sonnet-4-5`, tháng 7/2026.

![Hai cửa sổ Claude Code và OpenCode với số 33,000 so với 7,000 và 268,000 so với 72,000, khoảng 4x](https://homus.dev/photos/9da97FP75lk-1003.jpg)

Kết quả của bài đo tháng 7/2026 mà video (đăng ngày 30/10/2026) dẫn, trên OpenCode v1: trước prompt, Claude Code dùng khoảng 33.000 token, OpenCode khoảng 7.000; mỗi lượt chạy pass, 268.000 so với 72.000, khoảng 4 lần.

Theo bài đo đó (như Bruno dẫn trong video đăng ngày 30/10/2026), Claude Code gửi khoảng 33.000 token trước cả khi đọc prompt, OpenCode gửi khoảng 7.000. Trên các lượt chạy pass, Claude Code trung bình khoảng 268.000 input token, so với khoảng 72.000 của OpenCode, gần gấp bốn lần.

Điểm đáng chú ý, theo Bruno: trên một task nhiều bước, Claude Code lại dùng ít hơn, 121.000 so với 132.000 (theo cùng bài đo tháng 7/2026, dẫn trong video đăng ngày 30/10/2026). Và mẫu thử nhỏ, nên anh bảo hãy coi đó là một hướng đi, không phải một phán quyết.

## 10. Riêng harness có thể đẩy điểm benchmark bao xa

Theo Bruno, hướng đi đó khớp với một điều lớn hơn: riêng phần vỏ bọc có thể đẩy điểm số đi bao xa? Theo video đăng ngày 30/10/2026, trên leaderboard chính thức của Terminal-Bench 2.0, cùng model Opus 4.6 đạt 58% khi chạy trong Claude Code và 74,7% khi chạy trong một harness khác tên là Terminus-KIRA.

![Bảng leaderboard với Claude Opus 4.6 qua Terminus-KIRA 74.7% và qua Claude Code 58.0%, cùng hai thanh so sánh và chữ khoảng 17 points](https://homus.dev/photos/9da97FP75lk-1043.jpg)

Bảng leaderboard trên màn hình (video đăng ngày 30/10/2026): Claude Opus 4.6 đạt 74,7% ± 2,6 qua agent Terminus-KIRA (hạng 16) và 58,0% ± 2,9 qua Claude Code (hạng 47). Bên dưới: "same Opus 4.6 weights", "≈ 17 points from the harness alone".

Cùng một bộ weights mà chênh gần 17 điểm, chỉ từ harness (theo số liệu Bruno dẫn, video đăng ngày 30/10/2026). Nên theo anh, harness giờ thật sự là một nửa sản phẩm.

Vậy là OpenCode thắng? "Not so fast", Bruno nói.

## 11. Thứ quyết định người thắng: hoá đơn

Bruno nhắc lại câu anh nói từ đầu video (đăng ngày 30/10/2026): thứ quyết định người thắng không nằm trong harness nào cả. Đó là hoá đơn.

Theo video đăng ngày 30/10/2026: Claude Pro là 20 đô một tháng; Max là 100 đô cho 5 lần usage, hoặc 200 đô cho 20 lần. Hồi tháng 1/2026, Anthropic bắt đầu chặn đăng nhập bằng subscription từ các harness bên thứ ba, và tới tháng 4/2026 thì áp dụng trên toàn bộ. Nên bên trong OpenCode, Claude bị tính tiền theo giá API, chấm hết. Bruno nói thật lòng anh nghĩ đó là quyền của Anthropic; nó chỉ làm phép tính thay đổi.

Vậy hãy làm phép tính. Theo giả định của Bruno (video đăng ngày 30/10/2026), một session Opus 5.5 đàng hoàng là 40 lượt với context trung bình 60.000 token. Cộng lại là 2,4 triệu input token, trong đó 90% trúng cache, cộng thêm khoảng 1.500 output token mỗi lượt.

![Phép tính 2.16M cached nhân 0.20 đô bằng 0.43, 240K uncached nhân 4 đô bằng 0.96, 60K output nhân 20 đô bằng 1.20, tổng 2.59 đô một session Opus 5.5](https://homus.dev/photos/9da97FP75lk-1203.jpg)

Phép tính trên màn hình (giá theo video đăng ngày 30/10/2026): 2,16M token cache × 0,20 đô/M = 0,43 đô; 240K token không cache × 4 đô/M = 0,96 đô; 60K output × 20 đô/M = 1,20 đô; tổng 2,59 đô cho một session Opus 5.5, hoặc khoảng 2,83 đô nếu phần không cache bị tính như cache write.

Theo phép tính của Bruno (giá theo video đăng ngày 30/10/2026): 2,16 triệu token cache ở mức 20 cent mỗi triệu là khoảng 43 cent. 240.000 token không cache ở mức 4 đô mỗi triệu là 0,96 đô. 60.000 output token ở mức 20 đô mỗi triệu là 1,20 đô. Vậy là khoảng 2,59 đô mỗi session, hoặc khoảng 2,83 đô nếu số token không cache kia bị tính như cache write.

Điều đó có nghĩa, theo Bruno (video đăng ngày 30/10/2026), gói Max 200 đô tự hoàn vốn ở đâu đó khoảng 71 tới 77 session mỗi tháng. Con số đó là khoảng ba session rưỡi mỗi ngày làm việc, và theo anh rất nhiều người chạy nhiều hơn thế rất nhiều.

Vậy với một người dùng Opus nặng, lợi thế lớn nhất của Claude Code là gì? Harness ư? Theo Bruno (video đăng ngày 30/10/2026), không: đó là phần trợ giá (subsidy). Và đó là lý do anh luôn tách cost efficiency khỏi token efficiency. Một harness có thể dùng một phần tư số token cho cùng một task mà vẫn thua về chi phí, nếu token của nó bị tính theo giá API trong khi token của bên kia được trợ giá. Anh nghĩ đó là phần mà hầu hết các phép so sánh bỏ sót. Nên dù OpenCode có thắng bài test token, nó vẫn có thể thua bài test ví tiền của bạn.

## 12. OpenAI đi hướng ngược lại, cùng Zen và Go của OpenCode

Và đây là điểm xoay chiều. Theo Bruno (video đăng ngày 30/10/2026), OpenAI đi hướng ngược lại: OpenCode cho bạn đăng nhập bằng gói ChatGPT Plus hoặc Pro, và bằng GitHub Copilot, nên các model GPT được đối xử như công dân hạng nhất bên trong OpenCode ở mức giá subscription. Model Claude thì không.

Vậy OpenCode được gì từ tất cả chuyện này? Theo Bruno, là mảng kinh doanh của riêng họ. Theo video đăng ngày 30/10/2026, Zen là dịch vụ pay-as-you-go của họ theo giá niêm yết, cộng phí xử lý 4,6% và 31 cent cho mỗi lần mua credit. Trang docs Zen của OpenCode (đọc ngày 31/10/2026) cũng ghi phí "4.6% + $0.31" cho mỗi lần mua credit.

Go là một gói subscription: theo video đăng ngày 30/10/2026, 10 đô một tháng, 40 đô cho Go Plus, hoặc 20 đô mỗi thành viên cho Teams. Gói này cho bạn một danh sách khoảng 30 model được chọn lọc, gồm cả Claude Haiku 5.5 và DeepSeek V4.1 Flash, với giới hạn 20% hạn mức hàng tháng cho mỗi 5 giờ và 50% cho mỗi tuần. Bruno nói gọn: nên bạn không thể đốt hết cả tháng vào một ngày thứ Ba. Để tham khảo, theo video, Go ước tính khoảng 3.850 request Haiku 5.5 cho mỗi khung 5 giờ ở gói 10 đô.

![Đoạn trích Subscribe to Go 10 đô một tháng, Go Plus 40 đô, Go Teams 20 đô mỗi thành viên, thanh 20% per 5 h, 50% per week và bảng Claude Haiku 5.5 3,850 request mỗi 5 giờ](https://homus.dev/photos/9da97FP75lk-1343.jpg)

Gói Go trên màn hình (video đăng ngày 30/10/2026): 10 đô · 40 đô · 20 đô/thành viên cho Go · Go+ · Teams, khoảng 30 model, giới hạn 20% mỗi 5 giờ và 50% mỗi tuần ("not all on a Tuesday"), và ước tính 3.850 request Claude Haiku 5.5 mỗi 5 giờ.

## 13. Free model và cái giá của chữ "free"

Rồi tới các free model, theo Bruno là cách phần lớn mọi người làm quen với OpenCode. Theo video đăng ngày 30/10/2026, lúc đó danh sách gồm Big Pickle, DeepSeek V4.1 Flash Free, GLM-5.3-Flash Free, Beam Free, MiMo-V2.6-Flash Free, Flint 40B Free và vài model Nemotron.

Nhưng theo Bruno, "free" cũng có nhiều tầng. Theo video đăng ngày 30/10/2026: ở đầu an toàn, các model DeepSeek và GLM đến từ những nhà cung cấp có chính sách zero retention và không dùng dữ liệu để train. Beam Free không train trên dữ liệu của bạn nhưng giữ nó trong 30 ngày. Còn với Big Pickle cùng MiMo, Flint và các model Nemotron, docs ghi rằng team đang dùng giai đoạn miễn phí để thu thập feedback và cải thiện model.

![Bảng free model của OpenCode và các ghi chú zero-retention policy, retains it for 30 days, collect feedback and improve the model](https://homus.dev/photos/9da97FP75lk-1423.jpg)

Bảng free model và ghi chú từ docs trên màn hình (video đăng ngày 30/10/2026): GLM-5.3-Flash Free và DeepSeek V4.1 Flash Free theo "zero-retention policy"; Beam Free "retains it for 30 days"; MiMo, Nemotron và Big Pickle thì team "using this time to collect feedback and improve the model".

"Translated", Bruno nói, prompt của bạn là một phần của thoả thuận. Theo video đăng ngày 30/10/2026, còn có giới hạn số message kèm đồng hồ reset, và tier miễn phí giờ chỉ chạy bên trong các app của chính OpenCode. Theo Bruno, đó là distribution kiểu kinh điển: cùng một chiến lược trợ giá mà Anthropic đang chạy, chỉ là ở một tầng cao hơn trong stack.

Trang docs Zen của OpenCode (đọc ngày 31/10/2026) vẫn ghi Beam Free "retains it for 30 days for safety reasons" và GLM-5.3-Flash Free cùng DeepSeek V4.1 Flash Free theo "zero-retention policy".

## 14. Chạy local trên GPU của chính mình

Vậy bỏ qua hết những thứ đó và chạy local thì sao, vì như vậy là miễn phí, đúng không? "Well, hold on", Bruno nói. Theo video đăng ngày 30/10/2026, OpenCode 2 tự phát hiện LM Studio và Ollama, không cần config.

Bruno lấy ví dụ một card 16GB như RTX 4080 Super, GDDR6X trên bus 256-bit, băng thông 736GB mỗi giây. Một model 27B như Qwen 3.8 ở mức quant Q3_K_M nặng khoảng 13GB (theo video đăng ngày 30/10/2026). Vậy có vừa VRAM không? Về mặt kỹ thuật thì vừa. 16 trừ 13 còn khoảng 3GB cho KV cache, theo lời anh là bộ nhớ làm việc của model cho cuộc hội thoại của bạn, mà agentic coding thì ngốn context rất nhanh. Nên theo anh, giới hạn thật ở đây là context window, không phải tốc độ.

Và nếu bạn dùng Ollama, còn một cái bẫy nữa. Theo Bruno (video đăng ngày 30/10/2026), trên GPU có ít hơn 24GB VRAM, context mặc định của nó chỉ có 4.096 token, nên bạn phải nâng lên, nếu không agent sẽ quên task giữa chừng. Và ngay cả vậy, theo video, có người trên GitHub báo OpenCode chạy với Ollama chết ở 32.768 token dù đã đặt giới hạn 262k. "Fun", anh nói. Một người xem trên một kênh khác báo Qwen 3.8 27B bị timeout khi phải quét nhiều file. Nên theo Bruno (video đăng ngày 30/10/2026), các model local nhỏ có làm được việc này, nhưng chúng chật vật đúng ở chỗ agent dành phần lớn thời gian.

Vậy chạy local có thật sự rẻ hơn? Bruno chọn giả định rộng rãi: card đó chạy model ở khoảng 40 token mỗi giây. Một triệu output token khi đó mất khoảng 7 giờ. Với GPU kéo khoảng 250 watt, đó là khoảng 1,7 kilowatt giờ, và ở mức, giả sử, 23 cent mỗi kilowatt giờ, bạn tốn khoảng 40 cent cho mỗi triệu token (phép tính trong video đăng ngày 30/10/2026).

Phép tính tiền điện của Bruno (video đăng ngày 30/10/2026), với các giả định 40 token/giây, 250 W và 23 cent/kWh, đặt cạnh giá output của Haiku 5.5 và DeepSeek V4.1 Flash trên Zen.

Theo video đăng ngày 30/10/2026, DeepSeek V4.1 Flash trên Zen là 1,20 đô mỗi triệu output token, còn output của Haiku 5.5 là 50 cent với prompt dưới 100k. Nên theo Bruno, riêng tiền điện chỉ vừa đủ thắng các API rẻ nhất, và đó là chưa tính tới chính cái card. Local là lựa chọn cho quyền riêng tư và cho làm việc offline, theo anh, không phải lựa chọn rẻ.

## 15. Vụ breach ngày 17/10

Bruno nói anh sẽ làm người xem thiệt nếu bỏ qua phần này. Vụ breach đã được đưa tin nhiều, nên anh chỉ kể bản ngắn.

Theo Bruno (video đăng ngày 30/10/2026), ngày 17/10/2026, OpenCode công bố rằng kẻ tấn công đã vào được một hệ thống cũ đang trong quá trình bị tắt, và hệ thống đó lưu các key của nhà cung cấp bên thứ ba mà người dùng console đã thêm vào. Khoảng 1,4% người dùng console bị ảnh hưởng và được thông báo qua email, và một số người nhận hoá đơn lên tới hàng trăm đô. "Ouch", anh nói. Nhưng theo OpenCode (như Bruno dẫn trong video đăng ngày 30/10/2026), bản thân CLI không bị đụng tới.

![Tiêu đề báo Hackers hit AI coding tool OpenCode, running up charges on users' AI accounts, cùng đoạn trích 1.4% of users và các chữ CLI untouched](https://homus.dev/photos/9da97FP75lk-1723.jpg)

Trên màn hình (video đăng ngày 30/10/2026): tiêu đề "Hackers hit AI coding tool OpenCode, running up charges on users' AI accounts", đoạn trích nói kẻ tấn công vào một hệ thống cũ, ảnh hưởng "1.4% of users" của OpenCode Console, nơi một số người lưu API key, cùng các ghi chú "$100s in bills" và "CLI untouched".

Theo Bruno (video đăng ngày 30/10/2026), đó là một thất bại thật, nhưng là thất bại của chỗ lưu key được host, chứ agent trên máy bạn không bị hack. Lời khuyên của anh: nếu bạn từng dán một provider key vào console, hãy rotate nó, và dù sao cũng nên đặt giới hạn chi tiêu với các nhà cung cấp của bạn.

## 16. Hot reload, auto mode và sandbox

Bản thân harness cũng có cuộc tranh luận riêng. Bruno nhắc lại chuyện hot reload. Theo video đăng ngày 30/10/2026, trên thread Hacker News về bản 2.0, thread đạt 890 điểm và gần 400 bình luận, hot reload là một trong những điểm bị phản bác gay gắt nhất. Lý do: một agent có thể viết plugin và cho nó chạy ngay trong cùng một lượt thì cũng có thể thay đổi chính các guardrail của nó.

Đặt điều đó cạnh mặc định `external_directory`, quan điểm của Bruno khá đơn giản. Theo những gì anh biết (video đăng ngày 30/10/2026), OpenCode chưa có thứ gì giống auto-mode classifier của Claude Code. Nên bạn hoặc duyệt từng lệnh, hoặc để nó chạy tự do. Và nếu để nó chạy tự do, hãy đặt nó trong một container hoặc một VM.

![Các bình luận Hacker News về auto mode và sandbox, cùng sơ đồ approve every command hoặc let it run free, run free trong container hoặc VM, server outside the sandbox](https://homus.dev/photos/9da97FP75lk-1823.jpg)

Trên màn hình (video đăng ngày 30/10/2026): một bình luận hỏi OpenCode có gì giống "auto mode" của Claude Code không, sơ đồ "approve every command / or let it run free" dẫn tới "run free → in a container or a VM", và hai bình luận về sandbox: tool call giờ đi qua background process nên sandbox bọc TUI "quietly became useless", và lời khuyên dùng "--standalone flag with sandbox".

Thêm một điều, theo Bruno (video đăng ngày 30/10/2026): nếu bạn vốn đã sandbox terminal của mình, hãy kiểm tra lại. Một người bình luận phát hiện tool call giờ chạy trong background server, nằm ngoài sandbox đó. Cách sửa mà người đó được chỉ là cờ `--standalone`; trên màn hình, bình luận ghi phải dùng "--standalone flag with sandbox invocations of opencode", nếu không bạn sẽ chạy client trong sandbox nhưng server thì không.

Trang docs permission modes của Claude Code (đọc ngày 31/10/2026) có mục riêng cho auto mode, phần mà bình luận trên màn hình đang nhắc tới.

## 17. Vậy OpenCode 2.0 có phải lựa chọn thay Claude Code?

Vậy cuối cùng OpenCode 2.0 có phải một lựa chọn thay thế thật sự cho Claude Code? Với tư cách một harness, Bruno nghĩ là có (theo video đăng ngày 30/10/2026). Theo anh, mô hình service, code mode và hệ thống plugin đi trước ở một số chỗ. Các con số token hiện có nghiêng về phía nó. Và đó là harness duy nhất ở tầm này cho phép bạn đổi model tự do, kể cả model chạy trên GPU của chính bạn.

Còn với tư cách một cách để dùng Claude rẻ hơn? Theo Bruno (video đăng ngày 30/10/2026): không, và đó là do thiết kế của Anthropic.

Lời khuyên cuối của Bruno (video đăng ngày 30/10/2026): ai nên dùng OpenCode ngay, ai nên chờ, và một việc cho tất cả mọi người.

Theo Bruno (video đăng ngày 30/10/2026), nếu bạn đang có gói ChatGPT hoặc Copilot, nếu bạn chạy model open-weight, hoặc nếu bạn đang build automation trên một SDK, thì OpenCode rất hợp lý ngay lúc video đăng. Nếu bạn là người dùng Opus nặng trên gói Max, hoặc bạn phụ thuộc vào LSP diagnostics hay plugin version 1, anh khuyên nên chờ. Và dù bạn là ai, hãy đổi setting external directory đó trước khi làm bất cứ việc gì khác.

## 18. Harness bị ép từ hai phía

Giờ hãy nhìn rộng ra. Theo Bruno (video đăng ngày 30/10/2026), câu chuyện lớn hơn là harness đang bị ép từ cả hai phía. Các lab đang tiến lên lớp harness và rào lại phần trợ giá của họ, còn những bên làm harness thì đang tiến xuống lớp inference với Zen, Go và các free model. Harness lẽ ra là lớp mỏng ở giữa, và giờ nó là lớp mà ai cũng tranh giành.

![Chồng các lớp application, harness, model, infrastructure, chip, energy, với mũi tên the labs move up và harness makers, chữ squeezed from both sides](https://homus.dev/photos/9da97FP75lk-1923.jpg)

Application, harness, model, infrastructure, chip, energy. Một mũi tên "the labs move up, fencing off subsidies" và một mũi tên "harness makers" cùng chỉ vào lớp harness: "squeezed from both sides".

Vậy rồi các lab sẽ sở hữu lớp này theo cách các app store sở hữu distribution? Hay nó sẽ trở thành lớp trung lập khiến các model có thể thay thế cho nhau? Bruno nói anh hy vọng vào khả năng thứ hai (video đăng ngày 30/10/2026), vì đó là phiên bản mà workflow của bạn không bị trói vào trang bảng giá của một công ty nào.

## Nguồn và liên kết

- Tên gốc: I tested OpenCode 2.0 vs. Claude Code: The results will surprise you
- Sự kiện: [YouTube](https://homus.dev/events/youtube)
- Video gốc: [https://www.youtube.com/watch?v=9da97FP75lk](https://www.youtube.com/watch?v=9da97FP75lk)

- Kênh YouTube Bruno Vega (Bruno Vega): [youtube.com/channel/UCaTxk8ft0naQMDbWL3msMyQ](https://www.youtube.com/channel/UCaTxk8ft0naQMDbWL3msMyQ)

- Docs OpenCode v2, phần cài đặt (lệnh `curl -fsSL [https://opencode.ai/v2/install](https://opencode.ai/v2/install) | bash` và `npm install -g @opencode/cli`; đọc ngày 31/10/2026): [opencode.ai/v2/docs](https://opencode.ai/v2/docs/)

- Migration guide từ V1 sang V2 (external_directory, AGENTS.md, LSP; đọc ngày 31/10/2026): [opencode.ai/v2/docs/migrate-v1](https://opencode.ai/v2/docs/migrate-v1/)

- Docs permissions v2 ("The last matching rule wins", permission `execute` và Code Mode; đọc ngày 31/10/2026): [opencode.ai/v2/docs/permissions](https://opencode.ai/v2/docs/permissions/)

- Docs MCP servers v2 (trường `codemode`, mặc định `true`; đọc ngày 31/10/2026): [opencode.ai/v2/docs/mcp-servers](https://opencode.ai/v2/docs/mcp-servers/)

- Docs Zen (phí 4.6% + $0.31 mỗi lần mua credit, ghi chú về free model; đọc ngày 31/10/2026): [opencode.ai/v2/docs/console/models](https://opencode.ai/v2/docs/console/models/)

- Docs Go (giá các gói và giới hạn 5 giờ, tuần; đọc ngày 31/10/2026): [opencode.ai/v2/docs/console/go](https://opencode.ai/v2/docs/console/go/)

- [models.dev](https://models.dev), danh mục model mà OpenCode dùng để cắm vào các nguồn model (đọc ngày 31/10/2026): [models.dev](https://models.dev/)

- Docs permission modes của Claude Code, có mục auto mode (đọc ngày 31/10/2026): [code.claude.com/docs/en/permission-modes](https://code.claude.com/docs/en/permission-modes)

Nguồn: https://homus.dev/talks/i-tested-opencode-2-0-vs-claude-code-the-results-will-surprise-you · cập nhật 2026-10-31
