2 poin oleh GN⁺ 2025-04-15 | 1 komentar | Bagikan ke WhatsApp
  • Stevens adalah asisten AI pribadi yang merangkum jadwal keluarga, cuaca, surat, dan pengingat setiap pagi lewat Telegram, serta memberi bantuan praktis tanpa agen yang rumit atau RAG
  • Intinya adalah satu tabel memori SQLite di atas Val.town dan beberapa cron job, yang meneruskan memori relevan ke konteks LLM untuk membuat briefing
  • Memori dengan tanggal dan informasi latar tanpa tanggal disimpan terpisah, lalu briefing pagi memasukkan item untuk seminggu ke depan bersama memori latar yang selalu dibutuhkan
  • Google Calendar, API cuaca, OCR USPS Informed Delivery, input Telegram·email, dan fun facts mingguan terhubung sebagai job pengambilan yang mengisi tabel log yang sama
  • Alat AI pribadi menjadi lebih berguna saat konteks kehidupan yang tersebar di berbagai aplikasi dikumpulkan ke memori bersama, dan bila skala informasinya kecil serta batas waktunya jelas, struktur sederhana pun cukup untuk memulai

Apa yang dilakukan Stevens

  • Stevens adalah asisten AI untuk keluarga yang namanya diambil dari kepala pelayan dalam novel Ishiguro Remains of the Day
  • Setiap pagi, Stevens mengirim briefing Telegram yang menyampaikan semua informasi penting untuk hari itu sekaligus
    • Jadwal kalender hari itu
    • Pratinjau ramalan cuaca
    • Surat atau paket yang akan diterima
    • Pengingat yang diminta pengguna untuk dilacak
  • Briefing ditulis dengan gaya bahasa kepala pelayan yang formal
  • Selain briefing harian, pengguna juga bisa berinteraksi langsung dengan Stevens
    • Meneruskan email yang berisi informasi penting
    • Meninggalkan pengingat lewat chat Telegram
    • Mengajukan pertanyaan di Telegram
  • Meski strukturnya sederhana, sebagai asisten pribadi keluarga ia sudah dinilai lebih berguna daripada Siri

Struktur sederhana yang dijalankan di atas Val.town

  • Seluruh sistem di-host di Val.town
  • Val.town menyediakan fungsi dasar yang dibutuhkan proyek ini di satu tempat
    • Penyimpanan SQLite
    • Penanganan permintaan HTTP
    • Cron job terjadwal
    • Email masuk dan keluar
  • Stevens membaca isi untuk briefing pagi dari log yang berperan sebagai “buku catatan kepala pelayan”
  • Buku catatan ini adalah rekaman semua hal yang diketahui Stevens, dan isinya bisa dilihat dari layar admin

Membuat briefing dengan satu tabel memori

  • Implementasi nyata buku catatan ini adalah satu tabel SQLite dengan beberapa kolom
  • Setiap entri log berisi teks, dan bila perlu diberi tanggal yang diperkirakan relevan
  • Entri tanpa tanggal diperlakukan sebagai informasi latar umum dan selalu dimasukkan ke konteks
  • Saat penyiapan awal, memori latar bisa dibuat melalui intake interview di Telegram
  • Alur pembuatan briefing pagi sederhana
    • Cron job dijalankan
    • Claude API dipanggil untuk menulis kalimat pembaruan
    • Teks hasilnya dikirim ke thread Telegram
  • Konteks yang dikirim ke model terdiri dari dua jenis
    • Entri log bertanggal untuk satu minggu ke depan
    • Entri latar tanpa tanggal

Job pengambilan yang mengisi log yang sama

  • Berbagai job pengambilan data mengisi tabel SQLite yang sama
  • Saat ini, sumber entri log adalah sebagai berikut
    • Mengambil data setiap jam dari Google Calendar API
    • Memeriksa ramalan cuaca wilayah setiap jam melalui API cuaca
    • Saat email USPS Informed Delivery diteruskan, Stevens menggunakan Claude untuk melakukan OCR pada gambar pemindaian surat
    • Pesan Telegram dan email yang masuk dapat membuat entri log
    • Setiap minggu, “fun facts” ditambahkan ke log untuk memberi warna pada pembaruan harian berikutnya
  • Strukturnya memudahkan penambahan job pengambilan baru
    • Job pengambilan bisa berupa proses apa pun yang menambah atau mengubah memori di log
    • Isi memori cukup berupa teks bebas yang nantinya akan dikirim kembali ke LLM

Mengapa bisa mulai dari memori sederhana

  • Alat AI pribadi menjadi berguna saat dapat mengakses konteks yang lebih luas dari berbagai sumber informasi lain
  • Dengan mengetahui kalender dan ramalan cuaca, chatbot sederhana pun menjadi asisten yang lebih praktis
  • ChatGPT belakangan menambahkan memori percakapan masa lalu, tetapi masih banyak informasi yang tidak tersimpan di dalam silo itu
  • Bentuk jangka panjang perangkat lunak pribadi berbasis AI kemungkinan bukan lebih banyak silo aplikasi, melainkan alat-alat kecil yang berjalan di atas kumpulan konteks bersama tentang kehidupan pengguna
  • Use case Stevens terbatas dan informasinya secara alami memiliki batas waktu, sehingga konteks relevan yang akan dikirim ke LLM mudah ditemukan
  • Jendela konteks panjang pada model terbaru juga memungkinkan pendekatan yang sederhana
  • Jika skala informasi membesar, RAG atau akses memori yang lebih kompleks mungkin diperlukan, tetapi tidak perlu memulai dengan kerumitan sejak awal

Proyek pribadi yang mudah mengubah gaya bahasa dan UI

  • Awalnya, Stevens memiliki gaya bahasa datar seperti produk Apple atau Google
  • Mengubahnya menjadi gaya bahasa kepala pelayan formal cukup dengan mengedit beberapa baris prompt
  • Dashboard admin juga dibuat agar terasa seperti video game
  • Aset gambar dibuat di ChatGPT, dan UI dikodekan secara vibe coding dengan Cursor dan Claude 3.7 Sonnet
  • Dengan sedikit usaha tambahan, proyek ini bisa dibuat jauh lebih menyenangkan

Cara melihatnya sendiri

  • Stevens bukan produk siap pakai, melainkan proyek pribadi
  • Kodenya bisa dilihat dan di-fork di stevensDemo
  • Pola berupa satu tabel memori dan sekumpulan cron job yang dapat diperluas ini juga bisa diterapkan pada alat pribadi berguna lainnya
  • Saat mengedit kode, disarankan memakai editor AI pilihan Anda dan Val Town CLI untuk sinkronisasi dengan filesystem lokal

1 komentar

 
GN⁺ 2025-04-15
Komentar di Hacker News
  • Entah karena kegunaannya yang murni, atau karena gaya bicara “Proper English Butler” yang berlebihan, saya benar-benar menyukainya
    Yang lebih menarik perhatian adalah mengapa kita membaca hal seperti ini dari blog seorang engineer cerdas, bukan dari peluncuran produk Apple atau Google. Bahkan dengan syarat memakai ekosistem tertutup mereka sendiri sampai email, kalender, dan ponsel, sungguh memalukan bahwa kedua perusahaan itu bahkan belum bisa merilis sekumpulan fitur kecil seperti ini. Itu hanya tertutupi oleh kurangnya ambisi mereka dalam menerapkan teknologi AI pada area yang sudah hampir menjadi “masalah yang terselesaikan”, seperti ringkasan dan tanya-jawab
    Jika ada peluang untuk mengguncang duopoli yang tumpul dan antikompetitif ini, rasanya jelas akan terkait dengan AI

    • Jawaban yang cukup bagus untuk ini adalah: jika dipersempit agar pas hanya untuk kebutuhan satu keluarga, software bisa dibuat sekitar 1000 kali lebih cepat. Ini juga menjadi argumen yang mendukung software personal
    • Ini secara harfiah adalah isi bab pertama The Mythical Man-Month
      Sesekali kita membaca di koran tentang dua programmer di garasi yang diubah yang membuat program penting yang melampaui upaya terbaik tim besar, dan setiap programmer siap mempercayai cerita seperti itu. Karena mereka tahu bahwa program apa pun bisa dibuat jauh lebih cepat daripada produktivitas 1000 baris per tahun dari tim industri
      Lalu mengapa semua tim pemrograman industri tidak digantikan oleh duo garasi yang berdedikasi? Kita harus melihat apa yang sebenarnya diproduksi
      Data pribadi yang masuk ke database yang ditangani software yang sangat eksperimental mungkin bukan masalah besar bagi pengembang ini, tetapi bagi perusahaan seperti Google atau Apple itu bisa menjadi risiko serius
    • Alasan Google dan Apple berhenti berinovasi itu sederhana. Mereka menghasilkan terlalu banyak uang dari produk saat ini, sehingga semua inovasi pertama-tama dilihat sebagai risiko bagi bisnis yang sudah ada. Ini selalu terjadi pada pemimpin pasar
    • Lihat saja Home Assistant. Menurut saya implementasinya saat ini lebih baik daripada asisten Siri dan Gemini
      Tim HA setiap bulan benar-benar merilis pembaruan yang berguna, misalnya fitur yang memungkinkan asisten menanyakan sesuatu terlebih dahulu
      Menurut saya Google dan Apple punya masalah besar dalam kolaborasi antar-tim produk, dan kolaborasi dengan perusahaan eksternal nyaris mustahil
    • Bagaimana ini bisa dimonetisasi? Apakah Google atau Apple akan membuat produk yang berbicara dengan Telegram? Membuat sesuatu yang terhubung dengan ekosistem terbuka?
      Yang ingin dilakukan perusahaan raksasa hanyalah memeras telur dari angsa mereka sendiri lebih cepat
  • Ini membuat saya membayangkan bagaimana kalau program asisten utilitas kecil seperti Stevens milik saya punya akses ke kotak masuk email
    Saya punya utilitas kecil yang bisa disuruh mengambil cuaca atau menjalankan perintah yang sering dipakai dan spesifik untuk sistem saya. Praktis, dan kalau mau bisa dijalankan berkala dengan cron
    Jika utilitas ini punya kotak email sendiri, kita bisa mengirim informasi lewat email, lalu AI mem-parse informasi itu dan membalas atau mengirim pesan baru. Itu akan jadi cukup berguna. Tanpa mengacaukan kotak email pribadi saya, cukup membaca email, memasukkannya ke penyimpanan internal, lalu menghapus pesannya

    • Belakangan saya berpikir email adalah antarmuka yang bagus untuk cara tertentu berinteraksi dengan asisten AI, terutama tugas “riset” yang asinkron dan relatif memakan waktu. Email itu universal, asinkron, memakai standar terbuka, dan juga mendukung metadata terstruktur
    • Dalam AI CTF yang diselenggarakan Microsoft tahun lalu, ini adalah vektor serangan. Saya membuat agen yang mengevaluasi, menyusun, dan menjalankan serangan secara otonom, dan menemukan bahwa sistem tetap rentan terhadap eksfiltrasi data meski ada perlindungan umum
      Agen saya berhasil menyelesaikan 18 tantangan. Tulisan setelah final ada di sini
      https://msrc.microsoft.com/blog/2025/03/announcing-the-winne...
    • Gmail juga punya fitur luar biasa yang bisa dihubungkan dengan Pub/Sub. Jadi modelnya push, bukan polling. Server mana pun bisa menerima webhook kecil tentang perubahan dalam hitungan beberapa milidetik, dan filter tertentu bisa diterapkan di sisi server atau sisi klien
      Dengan ini kita bisa membuat segala macam otomasi. Bisa dimasukkan ke large language model untuk langsung diberi tag atau diarsipkan. Saya memberi label tertentu pada email penting; kalau orang itu membalas, itu benar-benar penting, jadi saya ingin segera tahu, maka saya hubungkan dengan Twilio agar saya mendapat panggilan telepon. Biayanya sekitar 20 sen per bulan
    • Mailgun bisa menerima email dan melakukan POST isinya ke URL yang kita inginkan. Pasti ada banyak layanan serupa juga
      Saya memakai ini untuk menulis jurnal. Saya membuat sistem kecil yang mengirim email kepada saya setiap hari, dan kalau saya membalasnya, respons itu dikirim ke sebuah halaman dan disimpan ke database
    • Proyek ini punya pola yang persis seperti itu untuk memproses informasi USPS yang masuk
      https://www.val.town/x/geoffreylitt/stevensDemo/code/importe...
      Sepertinya cukup mudah diperluas untuk mendukung jenis email masuk lain. Saya bekerja di Val Town, jadi bisa menjawab kalau ada pertanyaan
  • Saya ingin melihat lebih banyak hacking AI praktis seperti ini. Kadang rasanya kita lupa mengapa alat itu ada sejak awal: untuk membuat pekerjaan lebih sederhana. Saya suka pendekatannya yang benar-benar terintegrasi dengan sumber data yang sudah ada, tanpa database vektor yang mewah atau arsitektur yang rumit

  • Ada bagian yang mengatakan, “Awalnya Stevens memakai nada kering seperti yang mungkin diharapkan dari produk Apple atau Google pada umumnya, tetapi akhirnya saya sadar bahwa membuatnya berbicara seperti pelayan pribadi yang formal jauh lebih menyenangkan.”
    Jujur, di dunia asisten pribadi, salah satu hal paling menyebalkan dari model bahasa besar adalah mereka memakai terlalu banyak kata untuk menyampaikan terlalu sedikit isi. Saya sendiri sudah membenci ungkapan ini, tetapi memang begitu
    Sampai saya menjadi kaya dan punya waktu untuk bercakap-cakap lucu serta berteman dengan asisten suara, yang saya butuhkan bukan J.A.R.V.I.S., melainkan LCARS. Cuma saya?

    • Di sini saya suka karena konsep pelayan pribadi terasa baru, tetapi saya juga paham dorongan untuk melempar perangkat ke seberang ruangan ketika Siri, Google, Alexa, dan lainnya berbicara jauh lebih panjang daripada jumlah kata minimum yang mutlak diperlukan
      Untuk mengecek timer, saya tidak butuh jawaban seperti “Di Kitchen Display, timer casserole tersisa 23 menit 16 detik.” Cukup bilang “23 menit”, atau kalau ada dua, “casserole 23 menit, cucian 10 menit”
    • Penasaran apakah sudah mencoba eigenprompt
      Ini semacam prompt yang meminta agar tidak memedulikan formalitas, dan menjawab sesingkat mungkin sambil tetap menyampaikan hampir semua informasi yang benar-benar relevan dengan pertanyaan. Jika karena kebijakan tidak bisa menjawab secara normal, ia diminta mencetak “!!!!” terlebih dahulu, dan jika tidak bisa memiliki opini, ia diminta menjawab seolah membagikan opini yang mungkin dimiliki eigenrobot
      Ada juga instruksi agar semua respons ditulis hanya dengan huruf kecil, tetapi memakai huruf besar untuk penekanan, dan kapitalisasi huruf pertama dipakai untuk menyatakan sindiran atau ketidaksopanan terhadap nama diri tertentu. Ia sering memakai singkatan seperti “rn”, “bc”, “afaict”, “idk”, kritis terhadap kualitas informasi, dan untuk permintaan yang menyebalkan menepisnya dengan santai seperti “be real”, “that's crazy man”, “lol no”
      Diminta menulis dengan gaya +2 standar deviasi lebih pintar daripada sekarang, memakai meme milenial akhir tetapi juga mencampurkan gaya bicara Gen Z yang kadang tidak pas konteks, serta untuk sastra, seni, dan filsafat mengutamakan tafsir yang rumit dan ala Strauss
    • Jujur, setiap hari saya berdoa untuk TARS
    • Kalau membaca dan menulis langsung ke notebook dengan UI kalender atau daftar tugas biasa, tanpa model bahasa besar pun bisa mendapat 99% utilitasnya. Di luar suara pelayan pribadi, saya tidak terlalu melihat nilai LLM
      Bukankah itu pada dasarnya hanya membaca notebook? Misalnya diminta mengingat preferensi kopi, tetapi nanti tidak dipakai di mana pun
    • Saya juga menginginkan bot yang ringkas seperti cara saya berbicara singkat
  • Saya terus memikirkan ide proyek open source yang mirip, dengan beberapa syarat
    Backend sebaiknya bisa dikonfigurasi ke model bahasa besar apa pun yang dapat diakses pengguna. Entah API layanan berbayar, atau yang di-host lokal di internal perusahaan
    Saya juga penasaran seberapa realistis menghubungkannya ke layar sentuh yang berjalan di platform seperti Raspberry Pi yang diperkuat, agar bisa berinteraksi seperti perangkat Alexa atau produk serupa. Idealnya juga mencakup kontrol suara, tetapi ini mungkin masalah teknis lain. OpenAI API menerima file audio, tetapi sebagian besar layanan lain perlu mengubah suara menjadi teks sebelum prompt dikirim ke API
    Saya ingin fitur integrasinya bisa diperluas. Bukan hanya kalender dan cuaca, tetapi juga Homebridge, Spotify, dan sebagainya. Saya sedang mempertimbangkan apakah MCP server adalah jalur yang tepat untuk itu
    Saat ini saya tidak punya banyak waktu untuk dicurahkan ke proyek seperti ini, tetapi jika ada yang bergerak ke arah ini, saya ingin ikut berkontribusi

    • Saya membuat hal yang persis seperti ini untuk kebutuhan saya: https://v3rtical.tech/public/sshot.png
      Berjalan lokal, tetapi memakai API key untuk beberapa model bahasa besar. Saat ini saya jauh lebih menyukai QwQ-32B yang di-host di Groq. Sangat cepat dan cukup pintar. Saya memakai model yang berbeda untuk tiap tool
      Saat ini dapat membuat tiga jenis dokumen yang saya butuhkan untuk pekerjaan sehari-hari: laporan kerja, faktur, dan lembar waktu untuk regulasi. Ada integrasi cuaca juga, bisa mem-parsing faktur dan membuat kode QR agar pembayaran mobile banking lebih mudah, serta bekerja dengan kalender saya
      Berikutnya saya berencana menambahkan integrasi email. Namun saya ingin melakukannya dengan benar. Artinya saya butuh email IMAP yang bisa disinkronkan dan diindeks secara lokal. Ini bahkan bisa berkembang menjadi klien email desktop yang benar-benar layak dipakai. Karena yang ada sekarang semuanya buruk, kita lihat saja nanti
    • Mungkin bagus untuk melihat SillyTavern. Mendukung beberapa backend, menerima input suara, dan punya sistem plugin
    • Saya juga menginginkan framework open source yang bisa diperluas dengan skrip dan modul saya sendiri, dan berfokus pada asisten untuk saya dan keluarga
      Jika ada kumpulan fitur umum seperti penyimpanan dan pencarian memori, integrasi antarmuka chat dan email, sinkronisasi kalender dan Notion, serta notifikasi, lalu dibuat menjadi framework open source, itu akan sangat kuat
      Saya juga tidak punya waktu untuk menjalankannya, tetapi bersedia membantu dan membayar. Saat ini saya mengerjakan hal lain seperti database/object storage terdistribusi yang local-first, dan sepertinya bisa dipakai sebagai penyimpanan mirip OrbitDB, tetapi belum dalam kondisi siap pakai
      Sejauh ini saya merasa frustrasi karena pilihannya hanya memakai antarmuka chat yang sangat terbatas, atau membangun sendiri framework agen lengkap seperti di tulisan asli
    • Apakah ada alasan untuk tidak memakai smartphone sebagai antarmuka pengguna?
  • Belakangan ini saya bereksperimen dengan cara mengakali rentang ideal token konteks, yaitu di bawah 20 ribu token, dan pada 2.5 di bawah 50 ribu token
    Pada dasarnya ini adalah “kompresi konteks” manual. Model bahasa besar menyimpan data secara permanen ke database sesuai skema yang ketat, lalu ketika konteks saat ini mulai keluar dari rentang ideal, ia merangkumnya dan menyerahkannya ke instance baru dengan konteks baru. Saya masih belum sepenuhnya yakin apakah rangkuman ini harus berlanjut seperti jurnal, atau retrospektif seperti rangkuman penutup
    Pada model penalaran, ini cukup efektif. Penalaran memang memakan konteks sangat banyak, tetapi pada saat yang sama juga menghasilkan “dokumen ringkasan” yang sangat bagus. Jadi kita bisa mendapatkan sebagian imbalan dari penalaran tanpa mengorbankan konteks lezat di bawah 50 ribu
    Database berfungsi semacam fallback jika rangkuman melewatkan detail penting, atau seperti retrieval-augmented generation. Namun model harus menyadarinya dan mengambil konteks dari database
    Saat ini saya mencobanya untuk membuat manajemen inventaris dan agen optimisasi BOM terhadap database sekitar 10 ribu komponen dan material terpisah

    • Saya menantikan perusahaan pertama yang berinvestasi besar dalam peningkatan caching. Semoga saja Anthropic
      Hal-hal besar yang terlintas adalah caching jangka panjang murah, terobosan kompresi, dan pemrosesan diferensial. Saya penasaran apakah ada cara untuk hanya menggunakan bagian yang diperlukan dari konteks input yang sudah di-cache
  • Di jalur yang mirip, saya baru saja membuat sesuatu bernama Jeeves. Polesannya memang sedikit lebih minim, tapi dirakit dengan sangat cepat. Stack-nya Claude Desktop, Projects, MCP untuk Notion dan Todoist, dan untuk upgrade berikutnya saya sedang melirik penjelajahan email dan WhatsApp
    Ini dibuat untuk mendukung alur produktivitas konsultasi dan startup. Database Notion-nya berisi beberapa database untuk klien, proyek, rapat, dan Jeeves. Untuk database Jeeves, saya hanya memberi sedikit instruksi lalu membiarkan Jeeves menulis sendiri. Misalnya, ia memakai databasenya sendiri untuk melacak pekerjaan memigrasikan semua notulen rapat lama ke struktur baru
    Di database saya, saya memasukkan praktik terbaik penggunaan. Misalnya, notulen rapat bentuknya seperti ini, dokumen one-page klien bentuknya seperti ini, informasi yang menghubungkan semuanya adalah ini, dan tugas dikelola seperti ini. Lalu, dengan prompt perluasan teks Alfred untuk jenis rapat yang umum, saya memasukkan transkrip ke chat baru, dan ia mengurus sisanya
    Ia mengubah transkrip menjadi notulen rapat, membuat tugas, mengonfirmasi dengan saya, merapikannya sekali lagi, lalu melalui MCP menaruh semuanya dengan rapi di Notion dan Todoist
    Proses ini juga didokumentasikan sendiri. Karena ada bug di Todoist MCP, saya menginstruksikan Jeeves untuk menjalankan berbagai kemungkinan use case, memahami batasan dan kekuatannya, mendokumentasikannya, lalu menyimpannya di database Jeeves. Setelah itu bisa dipanggil kembali sebagai konteks
    Sayang memang tidak ada fitur cron, tapi jujur saja, memasukkan prompt yang sudah disiapkan ke Claude sekali sehari bukan hal yang terlalu sulit

  • Yang membuat tulisan ini terasa sangat nyata adalah bahwa Apple benar-benar lengah
    Hari ini saat mengemudi, saya meminta Siri, “telepon orang yang terakhir saya kirimi SMS,” karena ingin membalas seseorang
    Apakah mengejutkan bahwa Siri tidak bisa? Sekarang sudah tidak terlalu mengejutkan. Tetap saja, mengecewakan bahwa ada kesenjangan sebesar ini antara Siri dan model bahasa besar yang paling kurang sekalipun

    • Kemarin malam Siri muncul dan menyarankan untuk menyetel timer 7 menit. Mungkin karena selama hari kerja saya beberapa kali melakukannya untuk hal seperti memasak
      Itu saran yang cukup bodoh. Kalau perlu, saya bisa melakukannya sendiri
  • Awalnya saya kira mereka memakai database sqlite untuk prediksi token berikutnya
    Untuk yang lain, sebenarnya mereka memakai Claude

  • Keren. Saya juga membuat sesuatu yang mirip memakai mcp.run dan task
    https://docs.mcp.run/tasks/tutorials/telegram-bot
    Untuk memori, walau belum terlihat di tutorial ini, saya membuat pantry [0], dan juga membuat servlet untuk itu [1]. Lalu saya mengubah prompt agar terlebih dahulu memeriksa apakah ada percakapan untuk chat ID yang diberikan, lalu menyimpan hasilnya di sana
    Hal bagusnya, Anda bisa menambahkan servlet apa pun ke registry dan membuat bot sekuat yang Anda inginkan
    [0] https://getpantry.cloud/
    [1] https://www.mcp.run/evacchi/pantry
    Sebagai catatan, saya bekerja di Dylibso :o)