DeepSeek Harness vs Claude Code vs Omnigent: chọn gì?
So sánh DeepSeek Harness, Claude Code và Omnigent về architecture, model coupling, licence, độ trưởng thành và tài nguyên cần để chạy trên VPS.
DeepSeek Harness vs Claude Code vs Omnigent: bạn cần công cụ nào
DeepSeek Harness, Claude Code và Omnigent đều được gọi là agent harness, nhưng chúng giải quyết các phần khác nhau của bài toán. DeepSeek Harness là một plugin runtime có web UI (giao diện người dùng), trong đó bạn tự cung cấp model. Claude Code là chương trình terminal của Anthropic, chạy các model của Anthropic. Omnigent là orchestrator của Databricks, dùng để điều khiển các harness khác, trong đó có Claude Code, thay vì tự triển khai agent loop. Không công cụ nào là bản thay thế drop-in cho công cụ khác. Vì vậy, câu hỏi cần trả lời là bạn đang thiếu layer nào. Nếu cách phân loại này còn mới, agent harness thực sự là gì sẽ trình bày các thành phần mà ba công cụ này phân chia theo những cách khác nhau: loop, tools, permissions và session state.
Các tiêu chí thực sự khác nhau là architecture, model coupling, interface, mức độ trưởng thành và licence. Mọi phiên bản và ngày tháng dưới đây đã được kiểm tra vào ngày 18 August 2026. Hai trong ba công cụ thay đổi đủ nhanh để bạn nên kiểm tra lại trước khi quyết định sử dụng một công cụ.
DeepSeek Harness là gì, và mô hình plugin mang lại lợi ích gì?
DeepSeek công bố DeepSeek Harness, hay dsh, tại github.com/deepseek-ai/deepseek-harness vào tháng 8 năm 2026. Phần mô tả repository tóm tắt toàn bộ thiết kế trong bốn từ: mọi thứ đều là plugin. Model adapter, tool registry, session log, sandbox và chính agent loop đều là plugin, được runtime xây dựng trên Cordis nạp vào. Tốc độ adoption nhanh bất thường. Repository đã vượt 150,000 star chỉ vài ngày sau khi công bố (kiểm tra ngày 18 tháng 8 năm 2026).
DeepSeek Harness hiện đang ở giai đoạn developer preview và được cập nhật rất nhanh. SẼ CÓ CÁC THAY ĐỔI PHÁ VỠ TƯƠNG THÍCH.
Đây là cảnh báo trong chính README và cũng là câu quan trọng nhất trong phần so sánh này. Bất kỳ thứ gì bạn viết dựa trên plugin API (application programming interface) hôm nay đều có thể phải viết lại.
Khởi động bằng npx. Bạn cần cài Node.js trước:
npx @deepseek-ai/dsh webLệnh sẽ in ra URL của nó. Mặc định, web UI được phục vụ tại http://127.0.0.1:3080. Địa chỉ này là bind có chủ đích, không chỉ là giá trị mặc định mang tính hình thức. Vì vậy, ý nghĩa của việc bind vào 127.0.0.1 khi truy cập UI trở nên quan trọng ngay khi dsh chạy trên máy khác với máy đang mở trình duyệt. Mỗi build đã phát hành đều là release candidate chứ chưa phải stable release. Vì vậy, nếu lệnh đó fail hoặc khởi động một version không đúng với dự kiến, ghim version dsh cụ thể và xóa npx cache là cách xử lý nhanh nhất. Nếu build từ source, dùng pnpm thay cho lệnh trên:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh webdsh web là dạng viết tắt của dsh --profile web. Profile là một thư mục bên dưới $DSH_HOME/profiles/, và launcher sẽ khởi động profile mà bạn chỉ định. Điều này quan trọng vì cũng có headless profile: dsh --profile headless "job" chạy một session đã được persist, in kết quả rồi thoát. Đây là dạng phù hợp cho cron job hoặc build step. Các launcher flag như --profile và --patch phải đứng trước các argument của ứng dụng, vì launcher dừng parse khi chuyển quyền xử lý cho ứng dụng. Flag như --port thuộc về profile đã khởi động, không thuộc về launcher, nên vị trí của nó rất quan trọng. Plugin được quản lý bằng cách chuyển argument cho pnpm, như trong dsh plugin --profile web add <package>. Plugin được load vào cùng runtime với agent và kế thừa các permission của agent, vì vậy hãy kiểm tra plugin có thể truy cập những gì trước khi cài đặt.
Claude Code là gì và tại sao đây là một chương trình terminal?
Claude Code là agent CLI (command line interface) của Anthropic. Sản phẩm này không có web UI tích hợp. Nó chạy trong terminal, tại thư mục bạn muốn xử lý, nên rất phù hợp với một server session. Vì không có giao diện để cấu hình, bạn định hướng cách nó trả lời bằng text thay vì các bảng cài đặt. Output style sẽ thay system prompt của nó, nhờ đó mọi phản hồi trong session đều có một dạng khác. Cài đặt chỉ cần một command trên macOS, Linux và WSL:
curl -fsSL https://claude.ai/install.sh | bash
claude --versionBản cài đặt hoạt động sẽ in ra version và tên sản phẩm, ví dụ 2.1.211 (Claude Code). Nếu lệnh này lỗi, claude doctor sẽ in thông tin chẩn đoán chỉ đọc về việc cài đặt và settings mà không bắt đầu session. Ngoài ra còn có npm package npm install -g @anthropic-ai/claude-code, hiện yêu cầu Node.js 22 trở lên từ v2.1.198. Package này cài cùng native binary, nên claude đã cài không sử dụng Node.js khi chạy. Anthropic cũng cung cấp các repository apt, dnf và apk có chữ ký cho Debian, Ubuntu, Fedora, RHEL và Alpine. Đây là lựa chọn phù hợp hơn trên server được quản lý bằng configuration management, vì các bản cập nhật sẽ đi qua quy trình upgrade thông thường của bạn.
Claude Code yêu cầu tài khoản Pro, Max, Team, Enterprise hoặc Console. Gói Claude.ai miễn phí không bao gồm quyền truy cập. Việc quyết định giữa gói thuê bao Claude và thanh toán API ảnh hưởng đến chi phí nhiều hơn bất kỳ setting nào trong công cụ.
Omnigent là gì và meta-harness điều phối những gì?
Databricks công bố Omnigent vào tháng 6 năm 2026 và phát hành nó theo giấy phép Apache 2.0. Omnigent tự gọi mình là meta-harness. Nó không triển khai agent loop. Nó điều khiển các agent loop đã có sẵn: Claude, Codex, Cursor, OpenCode, Hermes, Pi và agents SDK (software development kit) của OpenAI. Một số agent xuất hiện hai lần trong danh sách harness: một lần dưới dạng giao tiếp với SDK của nhà cung cấp, và một lần dưới dạng native wrapper cho chương trình terminal thực của nhà cung cấp.
Một agent là một file YAML, trong đó YAML là định dạng cấu hình dạng văn bản thuần:
name: my_agent
prompt: You are a helpful data analyst.
executor:
harness: claude-sdk
tools:
word_count:
type: function
callable: mypackage.mymodule.word_count
docs:
type: mcp
url: https://example.com/mcp
researcher:
type: agent
prompt: Search for relevant information.Dòng executor.harness là phần cốt lõi của toàn bộ dự án. Đổi claude-sdk thành codex thì cùng một prompt với cùng các tool sẽ chạy trên một nhà cung cấp khác. Tool có thể là một hàm Python, một máy chủ MCP (model context protocol) hoặc một agent khác. Trường hợp cuối là cách mô hình hóa công việc multi-agent: sub-agent đơn giản là một tool. Nếu bạn chưa xác định nên đặt skills, máy chủ MCP và các file rules ở đâu, sự khác nhau giữa agent skills, MCP và các file rules là phần nên đọc trước, vì Omnigent kế thừa những thành phần mà harness bên dưới hỗ trợ.
Ví dụ được phát hành giúp làm rõ ý tưởng này. Polly là một coding orchestrator không tự viết code. Nó lập kế hoạch, giao việc song song cho các coding sub-agent trong những git worktree riêng, rồi chuyển từng diff đến một reviewer chạy trên model của nhà cung cấp khác.
Cài đặt bằng script đã được phát hành:
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | shHoặc cài đặt thủ công; cách này cần Python 3.12 trở lên:
uv tool install omnigent
omnigent setup
omnigent startpip install "omnigent" cũng hoạt động, và chọn extras theo cách thông thường bằng uv tool install "omnigent[databricks,modal]". omnigent setup thu thập credential và thiết lập giá trị mặc định. omnigent start khởi động server, đăng ký máy làm host và cung cấp web UI tại http://localhost:6767. omnigent server status và omnigent stop là hai lệnh còn lại bạn sẽ dùng hằng ngày. Chạy omnigent không có tham số sẽ mở một interactive session mà không khởi động server.
Danh sách dependency dài hơn so với gợi ý của installer một dòng: Python 3.12 trở lên, git, Node.js 22 LTS (long term support) trở lên cùng npm và pnpm, tmux cho các native terminal wrapper, và bubblewrap (bwrap) cho Linux sandbox. Đây là hệ quả trực tiếp của thiết kế này. Omnigent phải tự cài đặt và giám sát các vendor CLI, nên đây là phần mềm Python có nhiệm vụ chạy phần mềm Node.js.
Ai cung cấp model và ai trả phí?
Đây là tiêu chí có ảnh hưởng thực tế lớn nhất, và ba câu trả lời thực sự khác nhau.
DeepSeek Harness theo mô hình tự cung cấp provider. Catalogue provider được cài sẵn hỗ trợ Anthropic, OpenAI, Bedrock, Vertex, Azure và Codex. Một custom provider entry cần có provider id viết thường, display name, base URL, API protocol, credential và ít nhất một model. Nhờ đó, bạn có thể trỏ nó đến gateway của công ty hoặc server tự host. Các key được ghi vào $DSH_HOME/.credentials.yaml, còn $DSH_HOME/settings.yaml chỉ lưu reference đến chúng. Vì vậy, có thể chia sẻ file settings, nhưng không được chia sẻ file credentials. Thay vào đó, gateway entry có thể chỉ định một biến môi trường, với dòng như apiKeyEnv: GATEWAY_API_KEY. Dù tên project là DeepSeek, không có thành phần nào buộc bạn phải dùng model của DeepSeek. Nếu muốn xem cách điền các file đó bằng key thật hoặc trỏ đến endpoint Ollama local, cấu hình key, model và endpoint cho dsh sẽ trình bày từng chế độ, cũng như dữ liệu nào rời khỏi máy trong mỗi chế độ.
Claude Code được thiết kế để gắn với một vendor duy nhất. Bạn đăng nhập bằng tài khoản trả phí, hoặc đặt ANTHROPIC_API_KEY để Claude Code yêu cầu bạn xác nhận key một lần thay vì mở browser. Cách thứ hai hoạt động trên headless server. Các tổ chức đã mua capacity ở nơi khác có thể định tuyến qua Amazon Bedrock, Google Cloud's Agent Platform hoặc Microsoft Foundry.
Omnigent cần mọi thứ mà harness bên dưới yêu cầu, được thu thập bằng omnigent setup. Nó chấp nhận API key, subscription CLI hiện có, gateway tương thích với OpenAI hoặc Anthropic, và workspace Databricks. Đây là chi phí thực sự của một meta-harness: một máy cuối cùng sẽ lưu credential của mọi vendor. Hãy đọc cách ngăn AI agent truy cập secret trước khi kết nối máy đó với Internet công cộng.
Mức độ trưởng thành của từng công cụ tính đến tháng 8 năm 2026?
Claude Code đã được cung cấp rộng rãi từ năm 2025 và thuộc dòng 2.1.x tính đến tháng 8 năm 2026. Công cụ này tự động cập nhật trong nền, cung cấp các kênh phát hành latest và stable, công bố các manifest phát hành được ký bằng GPG, đồng thời có tài liệu về cơ chế ghim minimumVersion cho các tổ chức cần đặt phiên bản tối thiểu. Đây là hồ sơ của một sản phẩm đã được người dùng chạy trong môi trường production.
Omnigent được công khai từ tháng 6 năm 2026, vẫn thuộc dòng 0.x, và README mô tả dự án là alpha. Hãy chờ đợi danh sách harness và schema YAML tiếp tục thay đổi. Công cụ này có thể sử dụng được, nhưng chưa ổn định.
DeepSeek Harness non trẻ hơn rất nhiều. Dự án được công bố vào tháng 8 năm 2026, chỉ vài ngày trước khi bài so sánh này được viết, và README của chính dự án cảnh báo sẽ có các thay đổi phá vỡ tính tương thích. Số lượng star rất lớn cho biết có nhiều người đang theo dõi dự án. Nó không cho biết API plugin đã ổn định hay chưa.
Mỗi công cụ sử dụng giấy phép nào?
DeepSeek Harness sử dụng giấy phép MIT; các giấy phép của bên thứ ba được công bố trong THIRD_PARTY_NOTICES.md. Omnigent sử dụng Apache 2.0. Claude Code không phải phần mềm nguồn mở: đây là sản phẩm thương mại của Anthropic, và để chạy cần có tài khoản trả phí hoặc quyền truy cập API tính phí. Nếu yêu cầu của bạn là có thể đọc và chỉnh sửa từng dòng mã, Claude Code bị loại ngay trước khi bắt đầu so sánh tính năng. Nếu yêu cầu của bạn là công cụ vẫn hoạt động vào tháng tới mà không cần bạn can thiệp, yêu cầu đó lại nghiêng về hướng ngược lại.
Cần gì để chạy từng công cụ trên VPS?
Claude Code là công cụ đơn giản nhất trong ba công cụ. Hãy cài đặt, đăng nhập và chạy trong tmux để session vẫn tồn tại khi kết nối SSH (secure shell) bị ngắt. Anthropic yêu cầu 4 GB RAM (random access memory) trở lên và bộ xử lý x64 hoặc ARM64, trên Ubuntu 20.04 trở lên, Debian 10 trở lên hoặc Alpine 3.19 trở lên. Trên Alpine, trước tiên bạn cũng cần cài bash, curl, libgcc, libstdc++ và ripgrep, vì lệnh cài đặt sẽ fail với lỗi not found nếu thiếu các gói này. Chạy Claude Code trên VPS trong tmux trình bày chi tiết cách quản lý session.
DeepSeek Harness cần Node.js và một trình duyệt trỏ đến web UI của công cụ. README yêu cầu Node.js nhưng không nêu version tối thiểu, vì vậy Node 22 LTS là lựa chọn an toàn, do hệ sinh thái xung quanh nhắm đến version này. Không publish port 3080. Hãy để server listen trên 127.0.0.1 và forward port từ laptop:
ssh -N -L 3080:127.0.0.1:3080 you@your-vpsSau đó mở http://127.0.0.1:3080 trên máy local. Cài đặt đầy đủ DeepSeek Harness trên VPS trình bày cách bố trí profile và các lệnh plugin.
Omnigent nặng nhất vì nó cài đặt và giám sát CLI của các bên khác. Công cụ này cần Python 3.12, Node.js 22, npm, pnpm, tmux và bubblewrap trên cùng một máy, sau đó còn tải xuống từng CLI của vendor mà bạn enable. Forward port theo cách tương tự:
ssh -N -L 6767:127.0.0.1:6767 you@your-vpsVới server được nhiều người khác sử dụng, cách được hỗ trợ là triển khai Docker trong deploy/; cách này enable tài khoản multi-user theo mặc định. Server khởi động thủ công cũng hỗ trợ hành vi tương tự nếu đặt OMNIGENT_AUTH_ENABLED=1. Đăng nhập OIDC (OpenID Connect) hoạt động với Google, GitHub, Okta và Microsoft. Hướng dẫn harness multi-agent của Omnigent trình bày các sandbox provider, vốn bắt đầu trở nên quan trọng ngay khi agent ghi dữ liệu vào disk.
Tại sao web UI lại trống khi truy cập bằng địa chỉ IP public của server?
Cả hai web harness đều listen trên loopback theo mặc định. Cách xử lý dễ nghĩ đến là bind chúng vào 0.0.0.0 rồi mở port. Nhưng có hai vấn đề riêng biệt. Vấn đề đầu tiên là bảo mật: ở local mode mặc định, cả hai đều không có authentication. Vì vậy, một port đã mở cũng tương đương với một shell mở trên VPS của bạn. Vấn đề thứ hai là một quy tắc của trình duyệt thường khiến người dùng bất ngờ. crypto.randomUUID() chỉ được định nghĩa trong secure context, tức là HTTPS (hypertext transfer protocol secure), localhost hoặc 127.0.0.1. Khi tải cùng UI qua một địa chỉ không mã hóa như http://203.0.113.10:3080, console của trình duyệt sẽ báo:
TypeError: crypto.randomUUID is not a functionSau đó, trang chỉ hiển thị một phần hoặc không hiển thị gì, vì việc tạo session thất bại trước khi giao diện có thể được render. Server không bị lỗi, và log vẫn ghi nhận một request bình thường. Browser không tin cậy origin này, nên một function mà front end phụ thuộc vào chưa bao giờ được định nghĩa. SSH tunnel xử lý được vấn đề này mà không cần certificate, vì 127.0.0.1 được xem là secure context. Reverse proxy có certificate TLS (transport layer security) hợp lệ cũng xử lý được vấn đề này. Sau đó, bạn phải tự thêm authentication.
Lựa chọn nào phù hợp với bạn?
Chọn Claude Code nếu bạn muốn một coding agent có thể dùng ngay, sẵn sàng trả phí cho Anthropic và vốn đã làm việc chủ yếu trong terminal. Đây là sản phẩm thương mại hoàn thiện duy nhất trong ba lựa chọn, thay vì chỉ là bản preview.
Chọn DeepSeek Harness nếu mô hình plugin mới là yếu tố quan trọng: bạn muốn thay thế model adapter, sandbox hoặc vòng lặp agent, đồng thời chấp nhận rằng interface bạn dựa vào sẽ thay đổi. Danh mục provider của nó hỗ trợ Anthropic và OpenAI, nên chọn công cụ này là đặt cược vào runtime, không phải vào các model của DeepSeek.
Chọn Omnigent nếu bạn đã chạy nhiều agent CLI và vấn đề thực sự là điều phối: policy, sandboxing, review bằng model của vendor thứ hai và một session dùng chung mà người khác có thể theo dõi. Nó thêm một lớp vào stack của bạn, và một lớp không cần thiết có thể trở thành điểm gây lỗi. Nếu nhu cầu điều phối của bạn nhỏ hơn mức đó, hai session Claude Code trên cùng một máy có thể gửi tin nhắn cho nhau mà không cần orchestrator ở giữa.
Nếu bạn vẫn đang lập danh sách lựa chọn, coding agent Mimo Code AI thuộc cùng nhóm terminal-agent với Claude Code. Bạn cũng nên đọc chạy coding agent trong một VM dùng một lần dù chọn công cụ nào, vì không công cụ nào trong ba công cụ này tự làm cho một rm -rf bất cẩn trở nên an toàn. Không công cụ nào trong ba công cụ quyết định kích thước diff mà agent đề xuất. Đây là vấn đề ở cấp prompt, nên một skill hướng agent về thay đổi nhỏ nhất có thể hoạt động đáng được thêm vào công cụ harness bạn chọn.
FAQ
Tôi có cần gói Anthropic trả phí để dùng Claude Code không?
Có. Claude Code yêu cầu tài khoản Pro, Max, Team, Enterprise hoặc Console. Gói Claude.ai miễn phí không bao gồm quyền truy cập. Trên VPS không có giao diện đồ họa, hãy đặt ANTHROPIC_API_KEY trước lần chạy đầu tiên. Khi đó Claude Code sẽ chỉ hỏi một lần để bạn phê duyệt key đó, thay vì cố mở trình duyệt. Các tổ chức có năng lực xử lý ở nơi khác có thể trỏ Claude Code đến Amazon Bedrock, Google Cloud's Agent Platform hoặc Microsoft Foundry.
DeepSeek Harness có chạy được model Claude hoặc OpenAI không?
Có. Danh mục provider đã cài đặt bao gồm Anthropic, OpenAI, Bedrock, Vertex, Azure và Codex. Bạn thêm key cho từng provider trong Settings rồi vào Models. Provider không có trong danh mục được thêm dưới dạng custom provider. Provider này cần provider id viết thường, base URL, API protocol, credential và ít nhất một model. Key được lưu trong $DSH_HOME/.credentials.yaml, còn $DSH_HOME/settings.yaml chỉ chứa reference. Vì vậy, hãy backup riêng file credential và không đưa file này vào version control.
Omnigent có thay thế Claude Code không?
Không. Omnigent chạy Claude Code. Danh sách harness của nó gồm Claude, Codex, Cursor, OpenCode, Hermes và Pi. Agent chọn một harness bằng một dòng harness: trong file YAML của agent. Bạn vẫn phải tự cài đặt và xác thực CLI nền tảng. Omnigent bổ sung orchestration, policy và sandboxing ở phía trên. Vì vậy, các dependency của nó chỉ đáng dùng khi bạn chạy nhiều hơn một agent hoặc nhiều hơn một vendor.
Vì sao web UI của DeepSeek Harness bị trống trên public IP của server?
Vì origin HTTP thuần không phải là secure context, crypto.randomUUID() không được định nghĩa tại đó và browser console báo TypeError: crypto.randomUUID is not a function. Việc tạo session thất bại. Vì vậy, trang chỉ render một phần hoặc không render được, trong khi log của server vẫn bình thường. Hãy forward port qua SSH bằng ssh -N -L 3080:127.0.0.1:3080 you@your-vps rồi mở http://127.0.0.1:3080, vì loopback được tính là secure context. Reverse proxy có chứng chỉ TLS hợp lệ cũng hoạt động. Khi đó, bạn phải tự thêm cơ chế xác thực.
VPS cần bao nhiêu RAM cho các harness này?
Anthropic ghi rõ Claude Code cần 4 GB RAM trở lên. DeepSeek Harness và Omnigent không công bố con số cụ thể. Vì vậy, hãy đo thay vì đoán. Trong cả 3 trường hợp, model chạy từ xa. Harness chỉ thực hiện việc giám sát process và thao tác với file, không chạy inference. Kích thước máy chủ thực sự phụ thuộc vào công việc agent thực hiện trên đó, chẳng hạn như build và test suite. Omnigent cần nhiều tài nguyên nhất, vì Python, Node.js, tmux và mọi vendor CLI bạn bật đều chạy trên cùng một máy.