You are currently viewing Halo, overlay AI nghe và nhìn màn hình để gợi ý câu trả lời ngay lúc nói chuyện

Halo, overlay AI nghe và nhìn màn hình để gợi ý câu trả lời ngay lúc nói chuyện

Có một repo Python tên stormydayy/halo-overlay đang được chú ý: 514 sao, tạo và cập nhật cùng ngày 25/10/2026. Nó là một cửa sổ nhỏ nổi trên màn hình, nghe được cuộc hội thoại, nhìn được màn hình bạn đang chia sẻ, rồi đưa ra một dòng gợi ý ngắn: nên nói gì, nên làm gì tiếp theo. Đây là lớp phụ trợ chạy song song với cuộc nói chuyện, không đợi bạn gõ như chatbot.

Nó làm gì, cụ thể

Halo bắt hai nguồn dữ liệu cùng lúc. Thứ nhất là âm thanh, tách thành hai kênh riêng: kênh hệ thống (tiếng người bên kia, gắn nhãn “Them”) và micro của bạn (gắn nhãn “You”). Thứ hai là màn hình, chụp liên tục nhưng có bộ phát hiện thay đổi: nó so một bản grayscale 96×54 mỗi N mili giây, chỉ giữ lại keyframe khi màn hình thay đổi rồi ổn định trở lại. Không có ảnh trùng, không có ảnh chụp giữa lúc animation đang chạy.

Từ hai nguồn đó, Halo dựng một transcript kèm storyboard ảnh, gửi cho model, nhận về gợi ý. Có chế độ auto-answer: khi phát hiện câu hỏi trong lời người bên kia, nó tự soạn sẵn câu trả lời mà không cần bạn bấm gì.

Bản 2.1 thêm tính năng Rewind. Lỡ lơ đễnh mất mạch? Bấm Ctrl+Shift+Enter, Halo lấy transcript từ 30 giây đến 5 phút gần nhất cộng vài keyframe màn hình, trả lời đúng ba dòng: chuyện gì đã xảy ra (2 đến 3 bullet), họ đang cần gì ở bạn, và câu nên nói. Bạn cũng pin được keyframe trong panel Rewind để nó gửi kèm câu hỏi kế tiếp.

Vì sao nó hot

Con số 514 sao cho một repo mới tinh, một ngày tuổi, nói lên khá nhiều. Nhu cầu “trợ lý realtime cho phỏng vấn và họp” có thật, và repo gốc mà nó dựa trên ý tưởng (sohzm/cheating-daddy) đã chứng minh điều đó. Nhưng Halo định vị khác: nó là bản viết lại từ đầu, không bundler, không thư viện vendored.

Điểm khác biệt lớn nhất nằm ở kiến trúc model. Bản gốc có bốn code path riêng cho Gemini Live, Groq, OpenAI và local. Halo gộp thành một client OpenAI-compatible duy nhất: Gemini, Groq, OpenAI, OpenRouter, Ollama, LM Studio, hay server tự dựng đều chạy chung một đường. Đổi provider chỉ là đổi base URL và tên model. Field model là free text, bạn gõ đúng tên theo docs hiện hành của provider là được.

Phần speech cũng vậy: bỏ WebSocket stream tới Gemini Live, chuyển sang VAD cộng API Whisper-compatible (Groq, OpenAI, hoặc whisper.cpp / faster-whisper chạy local). Nghĩa là bạn có thể chạy toàn bộ pipeline mà không gửi gì ra ngoài, nếu chịu khó dựng Ollama với model vision (ví dụ llama3.2-vision) và một whisper server expose endpoint /v1/audio/transcriptions. Địa chỉ local như localhost, 192.168.*, 10.* không cần API key.

Chênh lệch code cũng đáng nói: bản gốc khoảng 11.700 dòng cộng thư viện vendored, Halo khoảng 3.100 dòng, 0 runtime dependency, không có bước build. Có 27 unit test chạy bằng npm test. Bản gốc không có test nào.

Cài và chạy thử

Yêu cầu Node.js 20 trở lên và Python 3.11+. Lệnh giữ nguyên như README:

git clone https://github.com/stormydayy/halo-overlay
cd halo-overlay
npm install
npm start

Sau khi chạy, vào Settings, chọn Model, chọn provider và dán key (Gemini, Groq, OpenAI…), bấm “Test connection”. Sang tab Speech recognition, Groq Whisper là lựa chọn khởi đầu hợp lý vì có free tier và dùng lại được key Groq. Về màn hình chính, chọn profile, thêm context (resume, job description, notes) rồi bấm Start session.

Shortcut mặc định, đổi được trong Settings:

  • Answer now: Ctrl+Enter (Windows/Linux), ⌘+Enter (macOS)
  • Rewind: Ctrl+Shift+Enter / ⌘+Shift+Enter
  • Ẩn hiện cửa sổ: Ctrl+\ / ⌘+\
  • Click-through: Ctrl+M / ⌘+M
  • Di chuyển cửa sổ: Ctrl+arrows / ⌥+arrows
  • Xoá dữ liệu: Ctrl+Shift+E / ⌘+Shift+E

Về audio capture, Windows lấy loopback qua getDisplayMedia, macOS dùng helper SystemAudioDump (lấy từ project gốc), Linux lấy loopback nếu môi trường hỗ trợ, không thì chỉ micro. Nếu không có system audio, Halo báo và chạy tiếp bằng micro cộng màn hình. Trên macOS nhớ cấp quyền Screen Recording và Microphone trong System Settings.

Ai nên dùng, dùng thế nào

Các profile có sẵn gợi ý đúng đối tượng: interview, meeting, sales, negotiation, presentation, study. Người chuẩn bị phỏng vấn là nhóm rõ nhất, vì bạn nạp resume và job description vào context, rồi khi interviewer hỏi, overlay đưa ra hướng trả lời. Người làm sales hoặc đàm phán có thể dùng để không quên con số và điều khoản vừa nêu. Sinh viên học qua lecture recording cũng dùng được, nhưng tính năng Rewind hữu ích hơn cả.

Một tính năng ít được nhắc nhưng thực dụng: mỗi session được lưu lại (transcript cộng suggestions), nút Recap nhờ AI viết summary kèm action items, export ra Markdown được. Với người họp nhiều, đây gần như là notes tự động. Screen recording sang .webm là tuỳ chọn, mặc định tắt.

So với lựa chọn khác

Đối thủ trực tiếp là sohzm/cheating-daddy, chính là nguồn cảm hứng. Bảng so sánh trong README khá thẳng: Halo ít code hơn, không vendor thư viện, có test, và quan trọng là bảo mật Electron làm tử tế hơn. Bản gốc bật nodeIntegration: true và không isolation. Halo bật contextIsolation, sandbox, CSP chặt, validate mọi lệnh IPC, và API key được mã hoá bằng OS (safeStorage: DPAPI / Keychain / libsecret), không bao giờ gửi lên UI. Nếu bạn định chạy công cụ kiểu này trên máy có dữ liệu công việc thật, khoản này không phải chi tiết nhỏ.

Ưu, nhược, và mấy điều cần cân nhắc

Ưu điểm rõ: một client OpenAI-compatible cho mọi provider, đường local hoàn chỉnh (Ollama cộng whisper server), codebase nhỏ dễ đọc (khoảng 3.100 dòng), không dependency runtime, có test. Bộ phát hiện thay đổi màn hình là ý hay, tiết kiệm token và giảm nhiễu cho model so với chụp theo timer.

Hạn chế thì cũng thật. Repo mới một ngày, 514 sao nhưng chưa có lịch sử issue hay PR để đánh giá độ ổn định. README tự nhận tên model mặc định “go out of date fast”, bạn phải tự kiểm tra docs provider. Phần audio trên Linux phụ thuộc môi trường, không phải lúc nào cũng có loopback. Python 3.11+ là yêu cầu thêm bên cạnh Node, hơi phiền nếu bạn chỉ muốn một app Electron thuần.

License là GPL-3.0. Dùng cá nhân thì thoải mái, nhưng nếu định nhúng vào sản phẩm thương mại đóng gói thì phải đọc kỹ, GPL lan sang. Và điều quan trọng nhất, README có disclaimer rõ ràng: nhiều nơi cấm dùng trợ giúp ngoài khi phỏng vấn, thi cử, và luật ghi âm hội thoại khác nhau theo quốc gia. Công cụ này không miễn trừ trách nhiệm cho bạn, nó chỉ là một cái prompter thông minh hơn.

Nếu bạn tò mò về cách viết một Electron app không bundler, không dependency, với IPC validate từng lệnh, thì đọc source cũng đáng. 3.100 dòng là mức một buổi tối đọc hết. Còn nếu chỉ muốn thử, cài xong, nạp một cái key Groq, bật Rewind trong một cuộc họp dài, bạn sẽ biết ngay nó có hợp với mình không. Repo ở đây: stormydayy/halo-overlay.

Chia sẻ bài này

TelegramXFacebookZalo
Đăng ngày 28/10/2026
Giang Na
Về tác giả: Giang Na
Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.

Giang Na

Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.