Hampir semua produk AI yang Anda lihat punya satu sakelar: nyala atau mati. Satu sakelar untuk seluruh agen, dan sakelar yang dimatikan berarti “bot ini tidak pernah bicara”, yang dinyalakan berarti “bot ini akan banyak bicara”. Untuk komunitas, dua-duanya salah.
Yang komunitas butuhkan bukan sakelar. Yang dibutuhkan adalah tombol per jenis pekerjaan — dan aturan yang jelas tentang siapa yang menang ketika dua aturan bertabrakan. Itu seluruh isi otonomi per aksi.
Tiga anak tangga
| Tangga | Artinya | Yang dibutuhkan |
|---|---|---|
| draft | Armada boleh menulis pesannya, tapi tidak ada yang terjadi sebelum manusia membaca dan menyetujuinya. | Persetujuan kursi manusia atas teks persisnya. |
| opt-in-auto | Armada boleh menjalankan kelas itu sendiri, tanpa kartu untuk tiap contoh. | Grant hidup yang menanggungnya — dan grant itu bisa dicabut kapan saja. |
| never | Kelas itu tidak terjadi. | Tidak ada. Ini lantai: hanya pengeditan file pack yang bisa mengubahnya. |
Empat aturan membuat tangga ini nyata. Default-nya tolak: kelas yang tidak pernah dideklarasikan berperilaku sebagai never, jadi kunci yang kosong bukan celah. Never adalah lantai: tidak ada operasi runtime yang melebarinya. Penyempitan selalu menang:langit-langit organisasi, beku kanal, gerbang partner, dan input anggota semuanya hanya bisa menarik sebuah kelas ke bawah. Dan input anggota mempersempit jalur otomatis — “boleh, lanjut” yang diketik di grup chat adalah masukan untuk usulan, tidak pernah grant.
Tangga itu dihitung per kelas aksi, bukan per agen
Satu agen bisa memegang banyak kelas, dan tiap kelasnya punya jawaban sendiri. Di pack operasi acara, inilah yang sebenarnya tertulis:
| Kelas aksi | Peran | Tangga |
|---|---|---|
observe.read | ketiganya | opt-in-auto — membaca, tanpa keluar ke mana pun. |
draft.promote | event-ops, engagement | draft |
rsvp.chase | engagement | draft |
draft.reminder | event-ops | draft |
nudge.no_show | engagement | draft |
answer.question | engagement | draft |
commit.individual-message | engagement | draft |
commit.channel-post | engagement | draft — ditahan di tingkat organisasi. |
report.assemble | event-ops | draft |
moderate.flag | moderator | opt-in-auto — menandai saja, orangnya yang bertindak. |
member.notify-flagged | moderator | draft — orang yang dilaporkan diberi tahu, setelahnya. |
promote.cross-community | engagement | draft — ditahan di tingkat organisasi. |
Perhatikan polanya. Semua kelas yang mengirim pesan ke satu anggota ada di draft: rsvp.chase, nudge.no_show, commit.individual-message. Yang boleh jalan sendiri adalah yang tidak menyentuh siapa pun: membaca, menandai, menyusun laporan agregat. Dua kelas anggota lain tetap opt-in-auto — member.notify-optout dan member.notify-human — karena keduanya memberitahukan hal yang memang diminta anggota itu sendiri.
Never adalah ketiadaan, bukan penolakan
Ini detail yang sering hilang: di pack operasi acara, whatsapp | sendtidak ada di toolset. Bukan disetel draft, bukan dikunci — absen. Dan moderator tidak memegang hapus, ban, maupun mute. Bedanya penting: kelas yang absen tidak bisa dihidupkan grant apa pun, sementara kelas yang ditolak hanya menunggu satu grant.
Konsekuensinya praktis: siapa pun yang membaca pack bisa langsung melihat apa yang tidak boleh dilakukan armada. Tidak ada yang perlu ditanya.
Grant sekali dan grant selalu
Grant adalah izin dari kursi manusia untuk satu kelas aksi, dan ada dua jenis yang sengaja tidak digabung:
allow_once— habis terpakai setelah satu pemakaian. Bentuk yang tepat untuk kali pertama Anda membiarkan sebuah kelas berjalan sendiri: setujui satu kejadian, lihat hasilnya.allow_always— terus menanggung kelas itu, danwajib menyebut cakupannya. Grant always tanpa cakupan yang dinyatakan ditolak. Untuk promosi lintas komunitas, cakupan itu partner, kanal, dan jendela waktunya.
Alasan cakupan wajib disebut: “selalu” hanya bermakna kalau ada batas yang menempel. Acara berikutnya bukan acara yang Anda setujui. Grant juga bisa dicabut kapan saja, tanpa alasan dan tanpa jeda, dan grant yang sudah dipakai atau dicabut tidak bisa dipakai lagi.
Langit-langit organisasi, dan siapa yang menang saat bertemu
Di atas pack ada satu tingkat lagi: manifest organisasi. Di situ berdirifloor — misalnya batas pesan per anggota per 24 jam — danautonomy ceiling per kelas aksi. Pack operasi acara misalnya ditahan di draft untuk commit.channel-post dan untukpromote.cross-community.
Arahnya sederhana dan hanya satu arah: yang lebih sempit menang. Organisasi boleh mempersempit kelas yang dideklarasikan pack, dan boleh mengisi kekosongan yang tidak pernah ditulis pack — dengan asal nilainya lebih ketat. Tapi organisasi tidak boleh melebar kelas, dan tidak boleh menghidupkan kembali kelas yang pack buat absen. Kalau dua tingkat itu tidak bisa diseragamkan, sistemnya gagal dengan aman.
Perlindungan anggota: jam hening, batas harian, dan satu stop
Tiga lapis ini berlaku apa pun yang terjadi di tingkat otonomi:
- Jam hening — 21:00 sampai 07:59 di zona waktu anggota sendiri. Bukan jam organiser, bukan jam server. Di luar jendela itu, commit ditolak dengan kode
quiet_hours. - Batas harian per anggota — jumlah commit ke anggota itu dalam jendela bergulir 24 jam, dihitung lintas kanal, bukan per kanal (
member_cap_exceeded). Kemitraan tidak menjadi kuota kedua. - Satu stop yang mengalahkan grant apa pun — baris milik anggota sendiri, berlaku lintas kanal, di luar jalur eskalasi, dan tidak ada API yang bisa membersihkannya. Di pack operasi acara, presedensinya tertulis eksplisit: anggota di atas organiser. Grant apa pun tidak mengalah.
Dan satu lapis lagi yang berlaku pada setiap pesan yang menyasar anggota:baris pengungkapan kanonik. Armada wajib menyertakan satu kalimat baku dalam dua bahasa, dan kalimat itu hidup di dalam revisi yang Anda setujui — bukan ditempel saat pengiriman. Gerbangnya menolak commit yang revisinya tidak memuatnya, dengan kode disclosure_missing, dan penolakannya berbunyi: pengungkapan yang ditulis sendiri, seakan-akan, bukan pengungkapan.
Kalimatnya sendiri, dua bahasa:
ID: pesan ini dikirim oleh asisten otomatis komunitas {community} — bukan oleh manusia. balas di sini untuk eskalasi ke organiser.
EN: this message was sent by the automated assistant of {community} — not a human. reply here to escalate to the organiser.Bedanya dengan kalimat “ini dikirim oleh AI” yang dibuat-buat: kalimat kanonik bisa diprediksi, jadi anggota maupun pembaca bisa tahu seperti apa pengungkapan yang benar — dan bisa tahu ketika pengungkapan itu tidak ada.
Contoh: satu minggu acara di pack operasi acara
Untuk melihat tangganya bekerja, ambil satu siklus acara dari pack operasi acara. Fase-fasenya berurutan: draft → scheduled →promoting → t-minus-7 → t-minus-1 →running → recap. Armada mengusulkan di tiap fase, dan tiap usulannya berakhir di kursi manusia:
| Fase | Kelas | Yang terjadi |
|---|---|---|
promoting | draft.promote | Draf promosi acara menunggu persetujuan. |
t-minus-7 | rsvp.chase | Chasing RSVP yang belum konfirmasi, sebagai draf. |
t-minus-1 | draft.reminder | Pengingat H-1 ke yang sudah mengonfirmasi, sebagai draf. |
running | nudge.no_show | Nudge 1:1 ke yang terdaftar tapi belum hadir, sebagai draf. |
recap | report.assemble | Rangkuman. Nama anggota tidak pernah masuk laporan eksternal. |
Ada satu penolakan yang disengaja di siklus itu: armada mencoba mengirim pesan individual dari peran event-ops dengan kelascommit.individual-message. Runtime menolak denganclass_unavailable — absen, bukan ditolak — dan grant apa pun tidak akan menghidupkannya kembali.
Perhatikan apa yang terjadi pada penolakan itu: ia tercatat di log. Penolakan adalah sebuah outcome, dan jejak yang hanya mencatat keberhasilan tidak bisa memberi tahu Anda seberapa dekat sistem dengan melakukan sesuatu yang tidak Anda mau.
Setelah Anda menyetujui salah satu draf, otorisasi terbit untuk revisi persis itu, lalu transport diminta mengirim — dan transport menolak. Yang kembali adalah hand-off: teksnya, penerima persisnya, dan alasannya.
Jalankan satu siklus nyata
Panduan langkah demi langkah: apa yang armada usulkan, apa yang Anda setujui, dan apa yang masuk ke log.
Buka panduan siklus acara →Batas jujurnya
Otonomi per aksi mengatur siapa yang harus menyetujui sebelum sesuatu terjadi. Itu bukan hal yang membuat produk ini mengirim. Pada versi 0, transport menolak, dan yang kembali adalah hand-off berisi teks dan penerima persis — untuk Anda kirim sendiri. Kami tidak menulis “terkirim” di mana pun di situs ini.
Efeknya terhadap anggota juga belum terukur. Kami belum pernah bertanya pada seorang anggota, jadi kami tidak mengklaim hand-off membuat siapa pun merasa lebih dihargai, lebih terlibat, atau lebih diperhatikan.
Versi lengkap aturannya ada di metodologi, termanya di glosarium, dan kodenya terbuka di repositori open-source.