- Giới thiệu trường hợp đội ngũ Hatchet đã phát triển nhanh giao diện người dùng trên terminal (TUI) bằng Claude Code
- Sử dụng stack Charm (Bubble Tea, Lip Gloss, Huh) để hiện thực mô hình phát triển dựa trên thành phần ở mức tương đương React và phong cách hiển thị nhất quán
- Vẫn dùng cùng API như web UI hiện có, nhưng nâng cao hiệu quả cho lập trình viên bằng giao diện tập trung vào văn bản, mật độ thông tin cao
- Claude Code chạy các phiên
tmux và tự động hóa kiểm thử, đóng vai trò lớn trong việc phát triển lặp lại và đảm bảo độ ổn định
- Hatchet TUI hoàn thành chỉ trong 2 ngày được đánh giá là một ví dụ cho thấy mức cải thiện năng suất thực tế từ phát triển dựa trên LLM
Động lực phát triển TUI
- Đội ngũ Hatchet muốn có một TUI tương tự k9s, và người dùng đánh giá nó nhanh hơn và trực quan hơn web UI
- Trong phản hồi của người dùng có ý kiến rằng “CLI và TUI cho hiệu năng tốt hơn nhiều”
- TUI cho phép trực quan hóa và thực thi workflow ngay trong cùng môi trường với mã nguồn, nên không cần chuyển qua lại giữa các tab
- Vì người dùng chính của Hatchet là các lập trình viên làm việc trong IDE, mục tiêu là mang đến trải nghiệm quản lý workflow ngay trong terminal
Stack công nghệ
- Sử dụng stack Charm tương ứng với stack frontend phổ biến (React, Tailwind, v.v.)
- Các thư viện chính: Bubble Tea, Lip Gloss, Huh
- Được đội ngũ Charm bảo trì, có tài liệu và ví dụ phong phú
- Dùng Lip Gloss và theme của Huh để áp dụng phong cách nhất quán cho toàn bộ TUI
- Cùng một theme cũng được tái sử dụng cho các lệnh Hatchet CLI để mang lại trải nghiệm người dùng thống nhất
- Việc tùy biến ngoài Bubble Tea có phần khó hơn, nhưng vẫn đơn giản hơn nhiều so với tự xây một engine render dựa trên React
Cách tiếp cận kiểm thử
- Claude Code trực tiếp chạy các công cụ trên terminal để thực hiện kiểm thử
- Dùng
tmux capture-pane để chụp view đã render và xác minh đầu ra có đúng hay không
- Cách này đặc biệt hiệu quả cho việc tự động hóa vòng kiểm thử đầu tiên, và vẫn có thể xác nhận render ổn định ngay cả khi số lượng view tăng lên
- Sau đó kết hợp kiểm thử thủ công và unit test để hình thành vòng lặp phát triển lặp lại ổn định
- Claude Code được tối ưu cho các tác vụ lặp lại trong môi trường ASCII, nên vòng phản hồi kiểm thử hội tụ rất nhanh
Xây dựng môi trường phát triển hiệu quả
- Claude Code nâng cao hiệu quả phát triển bằng cách tham chiếu phần triển khai frontend Hatchet hiện có
- Tận dụng cấu trúc component đơn giản dựa trên React và đặc tả OpenAPI để thiết lập ranh giới rõ ràng
- Có thể phát triển dựa trên đặc tả thông qua REST API client được tạo tự động
- Việc triển khai renderer dựa trên DAG là phần khó nhất, nhưng
- Tham khảo mermaid-ascii để triển khai thành công trình render đồ thị ASCII
- Dù chưa hoàn hảo, vẫn có được chức năng trực quan hóa DAG hoạt động được
Kết quả và bài học
- Tổng thời gian phát triển là khoảng 2 ngày, nhanh hơn và ổn định hơn nhiều so với lần refactor frontend trước đó
- Việc phát triển với Claude Code được đánh giá là trường hợp đầu tiên cho thấy mức tăng năng suất thực tế, không mơ hồ
- Trong tương lai, đội ngũ Hatchet dự định tiếp tục mở rộng dần phát triển dựa trên LLM cho các tính năng ngoài đường đi cốt lõi
- Bài học then chốt là tầm quan trọng của vòng phản hồi ngắn, tính mô-đun, thiết kế dựa trên đặc tả và kiểm thử liên tục
- Hatchet TUI hoàn chỉnh đã được công bố tại https://tui.hatchet.run và hiện đang thu thập phản hồi từ người dùng
1 bình luận
Ý kiến trên Hacker News
Có một sự mỉa mai là trang web nói về hiệu năng UI terminal, nhưng lại bị giật khi cuộn ngay trên chiếc Dell XPS hiệu năng cao của tôi vì các hiệu ứng phức tạp như CSS mask compositing hay cubic gradient
Theo Gemini, đây là kiểu “Scrim hoặc Easing Gradient”, dùng 16 điểm dừng màu để tạo hiệu ứng fade mượt, nhưng đổi lại là phải tính lại màu của hàng triệu pixel mỗi lần cuộn
Trên Firefox thì hầu hết các trang cuộn mượt, nên tôi khuyên nên thử cả trên laptop hiDPI dùng iGPU chứ không chỉ trên Mac
Nhân tiện, cũng có ảnh khi tắt gradient — liên kết
busybox ssl_clientvàgrepđể trích HTML rồi mở bằng FirefoxTôi thấy việc TUI cố trông giống GUI hơi buồn. Nó kém về khả năng truy cập, cấu trúc bị làm phẳng, nên người dùng không thể dùng ngoài cách đã được định sẵn. Trong khi đó GUI hiện đại gắn kết với OS về mặt cấu trúc nên linh hoạt hơn nhiều
So với trước đây, việc phát triển TUI giờ dễ hơn nhiều nhờ các framework như BubbleTea, Textualize và Ratatui.
Nhờ LLM mà giờ có thể tạo nhanh những công cụ như thế, và tôi đang bảo trì thư viện biểu đồ TUI tên là NTCharts
Nhờ khả năng hiểu không gian của Gemini, tôi đã sửa được bug, và hiện đang làm một trình xem hội thoại LLM cục bộ bằng BubbleTea
Liên kết liên quan: NTCharts issue, dự án thinkt
Tôi không hiểu nổi sự ám ảnh với TUI trong các ứng dụng LLM. Nhìn Copilot trong VS2026 thì GUI hiển thị được nhiều thông tin hơn hẳn trong thời gian ngắn. Có thể bấm vào diff theo thời gian thực để kiểm tra nên hiệu quả hơn
Trong thời đại LLM đang ngốn tài nguyên tính toán, nó lại vô tình tạo động lực để làm ra những công cụ dùng stack nhẹ hơn.
Viết bằng C giúp tăng hiệu năng CPU lên hàng nghìn lần và giảm RAM xuống một nửa. TUI là một ví dụ hay cho kiểu hiệu quả đó
Tôi vẫn nghĩ Midnight Commander (mc) là một trong những TUI tốt nhất. Nó cung cấp gần như đầy đủ tính năng của bản GUI (Double Commander) mà vẫn có thể chạy từ xa.
Hiện tôi đang làm skin mới và hy vọng nó sẽ được đưa vào bản phát hành kế tiếp
Gemini đã tạo cho tôi một TUI cho dự án scraper DHT — ảnh
Bản đầu tiên cần chỉnh vì vấn đề với ký tự CJK, nhưng nhìn chung rất ấn tượng. Nhờ vậy tôi có thể tập trung vào thuật toán
Tôi không thấy rõ TUI tốt hơn web form hay GUI ở điểm nào. Nhưng khả năng ghép pipeline CLI thì tôi thấy cực kỳ mạnh
Tôi thích Claude Code, nhưng cảm thấy cấu trúc TUI dựa trên React thật sự rất kém hiệu quả
Tôi đã làm frontend prompt của riêng mình dựa trên Cursor CLI — ảnh
Tôi tích hợp git, diff và lịch sử chat, đồng thời có thể truy cập dễ dàng từ điện thoại qua Tailscale.
Nó hiểu các quy tắc của tôi và có thể grep cả dự án, nên khả năng sử dụng rất cao