Dùng Claude Code định vị tiếng bíp bí ẩn trong nhà
Simon Willison dùng Claude Code để xây dựng Beep Locator, hệ thống định vị âm thanh bằng nhiều thiết bị kết nối WebSocket, giúp tìm ra chiếc máy dò khí CO hết pin trong đống hộp với sai số khoảng 40cm. Câu chuyện cho thấy cách tác nhân lập trình có thể được trao thêm giác quan để tự giải quyết vấn đề thực tế.

Khi một tiếng bíp lạ vang lên từ căn phòng chứa đầy hộp chưa dỡ, Simon Willison không chọn cách lục từng thùng. Ông đã nhờ Claude Code xây dựng Beep Locator — một hệ thống gồm máy chủ Python và nhiều thiết bị đóng vai trò "tai nghe" — để tam giác hóa (triangulation) nguồn âm thanh.
Kết quả: hệ thống xác định vị trí tiếng bíp với sai số khoảng 40cm, đủ để ông đào đúng đống hộp và tìm ra một chiếc máy dò khí carbon monoxide (CO) cũ đang cạn pin. Đáng chú ý hơn là quy trình: phần lớn hệ thống do trợ lý AI viết, còn con người chủ yếu trò chuyện, đặt yêu cầu và đánh giá kết quả.
Giao diện Beep Locator với bản đồ các thiết bị và âm thanh đã định vị
Beep Locator hoạt động như thế nào?
Kiến trúc khá gọn: một máy chủ ứng dụng web Python đảm nhận phần lớn công việc, còn các thiết bị nghe kết nối tới máy chủ qua WebSocket.
- Máy chủ hiển thị giao diện chính, kèm mã QR hoặc URL để thiết bị khác tham gia làm listener (thiết bị lắng nghe).
- Mỗi listener xin quyền truy cập micro qua trình duyệt, ghi liên tục một bộ đệm 60 giây âm thanh gần nhất.
- Một thuật toán phát hiện tiếng bíp đơn giản (trong
detector.js) dùng Fast Fourier Transform (biến đổi Fourier nhanh, chuyển tín hiệu âm thanh sang phổ tần số) kết hợp bộ lọc thông cao (high-pass filter) để nhận diện các tiếng bíp tiềm năng, rồi gửi sự kiện về máy chủ. - Khi có báo cáo bíp, máy chủ chọn thiết bị có độ trễ khứ hồi (round-trip time) thấp nhất để phát một tiếng "chirp" ngắn, sau đó yêu cầu mọi listener tải lên đoạn ghi âm từ khoảng 0,6 giây trước tiếng bíp đến 0,8 giây sau tiếng chirp. Chính tiếng chirp này là mốc để căn chỉnh (align) các bản ghi với nhau — bước then chốt để định vị chính xác.
Trong quá trình dùng thử, Willison điều khiển tới 5 thiết bị: hai iPad, một điện thoại, một MacBook Pro và một Surface Ultra.
Từ BeepBeep 2007 đến "tai" cho Claude
Khi bắt tay vào bài toán, Claude nhanh chóng tìm ra bài báo BeepBeep: A High-Accuracy Acoustic-Based System for Ranging and Localization Using COTS Devices (2007) của Chunyi Peng, Guobin Shen, Yongguang Zhang, Yanlin Li và Kun Tan. Hệ thống này định vị âm thanh chỉ bằng phần mềm trên phần cứng phổ thông — loa, micro và một kênh liên lạc giữa các thiết bị — đạt độ chính xác cao nhờ ba kỹ thuật: cảm biến hai chiều (two-way sensing), tự ghi âm (self-recording) và đếm mẫu (sample counting).
Ý tưởng đó khớp gần như hoàn hảo với nhu cầu, và Beep Locator ra đời dựa trên nền tảng ấy.
Những tính năng được bổ sung dần
Willison khởi động dự án trên Claude Code Cloud qua iPhone, dùng chế độ suy luận sâu. Ông để Claude viết trước một tệp problem.md mô tả bài toán, sau đó yêu cầu xây dựng hệ thống kèm cơ chế đẩy mã mới xuống listener để chạy tự động — nhờ vậy ông có thể bày thiết bị khắp phòng rồi để AI tiếp tục thử nghiệm.
Cơ chế này còn giải quyết một rắc rối thực tế: trên nhiều thiết bị, trang web dùng micro phải xin lại quyền mỗi lần tải lại. Hot-swap module qua WebSocket giúp triển khai mã mới mà không phải chạm tay vào từng máy.
Sau đó, ông liên tục yêu cầu thêm tính năng:
- Chế độ thô (Rough mode): kéo thả biểu tượng thiết bị trên bản đồ để đặt vị trí gần đúng, hệ thống sẽ tinh chỉnh dựa trên âm thanh.
- Chế độ vỗ tay: mỗi tiếng vỗ tay hiện trên bản đồ dưới dạng hình thoi khác với dấu X của tiếng bíp, giúp kiểm chứng khả năng định vị.
- Mốc thời gian HH:MM:SS trên từng biểu tượng, để dễ đối chiếu âm thanh với thực tế.
- Phát lại âm thanh: bấm nút phát để nghe lại đoạn ghi từ từng listener theo thứ tự, tạm tắt micro trong lúc phát.
- Nút "This is the mystery beep": đánh dấu tiếng bíp cần tìm, để hệ thống nhận diện các lần xuất hiện sau và củng cố vị trí.
- Tái bố trí thiết bị quanh điểm nghi vấn để tăng độ chính xác, và gợi ý vị trí nên đặt thêm listener dựa trên dữ liệu đã thu.
Góc nhìn
Điểm đáng bàn không nằm ở chiếc máy dò CO, mà ở cách tác nhân lập trình (coding agent) được "mở rộng giác quan". Claude không có đầu vào âm thanh gốc, nhưng nó viết được JavaScript và Python để phân tích âm thanh thu từ micro, tự dựng máy chủ WebSocket, tự cấu hình lại các listener và tự truy vấn nhật ký âm thanh. Willison gọi đây là việc "trao cho Claude đôi tai".
Với lập trình viên và kỹ sư Việt Nam, hướng tiếp cận này gợi ý một mô hình làm việc: thay vì chỉ nhờ AI viết code rồi tự kiểm thử thủ công, có thể xây dựng các kênh để AI tự thu thập phản hồi từ môi trường thật — log, cảm biến, ảnh chụp màn hình — rồi lặp lại. Chi phí thấp vì mọi thứ chạy trên phần cứng phổ thông và trình duyệt, không cần thiết bị chuyên dụng. Bài học cần lưu ý là vẫn phải kiểm soát quyền thực thi mã từ xa và quyền truy cập micro một cách cẩn trọng, nhất là khi hệ thống chạy ngoài môi trường thử nghiệm.
Nguồn: simonwillison.net · Quy trình biên tập
Bài viết liên quan

Phần cứng
Tích hợp Claude Code với SPICE và Oscilloscope: Xác minh phần cứng thông minh
17 tháng 4, 2026

Phát hiện kỹ thuật 'in dấu vân tay âm thanh' trên website Alibaba khi gỡ lỗi lỗi ngắt kết nối BLE
28 tháng 8, 2026

Công nghệ
Tôi đã dịch ngược một hiệu ứng âm thanh không gian thương mại như thế nào
11 tháng 10, 2026