Hướng dẫn cài đặt và sử dụng OpenHands: AI agent tự động hóa coding trên Linux

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

Việc ngồi fix hàng chục lỗi vặt sau khi refactor code, hay phải tự tay gõ đống boilerplate cho project mới, là chuyện khiến không ít người làm kỹ thuật chán nản. Mình đã từng mất một buổi chiều để debug một lỗi logic ngớ ngẩn – thứ lẽ ra xử lý được trong mười phút. Đó là lúc mình quyết định thử OpenHands (tên cũ: OpenDevin), một AI agent mã nguồn mở có thể tự thực thi tác vụ lập trình như một kỹ sư thực thụ.

Khác với ChatGPT – chỉ nhắn tin qua lại – OpenHands trực tiếp gõ lệnh terminal, đọc file, viết code và chạy test trong sandbox riêng. Bài này mình sẽ đi thẳng vào cách dựng nó trên Linux.

Khởi động trong 5 phút

Cách nhanh nhất để chạy OpenHands là dùng Docker. Không cần cài thêm Python, không lo conflict thư viện. Quan trọng hơn: sandbox này cô lập AI khỏi filesystem chính của máy – giảm rủi ro xóa nhầm file quan trọng.

Bước 1: Kiểm tra Docker

Trên Ubuntu/Debian, cài nhanh bằng:

sudo apt update && sudo apt install docker.io -y
sudo usermod -aG docker $USER

Log out rồi log in lại để quyền Docker có hiệu lực.

Bước 2: Kéo image và chạy

Lệnh dưới đây kéo image mới nhất và mở giao diện web trên cổng 3000:

docker run -it \
    --pull=always \
    -e SANDBOX_USER_ID=$(id -u) \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v ~/.openhands-state:/.openhands-state \
    -p 3000:3000 \
    --add-host host.docker.internal:host-gateway \
    --name openhands-app \
    ghcr.io/all-hands-ai/openhands:0.9

Terminal hiện Server started at http://localhost:3000 là xong. Mở trình duyệt lên là dùng được ngay.

Tại sao không phải chatbot thông thường?

Vấn đề cốt lõi của các chatbot AI là thiếu feedback loop. Bạn copy code vào, AI sửa, bạn copy ngược lại, chạy lỗi, lại lặp từ đầu. Mỗi vòng tốn 2–3 phút – nhân lên với chục lỗi là nửa ngày biến mất.

OpenHands giải quyết điều này qua cơ chế Event Stream: AI quan sát kết quả thực thi và tự điều chỉnh. Thử giao task cụ thể: “Cài FastAPI và viết endpoint CRUD đơn giản”. Nó sẽ:

  1. Mở terminal trong Docker sandbox.
  2. Chạy pip install fastapi.
  3. Tự tạo file main.py.
  4. Khởi động server, đọc log nếu có lỗi syntax.
  5. Tự sửa cho đến khi chạy được, rồi mới báo lại.

Mình từng thử quăng một repo Python hai năm không động đến: “Nâng cấp dependency và fix lỗi build”. Nó mò mẫm trong 15 phút – cài lại môi trường, vá lỗi version thư viện, pass sạch unit test. Cùng task đó, trước đây mình mất khoảng 3 tiếng vì phải Google từng lỗi một.

Chọn LLM phù hợp

Sau khi vào localhost:3000, việc đầu tiên là cấu hình model. Dưới đây là những gì mình đã thử thực tế:

1. Claude Sonnet 4 (Khuyên dùng)

Lựa chọn mình ưu tiên nhất cho coding agent hiện tại. Khả năng theo dõi ngữ cảnh dài và tuân thủ chỉ dẫn nhiều bước của nó ổn định hơn hẳn – đặc biệt khi task cần sửa nhiều file cùng lúc. Cần API Key từ Anthropic.

2. GPT-4o

Phản hồi nhanh, nhưng với task viết code dài hơn 200 dòng thì hay bị cắt giữa chừng. Phù hợp cho task ngắn hoặc khi cần tốc độ là ưu tiên hàng đầu.

3. Chạy local với Ollama

Không muốn gửi code lên cloud? Ollama là lựa chọn hợp lý. Cần lưu ý: model nhỏ như Llama 3 8B thường “gục” ở bước thứ 4–5 của chuỗi hành động phức tạp. Nếu đi hướng local, ưu tiên DeepSeek-Coder-V2 hoặc Qwen2.5-Coder 32B trở lên.

Kết nối Ollama đang chạy trên máy host bằng cách đổi URL trong cài đặt OpenHands:

http://host.docker.internal:11434

Mẹo dùng hiệu quả hơn

Mount thư mục dự án

Để AI sửa trực tiếp vào source code, thêm tham số -v khi khởi động:

-v /path/to/your/project:/opt/workspace_base

Mọi thay đổi sẽ đồng bộ thẳng vào thư mục thật. Nên commit trước khi giao task – lỡ AI sửa sai thì git checkout một cái là về nguyên trạng.

Task nhỏ, kết quả tốt hơn

Tránh kiểu ra lệnh: “Hãy viết cho tôi một sàn thương mại điện tử”. Chia nhỏ ra: “Viết module xác thực JWT”, rồi “Tạo schema database cho sản phẩm”. Task có phạm vi dưới 200 dòng code thường cho kết quả sạch hơn nhiều so với task mơ hồ to lớn.

Đặt giới hạn Max Iterations

OpenHands chạy theo vòng lặp. Gặp lỗi khó, nó có thể lặp 50–100 vòng mà chưa xong – và mỗi vòng tốn token. Mình luôn đặt Max Iterations = 20–30. Đủ cho hầu hết task, và tránh được hóa đơn API đột biến cuối tháng.

Thực tế dùng ra sao?

Câu hỏi hay gặp nhất: liệu OpenHands có thay thế được developer không? Không. Nhưng đó cũng không phải điểm mạnh của nó.

Hãy nghĩ đến OpenHands như một Junior Developer chăm chỉ, không ngại làm việc lặp đi lặp lại. Fix bug vặt, viết unit test, migrate data, scaffold boilerplate – những việc tốn 20–30% thời gian nhưng không đòi hỏi nhiều tư duy. Mình đang dùng nó cho các script tự động hóa trên production và kết quả khá ổn định.

Phần AI vẫn chưa thay được là System Design và tối ưu hiệu năng ở mức sâu – những quyết định cần hiểu business context. Nhưng khi nó lo được mấy việc tay chân kia, mình có thêm thời gian tập trung vào thiết kế tính năng mới.

Nếu đang dùng Linux và chưa thử qua AI agent nào, OpenHands là điểm khởi đầu tốt. Setup ban đầu mất khoảng 10–15 phút. Sau một tuần quen với luồng làm việc, bạn sẽ tự biết nên giao việc gì cho nó và việc gì nên tự làm.

Share: