Tôi đã nhờ Claude, ChatGPT và Gemini mỗi cái xây dựng cùng một tiện ích mở rộng Chrome, và chỉ có một cái thực sự hoạt động
Lập trình theo cảm giác hiện nay ở khắp mọi nơi. Tuy nhiên, khi hầu hết mọi người nghe thuật ngữ này, họ ngay lập tức mặc định nghĩ đến việc xây dựng các ứng dụng CRUD đầy đủ, các trang web bóng bẩy mà bạn có thể tạo nhanh chóng trong vài phút, hoặc các trang danh mục mà bằng cách nào đó tất cả đều có phần hero giống nhau (và nền gradient). Bây giờ, là người luôn có hàng chục ý tưởng lơ lửng trong đầu, tôi đã làm một phiên bản của "lập trình theo cảm giác" kể từ khi OpenAI ra mắt ChatGPT công khai.
Nói vậy, điều đầu tiên mà tôi mã hóa cảm xúc không phải là một trang web, trang đích hay một ứng dụng. Thay vào đó, đó là một tiện ích mở rộng Chrome. Tôi không nhớ rõ nó dự định làm gì, nhưng tôi nhớ là nó hoạt động. Vì vậy, tôi quyết định quay lại từ đầu và đưa ba mô hình ngôn ngữ lớn nhất (Claude, ChatGPT và Gemini) vào cùng một thử nghiệm: xây dựng cho tôi một tiện ích mở rộng Chrome từ đầu.
Tiện ích mở rộng Chrome là bài kiểm tra căng thẳng mã hóa dễ nhất
Nạp nó, nhấn nó, cầu nguyện
Khi bạn đang sử dụng một LLM để gợi ý mã cho một ứng dụng hoặc trang web đầy đủ chức năng, khả năng cao là cuối cùng bạn sẽ đến giai đoạn cần phải tìm hiểu về lưu trữ, triển khai, biến môi trường, cơ sở dữ liệu, và hàng tá các vấn đề hạ tầng khác. Công bằng mà nói, điều này phụ thuộc vào công cụ bạn đang sử dụng, vì các công cụ như Replit và Lovable cho phép bạn triển khai trực tiếp từ nền tảng của họ chỉ với một cú nhấp chuột. Nhưng ngay cả khi vậy, bạn vẫn đang thử nghiệm nền tảng cũng như mô hình đó. Ngược lại, các tiện ích mở rộng Chrome không yêu cầu bất cứ điều gì như vậy. Không có backend, lưu trữ, hay cơ sở dữ liệu mà bạn thực sự cần lo lắng. Bạn chỉ cần tải một thư mục vào phần Extensions trên trình duyệt của mình và nó hoặc là hoạt động hoặc không.
Tiện ích mở rộng Chrome chỉ bao gồm một vài tệp: một tệp manifest.json thông báo cho Chrome chính xác tiện ích mở rộng làm gì, và sau đó là các tệp HTML, JavaScript và CSS. Đây là ba ngôn ngữ mà các mô hình ngôn ngữ lớn (LLM) thường xử lý khá tốt. Vì tiện ích mở rộng Chrome được thiết kế để giải quyết một vấn đề cụ thể, chúng tạo một bài kiểm tra kích thước vừa phải hoàn hảo vì có một mục tiêu rõ ràng. Mỗi khi tôi thực hiện các bài kiểm tra kiểu này, tôi thích chọn một ý tưởng mà tôi thực sự định xây dựng cho chính mình. Điều đó không chỉ cung cấp cho tôi lý do hoàn hảo để thực sự bắt đầu xây dựng nó, mà còn tạo ra một bài kiểm tra cực kỳ công bằng.
Cảnh báo trước, phần mở rộng mà tôi đang nghĩ đến có thể nghe có vẻ... ngớ ngẩn và không theo chuẩn mực, nên hãy kiên nhẫn với tôi một chút. Tôi muốn một phần mở rộng cho phép tôi tìm kiếm trong danh sách người xem Instagram story của mình. Tôi không hiểu tại sao tính năng này chưa có sẵn, nhưng nếu bạn từng có hàng trăm (thậm chí hàng nghìn) người xem story trên Instagram và cố gắng tìm một người cụ thể trong danh sách đó, bạn sẽ hiểu nỗi khổ này. Về lý thuyết, tôi biết một phần mở rộng Chrome sẽ giải quyết được vấn đề, nên đó là thứ tôi quyết định thử với cả ba mô hình xem ai có thể thực hiện được. Tôi đã sử dụng một lời nhắc cực kỳ mơ hồ — tôi chỉ nói với mỗi mô hình những gì tôi muốn và không cung cấp quá nhiều chi tiết. Mục tiêu ở đây là xem mỗi mô hình có thể biến một ý tưởng đơn giản thành hiện thực đến đâu.
ChatGPT đã xây dựng một tiện ích mở rộng khá ổn
Nó hiệu quả, nhưng tôi nghĩ tôi sẽ không sử dụng nó
Trước khi tôi đi xa hơn, tôi đã không sử dụng Claude Code, Codex, hay Antigravity (IDE tác nhân của Google làm việc với Gemini) để xây dựng cái này. Thay vào đó, tôi đã sử dụng giao diện trò chuyện tiêu chuẩn cho từng một với các mô hình mới nhất của họ và các gói đăng ký trả phí trên toàn bộ. Tôi đã sử dụng GPT-5.5 Thinking cho lần này, và đặt mức nỗ lực tư duy là Mở rộng. Tôi bắt đầu với một lệnh nhắc cơ bản, và nó đã tạo ra một tiện ích mở rộng Manifest V3 chỉ trong chưa đầy hai phút. Tiện ích mở rộng này có tên là IG Story Viewer Search, và nó trực tiếp đưa cho tôi một tệp ZIP mà tôi có thể tải xuống và tải trực tiếp vào Chrome. Cho đến nay, mọi thứ đều ổn. Dựa trên mô tả, tiện ích mở rộng này dự kiến sẽ thêm một hộp tìm kiếm nổi khi danh sách người xem story Instagram của tôi được mở.
Ngay khi tôi tải tiện ích mở rộng, tôi thậm chí không thể nhấp vào nó! GPT-5.5 sau đó nhận ra rằng phiên bản đầu tiên nó tạo ra không có popup thanh công cụ, do đó việc nhấp vào tiện ích sẽ không có tác dụng gì. Nó đã sửa lỗi và cung cấp cho tôi một tệp ZIP mới. Khi thử nghiệm, tôi nhận ra tiện ích hoạt động, nhưng chỉ hoạt động với một vài người xem cùng lúc. LLM giải thích rằng điều này xảy ra vì Instagram "tải lười" danh sách người xem. Sau đó, GPT-5.5 đã xây dựng lại tiện ích một cách đúng đắn cho các danh sách người xem dài. Với phiên bản mới này, ChatGPT cho biết nó đã thêm một nút mới “Chỉ mục tất cả người xem” tự động cuộn danh sách người xem câu chuyện và xây dựng chỉ mục có thể tìm kiếm cục bộ. Khi thử nghiệm, tiện ích vẫn không hoạt động như tôi muốn, và chỉ hoạt động với những người xem hiển thị trên màn hình.
Sau 2 phút và 11 giây suy nghĩ, nó đã đưa cho tôi phiên bản 1.4, bổ sung hai chế độ mới để xử lý hành vi khó chịu của danh sách người xem trên Instagram. Chế độ đầu tiên là Tự động lập chỉ mục tất cả, được cho là sẽ tự động cuộn qua danh sách người xem và thu thập tên khi Instagram tải chúng. Nhưng GPT-5.5 cũng thừa nhận rằng Instagram có thể chặn hoặc gián đoạn việc cuộn tự động, vì vậy chế độ này có thể vẫn không đáng tin cậy. Chế độ thứ hai, quan trọng hơn, là Bắt đầu ghi hình trực tiếp. Thay vì cố gắng ép Instagram tải tất cả mọi người tự động, chế độ này quan sát danh sách người xem theo thời gian thực và ghi lại tên người dùng khi chúng xuất hiện trong khi tôi tự cuộn từ trên xuống dưới. Tôi đã thử điều này trên một câu chuyện có khoảng 400 lượt xem, và như GPT đã dự đoán, nút Tự động lập chỉ mục tất cả không hoạt động. Tôi đã thử nút ghi hình trực tiếp và sau đó từ từ cuộn qua toàn bộ danh sách người xem bằng chính mình. Điều này hoạt động tốt hơn, nhưng vẫn không phải là trải nghiệm "tìm ai đó ngay lập tức" liền mạch mà tôi đã tưởng tượng ban đầu.
Về cơ bản, điều này đã biến tiện ích mở rộng thành một công cụ ghi lại khi bạn cuộn. Tiện ích mở rộng có thể ghi nhớ người xem sau khi họ xuất hiện trên màn hình, nhưng nó vẫn không thể truy cập toàn bộ danh sách người xem trước khi Instagram tải nó. Thật kỳ lạ, nó liệt kê một số người dùng thành các mục riêng biệt, và tổng số lượt xem hiển thị là hơn 700 người. Một số người dùng hoạt động bình thường, trong khi những người khác bị chia thành các mục riêng biệt tùy theo tên của họ. Tất nhiên, việc tìm kiếm đã hoạt động lần này, nhưng rõ ràng nó vẫn là một nguyên mẫu thô, chứ không phải là một công cụ được hoàn thiện. Nó giải quyết vấn đề ban đầu theo nghĩa lỏng lẻo nhất: nếu tôi cuộn thủ công qua danh sách trước, tôi có thể tìm kiếm những người đã được ghi nhận. Nhưng việc lập chỉ mục rất lộn xộn, trùng lặp một số mục, đọc nhầm một số phần của tên hiển thị như các người dùng riêng biệt, và làm tăng số lượng người xem vượt quá số lượt xem câu chuyện thực tế.
Vì vậy, mặc dù GPT-5.5 cuối cùng cũng làm cho chức năng cốt lõi hoạt động, nhưng nó đã mất nhiều vòng gỡ lỗi và vẫn kết thúc với một cách giải quyết khá tạm bợ.
Bản năng đầu tiên của Gemini là đưa cho tôi một gợi ý
Tiện ích mở rộng chưa bao giờ hoạt động
Tôi đã là một fan hâm mộ lớn của các nỗ lực AI của Google từ lâu, nhưng tôi cứ liên tục có những lý do mới để thất vọng. Sau khi tôi hoàn tất việc thử nghiệm tiện ích mở rộng của GPT-5.5, đã đến lúc thử nghiệm Gemini, và những gì nó tạo ra thật sự là... xấu hổ. Ngay từ đầu, nó thậm chí không viết tiện ích mở rộng. Thay vào đó, nó đưa cho tôi một bản phân tích kiến trúc đầy đủ, một bài giảng về duyệt DOM, và... đợi đã... một prompt chính mà tôi được yêu cầu dán vào một IDE agentic. Gemini, tại sao tôi lại đến với bạn ngay từ đầu nếu tôi chỉ muốn dán một prompt vào công cụ khác?
Sau đó tôi hỏi liệu nó có thực sự tạo tiện ích mở rộng cho tôi hay không, và nó bắt tay vào làm. Không giống như GPT hay Claude, nó không đưa cho tôi một tệp ZIP mà tôi có thể giải nén và tải trực tiếp vào Chrome. Thay vào đó, nó đưa từng tệp riêng lẻ (manifest.json, content.js và styles.css) và bảo tôi tạo một thư mục và tự lưu chúng. Tôi đã làm như vậy, và tiện ích mở rộng hoàn toàn không hoạt động. Phiên bản của Gemini đã lấy một cách tiếp cận hoàn toàn khác so với phiên bản của GPT.
Thay vì một cửa sổ bật lên trên thanh công cụ, nó cố gắng chèn một thanh tìm kiếm trực tiếp vào giao diện người dùng của Instagram, ngay bên trong cửa sổ xem. Thanh tìm kiếm không bao giờ xuất hiện. Tôi đã nói với Gemini, và điều tiếp theo là sáu vòng sửa lỗi với độ tự tin ngày càng cao nhưng tất cả đều thất bại theo các cách khác nhau. Đến cuối vòng bốn, thanh tìm kiếm cuối cùng xuất hiện, nhưng không thể tìm thấy một người xem nào. Tôi đã trao đổi thêm một vài lần và cuối cùng chỉ bỏ cuộc trong cuộc trò chuyện.
Claude đã gửi ba tin nhắn để làm đúng
Cái thực sự đã được giao
Sau những phần mở rộng mà GPT và Gemini đã tạo ra, kỳ vọng của tôi đã giảm đáng kể. Bây giờ, phiên bản đầu tiên của Claude cũng không hoạt động. Sau đó, Claude đã xem xét cấu trúc DOM hiện tại của Instagram và xây dựng lại phần mở rộng bằng cách sử dụng các điểm cuối API nội bộ của Instagram (mà nó giải thích là đáng tin cậy hơn nhiều vì tôi đã đăng nhập vào tài khoản của mình). Và voilà, cuối cùng nó đã hoạt động.
Khi tôi nhấp vào biểu tượng, có một thanh tìm kiếm hoạt động và danh sách đầy đủ người xem được lấy trực tiếp từ API của Instagram. Vấn đề duy nhất là nó gom tất cả người xem câu chuyện của tôi vào một danh sách lớn thay vì cho phép tôi tìm kiếm người xem theo từng câu chuyện riêng lẻ. Tôi đã nói với Claude, và chỉ sau một tin nhắn nữa, nó đã cung cấp cho tôi phiên bản v3. Phiên bản này thêm một dải câu chuyện trực quan ở đầu với các hình thu nhỏ, dấu thời gian và số lượt xem. Tôi có thể nhấn vào bất kỳ câu chuyện nào để chỉ tải người xem của câu chuyện đó, sau đó tìm kiếm trong đó. Và thế là xong. Nó hoạt động, và không cần thêm bất kỳ tin nhắn theo dõi nào nữa. Cuối cùng!
Lần sau, tôi sẽ bắt đầu với Claude
Claude xây dựng phần mở rộng nhanh nhất, với ít tin nhắn cần thiết nhất, và đó là công cụ duy nhất có thể xây dựng được thứ gì đó hoàn toàn chức năng vào cuối cùng. ChatGPT xây dựng được thứ gì đó có thể sử dụng được, còn Gemini thì không.







