Điều bạn muốn cuối cùng cũng đến! Ralph TUI, trực quan hóa Ralph Loop
Điều bạn muốn cuối cùng cũng đến! Ralph TUI, trực quan hóa Ralph Loop
Tôi đã viết một bài hướng dẫn về ralph-loop trước đây, và nhiều bạn bè sau khi chạy thử đều có phản hồi khá giống nhau: Rất tuyệt, Claude Code cuối cùng cũng có thể chạy trong thời gian dài. Nhưng đôi khi bạn thấy nó dường như không hề nhúc nhích, trong lòng không khỏi băn khoăn: "Rốt cuộc nó đang tiến triển hay chỉ giậm chân tại chỗ?"
Đó là lý do tôi mày mò ralph-tui gần đây.

ralph-tui không bắt buộc phải gắn với Claude Code, nó kế thừa và phát triển tinh hoa của ralph loop, đồng thời trực quan hóa việc thực hiện nhiệm vụ và quy trình, giảm đáng kể ngưỡng để các mô hình lớn làm việc trong thời gian dài. Bạn hoàn toàn có thể kết nối với các agent khác, các mô hình khác, hàng nội địa, giá rẻ, loại mà bạn có thể chạy lâu dài. Với ralph-tui, đối với những người bình thường như chúng ta, ý nghĩa của nó không khác gì việc chuyển từ số sàn sang số tự động có cả ga tự động.
Rốt cuộc nó là cái gì?
Bạn có thể hiểu ralph-tui như một "trình biên soạn vòng lặp của AI coding agent", chỉ là nó không chỉ dừng lại ở việc "có thể chạy", mà còn quan tâm hơn đến việc "bạn có thể nhìn thấy, có thể kiểm soát, có thể khôi phục".
Cách thức hoạt động cơ bản của nó rất đơn giản:
- Bạn đưa cho nó một loạt nhiệm vụ (có thể từ PRD, hoặc từ hệ thống nhiệm vụ khác)
- Nó chọn nhiệm vụ có độ ưu tiên cao nhất
- Ghép prompt
- Khởi động agent để thực hiện
- Đánh giá xem nhiệm vụ này có được coi là hoàn thành hay không
- Ghi trạng thái
- Tiếp tục vòng tiếp theo
Điểm quan trọng là: Bạn có thể thấy tất cả những điều này trong terminal, và có thể dừng hoặc tiếp quản bất cứ lúc nào. Trang web chính thức của nó cũng mô tả định vị rất rõ ràng: một agent loop orchestrator với TUI tương tác, đồng thời hỗ trợ TUI / headless / remote.
Tại sao tôi nói nó phù hợp hơn để "chạy lâu dài"?
Vấn đề lớn nhất khi chạy loop bằng script không phải là không chạy được, mà là bạn không biết nó đã chạy đến đâu.
Bạn thấy log chạy rất nhanh, quạt cũng quay rất vui vẻ, nhưng bạn không chắc chắn:
- Nó có đang lặp lại việc sửa một bug không?
- Nó có đang liên tục sửa cùng một đoạn code rồi lại sửa lại không?
- Nó đã hoàn thành rồi nhưng chưa thoát?
- Nó có bị kẹt ở một bài test nào đó và lặp vô tận không?

Giải pháp của ralph-tui rất "kỹ thuật":
- Có khái niệm session, trạng thái sẽ được lưu vào ổ đĩa (.ralph-tui/session.json)
- Có thể khôi phục sau khi bị sập (crash recovery)
- Có cơ chế khóa, tránh việc bạn mở nhiều instance làm hỏng thư mục
- Thậm chí có thể chạy headless trên CI, hoặc remote mở listener ở xa, TUI cục bộ kết nối đến
Một câu: Nó giống như "bạn đang quản lý một công nhân biết viết code", hơn là "bạn đang theo dõi một script bị điên".
Cách cài đặt
ralph-tui là một hệ sinh thái Bun/TypeScript, việc cài đặt khá dễ dàng. Trang web chính thức cũng có trang cài đặt.
Trước tiên, hãy xác nhận rằng máy của bạn có bun:
bun --versionSau đó cài đặt ralph-tui (Tôi sẽ đưa ra một cách cài đặt điển hình ở đây, hãy tham khảo trang cài đặt chính thức để biết chi tiết):
bun add -g ralph-tuiSau khi cài đặt xong, hãy xác nhận:
ralph-tui --helpNếu bạn là người dùng Node, không muốn đụng đến bun, cũng được:
npm i -g ralph-tui
Đừng làm việc lớn vội, hãy chạy một vòng lặp nhỏ nhất
Tôi khuyên bạn nên làm một việc khi sử dụng lần đầu tiên: Hãy để nó chạy thông một nhiệm vụ nhỏ có thể nghiệm thu.
Khởi tạo
Mở một thư mục bất kỳ:
mkdir ralph-tui-demo && cd ralph-tui-demo ralph-tui setupThao tác này sẽ vào quy trình hướng dẫn tương tác, nói trắng ra là "cài đặt ralph-tui vào kho lưu trữ của bạn", nó sẽ:- Tự động dò tìm các agents đã cài đặt trên máy của bạn (ví dụ: Claude Code, OpenCode, v.v.)
- Tạo một file cấu hình trong dự án: .ralph-tui/config.toml
- Cài đặt sẵn các skills liên quan đến tạo PRD/chuyển đổi task (sau này bạn không cần tự mày mò nữa)
Tôi khuyên cá nhân: Lần đầu đừng lười biếng, nhất định phải chạy setup một lần.
Tạo PRD dự án
Sau khi chạy setup, bước tiếp theo mới là phần cốt lõi nhất trong hướng dẫn chính thức, cũng là phần thích hợp nhất để viết thành demo trên tài khoản công chúng: create-prd.
ralph-tui create-prd --chat lệnh này sẽ vào một quy trình đối thoại, nó sẽ hỏi bạn về mục tiêu nhu cầu, điều kiện biên, tiêu chuẩn nghiệm thu như một người quản lý sản phẩm. Sau khi hỏi xong, nó sẽ xuất ra hai thứ trực tiếp trong dự án (đây mới là trọng tâm):
- Một file markdown PRD: ./tasks/prd-feature.md
- Một file task có thể thực thi trực tiếp: ./prd.json
Đến bước này, bạn mới thực sự bước vào "vòng lặp tiêu chuẩn" của ralph-tui:
Nhu cầu (PRD) → Task (prd.json) → Thực thi (run)
Chạy (run)
Khi đã có prd.json, việc chạy trở nên đương nhiên:
ralph-tui run --prd ./prd.json Bạn sẽ thấy TUI khởi động, bắt đầu vòng lặp: chọn task → thực thi → đánh giá hoàn thành → viết trạng thái → kết thúc hoặc vòng tiếp theo.
Lần đầu chạy, tôi đặc biệt khuyên bạn nên thêm giới hạn lặp, trước tiên hãy nhốt nó vào lồng:
ralph-tui run --prd ./prd.json --iterations 5 Sau khi chạy xong, bạn hãy xem các thay đổi, chạy thử nghiệm, xem PRD và task có đáp ứng mong đợi hay không. Xác nhận rằng liên kết này thông suốt, sau đó mới mở iterations, sau đó mới lên headless/remote, đây mới là nhịp điệu đáng tin cậy.
Lúc này, về cơ bản bạn có thể xác nhận: Vòng lặp này thực sự đã chạy.
Chọn Model/Agent như thế nào? Phải nói thật về việc tiết kiệm tiền
Tôi biết nhiều người quan tâm nhất là: "Tôi có thể không dùng Claude Code không? Có thể dùng model rẻ hơn không?"
Câu trả lời là: Có thể.
Bản thân ralph-tui đã hỗ trợ bạn chỉ định agent và model (trong tài liệu run chính thức có ví dụ).
Ví dụ, sử dụng Claude Opus:
ralph-tui run --prd ./prd.json --agent claude --model opus Nhưng thành thật mà nói, cá nhân tôi sẽ không dùng Opus để làm những việc như "bổ sung test, sửa lint", quá đắt. Thói quen của tôi là phân tầng:
- Model rẻ: Chạy nhiều công việc lặp đi lặp lại (bổ sung test, bổ sung chú thích, sửa định dạng, thêm biên)
- Model đắt: Chỉ xuất hiện ở các nút quan trọng (điều chỉnh kiến trúc, bug khó, logic cốt lõi)
Nếu bạn là nhà phát triển bình thường, tư duy này càng quan trọng hơn. Bởi vì bạn không có ngân sách lớn của các công ty lớn, bạn phải làm cho chi phí có thể kiểm soát được thì mới có thể chạy lâu dài.
Muốn sảng khoái hơn một chút? Giao cả việc "viết PRD" cho agent
ralph-tui có một thiết kế mà tôi khá thích: Nó hỗ trợ skills (nói trắng ra là một bộ lệnh bổ trợ cho agent).
Cách cài đặt chính thức là sử dụng add-skill:
bunx add-skill subsy/ralph-tui --all Hoặc cài đặt cho agent được chỉ định, ví dụ: claude-code:
bunx add-skill subsy/ralph-tui -a claude-code -g -y Sau khi cài đặt, bạn có thể sử dụng slash command trong phiên agent:
/ralph-tui-prd /ralph-tui-create-json /ralph-tui-create-beads Điều này rất giống với việc bạn đã cài đặt plugin trong IDE, chỉ có điều plugin này dành cho agent sử dụng. Ý nghĩa của nó là giảm thời gian "chuyển nhu cầu thủ công", làm cho nhu cầu → task → thực thi giống một dây chuyền sản xuất hơn.
Khi nào nên dùng nó? Khi nào không nên dùng?
Tôi không thích cái kiểu kể chuyện "cái gì cũng có thể dùng AI giải quyết", nó dễ gây hiểu lầm. Công cụ chỉ là công cụ, chỉ có giá trị khi phù hợp với ngữ cảnh.
Các trường hợp phù hợp để sử dụng ralph-tui
Bạn có một đống công việc kiểu này:
- Bổ sung test (đặc biệt là các dự án cũ)
- Sửa lint / format
- Tái cấu trúc từng bước nhỏ (gom các đoạn code lặp lại)
- Thêm kiểu dữ liệu hàng loạt, bổ sung các trường hợp biên
- Chia nhỏ yêu cầu và đẩy dần theo hàng đợi công việc
Những công việc này có một điểm chung: Nhiều nhiệm vụ, độ lặp lại cao, có thể nghiệm thu, có thể lặp đi lặp lại để cải tiến.
Các trường hợp không nên cố gắng dùng ralph-tui
Bạn đang làm những việc như thế này:
- Tái cấu trúc lớn một lần, tiêu chuẩn nghiệm thu không rõ ràng
- Bản thân yêu cầu mơ hồ, dựa vào kiến thức ngầm trong đầu bạn
- Cần giao tiếp/xác nhận nhiều với các nhóm khác
- Cần bạn đưa ra quyết định về sản phẩm
Với những nhiệm vụ này, agent loop chỉ làm tăng thêm sự hỗn loạn.
Sự khác biệt giữa nó và ralph-loop (ralph-claude-code) là gì?
ralph-claude-code giống một "plugin lái xe tự động cho Claude Code" hơn: script kéo nó lên, chạy vòng lặp, kiểm tra thoát, giới hạn tốc độ, bộ ngắt mạch đều được lo liệu. Bạn muốn "nhanh", nó sẽ rất nhanh.
ralph-tui giống một "bảng điều khiển kỹ thuật cho agent loop" hơn: nó không gắn chặt với một mô hình cụ thể nào, cũng không gắn chặt với một hệ thống nhiệm vụ cụ thể nào. Nó muốn giải quyết các vấn đề kỹ thuật như "chạy dài hạn, có thể quan sát, có thể kiểm soát, có thể phục hồi, có thể điều khiển từ xa".
Vậy bạn hỏi tôi nên chọn cái nào?
- Bạn là người dùng Claude Code, muốn nhanh chóng cho nó chạy → ralph-claude-code
- Bạn muốn kết nối các mô hình khác nhau, muốn tiết kiệm tiền, muốn quản lý loop như một dịch vụ → ralph-tui
Cuối cùng: Đừng để nó biến kho code của bạn thành phòng thí nghiệm
Bản thân tôi có một vài nguyên tắc bất di bất dịch khi chạy agent loop, viết ra đây để bạn làm theo, khả năng gặp sự cố sẽ giảm đi rất nhiều:
- Chạy trên branch, đừng liều mạng trên main.
- Lần đầu chạy nhất định phải thêm --iterations, xác nhận từng bước nhỏ để đảm bảo nó không phát điên.
- Nhiệm vụ phải có thể nghiệm thu: Hoặc có thể chạy test, hoặc có thể chạy lint, hoặc có thể so sánh các file đầu ra.
- Bạn phải học cách dừng lại: Thấy nó bắt đầu chạy vòng vòng, tạm dừng thông minh hơn là tiếp tục đốt tiền.
- Mô hình rẻ tiền làm việc thô, mô hình đắt tiền làm việc quan trọng: Chi phí là do vận hành mà ra, không phải do cầu nguyện mà có.Địa chỉ dự án:https://github.com/subsy/ralph-tui





