Orkas Orkas
Beranda Blog Arsitektur
Arsitektur

Menulis Ulang Yayasan Agen: Sebuah Refactor Ground-Up dari Orkas

Bagaimana Orkas membangun kembali fondasi agennya di seluruh garis rilis 1.0: runtime dalam proses, rotasi penyedia, orkestrasi obrolan grup yang dinamis, hosting terbuka, memori, dan evolusi diri.

Ketika produk agen AI matang, hal yang paling mahal bukanlah fitur - itu adalah fondasinya. Artikel ini membahas refactor ground-up yang dilakukan Orkas di seluruh garis rilis 1.0-nya - perombakan penuh pemanggilan model, loop agen, orkestrasi multi-agen, dan ekosistem alat - dan pertukaran di balik setiap keputusan.

Versi pendek Untuk apa penulisan ulang itu Hasilnya adalah aplikasi yang dapat Anda instal hari ini: sumber terbuka di bawah MIT, lokal-pertama, dan berjalan pada kunci penyedia Anda sendiri jika Anda mau.
Unduh Orkas — gratis

Mengapa menyentuh fondasinya

Orkas adalah sebuah Ruang kerja agen AI desktop pertama lokal: semua pekerjaan agen berjalan di dalam proses pada mesin pengguna sendiri, data hidup secara lokal, dan sinkronisasi cloud ujung ke ujung terjadi sesuai permintaan. Fitur menumpuk dengan cepat di versi awal - perpustakaan keterampilan, basis pengetahuan, konektor, multi-agen gaya obrolan grup - tetapi semakin jauh kami melangkah, semakin jelas: hambatan sebenarnya bukanlah fitur tunggal, tetapi tiga hal "tingkat dasar".

  1. Jika lapisan panggilan model mengikuti jalan lama percakapan, itu dibelenggu oleh serangkaian asumsi yang salah. Memanggil model besar seolah-olah itu adalah "obrolan satu-pertanyaan-satu-jawaban" menyelundupkan tumpukan default yang masuk akal untuk obrolan tetapi tidak untuk agen: batas token keluaran tetap, panggilan alat serial, batas waktu tersembunyi, penyedia kabel tunggal. Agen adalah aliran jangka panjang yang berjalan puluhan putaran berturut-turut, secara rutin menyentuh jendela konteks, perlu membaca file secara paralel, dan dapat terganggu oleh pengguna kapan saja - setiap kesalahan default tersebut akan menggigit Anda dalam produksi. Lebih buruk lagi, kemampuan paling berharga dari agen desktop - operasi file berbutir halus, pencarian lokal, menjalankan shell, eksekusi multi-pekerja paralel, penyelesaian tugas cakrawala panjang - adalah yang tepat yang ditutup oleh lapisan asumsi ini.

  2. Orkestrasi adalah "perencanaan statis." Versi awal adalah mesin rencana/DAG: pertama-tama model memecah tugas menjadi grafik rencana, kemudian mengirim pelaksana dengan grafik. Kedengarannya rapi, tetapi realitas seorang agen sangat dinamis — membaca satu file mengungkapkan bahwa Anda perlu mengubah arah, dan hasil dari satu sub-tugas menentukan siapa langkah selanjutnya. Membekukan keputusan ke dalam grafik yang dibuat sebelumnya berarti setiap "rencana tidak dapat mengikuti kenyataan" harus ditambal di dalam pelaksana.

  3. Ekosistem adalah katalog tertutup. Keterampilan hanya bisa datang dari pasar resmi, konektor adalah katalog berkode keras, dan alat agen eksternal yang sudah ada di mesin pengguna adalah kotak hitam lengkap untuk Orkas. Seorang pengguna yang ingin memasukkan proyek pihak ketiga, server MCP mereka sendiri, atau memiliki agen yang sudah ada di mesin mereka memanggil kembali ke keterampilan dan basis pengetahuan Orkas — secara arsitektur, tidak ada yang mungkin.

Tesis dari refactor ini sederhana: Mengambil kembali fondasi agen ke tangan kita sendiri. Secara konkret, itu mendarat sebagai empat garis yang terjalin - runtime dalam proses yang dibangun sendiri, lapisan model penyedia-agnostik, orkestrasi obrolan grup yang dinamis, dan perpindahan dari katalog tertutup ke host terbuka. Mari kita melalui mereka satu per satu.

1. Membawa kemampuan agen pengkodean penuh ke desktop

Desktop adalah halaman rumah agen — di sini ada sistem file nyata, shell asli, toolchain lokal asli. Asisten yang hanya bisa mengobrol membuang-buang lingkungan; yang sebenarnya memanfaatkan keuntungan desktop adalah Set kemampuan agen pengkodean lengkap: file membaca dan menulis ke rentang karakter, pencarian lintas file, menjalankan bash dan alat sistem, memutar beberapa pekerja secara paralel, dan pemecahan masalah cakrawala panjang untuk terus menjalankan lusinan giliran sampai tugas yang kompleks benar-benar selesai.

Hasil inti dari refactor ada tepat untuk membawa set kemampuan ini Secara alami ke dalam proses Orkas sendiri — runtime agen dalam proses yang berdiri sendiri, dapat dimuat secara dinamis (disebut Agen-inti Dalam kode). Ini bukan pembungkus obrolan lain; ini adalah mesin agen Orkas yang mengendalikan dirinya sendiri.

Keputusan arsitektur utama adalah untuk Membaginya menjadi dua lapisan:

  • Lapisan mesin (paket mandiri): Mesin agen murni — loop panggilan alat, peristiwa streaming, pemadatan konteks, klasifikasi kesalahan dan coba lagi, abstraksi penyedia, kotak pasir, pemindaian keterampilan, memori, evolusi diri. Itu Tidak tahu apa-apa Tentang bisnis Orkas mana pun: tidak membaca direktori data bisnis, tidak memahami format file percakapan, dan tidak pernah menyentuh IPC.
  • Lapisan adaptor (di dalam proses utama): Kabel mesin ke Orkas — kegigihan sesi, rotasi penyedia, izin alat, registri keterampilan, konektor, basis pengetahuan, berbagai alat generasi. Ini menerjemahkan acara asli mesin ke dalam bentuk acara Orkas sendiri, sehingga lapisan bisnis hanya melihat antarmuka yang stabil.

Batas mesin/adaptor ini adalah akar dari semua fleksibilitas yang mengikuti. Mesin dapat diuji dan berevolusi secara independen; lapisan adaptor dapat dengan aman menyerap kompleksitas khusus Orkas (rotasi, pendinginan, kotak pasir, izin) tanpa mencemari mesin. Tinjauan arsitektur tim merangkumnya dalam satu baris: Ini adalah kompleksitas yang diperoleh — jangan menggabungkannya.

Apa sebenarnya set kemampuan itu

Memegang runtime di tangan kita sendiri bukan tentang pamer; ini tentang membiarkan agen benar-benar "mengotori tangannya" di desktop. Kumpulan kemampuan jatuh ke dalam kira-kira empat kelompok:

  • Operasi berkas berbutir halus dan pencarian lokal. read_file Mendukung pembacaan berdasarkan rentang karakter dan mengekstrak teks secara otomatis dari dokumen PDF / Office; edit_file Melakukan penggantian "string lama → string baru" yang tepat dan membutuhkan pembacaan sebelum penulisan; write_file Mendaratkan artefak dan simpan catatannya; stat_file Ukuran probe; search_files Menemukan dengan nama/glob, grep_files Mencari konten di seluruh file. Grup ini memungkinkan agen "menggali kode, mengubah file" di ruang kerja nyata seperti seorang insinyur, alih-alih hanya dapat menelan dan memancarkan seluruh blok.
  • Bash dan alat sistem. Eksekutor shell kotak pasir, dengan mode eksekusi latar belakang (tugas panjang terlepas dari giliran saat ini, log masuk ke file) dan gerbang bertingkat risiko untuk operasi berbahaya. Sebagian besar pengaruh agen desktop justru berasal dari kemampuan untuk secara langsung memerintahkan toolchain sistem.
  • Multi-pekerja paralel. Dalam satu putaran, alat hanya-baca independen berjalan secara bersamaan; pada tingkat tugas, komandan juga dapat mengeluarkan sub-tugas independen ke beberapa pekerja secara paralel (lihat Bagian 3). Paralel dengan tempat yang aman adalah kunci untuk mengompresi "tugas cakrawala panjang" ke waktu jam dinding yang dapat diterima.
  • Penalaran cakrawala panjang dan penyelesaian tugas. Sebuah loop yang dapat menjalankan puluhan putaran berturut-turut, mengelola konteksnya sendiri, pulih dari kesalahan, dan tidak pernah terjebak berputar di tempat - ini adalah garis pemisah antara "menyelesaikan pekerjaan yang kompleks" dan "menjawab pertanyaan."

Bagaimana itu dibuat tingkat produksi dalam istilah teknik

"Menulis lingkaran Anda sendiri" terdengar seperti meminta masalah, dan itu memang membawa biaya pemeliharaan. Tetapi apa yang dibelinya adalah kontrol berbutir halus atas seluruh siklus hidup agen. Kontrol itu tidak abstrak — ini adalah serangkaian peningkatan konkret, masing-masing sesuai dengan apakah salah satu kemampuan di atas "bertahan" dalam produksi:

  • Jendela konteks nyata + kompak hanya pada 80%. Mesin membaca setiap model Asli Jendela konteks (termasuk model jendela jutaan token) dan memicu pemadatan hanya ketika penggunaan mencapai 80% - daripada secara konservatif mulai dari 60% dan membuang 40% dari konteks yang berguna. Ada juga pagar pembatas "tanpa pemadatan": jika ekor yang ditahan sudah memenuhi jendela (katakanlah, hasil pembacaan file yang sangat besar duduk di ekor), pemadatan tidak dapat membebaskan apa pun, jadi itu hanya mencatat peringatan dan melompat, tidak pernah memutar panggilan ringkasan yang terbuang. Apakah tugas cakrawala yang panjang dapat "mengingat apa yang terjadi sebelumnya" semuanya bermuara pada ini.

  • Alat hanya-baca yang berdekatan secara paralel. Ketika model menyalakan file baca, file pencarian, dan pencarian web - beberapa alat hanya-baca independen - dalam satu giliran, mesin mengelompokkan yang dapat diparelkan yang berdekatan untuk berjalan secara bersamaan; alat tulis adalah penghalang alami dan menjaga urutan yang dinyatakan. Panggilan alat dan hasilnya dilakukan secara ketat dalam urutan yang dinyatakan, sehingga konkurensi tidak pernah melanggar protokol. Alat hanya-baca yang paling umum berubah dari serial ke paralel dalam satu goresan, dan waktu jam dinding seluruh kumpulan turun secara nyata.

  • Baca-sebelum-tulis + kontrol konkurensi yang optimis. Sebelum mengedit file, Anda harus membacanya terlebih dahulu; mesin mencatat garis dasar untuk file yang dibaca dan memeriksa garis dasar tidak melayang pada waktu pengeditan. Ketika pekerja paralel mengubah file yang sama sekaligus, yang kalah mendapatkan kesalahan "basi" yang jelas alih-alih secara diam-diam menimpa perubahan satu sama lain. Dengan banyak pekerja yang beroperasi di ruang kerja yang sama secara paralel, perlindungan ini sangat diperlukan.

  • Gangguan tengah berjalan segera terlipat. Ketika pengguna menambahkan baris lain saat agen setengah jalan, mesin melipat pesan antrian itu Ke giliran saat ini Masukan di batas tool-loop, alih-alih menunggu untuk memutarnya sebagai giliran terpisah. Ini mengubah "kursus yang benar saat berjalan" menjadi interaksi alami.

  • Deteksi loop. Ketika panggilan alat yang sama berulang berturut-turut, mesin pertama-tama mendorong (pada ke-3) dan kemudian berhenti keras (pada ke-5); tanda tangan yang berbeda mengatur ulang hitungan - variasi yang sah seperti paginasi/jajak pendapat tidak akan salah. Ketika model macet, itu tidak lagi diam-diam membakar token.

  • Melepaskan hard cap pada output putaran utama. Output putaran utama tidak lagi disematkan ke batas kecil, sehingga laporan panjang dan pengeditan besar tidak terpotong secara diam-diam; panggilan tambahan (pemadatan, refleksi) masih secara konservatif menggunakan batas kecil.

Ada satu detail yang sangat "lokal" yang patut disebutkan: Estimasi token untuk teks campuran Cina-Inggris. Perkiraan umum kurang menghitung percakapan Cina murni dua atau tiga kali; mesin memperlakukan karakter Cina dan Inggris secara berbeda berdasarkan kelas karakter, yang membuat ambang batas pemadatan dapat dipercaya. Itulah hal yang tidak akan terpikirkan oleh SDK generik untuk Anda.

Secara keseluruhan, perbaikan ini menjawab "mengapa tidak hanya menggunakan SDK off-the-shelf": Karena kemampuan terkuat dari agen desktop kebetulan hidup di lapisan yang tidak diekspos oleh SDK; untuk menjadikannya tingkat produksi, loop harus berada di tangan Anda sendiri.

2. Menjaga model selalu online: pembungkus penyedia berlapis-lapis

Tujuan dari lapisan model adalah satu kalimat: Tidak peduli apa yang salah dengan kunci yang diberikan, penyedia yang diberikan, atau jaringan yang diberikan, pergantian percakapan pengguna ini harus bertahan jika memungkinkan. Untuk itu, lapisan adaptor menumpuk beberapa pembungkus di atas abstraksi penyedia mesin - rotasi, pendinginan, pendaftaran, adaptasi eksternal.

Desain yang paling penting adalah bahwa Rotator duduk di bawah pelari. Mesin menulis pesan pengguna ke dalam sesi persisten sebelum memanggil penyedia; jika Anda mencoba ulang/rotasi pada tingkat mesin, Anda akan mengirimkan kembali pesan pengguna atau harus menulis seluruh pengembalian sesi. Dengan menempatkan rotator di bawah mesin, pesan pengguna ditulis tepat sekali, dan "coba lagi dengan kandidat lain" benar-benar transparan untuk status sesi.

Penilaian rotator juga tertahan, berpusat pada garis Acara konten pertama:

  • Sebuah kegagalan Sebelum Model mengeluarkan konten substantif apa pun (panggilan teks/alat) — aman untuk beralih ke kandidat berikutnya;
  • Setelah peristiwa konten pertama dipancarkan — berhenti berputar dan biarkan kesalahan menyebar, karena model mungkin sudah berjalan penuh, dan mengulanginya akan mengulangi efek samping.

Klasifikasi kesalahan memutuskan "putar, jangan putar, atau coba lagi." Tingkat akun Kegagalan seperti kegagalan auth, saldo tidak mencukupi, pembatasan tarif, langganan kedaluwarsa — tandai cooldown dan putar; Jaringan sementara Kegagalan seperti pengaturan ulang koneksi — tidak ada cooldown, coba lagi tanpa status beberapa kali di tempat; sementara permintaan yang cacat, kebijakan konten, dan server 5xx — yang akan gagal sama dengan kunci lain — langsung lewat tanpa berputar. Cooldown adalah sepuluh menit, Dalam proses, tidak persisten Petunjuk: itu hanya sinyal jangka pendek, tidak layak untuk ditulis ke disk pada setiap kegagalan, dan memulai ulang proses adalah saat yang tepat untuk melakukan pemeriksaan ulang.

Di sisi "daftar" penyedia, refactor meratakan tiga jenis sumber menjadi satu abstraksi terpadu:

  • LLM yang dikelola Orkas: Proxy sisi server, siap digunakan setelah masuk, dengan perutean server antara model teks/gambar;
  • Bawa kunci Anda sendiri: Penyedia model besar arus utama standar;
  • Adaptor sambungan langsung eksternal: Sekelompok model yang membutuhkan koneksi langsung atau membawa penagihan mereka sendiri, disesuaikan dengan tangan ke antarmuka penyedia yang sama.

Untuk lapisan di atas, semua ini muncul hanya sebagai satu stabil (provider, model) Pasangan — rotasi, cooldown, dan adaptasi eksternal semuanya tersembunyi di dalam lapisan adaptor.

3. Obrolan grup sebagai orkestrasi: dari rencana statis-DAG hingga komandan-dalam-lingkaran

Ini adalah bagian yang paling "menghubungkan kembali otak Anda" dari refactor.

Model lama adalah Perencanaan statis: model pertama-tama menghasilkan rencana/DAG dan eksekutor menjalankan grafik. Model baru merobek grafik itu sepenuhnya dan menggantinya dengan sebuah Dinamis, orkestrasi obrolan grup komandan-dalam-loop.

Metaforanya adalah sebuah Ruang obrolan grup:

  • Yang Komandan Adalah tuan rumah ruangan, bukan middleware yang tidak terlihat;
  • Pekerja agen Adalah kelas satu, anggota yang setara di ruangan itu;
  • Semua interaksi adalah pesan asinkron, diantre melalui Satu bus pesan tunggal (Tidak ada jalur pribadi untuk fan-out paralel).

"Pengiriman" komandan bukanlah sebuah @somebody Ditulis dalam prosa — sebuah tulisan LLM @AgentA Dalam teks badan hanyalah penurunan harga dari data pelatihan, dan tidak dapat dipercaya. Sinyal pengiriman yang sebenarnya adalah sebuah Panggilan alat terstruktur, dan setelah refactor itu menyatu menjadi tiga tindakan yang jelas secara semantik:

  • dispatch_to — kirim agen untuk berlari hingga selesai dan mengembalikan hasilnya, dengan sintesis komandan. Beberapa tugas independen dapat dilakukan secara bersamaan.
  • run_worker — sub-tugas yang dimiliki komandan itu sendiri, dengan hasil yang dikembalikan secara sinkron; pekerja anonim adalah "tangan" komandan (tidak terlihat oleh pengguna), sementara pekerja yang disebutkan namanya adalah spesialis yang terlihat.
  • hand_off_to — Tangan Percakapan Ke Agen; komandan melangkah keluar, dan agen menjawab pengguna secara langsung tanpa sintesis di atas giliran ini.

Mengapa obrolan grup, daripada orkestrator atau pohon sub-agen

Membuat multi-agen ke dalam obrolan grup membawa beberapa manfaat yang tidak dapat didapat oleh pohon orkestrator / sub-agen tradisional:

  • Potongan visibilitas. Setiap pesan hanya ditambahkan ke bagian "mereka yang dapat melihatnya." Ketika seorang pekerja agen memulai, itu hanya memutar ulang bagiannya sendiri, jadi Output besar agen lain tidak akan mencemari konteksnya. Komandan melihat semuanya.
  • Keadaan minimal. Seluruh keadaan inti orkestrasi hanyalah "siapa yang saat ini memegang lantai" ditambah buku besar tugas yang ringan. Tidak ada DAG, tidak ada mesin keadaan yang kompleks.
  • Dapat diputar ulang dan disinkronkan secara alami. Pesan diurutkan secara alami berdasarkan stempel waktu, sehingga pemuatan ulang dan sinkronisasi lintas perangkat keduanya jatuh langsung ke aliran pesan. Ujung ponsel melakukan kendali jarak jauh secara tepat dari aliran ini — Semua komputasi agen berjalan di desktop, dan ponsel hanyalah sebuah render cermin, tidak memerlukan protokol orkestrasi khusus.

Tinjauan arsitektur tim sama-sama blakan pada poin ini: bus obrolan grup ditambah komandan-in-the-loop Adalah Bentuk multi-agen Orkas; menumpuk jalur pengiriman sub-agen paralel lainnya di dalam proses malah akan melanggar invarian "hanya satu jalur pengiriman obrolan grup."

Apa yang baru dalam versi ini: penyerahan interaktif

Bagian terbaru di baris ini adalah Penyerahan agen interaktif.

Titik nyerinya adalah konkret: agen tipe "tutor" mengajarkan pengguna untuk giliran, pengguna ingin terus meminta tindak lanjut, tetapi sistem memaksa lantai kembali ke komandan, meninggalkan pengguna untuk kembali-@ Agen itu untuk setiap baris.

Solusinya adalah sebuah Lantai otoritatif server + penerima yang diputuskan model:

  • Lantai menjadi bidang keadaan persisten, disimpan di seluruh pemuatan ulang, dan menaiki peristiwa perubahan keadaan yang ada ke Sinkronisasi otomatis Sampai akhir - tidak diperlukan jenis acara baru.
  • Setelah komandan menggunakan hand_off_to Untuk memberikan lantai kepada agen interaktif, pengguna berikutnya "tidak-@" pesan pergi Langsung ke agen itu, sampai agen mengembalikannya sendiri atau pengguna memanggil kembali komandan.
  • Tangan agen mengontrol kembali dengan sebuah <handback /> Penanda; penguraian secara ketat memverifikasi kecocokan yang benar (jadi tersesat <handback Muncul dalam prosa tidak salah dibaca sebagai serah terima).
  • Jika ada buku besar tugas yang belum selesai pada waktu kembali, komandan mengambilnya dari buku besar dan melanjutkan.

Ada juga perbaikan pengalaman yang menyertainya — Gelembung lingkaran komandan. Lingkaran "pengiriman → baca hasil → pengiriman lagi" komandan dalam satu giliran digunakan untuk diratakan menjadi satu gelembung, dan saat memuat ulang bahkan akan melompat keluar dari urutan ke bawah. Refactor memotong satu belokan menjadi Beberapa segmen di setiap batas pengiriman yang terlihat, setiap segmen pesan mandiri dengan stempel waktu naik — untuk pertama kalinya pengguna dapat melihat komandan "mengulang melalui orkestrasi," dan urutan muat ulang juga benar.

Akhirnya, dua jaring pengaman yang berjalan di seluruh: Aborsi kelompok adalah jalur pemberhentian tunggal untuk semua aktor (Saat pengguna menekan Stop, setiap sinyal pembatalan pekerja terputus, bahkan dengan sub-pekerja anonim yang dicakup oleh kecocokan fallback); dan yang disebutkan sebelumnya Interupsi-steer, melipat kata seru pengguna di tengah jalan menjadi giliran saat ini.

4. Dari katalog tertutup ke host terbuka

Jika tiga garis pertama adalah tentang membuat fondasi yang kokoh, yang ini adalah tentang membuka semua pintu dan jendela — Mengubah Orkas dari katalog tertutup menjadi tuan rumah terbuka — sambil memegang batas keamanan tanpa memberikan satu inci pun.

Refactor secara sistematis membongkar beberapa titik tersedak "tertutup":

  • Paket eksternal. Pengguna memberikan alamat repositori, dan Orkas menghostingnya secara lokal Kloning kata demi kata ke dalam folder — tidak pernah dinormalisasi, tidak pernah ditulis ulang, tidak pernah disinkronkan ke cloud (karena berisi direktori ketergantungan pihak ketiga). Alat baris perintah mandiri memiliki siklus hidup instal/perbarui/mulai-berhenti, memindai apakah itu "berbentuk keterampilan" (membawa file deskripsi keterampilan) atau "berbentuk CLI" (membawa entri yang dapat dieksekusi), dan menulis metadata ke dalam registri Di luar direktori paket (Jadi pembaruan tarik di masa depan tidak pernah bertentangan). Instalasi ketergantungan melalui konfirmasi dua langkah "tanyakan sekali, ingat"; entri yang dapat dieksekusi mendapatkan shim yang dihasilkan dan disuntikkan ke PATH alat bash, sehingga model dapat memanggil CLI pihak ketiga ini secara langsung.

  • Pemuatan keterampilan multi-root. Titik masuk tunggal untuk eksekusi keterampilan berubah dari mengenali hanya dua akar menjadi empat tingkatan — kustom / pasar / paket eksternal / global — diselesaikan berdasarkan prioritas; skrip di dalam paket eksternal lebih memilih lingkungan ketergantungan yang dibundel paket itu sendiri. Ini adalah titik tersedak dengan risiko regresi tertinggi, dan didukung oleh matriks perlengkapan penuh.

  • Interop keterampilan global. Orkas membaca langsung dari direktori keterampilan global yang telah dipertahankan oleh alat agen lain di mesin pengguna, mencapai interop pada tingkat keterampilan - keterampilan yang dikumpulkan pengguna di satu tempat juga dapat digunakan di Orkas. Pengguna yang menempatkan keterampilan ke dalam direktori itu sendiri adalah otorisasi, sehingga diaktifkan secara default, dengan sakelar master yang tersisa. Deskripsi keterampilan pihak ketiga ini adalah permukaan injeksi prompt yang tidak tepercaya, sehingga mereka melewati pemuat "tingkat terbuka", hanya terlihat oleh komandan, dan Secara struktural tidak dapat memasukkan daftar izin keterampilan agen.

  • MCP yang dikonfigurasi pengguna. Konektor tidak lagi menjadi katalog berkode keras. Pengguna dapat menambahkan server MCP apa pun — formulir HTTP jarak jauh (risiko rendah) atau formulir subproses lokal (risiko tinggi). Formulir itu sendiri adalah permukaan persetujuan (perintah yang diketik pengguna dengan tangan ditampilkan kata demi kata), konfigurasi transportasi (termasuk rahasia) masuk sepenuhnya ke penyimpanan terenkripsi, dan contoh kustom selalu membawa awalan tetap sehingga mereka tidak pernah dapat meniru konektor resmi di katalog.

  • Jembatan terbalik: membiarkan agen eksternal mesin merasakan Orkas secara bergantian. Ini adalah bagian yang paling menarik. Alat agen eksternal yang sudah ada di mesin pengguna dulunya adalah kotak hitam untuk Orkas; sekarang, ketika Orkas mengirim mereka, itu menyuntikkan saluran jembatan yang memungkinkan mereka Secara terbalik Daftar/baca/jalankan keterampilan Orkas, hubungi konektor, dan cari basis pengetahuan. Jembatan berjalan di atas saluran antar-proses lokal (tidak ada port jaringan yang dibuka), diautentikasi dengan kredensial satu kali yang unik per putaran dan dihancurkan saat berjalan berakhir. Setiap panggilan konektor dengan efek samping eksternal melewati dialog konfirmasi pengguna — bukan penilaian baca/tulis heuristik dengan nama alat (yang akan salah di sisi yang terlalu longgar), tetapi satu konfirmasi per (agen, konektor), dengan opsional "selalu izinkan."

  • Postur pengkodean ekor panjang. Pohon keputusan komandan mendapatkan cabang: ketika tidak ada agen/keterampilan/konektor yang cocok, Menilai penyelesaiannya secara langsung dengan bash ditambah skrip pendek, lakukan giliran ini, verifikasi hasilnya, dan secara opsional tawarkan untuk mengkristalkannya menjadi keterampilan khusus. Ini datang dengan eksekusi bash latar belakang (tugas panjang terlepas dari giliran saat ini, log pergi ke file) dan direktori yang diberikan pengguna.

Terbuka, tetapi tidak lepas tangan

Yang paling Anda takuti saat membuka pintu dan jendela adalah angin. Disiplin dari refactor ini: Tidak ada satu pun dari titik tersedak bertelur untuk "tindakan berbahaya" yang disentuh. MCP dimulai dari satu tempat, eksekusi keterampilan melewati satu pelari, dan bash melewati satu eksekutor kotak pasir. Selain itu, beberapa lapisan kedalaman ditumpuk:

  • Operasi file selalu melewati kotak pasir jalur (ruang kerja + lampiran saat ini + direktori yang diberikan pengguna secara eksplisit), sementara direktori kredensial, direktori sistem, dan direktori Orkas sendiri Tidak dapat diberikan;
  • Bantalan berbahaya (eksfiltrasi, penghapusan destruktif, eskalasi hak istimewa, jalur sensitif) memicu konfirmasi izin, dengan keputusan dibagi menjadi "hanya sekali ini / untuk menjalankan ini / tolak," dan mencatat log hanya kategori dan panjang — Tidak pernah teks perintah;
  • Pemasangan paket eksternal Gagal-tutup dan langsung menolak Paket dengan anggota symlink (untuk mencegah penggunaan symlink untuk membaca file sensitif di luar kotak pasir ke dalam lingkup), dan sumber klon dibatasi pada daftar izin protokol;
  • Semua transportasi/rahasia pembawa kredensial dienkripsi saat diam, dan kredensial jembatan diisolasi per putaran;
  • Distribusi sumber terbuka / yang dihosting menghilangkan kemampuan eksklusif host dengan aturan pemangkasan.

Dalam satu kalimat: Setiap tindakan pengguna yang eksplisit (instal / berikan / kirim formulir / klik konfirmasi) adalah kredensial persetujuan, dan setiap persetujuan terbatas pada batas yang layak.

5. Menjadi lebih pintar di seluruh sesi: memori dan evolusi diri

Perombakan pondasi juga mengulang dua subsistem yang "membuat agen lebih pintar semakin banyak digunakan," keduanya mengikuti disiplin teknik yang sama — Mati secara default, dibatasi, dapat diamati.

Memori lintas sesi Menggunakan pengambilan hibrida: pencarian semantik vektor + pencarian kata kunci (BM25), digabungkan melalui RRF (fusi peringkat timbal balik) untuk menghindari kegagalan saluran tunggal; itu mendarat di penyimpanan lokal (dengan indeks teks lengkap). Memori hadir dalam dua jenis — catatan agen sendiri dan profil preferensi pengguna — masing-masing dengan tutup karakter, dipindai untuk ancaman injeksi sebelum menulis, dan Disuntikkan beku Ke dalam prompt sistem di awal setiap giliran. Seluruh sistem memori hanya berfungsi untuk membuat agen memahami pengguna saat ini dengan lebih baik; data selalu tetap lokal, dan pengguna dapat melihat, mengedit, dan mengekspornya kapan saja di pengaturan.

Evolusi diri Adalah perpustakaan keterampilan agen-pribadi (disimpan secara terpisah dari perpustakaan keterampilan bersama platform) ditambah lapisan refleksi metakognitif. Mesin memutuskan apakah akan mencerminkan dengan satu set Sinyal tertimbang: koreksi pengguna (bobot tertinggi), pemulihan dari kesalahan non-sepele, kompleksitas tugas, kelemahan yang diketahui dipicu atau diatasi, ketidakefektifan keterampilan... refleksi hanya menyala ketika sinyal tertimbang melebihi ambang batas. Refleksi itu sendiri adalah sebuah Tugas periodik latar belakang (Kira-kira satu putaran setiap 12 jam, cooldown beberapa jam, fallback multi-hari) yang menggunakan model kecil murah untuk membaca ringkasan aktivitas terbaru dan memutuskan apakah akan membuat/menambal keterampilan dan memperbarui "profil kompetensi" agen.

Titik keamanan yang paling penting: Evolusi diri diaktifkan hanya untuk sesi yang memiliki agen yang terikat secara eksplisit — sesi komandan default tidak berkembang. Refleksi memiliki batas token ganda (hitungan + total), kegagalan satu agen tidak memblokir yang lain, dan biaya per-lari didorong sangat rendah. Buat agen lebih pintar, tetapi jangan biarkan dia melarikan diri.

Filosofi teknik: kompleksitas yang diperoleh — jangan menyederhanakannya

Tim menjalankan beberapa putaran tinjauan arsitektur selama refactor, dan satu kesimpulan terus berulang, layak untuk ditarik sendiri: Membedakan "hipertrofi organisasi" dari "kompleksitas yang diperoleh," dan hanya menyentuh yang pertama.

  • Beberapa strategi penggabungan mesin sinkronisasi, loop agen yang dibuat sendiri, pembungkus penyedia berlapis-lapis, batas kendali jarak jauh seluler — ini terlihat rumit, tetapi setiap lapisan mendapatkan keuntungannya (konsistensi akhir multi-perangkat, integrasi mendalam, rotasi multi-kunci, batas akhir yang diputuskan produk). Secara paksa "menyederhanakan" mereka hanya akan kehilangan data dan mengacaukan lapisan.
  • Yang benar-benar harus disentuh adalah "modul dewa" dan duplikasi lokal: mengekstraksi fungsi murni tanpa negara dari bus obrolan grup yang membengkak (perakitan prompt, alat komandan, giliran CLI), dan meruntuhkan pola "dialog konfirmasi" yang diduplikasi beberapa kali menjadi satu komponen bersama.

Apa yang mendukung penilaian semacam ini adalah serangkaian disiplin keras yang ditulis ke dalam dokumen kendala proyek: batas (proses tunggal, IPC sebagai satu-satunya jalur, runtime hanya dapat dimuat secara dinamis), pelapisan (arah ketergantungan setiap lapisan), sumber kebenaran tunggal (kategori, taksonomi telemetri, domain), dan "audit prompt" wajib pada setiap komitmen yang menghadap prompt. Apa yang memungkinkan fondasi dirombak tanpa runtuh bukanlah desain yang cerdas — invarian ini ditahan terus menerus.

Menutup

Satukan empat garis melalui, dan apa yang ditukarkan oleh refactor awal ini ke Orkas adalah fondasi agen yang Terkendali sendiri, penyedia-agnostik, diatur secara dinamis, terbuka ke luar, dan mampu berevolusi sendiri:

  • Mesin/adaptor dua lapis dalam proses runtime yang membawa satu set lengkap kekuatan agen pengkodean - operasi file, pencarian lokal, alat sistem, multi-pekerja paralel, pemecahan cakrawala panjang - secara asli ke desktop dan membuat masing-masing tingkat produksi;
  • Lapisan model berlapis-lapis yang menjaga percakapan tetap hidup melalui turbulensi kunci/penyedia/jaringan sebanyak mungkin;
  • Gaya obrolan grup, orkestrasi multi-agen komandan-dalam-loop yang menukar "perencanaan statis" dengan "keputusan dinamis," dan untuk pertama kalinya membuat serah terima antar agen terasa alami;
  • Ekosistem yang berpindah dari katalog tertutup ke host terbuka, dengan paket eksternal, keterampilan global, MCP khusus, dan jembatan terbalik semuanya terbuka - sementara titik tersedak spawn tidak bergerak satu inci pun;
  • Dan memori dan evolusi diri yang mati secara default, dibatasi, dan dapat diamati.

Fitur dapat ditambahkan satu per satu, tetapi fondasi hanya layak untuk dirombak secara serius sekali. Setelah selesai, apa pun yang Anda bangun di atas akan berjalan lebih cepat - dan itulah hasil yang diikuti oleh refactor ini.