3 điểm bởi GN⁺ 4 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Gói tài liệu/trình soạn thảo/trình xem/công cụ thuyết trình vào một tệp .bento.html, có thể mở, chỉnh sửa và trình bày chỉ với trình duyệt, như một lựa chọn thay thế PowerPoint
  • Chỉ một tệp khoảng 570KB hoạt động như một ứng dụng hoàn chỉnh, có thể lưu và gửi qua email hoặc AirDrop mà không cần tài khoản/cloud/trình cài đặt
  • Dữ liệu slide được lưu dưới dạng JSON có thể đọc được bên trong tệp, nên các AI agent như Claude Code/Codex/Gemini/ChatGPT có thể chỉnh sửa trực tiếp tệp
  • Nếu gửi cả .pptx hiện có cho AI, thay vì chỉ chuyển đổi đơn thuần, AI có thể viết lại thành slide tận dụng các tính năng Bento như Morph/biểu đồ thời gian thực
  • Hỗ trợ chuyển cảnh Morph/biểu đồ/video/âm thanh/cộng tác mã hóa thời gian thực, và sau Slides còn có kế hoạch cung cấp DocsSheets theo cùng mô hình tệp đơn

Một tệp vừa là tài liệu vừa là ứng dụng

  • Trong .bento.html chứa cả slide lẫn toàn bộ chương trình biên tập
  • Khi mở tệp trong trình duyệt, trình biên tập chạy ngay lập tức, và khi lưu thì dữ liệu tài liệu được ghi lại vào chính tệp
  • Phông chữ/hình ảnh/biểu đồ cũng được nhúng kèm, nên chỉ với bản sao của tệp là có thể mở và thuyết trình độc lập
  • Ở chế độ Offline, cập nhật và cộng tác bị chặn để mọi thao tác đều được xử lý cục bộ
  • Có thể chạy ngay trên trình duyệt tại Bento/Slides hoặc tải về tệp ứng dụng đơn lẻ

Định dạng tài liệu dành cho AI agent

  • Dữ liệu tài liệu được lưu dưới dạng JSON thuần văn bản trong khối <script type="application/bento+json" id="bento-doc"> ở đầu tệp
  • Có thể đọc tài liệu hiện tại bằng window.bento.doc và nạp tài liệu đã sửa bằng window.bento.loadDoc(json)
  • AI agent có thể thêm slide/biểu đồ/ghi chú cho người thuyết trình chỉ bằng cách sửa JSON mà không cần đụng vào mã ứng dụng
  • Có thể dùng không chỉ với các coding agent như Claude Code/Cursor/Aider mà cả trong chatbot thông thường hỗ trợ đính kèm tệp
  • Với chatbot không hỗ trợ tệp, có thể sao chép JSON ra, chỉnh sửa rồi dán lại
  • Dùng Ollama/llama.cpp/LM Studio thì việc biên tập bằng AI cũng có thể chạy hoàn toàn cục bộ
  • Cung cấp agents.md để hướng dẫn AI agent khai thác Bento đúng cách

Tính năng thuyết trình gần với web hơn PowerPoint

  • Hỗ trợ chuyển cảnh Morph giúp các phần tử có cùng id di chuyển mượt mà giữa các slide
    • Chỉ cần nhân bản slide hiện có rồi di chuyển phần tử hoặc đổi kiểu là có thể tạo chuyển cảnh mà không cần dựng timeline riêng
  • Dùng engine biểu đồ tự phát triển, không phụ thuộc bên ngoài, để vẽ biểu đồ cột/đường/tròn/phân tán
    • Các biểu đồ cột/đường/tròn/phân tán vẫn hoạt động với tooltip/phóng to/chuyển đổi dữ liệu ngay trong lúc thuyết trình
  • Có thể nhúng video và âm thanh vào slide hoặc liên kết tới tệp bên ngoài
  • Các tệp PowerPoint hiện có không được nhập nguyên trạng mà sẽ được AI tái cấu trúc thành tài liệu Bento
  • Cũng hỗ trợ màn hình người thuyết trình/bình luận/bố cục/xuất PDF/nhiều kích thước trang/8 ngôn ngữ giao diện
  • Việc chỉnh sửa chủ yếu hướng tới desktop, nhưng vẫn có thể xem và thuyết trình trên smartphone

Cộng tác ưu tiên cục bộ

  • Khi bắt đầu một phiên live từ tệp, người mở bản sao của cùng tệp đó sẽ tham gia vào không gian cộng tác
  • Dữ liệu cộng tác được mã hóa đầu-cuối bằng AES-GCM, máy chủ chuyển tiếp chỉ xử lý bản mã
  • CRDT tự phát triển đảm nhiệm biên tập thời gian thực và hợp nhất các thay đổi khi offline
  • Khóa cộng tác nằm ngay trong bản thân tệp, nên việc gửi tệp cũng chính là cách mời tham gia
  • Các nội dung chỉnh sửa bị tách nhánh khi offline cũng sẽ được hợp nhất hai chiều khi kết nối lại

Lộ trình Bento/Suite và giấy phép

  • Bento/Slides đang được phát hành hiện là ứng dụng đầu tiên của Bento/Suite
  • Có kế hoạch cung cấp Bento/DocsBento/Sheets dưới dạng các tệp .bento.html tự chứa, độc lập
  • Phần mềm Bento được phát hành theo MIT License

1 bình luận

 
Ý kiến Hacker News
  • Tôi là tác giả của Bento. Ở đầu tệp có khối JSON thuần chứa dữ liệu slide nên có thể đọc, grep hoặc xử lý bằng công cụ tự động. Ứng dụng là một blob base64 được nạp qua một loader nhỏ, giải nén bằng DecompressionStream của trình duyệt để giữ gói nhẹ và không tải tệp bên ngoài khi chạy
    Với File System Access API, nó ghi lại JSON vào chính tệp đó; nếu không được hỗ trợ thì chuyển sang tải xuống thông thường, và mọi bản cập nhật đều được ký bằng ECDSA. Ban đầu tôi thêm GSAP/Flip và echarts trên nền reveal.js, nhưng vì vấn đề về kích thước và hành vi nên đã tự triển khai lại toàn bộ tính năng hoạt ảnh và biểu đồ
    Tôi đặc biệt hài lòng vì cộng tác CRDT hoạt động rất mượt. Một blind relay nhỏ chạy trên Cloudflare Durable Objects chỉ nhìn thấy dữ liệu đã mã hóa của client, và tính năng cộng tác bị tắt cho đến khi bắt đầu phiên bằng cách chia sẻ tệp mời. Quyền truy cập được quản lý bằng khóa người dùng nên có thể có người dùng chỉ đọc, đồng thời cũng có thể thu hồi quyền cộng tác thời gian thực theo từng người dùng

    • Có vẻ như bạn mới tạo tài khoản GitHub mới cho dự án này từ một tuần trước, nên tôi muốn biết liệu có tài khoản GitHub nào khác để kiểm tra lịch sử bảo trì và bảo mật hay không
    • Tôi tò mò CRDT hoạt động ở đâu và máy chủ nằm ở đâu khi chỉ xử lý một tệp duy nhất. Tôi thích TiddlyWiki nhưng chưa bao giờ gắn bó lâu dài, còn bản trình bày dễ chỉnh sửa thì là một trường hợp sử dụng rất dễ hiểu
      Nếu tính năng cộng tác được bật mặc định cho mọi người dùng, tôi cũng thắc mắc liệu có nguy cơ dồn lưu lượng về tài khoản Cloudflare hay không
    • Tính năng kỳ diệu của Reveal.js là slide dọc di chuyển lên xuống như ví dụ này. Trong cùng một bộ slide, bạn có thể đi xuống để hiện phần kỹ thuật hoặc bỏ qua tùy theo khán giả
      Có vẻ bạn đã bỏ tính năng này để làm cho nó giống PowerPoint hơn, nhưng đây là tính năng tôi thích nhất ở Reveal.js nên mong là bạn không quên nó
    • Tôi tò mò điều gì sẽ xảy ra với các bộ slide v1 khi Bento được nâng cấp lên v2. Khi nhấn nâng cấp, cần có cách xuất dữ liệu slide JSON hiện có sang vỏ v2
    • Con đường hỗ trợ các định dạng Office quỷ quái dẫn thẳng xuống địa ngục, nên tôi muốn gọi đây là trình chiếu hơn là PowerPoint. Mong loại định dạng đơn giản này trở thành tiêu chuẩn và các định dạng cũ dần biến mất
  • Tôi đã làm một công cụ tương tự nhưng tập trung vào việc tạo các ứng dụng React nhỏ thay vì bản trình bày. HTML mặc định kèm ứng dụng mẫu ở đây, tài liệu ở đây; chưa được trau chuốt hẳn nhưng đủ dùng
    Nó tích hợp trình chuyển đổi JSX và trình chỉnh sửa mã, hỗ trợ lưu vào tệp hoặc localStorage, và cũng có thể xuất riêng dữ liệu JSX và JSON khỏi phần shell phụ trách lưu tệp, chuyển đổi và chỉnh sửa
    Tôi cũng đã làm một ứng dụng iOS để lưu các mini app. Nó không chỉ phụ thuộc vào localStorage mà lưu dài hạn cả dữ liệu lẫn thay đổi mã nên luồng lưu/làm mới rất mượt. Sandbox chặn các lệnh gọi mạng của ứng dụng đã lưu nhưng có thể cho phép theo từng ứng dụng, và sau này tôi cũng muốn thêm các tiện ích như trình chỉnh sửa native

  • Tôi nghĩ kiểu này sẽ trở nên phổ biến hơn. Rất nhiều phần mềm có thể được phân phối hoàn toàn cục bộ bằng HTML, TypeScript, React, v.v., và trạng thái cũng có thể để cục bộ, nhưng đến nay động lực kinh tế vẫn còn thiếu
    Cá nhân tôi đang dùng Kimi K3 để làm một trò chơi thân thiện di động, bao quát từ đại số tuyến tính đến vật lý lượng tử. Mục tiêu là quan tâm đến người dùng đa dạng thần kinh, lưu toàn bộ trạng thái cục bộ và phân phối qua GitHub Pages để khơi gợi hứng thú với lĩnh vực này. Đây là dự án đòi hỏi nhiều chuyên môn và thời gian, sẽ không khả thi về mặt kinh tế nếu không có LLM; tôi dự định sẽ tự chơi và cải thiện để loại bỏ lỗi rồi mới chia sẻ trên HN

    • Tôi đã thảo luận với đồng nghiệp về tài liệu lai nơi điều khiển chỉnh sửa và nội dung cùng nằm trong một tệp HTML. Các wiki như Feather Wiki là tiền lệ, và tôi tò mò nếu làm bằng SVG hoặc bảng tính thì nó sẽ trông như thế nào
  • Tôi đã dùng sổ lưu niệm thời gian thực một cách thích thú, nhưng cuối cùng chiếc M1 Mac của tôi bị treo và phải buộc khởi động lại. Trừ khi toàn bộ HN cùng chỉnh sửa một lúc, nó có lẽ vẫn hoạt động tốt trong hầu hết trường hợp, nhưng có vẻ Figma dùng WASM và trình kết xuất tùy biến là có lý do
    Khi người khác thay đổi nội dung không liên quan, tiêu điểm nhập hiện tại không nên bị đặt lại. Ngoài ra, câu chữ trên trang đích và bộ slide mẫu quá giống văn do LLM tạo, còn phần bài đăng trên HN thì dễ đọc hơn nhiều. Việc phát hành dưới dạng phần mềm nguồn mở tự do là rất tuyệt

    • Vì spam nên tôi đã khởi tạo lại sổ lưu niệm, hiện đang ở epoch 4. Vấn đề đặt lại tiêu điểm không lộ ra khi chỉ thử với một hai người, nhưng tôi sẽ sửa ngay
      Tôi cũng đồng ý về vấn đề câu chữ, nhưng tôi không tự tin về khả năng viết và lại thiếu thời gian giữa công việc và chăm con nên sẽ sửa dần dần
  • Tôi đang quảng bá khái niệm ứng dụng web một tệp này, và nếu thêm Bento vào bản nháp Wikipedia đang đề xuất thì cũng hay

    • mdwiki mà tôi làm từ năm 2013 có lẽ cũng thuộc nhóm này. Nó là một tệp .html duy nhất, hoạt động ngoại tuyến, với hình ảnh, biểu tượng và kiểu dáng đều được nhúng inline, nên tôi đùa rằng đó là ứng dụng một trang thực sự đầu tiên
    • Bản nháp này không giống một bài Wikipedia, chẳng hạn nó gọi người đọc là you. Wikipedia phải là nguồn cấp ba chứ không phải nơi quảng bá cho các khái niệm muốn thiết lập, nên có lẽ đây không phải chỗ phù hợp
    • Sơ đồ Ilograph cũng có thể xuất thành HTML độc lập như ví dụ này. Nó cũng có một dạng tính năng slide, và kích thước tệp khoảng 560KB
    • Hyperclay có lẽ cũng có thể thêm vào danh sách
    • Khi bắt đầu Bento, tôi chỉ biết TiddlyWiki nên tôi sẽ xem qua danh sách này
  • Thật hay ở chỗ chỉ cần cho Claude biết về công nghệ Bento là có thể dùng được

  • Trong thời gian dài làm sơ đồ bằng draw.io, tôi luôn thấy cách lưu tài liệu như một blob iframe chứa cả trình biên tập và tệp là rất thông minh. Tuy vậy, draw.io không nhúng chính trình biên tập vào tệp nên vẫn phải tải mã qua kết nối web
    Tôi từng hy vọng cách này có thể trở thành trường hợp sử dụng chính, và Bento gần như đúng với hình dung đó của tôi

    • Tôi cũng dùng draw.io thường xuyên nên đã cân nhắc cách này, nhưng trước mắt tôi thấy bắt đầu với một tệp cục bộ duy nhất sẽ tốt hơn. Sau này nếu cần các tính năng doanh nghiệp như SSO thì việc host cũng có thể hợp lý
  • Nó đáp ứng một nhu cầu rất phổ biến trong môi trường doanh nghiệp. Một vài nhóm trong công ty đã bỏ các sản phẩm cloud hoặc desktop vì bug trong phần mềm trình bày·trực quan hóa hiện có không được sửa và cũng không có thêm tính năng tùy biến, rồi chuyển sang công cụ dựa trên HTML·JavaScript
    Có lẽ các “tiểu vương” trong bộ phận IT nội bộ nên bắt đầu lo lắng

    • Ở công ty tôi cũng vậy, các kỹ sư tạo ra những ứng dụng web trình bày rất ngầu khiến mọi người bất ngờ, nhưng nếu số liệu bị sai và cần sửa trước cuộc họp điều hành buổi chiều thì người phụ trách không chuyên kỹ thuật chỉ có Claude mà không có Claude Code sẽ rơi vào bế tắc. Lý do là Claude Code được quy định chỉ dành cho kỹ sư và software engineer
  • Tôi đang hình dung một công cụ trình bày độc lập: cài PWA từ một Bento trống bằng tính năng “cài trang web thành ứng dụng” của trình duyệt, tự động điền tên tác giả v.v., rồi đặt ở chế độ chỉ đọc để người dùng dùng “lưu thành”
    Sẽ rất tốt nếu dự án có tính năng cài dưới dạng PWA một tài liệu mặc định trống, chỉ đọc ngoại trừ thông tin tác giả

    • Tôi cũng đã cân nhắc PWA, nhưng vẫn đang suy nghĩ về chuyện có host toàn bộ hay không. Để hỗ trợ sử dụng trong doanh nghiệp thì cuối cùng có lẽ vẫn cần host, nhưng hiện tại tôi muốn tập trung vào việc tạo ra một công cụ đơn giản và đẹp
      Tôi định tiếp tục xem xét cách giữ lại các tính năng người dùng muốn ở bản host, đồng thời duy trì những nguyên tắc đặc biệt của Bento
  • Dùng code agent để tạo bài thuyết trình HTML cho ra kết quả khá tốt. Tùy mục đích, có thể dùng Slidev dựa trên Markdown, hoặc để agent tạo slide Typst vốn đặc biệt đẹp ở các biểu thức toán học
    Tuy nhiên, khi nhìn tiêu đề tôi đã nghĩ đây là công cụ liên quan trực tiếp đến PowerPoint, nhưng thực ra chỉ dùng PowerPoint như từ đồng nghĩa của “bài thuyết trình”. Điều này hơi mỉa mai vì có khá nhiều người không thích PowerPoint