Đánh giá hay nhất về app hài của tôi đến từ một cái bàn có bốn người bạn và một vòng đồ uống.
Có người nói "kể cho tụi này một câu chuyện cười đi". Tôi làm đúng cái mà giờ ai cũng làm: cầm điện thoại lên, mở một thứ gì đó, và bắt đầu vuốt bằng ngón cái trong khi năm cuộc trò chuyện chờ tôi quay lại. Đó chính xác là hành vi mà tôi xây Knora để tránh, và phiên bản đầu tiên của tôi trượt đúng bài kiểm tra đó theo đúng cách đó.
Knora là một app iPhone miễn phí, có trên App Store. Bạn lắc điện thoại, một tiểu phẩm hài ngắn phát từ đầu đến cuối bằng một hoặc hai giọng, rồi không còn gì khác để nhìn. Không có feed để vuốt, không có thư viện để duyệt, không có tài khoản để tạo. Toàn bộ giao diện chỉ là một cử chỉ. App được viết cho 18+ vì ngôn từ và chủ đề, đó vừa là chủ đích của thứ này vừa là lý do nó không dành cho tất cả mọi người ở cái bàn.
Tôi đi đến đó bằng cách bỏ đi hai thứ, và không lần bỏ nào dễ chịu. Lần đầu xóa một định dạng mà người dùng đã hiểu. Lần thứ hai xóa gần hết cái app.
Thứ đầu tiên tôi bỏ là định dạng chuyện cười
Knora khởi đầu là một app chuyện cười knock-knock. Nó chạy được, theo nghĩa nó tạo ra chuyện cười knock-knock theo yêu cầu. Vấn đề là cái hình thức ấy chính là mức trần. Mọi chuyện cười knock-knock đều có cùng một bộ khung — phần mở, câu "ai đó?", phần lật — và một model có thể viết một câu hay trong bộ khung đó mà vẫn chỉ mãi tạo ra chuyện cười knock-knock. Cấu trúc quyết định app có thể vui đến đâu, và bao nhiêu công sức prompt cũng không thắng được cấu trúc.
Nên tôi xóa luôn cái định dạng. Nghĩa là xóa đi thứ người ta nhận ra, một việc kỳ lạ để làm với một sản phẩm vừa mới bắt đầu chạy được.
Thay vào đó là một tập hợp các phương pháp hài, không phải một template. Mỗi tiểu phẩm được dựng từ đúng một phương pháp, không bao giờ là món hổ lốn của vài phương pháp: một quy tắc vô lý có thật áp lên một thứ nhỏ xíu, hoặc một câu chuyện cứ thong thả rồi bất ngờ lật, hoặc một thứ mở đầu như lời khen mà hóa ra không phải. Có bốn cái đang chạy. Trình tạo chọn một cái cho mỗi tiểu phẩm; cái app không bao giờ chọn.
Chỉ thay đổi đó thôi đã cải thiện đầu ra nhiều hơn tất cả mọi lần sửa prompt trước đó. Đó là bài học khó chịu đầu tiên: có khi model chưa từng là nút thắt. Cái khung chứa mới là nút thắt.
Thứ thứ hai tôi bỏ là giao diện
Bỏ các màn hình khó hơn, vì màn hình là cách bạn cho người dùng thấy mình đã xây được một thứ gì đó.
Một app mở ra ở cái bàn là đang cạnh tranh với cái bàn. Mỗi phần tử tôi thêm vào — một danh sách giọng đọc có thể duyệt, một thư viện tiểu phẩm bạn thích, một cái profile nho nhỏ — đều làm cho cái điện thoại thú vị hơn những người đang cầm ly. Cái brief không còn là "làm một app hài hay" nữa mà thành "một cử chỉ, rồi cất điện thoại xuống."
Nên không có onboarding và không có đăng nhập. Bạn có thể chọn một giọng và một ngôn ngữ nếu thấy quan trọng, còn không thì một người kể ngẫu nhiên được chọn ngay lần mở đầu tiên và bạn không bao giờ mở màn hình cài đặt. Không có cá nhân hóa để chỉnh, nghĩa là không có cá nhân hóa để làm sai.
Một app hài chỉ có tiếng nói mà không có micro thì cần chút giải thích, nên nói thẳng: nó không bao giờ nghe. Không có gì để nói to và không có gì để gõ. Tiểu phẩm được viết trên server rồi gửi về điện thoại dưới dạng audio; cái điện thoại là một chiếc loa gắn kèm một cảm biến phát hiện cú lắc.
"Không có UI" thực sự buộc những gì
Bỏ giao diện trước hết là một quyết định về gu. Trong một thế giới mà mọi app đều tranh giành sự chú ý của bạn bằng thông báo và những màn hình dày đặc, tôi muốn một màn hình gần như đen, chỉ cần lắc là dùng được. Nhưng quyết định đó kéo theo một tập ràng buộc kỹ thuật, và đó mới là phần đáng viết ra.
Mỗi cú lắc phải tức thì. Nếu một tiểu phẩm mất sáu giây mới hiện ra, cái bàn đã đi tiếp và điện thoại đã úp xuống rồi. Nên tiểu phẩm được viết và thu giọng trước rồi được lấy từ một catalog. Có generation trực tiếp, nhưng chỉ là phương án dự phòng và bổ sung — thứ giữ cho catalog khỏi bị cũ, không phải con đường mà người dùng phải chờ.
Không duyệt nghĩa là không chọn. Không có danh sách để chọn, app không gửi style lẫn lựa chọn model. Backend bốc một phương pháp, viết vài bản nháp, và giữ bản hay nhất trước khi tạo bất kỳ audio nào. Việc phán xét chuyển về server vì trên màn hình không có chỗ nào để đặt nó.
Một tiểu phẩm bị giới hạn khoảng bảy mươi lăm giây. Đó không phải giới hạn kỹ thuật; đó là ngân sách cho độ dài một cái bàn. Đủ dài để kể một câu chuyện, đủ ngắn để không ai ở cái bàn phải chờ qua phút thứ ba của một thứ không chạy.
Client chỉ 2.5 MB. Gần như không có gì trong app, vì gần như không nên có gì trong app.
Người viết có thể thay. Production chạy Gemini 3.8 Flash, với một model khác làm phần kiểm duyệt và chọn best-of-N. Đổi người viết chỉ là đổi config và không cần release app — điều này quan trọng khi model bạn dùng bị thay mỗi vài tháng.
Bạn không thể tự động hóa gu thẩm mỹ
Thứ hữu ích nhất tôi học được là về đánh giá, và nó còn đúng ở phạm vi rộng hơn nhiều, vượt xa hài.
Bốn lần khác nhau, các giám khảo tự động chấm điểm cao cho những đầu ra mà chính tai tôi gọi là không buồn cười. Bốn lần. Một model có thể nói cho bạn biết cấu trúc còn nguyên không, phương pháp có nhận ra được không, cú lật có đến đúng chỗ không. Nó không thể nói cho bạn biết cú lật có ăn không. Tôi cứ cố bắt nó làm được, và nó cứ đồng ý với chính nó.
Nên tôi tách vấn đề ra làm hai. Các kiểm tra máy móc canh những thứ kiểm tra được bằng máy móc: số liệu bịa, văn bản nguồn bị đọc nguyên si, một chỉ dẫn sân khấu lọt ra giữa lời thoại, bất cứ thứ gì hạ thấp một nhóm người, một cơ thể, một căn bệnh hay một sự mất mát. Cái tai quyết định mọi thứ còn lại, và tôi thôi cố giao phó nó.
Nếu bạn ship tính năng AI, cái tách đó chiếm phần lớn công việc. Tìm phần chất lượng thực sự kiểm chứng được và tự động hóa nó, không cần xin lỗi. Rồi hãy trung thực — với chính mình và với bất cứ ai hỏi — rằng phần còn lại là phán đoán, và không có bao nhiêu rubric cũng không làm nó thôi là phán đoán.
README của dự án này nói thẳng điều đó, và tôi chưa tìm được cách diễn đạt nào hay hơn: đừng bao giờ tin vào một kết quả "đạt" tự động cho phần hài.
Những gì tôi chủ động từ bỏ
Hai quyết định trông như thiếu sót, và một cái đúng là thiếu sót.
Tôi không thấy được app được dùng thế nào. Không có SDK analytics, không tài khoản, không dữ liệu cá nhân. Tuyên bố về quyền riêng tư là thật, và cái giá cũng thật: tôi không biết tiểu phẩm nào ăn, giọng nào bị bỏ qua, hay bao nhiêu người mở nó hai lần. Tôi chỉ biết khi có ai đó kể cho tôi.
Không có nút chia sẻ. Đây là một ván đặt cược, và tôi có thể sai. Chia sẻ là cách một app hài thường lan ra, và tôi cố tình không xây cơ chế đó. Ván cược là cái điện thoại được chuyền quanh bàn hơn là cái link được chuyền trong group chat. Nếu điều đó hóa ra sai, cách sửa thì rõ ràng và có lẽ đã trễ.
Chưa có đánh giá nào. App còn mới. Cái đó không phải lựa chọn thiết kế, chỉ là thiếu người.
Phần khó chịu nếu bạn làm trong ngành media
Công việc hằng ngày của tôi là vận hành media. Con số mà tôi dành cả sự nghiệp để tối ưu là sự chú ý: thời gian trên site, độ dài phiên, tần suất quay lại. Knora được làm ra để chiếc điện thoại không giữ sự chú ý của cả bàn lâu hơn một tiểu phẩm. Một cái lắc, một tiểu phẩm, rồi cất điện thoại xuống — và bạn có thể lắc tiếp bất cứ lúc nào cả bàn muốn nghe thêm.
Đo theo cách tôi đo media, đó mới là chỗ lạ. Không có feed nào kéo bạn quay lại, không có phiên nào để kéo dài, không có gì được thiết kế để giữ bạn lâu hơn câu đùa. Thứ có ở đây là một lý do để nhấc nó lên lần nữa — một tiểu phẩm đủ buồn cười để xứng đáng với cái lắc tiếp theo. Sau đó, nó buông bạn ra.
Tôi không nghĩ điều đó làm nó thành sản phẩm tốt hơn những cái đang đuổi theo sự chú ý. Nhưng nó là một lời nhắc hữu ích rằng "nhiều engagement hơn" là một lựa chọn về thứ bạn đang xây, không phải quy luật tự nhiên. Và lựa chọn đó dễ đưa ra hơn nhiều trong một side project không ai trả tiền.
Nếu bạn từng xây một thứ được thiết kế để trả lại sự chú ý thay vì giữ nó, tôi thật lòng muốn nghe bạn đã lý giải thế nào — đó không phải vùng thiết kế mà tôi dành nhiều thời gian trong ngày.
App miễn phí trên App Store, và ghi chú về thiết kế ở đây. Nếu bạn thử và có tiểu phẩm nào không ăn, nói cho tôi biết. Cả cái app chính là trò đùa.
Thân mến, Chandler