<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog Maguyva</title><description>Penerangan teknikal mendalam tentang kecerdasan kod MCP, seni bina ejen AI, dan pengajaran daripada membina platform carian kod pelbagai bahasa.</description><link>https://maguyva.ai/ms/blog</link><language>ms</language><atom:link href="https://maguyva.ai/ms/rss.xml" rel="self" type="application/rss+xml"/><item><title>Konteks yang mengembara bersama anda</title><link>https://maguyva.ai/ms/blog/context-that-travels</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/context-that-travels</guid><description>Pengindeks Cursor sangat baik di dalam Cursor. Maguyva ialah peta MCP yang dihoskan yang boleh disoal oleh ejen yang sama daripada editor, CLI dan CI lain.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Pengindeks Cursor sangat baik di dalam Cursor. Pelengkapan tab, penyuntingan sebaris, sembang, dan ejen dalam tetingkap itu sudah bersandar pada indeks projek yang dijalankan Cursor untuk ruang kerja yang dibuka. Jika Cursor ialah satu-satunya permukaan tempat anda menulis, dan indeks itu sudah menemui fail yang betul, kekallah di situ. Itu ialah kes jujur ‘kekal di tempat anda berada’, dan ia layak menjadi ayat pertama halaman ini.&lt;/p&gt;
&lt;p&gt;Tulisan ini membincangkan separuh lain daripada minggu biasa. Repositori yang sama turut dibuka dalam Claude Code, disoal daripada Codex CLI, disemak pada mesin kedua, atau disoal oleh ejen yang berjalan dalam CI. Persoalannya bukan ‘pengindeks mana lebih baik’. Persoalannya ialah sama ada peta yang dipercayai ejen dalam satu tetingkap adalah peta yang sama yang dipercayainya dalam tetingkap seterusnya.&lt;/p&gt;
&lt;p&gt;Maguyva ialah peta yang mengembara bersama anda itu. Ia adalah lapisan konteks pangkalan kod MCP jauh. Ejen menyoalnya dengan cara yang sama seperti ia menyoal mana-mana alat MCP lain. Hasil kembali sebagai laluan berperingkat dengan nombor baris. Cursor kekal sebagai editor. Konteks itulah yang bergerak.&lt;/p&gt;
&lt;h2 id=&quot;untuk-apa-pengindeks-cursor&quot;&gt;Untuk apa pengindeks Cursor&lt;/h2&gt;
&lt;p&gt;Pengindeksan terbina dalam Cursor wujud supaya sembang, ejen dan carian di dalam editor boleh mengambil kod yang relevan berbanding hanya bergantung pada apa yang muat dalam tetingkap konteks mentah model. Itu reka bentuk yang betul untuk IDE. Indeks ini adalah asli kepada Cursor. Ia bukan pelayan MCP dan tidak boleh dicapai daripada klien lain.&lt;/p&gt;
&lt;p&gt;Beginilah cara ia berfungsi, seperti yang diterangkan dalam dokumentasi awam Cursor dan penjelasan Cursor sendiri pada masa penulisan ini: laluan carian utama bukan lagi indeks embedding awan. Pasukan Cursor menyatakan di forum komuniti mereka bahawa carian semantik/berasaskan embedding khusus sedang dikurangkan demi mendapatkan semula berasaskan grep, kerana model masa kini sudah cukup baik meneroka pokok yang hidup dengan sendirinya. Sebagai gantinya ada Instant Grep, indeks carian tempatan yang dibina daripada n-gram, senarai terbalik dan penapis Bloom, disimpan dalam jadual carian yang dipetakan ke memori, supaya pertanyaan diselesaikan pada mesin pembangun sendiri berbanding pada pelayan.&lt;/p&gt;
&lt;p&gt;Indeks itu sendiri hidup dalam direktori &lt;code&gt;.git/cursor/&lt;/code&gt; milik repositori sendiri, disauhkan pada commit git tertentu; perubahan sejak commit itu berlapis di atasnya berbanding mencetuskan imbasan baharu, dan indeks hanya dibina semula apabila keadaan tempatan telah menyimpang jauh daripada apa yang menjadi asas pembinaannya. Kerana ia terletak di dalam &lt;code&gt;.git&lt;/code&gt;, ia tidak pernah dijejaki dan tidak pernah di-push — padam folder itu, dan indeks hilang. &lt;code&gt;.gitignore&lt;/code&gt; dihormati kerana pembinaannya, kerana hanya kandungan yang dijejaki git layak, dan &lt;code&gt;.cursorignore&lt;/code&gt; dikuatkuasakan pada laluan bacaan. Tiada lagi langkah embedding di sisi pelayan atau pangkalan data vektor jauh pada laluan itu. Dokumentasi terdahulu menerangkan reka bentuk berbantukan awan — penyulitan chunk, penyegerakan melalui pokok Merkle, penggunaan semula indeks antara ahli pasukan — dan pasukan Cursor sendiri sejak itu berkata reka bentuk itu sedang dikurangkan, jadi tulisan ini tidak lagi menerangkannya sebagai semasa.&lt;/p&gt;
&lt;p&gt;Kekuatan yang menonjol di dalam editor ialah subejen Explore milik Cursor. Ia boleh melancarkan beberapa carian selari dalam tetingkap konteksnya sendiri pada model yang lebih pantas dan hanya mengembalikan penemuan yang relevan, supaya perbualan utama tidak membengkak dengan hasil carian. Itu kekuatan sebenar di dalam editor. Kekalkan ia.&lt;/p&gt;
&lt;p&gt;Ruang kerja pelbagai punca disokong: konteks setiap folder yang dibuka tersedia untuk Agent. Sesetengah ciri bergantung git, seperti worktree, dilumpuhkan dalam persediaan pelbagai punca, dan Cloud Agents langsung tidak menyokong ruang kerja pelbagai punca.&lt;/p&gt;
&lt;p&gt;Tiada satu pun daripada ini menjadi sebab untuk meninggalkan Cursor. Ia adalah penerangan tepat tentang peta yang sangat baik di tempat ia hidup.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-sebenarnya-dimaksudkan-mengembara-bersama-anda&quot;&gt;Apa yang sebenarnya dimaksudkan ‘mengembara bersama anda’&lt;/h2&gt;
&lt;p&gt;Sesebuah peta mengembara bersama anda apabila soalan yang sama mengembalikan jenis jawapan yang sama, dengan petikan yang boleh anda buka, daripada lebih daripada satu klien.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dalam Cursor: ‘Di manakah &lt;code&gt;parseConfig&lt;/code&gt; ditakrifkan, dan siapa yang memanggilnya?’&lt;/li&gt;
&lt;li&gt;Dalam Claude Code, pada repo yang sama: soalan yang sama.&lt;/li&gt;
&lt;li&gt;Dalam Codex CLI, pada mesin semakan yang tidak pernah membuka tetingkap Cursor: soalan yang sama.&lt;/li&gt;
&lt;li&gt;Dalam ejen CI yang bertutur MCP: soalan yang sama, terhadap snapshot yang dihoskan sama.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jika setiap permukaan membina indeks persendiriannya sendiri, anda tidak mempunyai satu peta. Anda mempunyai beberapa cache yang semakin menyimpang. Indeks editor mungkin terkini untuk pokok di cakera. Sesi CLI mungkin ketinggalan sehari. Kerja CI mungkin melihat checkout yang berbeza. Dan ejen itu tetap akan kedengaran yakin.&lt;/p&gt;
&lt;p&gt;Pengindeks Cursor tidak dimaksudkan untuk menyelesaikan itu. Kerana ia hidup di dalam editor, konteks yang dibinanya adalah untuk editor itu. Pembaca yang juga memerlukan CLI, saluran paip CI, atau editor yang berbeza memerlukan alat berasingan untuk permukaan tersebut. Itu fakta skop, bukan kecacatan. Maguyva ialah alat berasingan itu.&lt;/p&gt;
&lt;p&gt;Bilangan bahasa yang diterbitkan untuk pengindeks Cursor tidak dinyatakan dalam bahan yang boleh digunakan tulisan ini. Maguyva menerbitkan sokongan untuk lebih daripada 279 bahasa dan teknologi berasaskan teks. Harga Cursor juga tidak disalin di sini; lihat halaman harga mereka. Maguyva mengenakan bayaran mengikut ruang kerja, bukan mengikut tempat duduk, dengan pelan yang diterbitkan pada $0, $19, $49 dan $149 bergantung pada liputan yang diindeks dan saiz ruang kerja.&lt;/p&gt;
&lt;h2 id=&quot;satu-peta-yang-dihoskan-setiap-klien-mcp&quot;&gt;Satu peta yang dihoskan, setiap klien MCP&lt;/h2&gt;
&lt;p&gt;Maguyva ialah pelayan MCP jauh. Anda menyambungkan GitHub, memilih repositori, dan saluran paip awan membina simbol, tepi graf dan peta berperingkat. Anda menambah kunci API pada konfigurasi MCP klien yang sudah anda gunakan. Maguyva mempunyai panduan persediaan untuk 24 klien MCP yang didokumenkan — termasuk Cursor — dan boleh berhubung dengan klien serasi MCP lain yang menyokong konfigurasi standard.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/ms/for-cursor&quot;&gt;Halaman persediaan Cursor&lt;/a&gt; ialah laluan khusus editor jika di situlah anda bekerja. Pelayan yang sama menjawab Claude Code, VS Code, Windsurf, Codex CLI dan selebihnya. Anda tidak menukar editor. Anda memberikan setiap ejen permukaan alat yang sama: 11 alat MCP yang berorientasikan pelanggan merentasi carian, simbol, analisis kebergantungan, pengambilan fail, konteks repositori dan aliran kerja alat utiliti deterministik. Carian semantik, struktur, graf dan teks digabungkan menjadi hasil berperingkat.&lt;/p&gt;
&lt;p&gt;Itulah manfaat kemudahalihan. Petikan yang anda semak dalam Cursor pagi ini mempunyai bentuk yang sama dengan petikan yang akan dikembalikan Codex CLI malam ini. Laluan fail dan nombor baris. Buka. Jika salah, anda akan melihatnya. Jika betul, perubahan seterusnya mempunyai tempat untuk mendarat. Dakwaan yang diluluskan ialah perubahan berhalusinasi yang lebih sedikit, bukan janji bahawa setiap perubahan adalah betul.&lt;/p&gt;
&lt;p&gt;Kesegaran diterbitkan. Snapshot mempunyai cap masa, supaya ejen tahu versi pokok mana yang sedang dibacanya. Kadar pembinaan semula adalah harian pada pelan percuma dan setiap jam pada pelan berbayar. Batasan yang jujur ialah kerja tempatan yang tidak diselaraskan: perubahan yang hanya wujud dalam pokok kerja masih belum berada dalam peta yang dihoskan. Batasan ini adalah sama tidak kira klien mana anda gunakan untuk menyoal, dan itulah maksud sebenarnya. Hanyut antara klien bukan lagi batasan tersembunyi kedua.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/ms/docs&quot;&gt;Dokumentasi&lt;/a&gt; memberikan gelung pengaktifan yang terpakai untuk setiap klien: indeks repo yang sudah anda kenali, sambungkan klien, tanya satu soalan yang boleh anda sahkan. Lakukan itu sekali dalam Cursor. Lakukan lagi daripada CLI yang benar-benar anda gunakan pada hari semakan. Jika kedua-dua jawapan memetik pengendali yang sama, peta itu benar-benar telah mengembara bersama anda.&lt;/p&gt;
&lt;h2 id=&quot;bagaimana-kedua-dua-peta-wujud-bersebelahan&quot;&gt;Bagaimana kedua-dua peta wujud bersebelahan&lt;/h2&gt;
&lt;p&gt;Gunakan kedua-duanya. Ia bukan alternatif dalam erti halaman perbandingan.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kekalkan pengindeks Cursor dihidupkan untuk projek pada cakera. Biarkan Explore, Instant Grep dan ejen di dalam editor menggunakannya. Gelung itu adalah asli dan pantas.&lt;/li&gt;
&lt;li&gt;Tambahkan Maguyva sebagai pelayan MCP dalam Cursor supaya sesi yang sama juga boleh menyoal peta ruang kerja yang dihoskan. Cursor ialah klien Maguyva yang didokumenkan. Anda tidak memilih satu indeks lalu memadam yang lain.&lt;/li&gt;
&lt;li&gt;Tambahkan pelayan Maguyva yang sama kepada Claude Code, Codex CLI, atau mana-mana klien MCP lain yang menyentuh repo. Satu bentuk kunci API. Satu ruang kerja.&lt;/li&gt;
&lt;li&gt;Jika ejen CI serasi MCP, arahkan ia ke pelayan yang sama. Ia akan membaca snapshot bercap masa yang sama seperti yang dibaca komputer riba.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Indeks editor kekal sebagai alat terbaik untuk ‘apa yang ada pada cakera dalam tetingkap ini, sekarang juga’. Peta yang dihoskan ialah alat terbaik untuk ‘bagaimana rupa ruang kerja ini bagi setiap ejen yang akan menyentuhnya hari ini’. Ayat-ayat itu tidak bersaing.&lt;/p&gt;
&lt;p&gt;Kuota ruang kerja diterbitkan di &lt;a href=&quot;https://maguyva.ai/ms/pricing&quot;&gt;halaman harga&lt;/a&gt;: repo, baris yang diindeks dan pengguna, dikenakan bayaran mengikut ruang kerja. Ejen dan manusia berkongsi bilangan pengguna yang sama. Mulakan secara percuma dengan repo yang sudah boleh anda nilai. Naikkan ruang kerja hanya selepas petikan bertahan daripada sentuhan dengan pokok itu.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-tidak-didakwa-halaman-ini&quot;&gt;Apa yang tidak didakwa halaman ini&lt;/h2&gt;
&lt;p&gt;Ia tidak mendakwa bahawa pengindeks Cursor lemah, tidak lengkap, atau sebab untuk menukar editor. Ayat pertama tulisan ini menyatakan sebaliknya.&lt;/p&gt;
&lt;p&gt;Ia tidak mendakwa bahawa Maguyva menggantikan Instant Grep atau subejen Explore. Itu ciri-ciri Cursor. Ia kekal dalam Cursor.&lt;/p&gt;
&lt;p&gt;Ia tidak mereka-reka bilangan bahasa, angka kependaman, atau penjimatan token untuk mana-mana produk. Angka yang tidak diketahui kekal tidak diterbitkan.&lt;/p&gt;
&lt;p&gt;Ia tidak berpura-pura bahawa kerja tempatan yang belum di-push berada dalam peta yang dihoskan. Snapshot bercap masa menjadikan batasan itu kelihatan. Ia tidak menghapuskannya.&lt;/p&gt;
&lt;p&gt;Ujian itu biasa sahaja. Indeks repo yang sudah anda kenali. Tanya satu soalan yang boleh anda sahkan, mula-mula dalam Cursor, kemudian dalam klien MCP kedua. Konteks yang mengembara bersama anda ialah petikan yang sama di kedua-dua tempat.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// same map, wherever you opened it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>MCP</category><category>Portability</category></item><item><title>Peta dahulu, semakan kemudian</title><link>https://maguyva.ai/ms/blog/map-first-review-second</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/map-first-review-second</guid><description>Sauhkan ejen pengekodan pada peta repo sebelum ia menulis. Biarkan Greptile menyemak pull request selepas itu. Pasangan yang saling melengkapi, bukan pengganti.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dua tugas berbeza berada di kedua-dua belah pull request. Sebelum ejen menulis, ia memerlukan peta pokok yang bakal diubahnya. Selepas ejen membuka PR, sesuatu perlu membaca perubahan itu berbanding selebihnya sistem dan meninggalkan komen yang boleh dijadikan tindakan oleh manusia.&lt;/p&gt;
&lt;p&gt;Tugas-tugas ini kelihatan serupa dari jauh kerana kedua-duanya melibatkan ‘memahami pangkalan kod’. Ia bukan produk yang sama. Satu menjawab ‘di manakah perubahan ini sepatutnya mendarat?’. Satu lagi menjawab ‘apa yang dirosakkan diff ini yang akan terlepas pandang oleh linter baris demi baris?’. Mencampurkannya menghasilkan draf pertama yang lebih teruk dan semakan yang lebih bising.&lt;/p&gt;
&lt;p&gt;Tulisan ini ialah panduan aliran kerja bersama. Maguyva ialah peta yang disoal ejen dahulu. Greptile ialah ejen semakan yang mengulas PR selepas itu. Pasangan ini saling melengkapi mengikut binaan: Maguyva tidak menyemak pull request, dan Greptile tidak menggantikan lapisan konteks yang digunakan ejen untuk menulisnya.&lt;/p&gt;
&lt;h2 id=&quot;kenapa-pembahagian-ini-berguna&quot;&gt;Kenapa pembahagian ini berguna&lt;/h2&gt;
&lt;p&gt;Ejen pengekodan yang bermula daripada prasyarat latihan ditambah beberapa fail yang ditampal akan mereka-reka laluan yang munasabah dan mengeditnya. Itu adalah kegagalan ‘fail yang salah’, dan ia adalah masalah pengambilan semula. Maguyva ialah lapisan konteks pangkalan kod MCP jauh: pengambilan semula semantik, struktur (AST), graf/kebergantungan dan teks digabungkan menjadi hasil berperingkat, ditambah carian simbol dan pengambilan fail. Jawapan yang berasas kembali sebagai &lt;code&gt;path/file.ext:line&lt;/code&gt;, supaya anda boleh menolak kesilapan sebelum tampalan wujud. Dakwaan itu kekal sederhana: perubahan berhalusinasi yang lebih sedikit. Model masih boleh meneka. Cuma langkah pertama berhenti menjadi tekaan.&lt;/p&gt;
&lt;p&gt;Greptile ialah ejen semakan kod berkuasa AI. Dengan kata-kata mereka sendiri, ia secara automatik menyemak setiap pull request dengan pemahaman penuh tentang pangkalan kod, dan meletakkannya bertentangan dengan linter tradisional yang menyemak fail secara berasingan berbanding keseluruhan sistem. Persediaan terdiri daripada memasang aplikasi GitHub atau GitLab dan memilih repositori. Tiada indeks tempatan yang perlu anda jalankan. Pengehosan ialah Greptile Cloud (mereka menyatakan pematuhan SOC 2 Type II, dengan laporan yang tersedia atas permintaan), dengan pilihan hos sendiri yang ditawarkan kepada perusahaan.&lt;/p&gt;
&lt;p&gt;Aliran bernombor mereka sendiri ialah: sambung dan bina graf kebergantungan bagi setiap fungsi, kelas dan kebergantungan; pada setiap pull request, analisis perubahan menggunakan graf repo penuh itu dan terbitkan penemuan sebagai komen PR dengan pembetulan yang dicadangkan, dalam kira-kira tiga minit; setiap komen boleh menyerahkan isu kepada ejen pengekodan yang sudah digunakan pasukan. Mereka juga menyatakan membaca komen PR manusia terdahulu dari semasa ke semasa untuk mempelajari standard kod sesebuah pasukan dan mengurangkan cadangan yang bising. Sistem pembelajaran mereka, menurut mereka sendiri, memerlukan 2-3 minggu untuk menyesuaikan diri.&lt;/p&gt;
&lt;p&gt;Itu adalah semakan, bukan penulisan draf. Kekuatan Greptile ialah konteks graf repo penuh terhadap perubahan yang sudah mendarat dalam PR, diikuti gelung tertutup yang menghantar penemuan itu ke Claude Code, Codex, Conductor, Cursor, atau Devin. Kekuatan Maguyva ialah peta berperingkat yang disoal ejen sebelum perubahan itu ditulis. Gunakan kedua-duanya. Jangan minta salah satu melakukan kerja yang lain.&lt;/p&gt;
&lt;p&gt;Integrasi produk pihak pertama antara Maguyva dan Greptile tidak dinyatakan. Anda juga tidak memerlukannya. Maguyva bercakap dengan ejen melalui MCP. Greptile bercakap dengan GitHub atau GitLab melalui aplikasi mereka sendiri. Mereka bertemu di pull request. Tiada skrip pelekat, tiada cron yang menyalurkan satu alat ke alat yang lain. Pasangan ini tidak memerlukan bash kerana setiap produk sudah duduk pada permukaan yang menjadi miliknya.&lt;/p&gt;
&lt;h2 id=&quot;apa-ini-bukan&quot;&gt;Apa ini bukan&lt;/h2&gt;
&lt;p&gt;Ini bukan penghancuran Greptile. Ini bukan halaman ‘tukar penyemak anda’. Greptile dilancarkan di Hacker News pada 5 Mac 2024 sebagai syarikat Y Combinator W24, dan thread itu adalah cara ramai orang mula-mula mengenali produk ini. Jika begitulah caranya anda menemui mereka, teruskan menggunakan mereka. Halaman ini ialah separuh depan yang hilang daripada gelung itu: mensauhkan ejen terlebih dahulu supaya PR yang dilihat Greptile sudah menyasarkan fail yang betul.&lt;/p&gt;
&lt;p&gt;Bahan pemasaran Greptile diketuai dengan dakwaan kelajuan semakan dan penangkapan pepijat. Anggap itu sebagai dakwaan Greptile sendiri, bukan angka yang disahkan secara bebas. Tulisan ini tidak mengulanginya sebagai fakta.&lt;/p&gt;
&lt;p&gt;Liputan bahasa adalah kejujuran jenis yang sama. Greptile membingkai sokongan sebagai meliputi semua bahasa pengaturcaraan berbanding senarai yang disenaraikan; angka tepat tidak dinyatakan. Maguyva menerbitkan sokongan untuk lebih daripada 279 bahasa dan teknologi berasaskan teks, dengan pembahagian teknikal (AST disokong parser berbanding teks sahaja) di laman sesawang apabila soalannya teknikal. Ini adalah produk berbeza yang membuat dakwaan berbeza. Jangan campurkannya.&lt;/p&gt;
&lt;p&gt;Harga Greptile tidak dinyatakan dalam bahan yang boleh digunakan tulisan ini. Pelan berbayar wujud; lihat halaman harga mereka. Maguyva mengenakan bayaran mengikut ruang kerja, bukan mengikut tempat duduk. Pelan bermula secara percuma. &lt;a href=&quot;https://maguyva.ai/ms/pricing&quot;&gt;Halaman harga&lt;/a&gt; menyenaraikan peringkat yang diterbitkan jika anda memerlukan angka ruang kerja.&lt;/p&gt;
&lt;h2 id=&quot;aliran-kerja&quot;&gt;Aliran kerja&lt;/h2&gt;
&lt;p&gt;Tiga peringkat yang dinamakan. Laksanakan mengikut susunan ini. Jangan langkau mana-mana daripadanya pada kali pertama anda mencuba pasangan ini.&lt;/p&gt;
&lt;h3 id=&quot;1-konteks-maguyva&quot;&gt;1. Konteks Maguyva&lt;/h3&gt;
&lt;p&gt;Indeks satu repositori yang sudah anda kenali. Sambungkan klien MCP tempat anda sudah menulis — Claude Code, Cursor, Codex CLI, VS Code, Windsurf, atau klien serasi MCP lain. Maguyva mempunyai panduan persediaan untuk 24 klien MCP yang didokumenkan dan boleh berhubung dengan klien lain yang menyokong konfigurasi MCP standard.&lt;/p&gt;
&lt;p&gt;Tanya satu soalan yang boleh anda nilai sebelum sesiapa menulis satu baris. ‘Di manakah tamat tempoh sesi dikendalikan, dan apa yang memanggilnya?’ adalah langkah pertama yang lebih baik daripada ‘betulkan auth’. Tuntut petikan. Buka hasil &lt;code&gt;file.ext:line&lt;/code&gt;. Ikuti simbol itu. Sahkan kebergantungan yang bakal anda sentuh.&lt;/p&gt;
&lt;p&gt;Maguyva mendedahkan 11 alat MCP yang berorientasikan pelanggan merentasi carian, simbol, analisis kebergantungan, pengambilan fail, konteks repositori dan aliran kerja alat utiliti deterministik. Empat mod pengambilan semula digabungkan menjadi hasil berperingkat; &lt;code&gt;find_symbol&lt;/code&gt; ialah alat berasingan apabila anda sudah tahu namanya. &lt;a href=&quot;https://maguyva.ai/ms/docs&quot;&gt;Dokumentasi&lt;/a&gt; menerangkan laluan terpendek: mula secara percuma, indeks repo yang sudah anda kenali, sambungkan klien, kemudian tanya satu soalan yang boleh anda sahkan.&lt;/p&gt;
&lt;p&gt;Snapshot mempunyai cap masa, supaya ejen boleh memberitahu versi pokok mana yang sedang dibacanya. Batasan yang jujur ialah kerja tempatan yang tidak diselaraskan. Jika perubahan hanya wujud dalam pokok kerja dan belum di-push, peta yang dihoskan masih belum mengandungi perubahan itu. Fail arahan (&lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;) masih mempunyai tempat di sini, untuk konvensyen dan apa yang tidak sepatutnya disentuh. Ia bukan peta yang hidup. Gunakan untuk tingkah laku. Gunakan Maguyva untuk fakta.&lt;/p&gt;
&lt;p&gt;Jangan benarkan ejen membuka PR sebelum petikan bertahan sentuhan dengan repo. Pintu gerbang itu adalah keseluruhan tujuan peringkat ini.&lt;/p&gt;
&lt;h3 id=&quot;2-pr-ejen&quot;&gt;2. PR ejen&lt;/h3&gt;
&lt;p&gt;Ejen yang sama kini menulis perubahan dalam klien yang sudah anda bayar. Maguyva bukan editor mahupun penyemak. Ejen masih menghasilkan diff. Anda masih membuka pull request pada GitHub atau GitLab sebagaimana yang sudah anda lakukan.&lt;/p&gt;
&lt;p&gt;Apa yang sepatutnya berbeza ialah fail pertama. PR sepatutnya menamakan pengendali yang benar-benar melaksanakan tingkah laku itu, pemanggil yang akan rosak, dan ujian yang akan gagal jika perubahan itu salah. Jika peringkat 1 dilangkau, peringkat 3 akan membazir komennya pada perubahan yang mendarat di pakej yang salah. Greptile masih boleh menemui masalah sistemik. Ia tidak sepatutnya turut perlu pulih daripada laluan yang berhalusinasi.&lt;/p&gt;
&lt;p&gt;Kekalkan PR terhad. Fail pertama yang berasas bukan lesen untuk menulis semula modul. Pasangan yang saling melengkapi ini berfungsi apabila ejen melakukan satu kerja dengan peta, kemudian meminta penyemak melakukan kerja lain pada diff yang terbatas.&lt;/p&gt;
&lt;h3 id=&quot;3-semakan-greptile&quot;&gt;3. Semakan Greptile&lt;/h3&gt;
&lt;p&gt;Greptile sudah bersambung dengan repositori melalui aplikasi GitHub atau GitLab. Pada pull request baharu, ia menganalisis perubahan menggunakan graf repo penuh yang dibinanya, dan menerbitkan penemuan sebagai komen dengan pembetulan yang dicadangkan. Bahan mereka sendiri meletakkan langkah ini pada kira-kira tiga minit.&lt;/p&gt;
&lt;p&gt;Baca komen sebagaimana anda akan membaca rakan sepasukan yang teliti: buka lokasi yang dipetik, putuskan sama ada penemuan itu benar, kemudian bertindak. Di mana Greptile menawarkan ‘Fix with your Agent’, ia menghantar isu — laluan fail, nombor baris, kod yang dicadangkan — kepada Claude Code, Codex, Conductor, Cursor, atau Devin. ‘Fix All’ menghantar semua isu dalam semakan itu sekali gus. Mereka juga menyediakan Greptile MCP dan pemalam Claude Code untuk penyerahan itu. Maguyva tiada dalam senarai sasaran bernama itu; ketiadaan itu bukan masalah. Maguyva sudah melakukan kerjanya di peringkat 1. Ejen pengekodan yang menulis PR itu ialah pihak yang sepatutnya menerima muatan pembetulan.&lt;/p&gt;
&lt;p&gt;Harapkan bunyi bising pada 2-3 minggu pertama sementara sistem pembelajaran Greptile menyesuaikan diri dengan komen yang benar-benar ditinggalkan pasukan anda. Itu jadual yang mereka nyatakan, bukan kecacatan pasangan itu. Semakan manusia kekal dalam gelung itu. Greptile ialah langkah pertama automatik, bukan butang gabung.&lt;/p&gt;
&lt;p&gt;Jika komen Greptile menunjuk kepada fail yang tidak pernah disoal ejen di peringkat 1, itu isyarat yang berguna. Sama ada peta terlepas pandang seorang pemanggil, atau ejen melangkau satu petikan. Betulkan draf itu mengikut komen. Jangan lumpuhkan penyemak itu.&lt;/p&gt;
&lt;h2 id=&quot;cara-mengekalkan-pelengkap-ini-jujur&quot;&gt;Cara mengekalkan pelengkap ini jujur&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Maguyva sentiasa dahulu. Semakan PR dengan fail yang salah tetap sahaja semakan fail yang salah.&lt;/li&gt;
&lt;li&gt;Greptile sentiasa selepas itu. Draf yang dipetik dengan baik masih memerlukan bacaan diff pada peringkat keseluruhan sistem.&lt;/li&gt;
&lt;li&gt;Jangan minta Maguyva menerbitkan komen PR. Ia tidak melakukan itu.&lt;/li&gt;
&lt;li&gt;Jangan minta Greptile menjadi lapisan pengambilan semula pertama ejen sementara ia masih memilih laluan. Itu bukan kerja yang direka untuk aplikasi GitHub atau GitLab mereka.&lt;/li&gt;
&lt;li&gt;Jangan reka-reka saluran paip bash yang ‘menyegerakkan’ kedua-duanya. PR ialah antara muka itu.&lt;/li&gt;
&lt;li&gt;Sahkan kedua-dua belah secara berasingan. Indeks repo yang sudah anda kenali. Tanya satu soalan yang boleh anda sahkan. Kemudian buka PR kecil dan baca apa yang sebenarnya dikomen Greptile.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gelung itu menjadi biasa sebaik sahaja diberi nama. Peta dahulu. PR ejen. Semakan selepas itu. Setiap produk kekal pada sisi pull request yang menjadi kepakarannya.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// map first. review second. in that order.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>Workflow</category><category>Code Review</category></item><item><title>Memberikan ejen AI konteks repo besar tanpa pengindeks tempatan</title><link>https://maguyva.ai/ms/blog/large-repo-context-without-a-local-indexer</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/large-repo-context-without-a-local-indexer</guid><description>Cara memberikan ejen pengekodan peta repositori besar yang boleh disoal daripada awan, tanpa menjalankan pengindeks tempatan pada komputer riba anda.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Repositori besar tidak muat dalam tetingkap konteks, dan jika anda pernah mengarahkan pengindeks komputer riba ke monorepo sebenar, anda tahu ia juga tidak muat dengan selesa di situ — RAM melonjak, pengindeksan pertama mengambil masa sejam, dan ejen anda tetap memulakan sesi seterusnya dengan meneka fail mana yang penting.&lt;/p&gt;
&lt;p&gt;Jawapan biasa ialah menjalankan pengindeks di sebelah editor, dan untuk repo yang muat dengan selesa pada satu mesin, itu jawapan yang baik. Jika monorepo anda sudah diindeks dengan pantas dalam Cursor dan itu satu-satunya tempat anda memerlukan peta, tulisan ini tiada apa untuk ditambah — langkau sahaja.&lt;/p&gt;
&lt;p&gt;Tulisan ini membincangkan kes lain — apabila ejen memerlukan peta repo besar yang boleh disoal, dan anda tidak mahu menjalankan pengindeks tempatan untuk mendapatkannya.&lt;/p&gt;
&lt;h2 id=&quot;bila-pengindeks-tempatan-menjadi-alat-yang-salah&quot;&gt;Bila pengindeks tempatan menjadi alat yang salah&lt;/h2&gt;
&lt;p&gt;Indeks tempatan mengandaikan kod itu hidup pada mesin yang menyoalnya, dan pada skala monorepo sebenar, andaian itu tertarik bahkan di dalam satu editor sahaja. Repo itu sekadar lebih besar daripada yang anda mahu kekal ‘panas’ pada komputer riba: anda bekerja dalam satu pakej sementara lingkungan impak berada tiga direktori jauhnya, dan pengindeksan sejuk pertama bagi pokok dua juta baris bukanlah sesuatu yang anda mahu lalui dua kali — sama ada pada mesin anda sendiri, atau pada pelari CI yang tidak pernah mengklon pokok itu sebelum ini. Atau seorang rakan sepasukan sepatutnya boleh menyoal peta yang sama seperti anda, tanpa menunggu mesin mereka sendiri berjuang melalui indeks yang sama.&lt;/p&gt;
&lt;p&gt;Tiada satu pun daripada ini menjadi sebab untuk membuang pengindeks editor yang baik. Ia adalah sebab untuk turut memiliki peta yang dihoskan yang boleh disoal oleh mana-mana ejen anda melalui MCP.&lt;/p&gt;
&lt;p&gt;Dan masalah skala itu lebih mendalam daripada ‘terlalu banyak fail untuk ditampal’. Pada pokok besar, soalan yang menarik hampir tidak pernah ‘tunjukkan saya fail ini’ — sebaliknya fail mana, simbol mana, siapa pemanggil, ujian mana. Ejen yang bermula dengan menyenaraikan &lt;code&gt;src/&lt;/code&gt; dan membaca tiga hasil pertama akan dengan gembira terlepas pengendali dalam &lt;code&gt;apps/api&lt;/code&gt; dan klien yang dijana dalam &lt;code&gt;packages/sdk&lt;/code&gt;. Apa yang anda perlukan ialah pengambilan yang dibina daripada keseluruhan pokok, kemudian diperingkat, kemudian dipetik.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-sebenarnya-dimaksudkan-konteks-repo-besar&quot;&gt;Apa yang sebenarnya dimaksudkan ‘konteks repo besar’&lt;/h2&gt;
&lt;p&gt;Menumpahkan fail ke dalam prompt bukanlah konteks — ia adalah salinan pokok yang lebih kecil dan lebih teruk. Apa yang benar-benar diperlukan ejen anda ialah mengajukan soalan dan mendapatkan jawapan yang dipetik kembali: di mana simbol ini ditakrifkan dan siapa yang memanggilnya, apa yang bergantung pada modul yang saya akan ubah, fail ujian mana yang meliputi tingkah laku ini, dan bagaimana rupa pokok itu &lt;em&gt;sekarang&lt;/em&gt;, bukan suku lepas.&lt;/p&gt;
&lt;p&gt;Jawapan-jawapan itu mesti datang daripada indeks yang dibina daripada repo anda, bukan daripada ingatan model tentang repo orang lain, dan indeks itu mesti hidup di suatu tempat di luar tetingkap konteks ejen. Untuk masalah ini, ia juga sepatutnya hidup di suatu tempat di luar komputer riba anda.&lt;/p&gt;
&lt;p&gt;Satu lagi perkara yang tidak dapat dilakukan fail arahan untuk anda: &lt;code&gt;CLAUDE.md&lt;/code&gt; dan &lt;code&gt;AGENTS.md&lt;/code&gt; ialah tempat yang betul untuk konvensyen dan tingkah laku, tetapi ia bukan peta yang hidup, berperingkat dan boleh disoal bagi pokok dua juta baris. Gunakan peraturan untuk tingkah laku; gunakan kepintaran repo untuk fakta.&lt;/p&gt;
&lt;h2 id=&quot;kami-membina-peta-di-awan-anda-menyoalnya-daripada-mana-mana-klien&quot;&gt;Kami membina peta di awan, anda menyoalnya daripada mana-mana klien&lt;/h2&gt;
&lt;p&gt;Maguyva ialah lapisan konteks pangkalan kod MCP jauh. Anda menyambungkan GitHub, memilih repositori anda, dan boleh berlalu pergi sementara saluran paip awan menghurai pokok, membina simbol dan tepi graf, dan mengekalkan peta berperingkat — tidak pernah memerlukan pengindeks tempatan.&lt;/p&gt;
&lt;p&gt;Apabila anda push kod, fail yang berubah dihurai secara berperingkat, dan lapisan graf serta pemeringkatan dibina semula mengikut jadual: harian pada pelan percuma, setiap jam pada pelan berbayar. Setiap snapshot mempunyai cap masa, supaya ejen anda boleh memberitahu versi pokok mana yang sedang dibacanya. Batasan jujur di sini ialah kerja tempatan yang tidak diselaraskan — perubahan yang hanya wujud dalam pokok kerja anda, tidak pernah di-push, masih belum berada dalam peta yang dihoskan.&lt;/p&gt;
&lt;p&gt;Kemudian anda menyambungkan mana-mana klien yang sudah anda gunakan dengan menambah kunci API pada konfigurasi MCP-nya. Terdapat panduan persediaan untuk 24 klien MCP yang didokumenkan, dan mana-mana klien serasi MCP lain yang menyokong konfigurasi standard juga boleh berhubung. Jika Cursor ialah tempat anda tinggal, &lt;a href=&quot;https://maguyva.ai/ms/for-cursor&quot;&gt;halaman Cursor&lt;/a&gt; menyusuri laluan itu; pelayan yang sama menjawab Claude Code, VS Code, Windsurf, Codex CLI dan selebihnya.&lt;/p&gt;
&lt;p&gt;Anda tidak menukar editor. Anda memberikan ejen anda permukaan alat — 11 alat MCP merentasi carian, simbol, analisis kebergantungan, pengambilan fail dan konteks repositori — dengan liputan lebih daripada 279 bahasa dan teknologi berasaskan teks, yang bermaksud lebih daripada yang anda sangka pada monorepo yang sudah lama berhenti menjadi satu bahasa sahaja.&lt;/p&gt;
&lt;p&gt;Jawapan kembali dengan asas yang kukuh, sebagai laluan fail dengan nombor baris. Carian semantik, struktur, graf dan teks digabungkan menjadi hasil berperingkat, supaya soalan seperti ‘apa yang bergantung pada parseConfig’ tidak memberi anda longgokan grep atau satu petikan semantik sahaja, tetapi segelintir tempat yang benar-benar penting.&lt;/p&gt;
&lt;h2 id=&quot;panduan-konkrit&quot;&gt;Panduan konkrit&lt;/h2&gt;
&lt;p&gt;Jangan mulakan dengan mengindeks keseluruhan syarikat. Ini laluan yang berkesan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pilih satu repositori yang sudah anda kenali dengan baik — pakej yang boleh anda nilai secara manual lebih bernilai daripada pokok terbesar yang anda ada.&lt;/li&gt;
&lt;li&gt;Mulakan secara percuma: 3 repo, 50 ribu baris diindeks, kesemua 11 alat, tiada kuota pertanyaan bulanan. Jika repo perwakilan anda lebih besar, &lt;a href=&quot;https://maguyva.ai/ms/pricing&quot;&gt;halaman harga&lt;/a&gt; menyenaraikan peringkat ruang kerja ($0, $19, $49, $149) mengikut liputan yang diindeks — bukan mengikut bilangan tempat duduk.&lt;/li&gt;
&lt;li&gt;Sambungkan GitHub dan tunggu pengindeksan pertama selesai. Anda tidak mengkompil apa-apa secara tempatan.&lt;/li&gt;
&lt;li&gt;Sambungkan klien MCP — beberapa baris konfigurasi. Maguyva ialah pelayan MCP jauh, jadi tiada pemalam, tiada sambungan, dan tiada editor kedua untuk diguna pakai.&lt;/li&gt;
&lt;li&gt;Tanya satu soalan yang boleh anda sahkan. ‘Apa yang bergantung pada parseConfig?’ atau ‘Di manakah tamat tempoh sesi log masuk dikendalikan?’ Kemudian buka hasil &lt;code&gt;file.ext:line&lt;/code&gt; yang dipetik dan semak berbanding pokok di hadapan anda.&lt;/li&gt;
&lt;li&gt;Hanya selepas petikan bertahan sentuhan itu, anda benarkan ejen mengedit.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jika repo pertama sesuai dengan baik dan pokok anda besar, naikkan ruang kerja untuk sepadan dengan baris yang diindeks dan kadar pembinaan semula anda. Manusia dan ejen berkongsi bilangan pengguna yang sama — Maguyva mengenakan bayaran mengikut ruang kerja, bukan mengikut tempat duduk — jadi menambah ejen ketiga ke dalam gelung tidak membebankan anda apa-apa.&lt;/p&gt;
&lt;p&gt;Ujian pengaktifan adalah sama seperti yang disyorkan &lt;a href=&quot;https://maguyva.ai/ms/docs&quot;&gt;dokumentasi&lt;/a&gt; untuk mana-mana larian pertama: indeks repo yang sudah anda kenali, tanya satu soalan yang boleh anda sahkan. Repo besar tidak mengubah ujian itu; ia hanya menjadikan fail pertama yang salah lebih mahal.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-perlu-diperhatikan-selepas-disambungkan&quot;&gt;Apa yang perlu diperhatikan selepas disambungkan&lt;/h2&gt;
&lt;p&gt;Perhatikan tiga perkara. Kesegaran: pelan berbayar dibina semula setiap jam, pelan percuma setiap hari, dan kerja tempatan yang tidak di-push tidak akan berada dalam peta — itulah pertukaran yang anda terima. Skop: indeks set repo yang mewakili, bukan setiap fork yang diarkibkan; peringkat percuma sengaja disaiz untuk mengetahui sama ada jawapan berbaloi untuk dikekalkan. Dan pengesahan: peta repo besar yang tidak dapat memetik laluan dan nombor baris hanyalah enjin tekaan yang lebih perlahan, jadi jadikan ejen anda menunjukkan lokasi sebelum ia menghantar tampalan.&lt;/p&gt;
&lt;p&gt;Kemudian jalankan ujian yang sama seperti yang akan anda jalankan pada repo kecil. Indeks repo yang sudah anda kenali. Tanya satu soalan yang boleh anda sahkan. Jika peta itu benar, ejen anda berhenti bermula daripada pokok sejuk.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// no laptop got hot building this map.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>MCP</category><category>Indexing</category><category>Monorepos</category></item><item><title>Kenapa ejen pengekodan AI anda berhalusinasi laluan fail</title><link>https://maguyva.ai/ms/blog/why-ai-coding-agents-hallucinate-file-paths</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/why-ai-coding-agents-hallucinate-file-paths</guid><description>Ejen pengekodan AI mereka-reka laluan fail apabila mereka tiada peta sebenar repo itu. Inilah sebab ia berlaku, dan bagaimana asas yang kukuh membawa kepada perubahan berhalusinasi yang lebih sedikit.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tandanya bukan badan fungsi yang salah. Ia adalah perubahan yang yakin pada fail yang tidak wujud, atau pada fail yang wujud tetapi bukan fail yang melaksanakan tingkah laku itu.&lt;/p&gt;
&lt;p&gt;Anda meminta pembetulan tamat tempoh sesi. Ejen membuka &lt;code&gt;src/auth/session.ts&lt;/code&gt;. Laluan itu munasabah. Ia juga salah. Pengendali sebenar hidup dalam &lt;code&gt;apps/api/src/middleware/expiry.ts&lt;/code&gt;, dinamakan semula dua penstrukturan semula yang lalu. Ejen itu tidak menipu anda. Ia melengkapkan rentetan berbentuk laluan berdasarkan prasyarat latihan ditambah apa sahaja yang sudah berada dalam tetingkap konteks.&lt;/p&gt;
&lt;p&gt;Ini ialah corak kegagalan biasa pada repositori sebenar. Model boleh menulis kod. Kesilapannya ialah memilih tempat yang salah untuk menulisnya.&lt;/p&gt;
&lt;h2 id=&quot;kenapa-ejen-mereka-reka-laluan&quot;&gt;Kenapa ejen mereka-reka laluan&lt;/h2&gt;
&lt;p&gt;Ejen pengekodan ialah model ramalan token seterusnya yang dilengkapi alat. Apabila anda berkata ‘betulkan tamat tempoh sesi’, ia mesti menamakan satu fail sebelum ia boleh membaca atau menampal apa-apa. Jika ia belum mempunyai peta yang berasas, ia membina laluan daripada:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Konvensyen penamaan yang pernah dilihatnya dalam repositori lain. &lt;code&gt;src/auth/session.ts&lt;/code&gt; adalah bentuk yang kerap.&lt;/li&gt;
&lt;li&gt;Fail yang sudah berada dalam perbualan, yang mungkin adalah fail yang anda tampal minggu lepas, bukan yang penting sekarang.&lt;/li&gt;
&lt;li&gt;Penyenaraian direktori yang secara kebetulan dijalankannya, tidak lengkap pada pokok yang besar.&lt;/li&gt;
&lt;li&gt;Fail arahan. &lt;code&gt;CLAUDE.md&lt;/code&gt; dan &lt;code&gt;AGENTS.md&lt;/code&gt; memberitahu ejen cara berkelakuan. Ia bukan indeks hidup bagi simbol, pemanggil, atau laluan semasa.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tiada satu pun sumber ini adalah peta repo ini, hari ini. Model itu mengisi jurang dengan cara yang sama ia mengisi mana-mana jurang: dengan kesinambungan berkebarangkalian tinggi. Kesinambungan itu selalunya kelihatan seperti laluan sebenar. Kadangkala fail itu wujud dan terletak di sebelah yang betul. Kadangkala ia wujud pada cabang yang digabungkan bulan lepas. Kadangkala ia tidak pernah wujud.&lt;/p&gt;
&lt;p&gt;Grep tidak menyelamatkan anda di sini jika ejen langsung tidak mencari rentetan yang betul. Ejen meneka satu laluan, kemudian membaca apa yang dikembalikan laluan itu, kemudian mengeditnya. Langkah salah pertama ialah laluan itu, bukan tampalan itu.&lt;/p&gt;
&lt;p&gt;Membaca fail juga bukan perkara yang sama dengan mencari yang betul. Claude Code, Cursor, Codex, dan alat serupa boleh membuka apa sahaja yang anda tunjukkan kepadanya. Persoalannya ialah sama ada mereka secara boleh dipercayai menemui fail yang betul, simbol yang penting, kebergantungan, ujian, dan lingkungan impak sebelum mengedit. Akses fail tanpa peta masih bermula dengan tekaan.&lt;/p&gt;
&lt;h2 id=&quot;mengedit-fail-yang-salah-adalah-masalah-pengambilan-semula&quot;&gt;Mengedit fail yang salah adalah masalah pengambilan semula&lt;/h2&gt;
&lt;p&gt;Anggap laluan yang direka-reka itu sebagai kesilapan pengambilan semula, bukan kecacatan watak.&lt;/p&gt;
&lt;p&gt;Jika ejen perlu mengembalikan &lt;code&gt;path/file.ext:line&lt;/code&gt; sebelum ia dibenarkan mengedit, dua perkara akan berlaku. Pertama, anda boleh membuka petikan itu dan menolak kerja itu dalam sepuluh saat. Kedua, ejen perlu menyoal sesuatu yang benar-benar mengenali pokok itu.&lt;/p&gt;
&lt;p&gt;Itulah kerja lapisan konteks pangkalan kod. Carian semantik sahaja tidak mencukupi. Petikan yang ‘kedengaran seperti tamat tempoh sesi’ masih boleh mendarat dalam pakej yang sudah luput. Anda juga memerlukan teks tepat apabila anda mengetahui rentetan itu, carian simbol apabila anda tahu namanya, carian struktur apabila anda tahu bentuknya, dan graf kebergantungan apabila anda memerlukan pemanggil dan lingkungan impak.&lt;/p&gt;
&lt;p&gt;Maguyva ialah lapisan itu untuk ejen pengekodan yang serasi MCP. Ia bukan editor. Claude Code, Cursor, Codex CLI, VS Code, Windsurf, dan klien MCP lain kekal di tempatnya. Ejen menyoal peta berperingkat sebelum menyentuh satu baris.&lt;/p&gt;
&lt;p&gt;Dakwaan itu sengaja sederhana: perubahan berhalusinasi yang lebih sedikit. Maguyva tidak mengambil daripada model keupayaan untuk meneka. Ia mengubah langkah pertama lalai daripada ‘reka-reka laluan yang munasabah’ kepada ‘minta lokasi berperingkat, yang dipetik’.&lt;/p&gt;
&lt;h2 id=&quot;bagaimana-rupa-jawapan-yang-berasas&quot;&gt;Bagaimana rupa jawapan yang berasas&lt;/h2&gt;
&lt;p&gt;Jawapan yang berguna kepada ‘di manakah tamat tempoh sesi dikendalikan’ bukanlah satu perenggan. Ia adalah senarai lokasi yang ringkas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apps/api/src/middleware/expiry.ts:48&lt;/code&gt; - pengendali&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/web/src/lib/auth-client.ts:112&lt;/code&gt; - pemanggil&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/api/tests/expiry.test.ts:20&lt;/code&gt; - ujian yang akan gagal jika perubahan itu salah&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anda boleh membuka baris-baris ini. Jika salah, anda berhenti. Jika betul, ejen boleh mengedit. Pengesahan itulah intinya, bukan slogan.&lt;/p&gt;
&lt;p&gt;Maguyva mendedahkan 11 alat MCP yang berorientasikan pelanggan merentasi carian, simbol, analisis kebergantungan, pengambilan fail, konteks repositori dan aliran kerja alat utiliti deterministik. Empat mod pengambilan semula (semantik, struktur, graf/kebergantungan, dan teks) digabungkan menjadi hasil berperingkat; carian simbol ialah alat MCP yang berasingan (&lt;code&gt;find_symbol&lt;/code&gt;). Jawapan yang berasas kembali dengan laluan fail dan nombor baris, supaya anda boleh menilainya berbanding pokok di hadapan anda.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/ms/docs&quot;&gt;Dokumentasi&lt;/a&gt; menerangkan laluan terpendek: mula secara percuma, indeks repo yang sudah anda kenali, sambungkan klien, kemudian tanya satu soalan yang boleh anda sahkan.&lt;/p&gt;
&lt;h2 id=&quot;gelung-yang-mengubah-perubahan-pertama&quot;&gt;Gelung yang mengubah perubahan pertama&lt;/h2&gt;
&lt;p&gt;Anda tidak memerlukan agama aliran kerja baharu. Anda memerlukan satu langkah tambahan sebelum tulisan pertama.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tanya satu soalan yang sudah boleh anda nilai. ‘Kod mana yang mengendalikan log masuk dan tamat tempoh sesi?’ lebih baik daripada ‘betulkan auth’.&lt;/li&gt;
&lt;li&gt;Tuntut petikan. Laluan fail dan nombor baris, bukan ringkasan ‘modul auth’.&lt;/li&gt;
&lt;li&gt;Buka fail yang dipetik. Ikuti simbol itu. Sahkan kebergantungan yang bakal anda sentuh.&lt;/li&gt;
&lt;li&gt;Hanya kemudian benarkan ejen menampal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jika langkah 2 tidak mengembalikan apa-apa yang berguna, ejen tiada hak untuk mengimprovisasi laluan. Ia mencari semula, atau anda menunjukkannya. Justeru satu pintu gerbang itulah yang menghasilkan perubahan berhalusinasi yang lebih sedikit. Model itu adalah model yang sama. Peta itulah yang berubah.&lt;/p&gt;
&lt;p&gt;Fail arahan masih penting. Kekalkan ia. Gunakan untuk konvensyen, peraturan semakan, dan apa yang tidak sepatutnya disentuh. Jangan minta ia menjadi indeks. &lt;code&gt;CLAUDE.md&lt;/code&gt; yang menyenaraikan tiga direktori penting akan lapuk seminggu selepas pembahagian pakej. Peta yang boleh disoal dikemas kini apabila repo dikemas kini.&lt;/p&gt;
&lt;p&gt;Kegagalan yang berkaitan ialah fail yang hampir betul: ejen membuka &lt;code&gt;auth.ts&lt;/code&gt; sedangkan tingkah laku hidup dalam &lt;code&gt;auth-client.ts&lt;/code&gt;, atau menampal fail yang dijana berbanding sumber, atau mengedit salinan dalam &lt;code&gt;packages/legacy&lt;/code&gt; kerana nama itu sepadan. Petikan tidak menjadikan kesilapan ini mustahil. Ia menjadikan kesilapan ini kelihatan sebelum diff itu mendarat.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-tidak-akan-dibetulkan-peta-untuk-anda&quot;&gt;Apa yang tidak akan dibetulkan peta untuk anda&lt;/h2&gt;
&lt;p&gt;Bersikap tenang tentang apa yang anda perolehi. Peta yang berasas tidak akan menjadikan setiap perubahan betul — ejen anda masih boleh menulis tampalan yang buruk tepat pada fail yang betul. Jika pangkalan kod anda bersandar pada dispatch dinamik, refleksi, atau monkey-patching, sesetengah carian simbol akan kembali lebih nipis daripada yang anda mahu, kerana itulah yang dilakukan ketaklangsungan masa jalan kepada mana-mana indeks statik. Dan jika anda mengharapkan peratusan — ‘laluan berhalusinasi berkurangan X%’ — anda tidak akan menemuinya di sini, kerana tiada sesiapa boleh mengukur angka itu secara jujur untuk repo anda selain diri anda sendiri.&lt;/p&gt;
&lt;p&gt;Apa yang boleh anda jangkakan adalah lebih sempit dan lebih berguna: ejen berhenti memulakan perubahannya dengan laluan yang diteka. Langkah pertama itu menjadi berasas dalam peta sebenar, dan dari situlah datangnya perubahan berhalusinasi yang lebih sedikit. Segala-galanya selepas petikan itu — membaca diff, menilai tampalan itu — masih kerja anda, sebagaimana ia selalu berlaku.&lt;/p&gt;
&lt;p&gt;Ujian ini hampir tidak membebankan anda apa-apa: indeks repo yang sudah anda kenali dan tanya satu soalan yang boleh anda sahkan. Mulakan dengan laluan yang pernah membakar anda. Jika petikan itu salah, anda akan melihatnya serta-merta. Jika betul, perubahan seterusnya ejen anda mempunyai tempat yang lebih baik untuk mendarat.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// it doesn&apos;t know the file. it knows how to find it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>Hallucination</category><category>Retrieval</category><category>MCP</category></item><item><title>Mengapa Kami Menaik Taraf Carian Kod kepada voyage-4-large</title><link>https://maguyva.ai/ms/blog/upgrading-code-search-to-voyage-4-large</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/upgrading-code-search-to-voyage-4-large</guid><description>Kami mengalihkan embeddings kod kami kepada voyage-4-large — kini berada di puncak leaderboard pengambilan kod RTEB awam. Versi jujurnya: kompromi yang kami pilih, apa yang benar-benar kami indeks, dan mengapa kami membayar untuk embeddings premium.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka penanda aras dalam penulisan ini mencerminkan leaderboard RTEB pada masa penerbitan (Jun 2026). Leaderboard berubah; anggap kedudukan itu sebagai satu cebisan masa, bukan fakta kekal.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Carian semantik hanya sebaik embeddings yang mendasarinya.&lt;/p&gt;
&lt;p&gt;Apabila seorang ejen bertanya kepada Maguyva “di mana kita mengendalikan retry,” ia bukan sedang meng-grep perkataan “retry.” Ia sedang bertanya untuk &lt;em&gt;makna&lt;/em&gt; — gelung backoff, circuit breaker, benda yang membalut panggilan yang tidak stabil. Soalan itu dijawab oleh satu model vektor yang mengubah kod menjadi satu titik dalam ruang dan mencari jirannya. Pilih model yang lebih baik dan setiap pertanyaan semantik dalam produk itu secara senyap menjadi lebih tajam.&lt;/p&gt;
&lt;p&gt;Jadi kami menukar embeddings kami. Setakat Jun 2026, embeddings kod Maguyva berjalan pada &lt;strong&gt;&lt;code&gt;voyage-4-large&lt;/code&gt;&lt;/strong&gt;, menggantikan &lt;code&gt;voyage-code-3&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;penanda-aras-itu&quot;&gt;Penanda Aras Itu&lt;/h2&gt;
&lt;p&gt;Kami tidak membuat keputusan ini berdasarkan perasaan semata-mata. &lt;a href=&quot;https://embedding-benchmark-rteb.hf.space/code&quot;&gt;Retrieval Embedding Benchmark (RTEB)&lt;/a&gt; yang bersifat awam menyusun kedudukan model embedding berdasarkan tugasan pengambilan sebenar, dan pada leaderboard &lt;strong&gt;Code&lt;/strong&gt; miliknya &lt;code&gt;voyage-4-large&lt;/code&gt; berada pada &lt;strong&gt;#1 keseluruhan (90.86)&lt;/strong&gt; — mendahului &lt;code&gt;gemini-embedding-2-preview&lt;/code&gt; (90.26) dan, yang lebih penting, mendahului model yang telah kami gunakan, &lt;code&gt;voyage-code-3&lt;/code&gt; (89.73, #3).&lt;/p&gt;
&lt;p&gt;Itu adalah jurang mutlak yang kecil. Tetapi ia adalah jurang pada arah yang betul, pada satu penanda aras awam, pada tugasan tepat yang kami pedulikan: mengambil kod berdasarkan makna.&lt;/p&gt;
&lt;h2 id=&quot;kompromi-yang-kami-terima-binary-quantization&quot;&gt;Kompromi Yang Kami Terima: Binary Quantization&lt;/h2&gt;
&lt;p&gt;Inilah bahagian yang biasanya ditinggalkan oleh kebanyakan penulisan jenis “kami menaik taraf model kami.”&lt;/p&gt;
&lt;p&gt;Maguyva tidak menyimpan vektor kejituan penuh. Kami menyimpan embeddings yang &lt;strong&gt;binary-quantized&lt;/strong&gt;: setiap vektor berdimensi 2048 dipadatkan menjadi satu signature 2048-bit — &lt;strong&gt;256 byte setiap vektor&lt;/strong&gt;. Signature itu dicari menggunakan jarak Hamming, diindeks dan dipartisikan mengikut tenant.&lt;/p&gt;
&lt;p&gt;Itu ialah kompromi yang disengajakan. Binary quantization mengorbankan sedikit ketepatan pengambilan sebagai pertukaran untuk storan yang jauh lebih kecil dan matematik jarak yang pantas, murah, tanpa pangkalan data vektor berasingan untuk dikendalikan. Untuk sesuatu produk yang mengindeks keseluruhan repositori setiap workspace, ekonomi itu lebih penting daripada memerah pecahan terakhir sesuatu mata penanda aras.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;voyage-4-large&lt;/code&gt; sesuai dengan reka bentuk ini tanpa memaksa migrasi lapisan storan: ia menghasilkan output berdimensi 2048, sama seperti &lt;code&gt;voyage-code-3&lt;/code&gt;, jadi lajur &lt;code&gt;bit(2048)&lt;/code&gt; kami dan laluan carian Hamming tidak berubah. Modelnya menjadi lebih baik; skemanya kekal sama.&lt;/p&gt;
&lt;h2 id=&quot;kod-hanyalah-permulaan&quot;&gt;Kod Hanyalah Permulaan&lt;/h2&gt;
&lt;p&gt;Maguyva adalah satu alat code-intelligence. Tetapi kami juga pengguna pertama produk kami sendiri (customer zero), dan kami menghalakannya kepada sesuatu yang lain: markdown yang hidup dalam repositori kami di sebelah kod. Rekod keputusan seni bina, runbook, kontrak, dokumen kewangan dan polisi — kesemuanya dikawal versi dalam Git, kesemuanya di sebalik MCP server yang sama, satu indeks semantik terhadap &lt;em&gt;dokumen&lt;/em&gt;, bukan sekadar kod sumber.&lt;/p&gt;
&lt;p&gt;Itulah tepat sebabnya keluasan voyage-4-large itu penting. Pada keluarga leaderboard RTEB yang sama ia berada pada &lt;strong&gt;#1 untuk kewangan, #1 untuk penjagaan kesihatan, dan #1 untuk pengambilan teks keseluruhan&lt;/strong&gt; — mendahului Gemini Embedding milik Google, Embed v4 milik Cohere, dan text-embedding-3-large milik OpenAI. (Voyage adalah salah satu pencipta bersama RTEB, jadi kami membacanya sebagai satu isyarat awam yang kuat berbanding pengadil yang sepenuhnya neutral — tetapi ia dibandingkan bersemuka dengan setiap model komersial utama, pada set ujian berasingan yang tidak didedahkan kepada umum.) Indeks yang sama yang menemui fungsi yang tepat untuk seorang ejen turut menemui klausa yang tepat dalam sesuatu kontrak atau baris yang tepat dalam sesuatu polisi — dan pada domain-domain itu, voyage-4-large bukan satu kompromi, ia adalah peneraju.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-kami-membayar-untuk-embeddings-premium&quot;&gt;Mengapa Kami Membayar Untuk Embeddings Premium&lt;/h2&gt;
&lt;p&gt;Terdapat cara yang lebih murah untuk melakukan carian, dan kebanyakannya percuma. Carian leksikal — BM25 dan seangkatan dengannya — memadankan kata kunci, berjalan secara setempat, dan tidak menelan sebarang kos. Model embedding sumber terbuka seperti BGE, Nomic, dan embeddinggemma memberikan capaian semantik yang sememangnya &lt;em&gt;baik&lt;/em&gt;, dan anda boleh self-host ia dengan harga sebiji GPU. Maguyva turut menggunakan sisi percuma itu: setiap pertanyaan menggabungkan carian text, AST, graph, dan semantic. Bahagian yang tidak kami kurangkan kos sehingga menjejaskan kualiti ialah lapisan semantik.&lt;/p&gt;
&lt;p&gt;Kami membayar setiap token untuk embeddings premium — &lt;code&gt;voyage-4-large&lt;/code&gt; — dan bukannya menghoskan sendiri model percuma, atas dua sebab. Pertama, carian kata kunci sahaja tidak dapat menjawab “di mana kita mengendalikan retry” apabila kod itu menyebut &lt;code&gt;backoff&lt;/code&gt; dan &lt;code&gt;circuit breaker&lt;/code&gt; dan tidak pernah menyebut perkataan “retry” — makna adalah keseluruhan intipati embedding, dan pada domain yang kami khidmati model terbuka ketinggalan berbanding model premium: beberapa mata ketinggalan pada teks umum, dan lebih jauh ketinggalan dalam ceruk seperti kod, kontrak, dan kewangan. Kedua, dalam pengalaman kami kualiti pengambilan membentuk jawapan akhir lebih daripada model di hujung sana — seorang ejen yang kuat yang diberikan konteks yang salah masih menjawab dengan salah, dan ia tidak pernah melihat dokumen yang tidak pernah diberikan kepadanya.&lt;/p&gt;
&lt;p&gt;Jadi embeddings premium adalah bil setiap token yang berskala dengan setiap repositori dan dokumen yang kami indeks — dan kami membayarnya dengan sengaja. Untuk hasil yang diperoleh pengguna kami, fungsi yang tepat atau klausa yang tepat, kami rasa kompromi itu berbaloi.&lt;/p&gt;
&lt;h2 id=&quot;bahagian-jujurnya&quot;&gt;Bahagian Jujurnya&lt;/h2&gt;
&lt;p&gt;Dokumentasi Voyage sendiri masih melabelkan &lt;code&gt;voyage-code-3&lt;/code&gt; sebagai model yang dioptimumkan untuk kod. Jadi mengapa beralih?&lt;/p&gt;
&lt;p&gt;Kerana kami membaca penanda aras awam, bukan sekadar jadual model vendor, dan penanda aras itu meletakkan &lt;code&gt;voyage-4-large&lt;/code&gt; di atas untuk pengambilan kod. Ini adalah satu keputusan yang berpandangan jauh: ambil model yang lebih baharu, secara umumnya lebih kuat, dan sahkannya berbanding leaderboard awam pada tugasan yang penting. Kami selesa membuat pertaruhan itu kerana buktinya luas — voyage-4-large bukan sahaja menang pada kod, ia turut mendahului pada kewangan, penjagaan kesihatan, dan pengambilan keseluruhan.&lt;/p&gt;
&lt;h2 id=&quot;asas-yang-tidak-kelihatan&quot;&gt;Asas yang Tidak Kelihatan&lt;/h2&gt;
&lt;p&gt;Setiap tool yang kami dedahkan — carian semantik, pengumpulan konteks tugas, soal jawab berasaskan bukti — akhirnya bergantung kepada retrieval. Apabila retriever bertambah baik, ejen di hujung sana mendapat bukti yang lebih baik, melakukan lebih sedikit langkah yang salah, dan mengasaskan jawapannya pada kod yang tepat — atau klausa yang tepat, atau polisi yang tepat. Model embedding yang lebih tajam bukan satu ciri yang bergemerlapan. Ia ialah asas bagi segala-galanya yang lain, dan kami baru sahaja meninggikannya. Anda tidak akan perasan. Itulah intipatinya.&lt;/p&gt;
</content:encoded><category>Embeddings</category><category>Search</category><category>Architecture</category></item><item><title>Penambahbaikan Kendiri Rekursif Bahasa: Menggilap Kecerdasan Kod Merentasi ~280 Bahasa</title><link>https://maguyva.ai/ms/blog/autonomous-quality-loops-language-grind</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/autonomous-quality-loops-language-grind</guid><description>Kami menyokong kecerdasan kod untuk ~280 bahasa. Tiada manusia yang mampu mengaudit itu secara manual. Jadi kami membina gelung penambahbaikan kendiri rekursif bahasa — semak sampel, LLM-sebagai-penilai, baiki satu perkara, sahkan semula — dan menjalankannya dengan sepasukan ejen terasing sehingga pengekstrakan benar-benar betul, bukan sekadar hijau.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka dalam penulisan ini mencerminkan sistem pada masa penerbitan (Mei 2026). Lihat &lt;a href=&quot;https://maguyva.ai/ms/team&quot;&gt;halaman pasukan&lt;/a&gt; kami untuk angka terkini.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maguyva mengekstrak simbol, rujukan, dan graf kebergantungan daripada kod sumber dalam lebih kurang 280 bahasa. Setiap bahasa adalah handler tree-sitter tersuai — query, heuristik, kes pinggir — dan setiap handler boleh salah secara halus dengan caranya sendiri. Panggilan method dipancarkan sebagai bacaan. Fungsi diatributkan kepada skop pelingkung yang salah. Hubungan yang sebenarnya tidak wujud.&lt;/p&gt;
&lt;p&gt;Anda tidak boleh mengauditnya secara manual. Tiada pasukan yang mampu membaca output pengekstrakan merentasi 280 grammar dan mengesan edge yang buruk. Jadi soalan yang menarik bukanlah “adakah pengekstrakan kami betul” — tetapi “bagaimana anda &lt;em&gt;ketahui&lt;/em&gt; ia salah, pada skala seluas ini, tanpa manusia dalam setiap gelung.” Jawapan kami ialah penambahbaikan kendiri rekursif bahasa: gelung kualiti yang dipacu oleh ejen bahasa, LLM yang bertindak sebagai hakim, dan satu peraturan yang kami terus pelajari semula: hijau tidak sama dengan betul.&lt;/p&gt;
&lt;h2 id=&quot;hijau-bukan-bermakna-betul&quot;&gt;Hijau bukan bermakna betul&lt;/h2&gt;
&lt;p&gt;Setiap bahasa mempunyai suite fixture, dan gate pelepasan menilainya merentasi lima dimensi — ketepatan, integriti struktur, kelengkapan, kualiti, dan prestasi. Sesuatu bahasa menjadi &lt;strong&gt;GREEN&lt;/strong&gt; hanya apabila, pada fixture-nya, precision ≥ 0.95, recall ≥ 0.99, dan F1 ≥ 0.97, dengan sekurang-kurangnya 20 edge yang dijangka untuk keyakinan statistik. Di bawah itu ia menjadi YELLOW atau RED, dan tidak dikeluarkan.&lt;/p&gt;
&lt;p&gt;Gate itu perlu tetapi tidak mencukupi. Fixture mengesahkan terhadap fixture yang &lt;em&gt;kami tulis sendiri&lt;/em&gt;. Ia mengekod kes-kes yang sudah kami fikirkan. Sesuatu handler boleh sempurna pada fixture-nya tetapi masih mengacau-balaukan corak yang hanya muncul dalam kod sebenar — satu idiom macro, method dengan kekangan pada jenis generik, satu ciri bahasa yang tiada siapa menulis fixture untuknya. GREEN bermaksud fixture lulus. Ia tidak bermaksud repositori sebenar diekstrak dengan bersih. Jadi gelung itu perlu meninggalkan fixture dan meneliti kod dalam penggunaan sebenar.&lt;/p&gt;
&lt;h2 id=&quot;gelung-dalaman-semak-sampel-nilai-baiki-buktikan&quot;&gt;Gelung dalaman: semak sampel, nilai, baiki, buktikan&lt;/h2&gt;
&lt;p&gt;Gelung teras berjalan satu bahasa pada satu masa:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ┌──────────────────────────────────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  1. corpus run ── clone real-world repos, extract relationships   │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  2. spot-check 100 edges (seed 42, then seed 123 to cross-check)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  3. LLM judge classifies every sampled edge:                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        CORRECT · FALSE_POSITIVE · TYPE_ERROR ·                    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        SCOPE_ERROR · METADATA_ERROR                               │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  4. fix ONE thing — handler .py, .scm query, or config           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  5. re-validate — F1 + re-classify + manifest diff (no regressions)│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   better? ──no──► revert, try a different fix ────────────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │ yes                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  6. promote the fix into fixtures (a permanent regression guard) ──┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Beberapa perkara menjadikan ini berfungsi berbanding sekadar bergelut tanpa hala tuju.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hakimnya adalah ejen itu sendiri, bukan panggilan API.&lt;/strong&gt; Apabila kami berkata “LLM-sebagai-hakim,” maksud kami ejen bahasa itu sendiri membaca setiap edge yang disampel berbanding sumber sebenar dan mengklasifikasikannya dengan rubrik lima kategori yang tetap: adakah edge ini betul, positif palsu, hubungan yang betul dengan jenis yang salah, terikat pada skop yang salah, atau membawa metadata yang salah? Rubrik itulah asas penilaian ini — “kadar ralat 23%” tidak bermakna sehingga anda tahu sama ada itu kecacatan sebenar atau hakim tersalah kira.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Baiki satu perkara, kemudian buktikan.&lt;/strong&gt; Setiap iterasi menukar tepat satu aset yang boleh disunting, kemudian menjalankan semula terhadap harness tetap dan mengekalkan perubahan itu hanya jika F1 bertambah baik dan pengklasifikasian semula kelihatan lebih baik. Jika tidak, ia dikembalikan. Tiada kelompok suntingan spekulatif, tiada “sepatutnya lebih baik.” Sesuatu perubahan mesti membuktikan haknya atau ia dibuang. Dan apabila sesuatu pembaikan kekal, ia dinaikkan taraf ke dalam suite fixture — supaya bug yang dibaikinya tidak dapat kembali secara senyap. Langkah kenaikan taraf itulah yang menjadikan gelung ini &lt;em&gt;rekursif&lt;/em&gt; dan bukan sekadar berulang: setiap pusingan mengukuhkan rujukan pengesahan yang digunakan oleh pusingan seterusnya.&lt;/p&gt;
&lt;h2 id=&quot;pengajaran-yang-kami-terus-pelajari-semula-metrik-melebih-lebihkan-laporan&quot;&gt;Pengajaran yang kami terus pelajari semula: metrik melebih-lebihkan laporan&lt;/h2&gt;
&lt;p&gt;Inilah perangkapnya, dan kami terus terjerumus ke dalamnya. Metrik korpus sekunder — kekerapan sasaran yang diekstrak tidak mempunyai simbol yang boleh diselesaikan, berapa banyak simbol kelihatan “yatim,” dan sebagainya — secara besar-besaran melebih-lebihkan masalah. Kebanyakannya adalah &lt;em&gt;artifak paradigma&lt;/em&gt;, bukan bug.&lt;/p&gt;
&lt;p&gt;Contoh paling jelas: &lt;code&gt;llvm&lt;/code&gt; pernah menunjukkan kadar “sumber-tanpa-simbol” sebanyak 73% dan dicap sebagai bencana. Kami menyelidik lebih dalam. Ketepatan sebenar ialah &lt;strong&gt;98.5%&lt;/strong&gt;. “Simbol yang hilang” itu hampir kesemuanya rujukan luaran yang sah — panggilan ke pustaka piawai, ke framework, ke kod yang berada di luar repositori. Metrik itu mengukur sifat bahasa, bukan kecacatan dalam handler. Bahasa seperti Zig, COBOL, dan Odin menunjukkan kadar “yatim” sebanyak 65–70% dan sepenuhnya betul; COBOL tidak mempunyai sebarang ralat sebenar.&lt;/p&gt;
&lt;p&gt;Jika kami membiarkan angka-angka itu memacu kerja ini, kami pasti menghabiskan berminggu-minggu “membaiki” handler yang sudah pun betul dan mengabaikan bahasa yang mempunyai bug sebenar yang senyap. Kesimpulannya tegas: metrik agregat sebaik-baiknya hanyalah isyarat triage yang kasar. &lt;strong&gt;Isyarat kualiti sebenar ialah semakan sampel dengan pengklasifikasian edge&lt;/strong&gt; — melihat edge sebenar dalam repositori sebenar dan menilainya satu demi satu. Data mengatasi gerak hati, tetapi hanya sebaik sahaja anda tahu data mana yang bercakap benar.&lt;/p&gt;
&lt;h2 id=&quot;gelung-luar-satu-pasukan-bukan-maraton&quot;&gt;Gelung luar: satu pasukan, bukan maraton&lt;/h2&gt;
&lt;p&gt;Satu bahasa pada satu masa akan mengambil masa yang tidak berkesudahan merentasi kesemua 280 bahasa itu, jadi gelung dalaman dibalut dalam satu gelung luar yang menjalankan banyak secara selari.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   pick a wave of near-GREEN / high-error languages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   fan out 10–15 agents, each ISOLATED in its own git worktree,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   each grinding ONE language, committing to its own branch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   orchestrator integrates serially: file-scoped apply, then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   `manifest diff` — any cross-language regression blocks the batch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   gated push (reviewed and confirmed) ──► rotate to the next wave&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Setiap ejen bekerja dalam worktree pakai buang supaya mereka tidak dapat mengganggu satu sama lain. Orchestrator mengintegrasikan pembaikan mereka satu demi satu, setiap satu di sebalik semakan regresi manifest-penuh: perubahan yang membantu bahasanya sendiri tetapi secara senyap merosakkan tiga yang lain tidak akan digabungkan. Integrasi mesti lulus semakan dan disahkan sebelum sebarang perubahan dihantar ke repositori jauh — gate regresi menentukan apa yang &lt;em&gt;selamat&lt;/em&gt;, manusia masih menentukan apa yang &lt;em&gt;dikeluarkan&lt;/em&gt;. Kemudian kumpulan itu berputar ke set bahasa seterusnya dan keseluruhan proses berjalan semula.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-masih-tidak-sempurna&quot;&gt;Apa yang masih tidak sempurna&lt;/h2&gt;
&lt;p&gt;Hakim boleh tersilap, dan kesilapan itu mempunyai arah: ejen yang berjalan dengan konteks yang terlalu sedikit &lt;em&gt;melebih-lebihkan laporan&lt;/em&gt;. Dalam satu kelompok, lapan bahasa ditandai pada ralat 5–20%; selepas pemeriksaan hanya satu bahasa yang mempunyai bug sebenar khusus bahasa — selebihnya adalah kesilapan hakim akibat terlepas pandang semantik bahasa itu sendiri (satu baris sumber secara sah memancarkan beberapa edge, ikatan parameter dimodelkan sebagai assignment, bahasa rujukan-per-pengecam). Itulah sebabnya kami mengambil sampel dengan dua seed dan menyilang semak, dan mengapa percanggahan antara hakim dan fixture dianggap sebagai isyarat yang &lt;em&gt;paling&lt;/em&gt; menarik, bukan keputusan muktamad — kadangkala fixture itulah yang salah.&lt;/p&gt;
&lt;p&gt;Kami juga jujur tentang sasaran itu. Matlamatnya ialah sifar ralat sebenar, tanpa kompromi — tetapi “sifar” adalah hala tuju yang kami usahakan secara berterusan, bahasa demi bahasa, bukan kotak yang ditanda. Sentiasa ada repositori lain dengan idiom lain.&lt;/p&gt;
&lt;h2 id=&quot;diperoleh-bukan-didakwa&quot;&gt;Diperoleh, Bukan Didakwa&lt;/h2&gt;
&lt;p&gt;Segala yang Maguyva lakukan untuk seorang ejen — mencari simbol, menjejaki kebergantungan, menjawab soalan dengan rujukan kepada kod — bergantung pada ketepatan pengekstrakan yang mendasarinya. Merentasi 280 bahasa, “betul” tidak boleh didakwa sahaja; ia perlu &lt;em&gt;diperoleh&lt;/em&gt; secara berterusan berbanding kod sebenar. Gelung ini adalah cara kami memperolehnya: kitaran semak-sampel-dan-baiki yang autonomi yang mencurigai metriknya sendiri, membuktikan setiap perubahan, dan mengubah setiap pembaikan menjadi pengawal terhadap regresi seterusnya. Ia tidak glamour. Ia adalah kerja yang membolehkan kami berkata “kami menyokong bahasa anda” dan memaksudkannya dengan sungguh-sungguh. Hijau itu mudah. Betul itu diperoleh.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Languages</category><category>Agents</category></item><item><title>Carian Fusion Pelbagai-Modal: Memilih Retriever Yang Tepat Untuk Setiap Pertanyaan</title><link>https://maguyva.ai/ms/blog/multi-modal-fusion-search</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/multi-modal-fusion-search</guid><description>Pertanyaan seperti &apos;di mana parseConfig ditakrifkan&apos; mahukan carian yang berbeza daripada &apos;bagaimana auth berfungsi&apos;. Maguyva mengklasifikasikan niat, memberi pemberat kepada empat modaliti pengambilan mengikutnya, dan menggabungkan hasil dengan Reciprocal Rank Fusion berpemberat.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Nota reka bentuk terdahulu: artikel April 2026 ini menerangkan reka bentuk penghalaan pada waktu itu, bukan tingkah laku lalai semasa. Pembetulan September di bawah hanya menangani dakwaan pengukuran. Untuk penghalaan, pratetap dan kawalan modaliti eksplisit semasa, lihat &lt;a href=&quot;https://maguyva.ai/ms/docs/how-it-works&quot;&gt;Cara Ia Berfungsi&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Satu pertanyaan carian bukanlah satu perkara sahaja.&lt;/p&gt;
&lt;p&gt;“di mana &lt;code&gt;parseConfig&lt;/code&gt; ditakrifkan” mahukan simbol yang tepat — satu lokasi yang jitu, pantas. “bagaimana pengesahan (authentication) berfungsi” mahukan makna — sebaran kod berkaitan yang menerangkan sesuatu konsep. “apa yang akan rosak jika saya menukar fungsi ini” mahukan graf kebergantungan. “cari string &lt;code&gt;ECONNREFUSED&lt;/code&gt;” mahukan padanan literal, tiada yang bijak-bijak.&lt;/p&gt;
&lt;p&gt;Grep sangat baik untuk padanan literal dan berguna untuk sesetengah pemburuan rujukan, tetapi ia bukan graf kebergantungan dan ia tidak memahami makna. Embeddings merangkumi sisi semantik, tetapi ia adalah alat yang salah untuk string tepat dan analisis kesan. Kebanyakan alat carian kod memilih satu enjin dan memaksa setiap pertanyaan menggunakan enjin yang dipilih itu. Maguyva tidak terikat pada satu enjin. Ia mengetahui jenis soalan apa yang anda ajukan, kemudian menggabungkan empat retriever dalam nisbah yang sepatutnya untuk soalan itu.&lt;/p&gt;
&lt;h2 id=&quot;empat-modaliti&quot;&gt;Empat modaliti&lt;/h2&gt;
&lt;p&gt;Di sebalik tabir terdapat empat cara bebas untuk mencari kod:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;semantic&lt;/strong&gt; — carian vektor terhadap embeddings binari Voyage; mencari kod mengikut makna.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;text&lt;/strong&gt; — padanan trigram; mencari literal, string ralat, pengecam tepat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;structural&lt;/strong&gt; — query AST; mencari takrifan, tandatangan (signature), dan konstruk bahasa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;graph&lt;/strong&gt; — graf kebergantungan; mencari caller, callee, dan lingkungan impak.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setiap satu kuat pada kelas soalan yang berbeza. Kuncinya ialah menentukan sejauh mana setiap satu patut dipercayai untuk pertanyaan yang ada di hadapan anda.&lt;/p&gt;
&lt;h2 id=&quot;pengklasifikasian-niat&quot;&gt;Pengklasifikasian niat&lt;/h2&gt;
&lt;p&gt;Sebelum sebarang pengambilan berjalan, satu classifier ringan menyusun pertanyaan itu ke dalam salah satu daripada enam niat, dengan skor keyakinan. Ia sengaja dibuat murah — heuristik tersusun, padanan pertama menang — kerana ia berjalan pada laluan panas (hot path) dan hanya menambah satu atau dua milisaat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bermula dengan &lt;code&gt;def &lt;/code&gt;, &lt;code&gt;class &lt;/code&gt;, &lt;code&gt;func &lt;/code&gt;, &lt;code&gt;import &lt;/code&gt;… → &lt;strong&gt;find_definition&lt;/strong&gt; (keyakinan 0.95)&lt;/li&gt;
&lt;li&gt;“who calls” (siapa memanggil), “usages of” (penggunaan), “references to” (rujukan kepada) → &lt;strong&gt;find_references&lt;/strong&gt; (0.90)&lt;/li&gt;
&lt;li&gt;“impact” (kesan), “blast radius”, “what depends on” (apa yang bergantung pada) → &lt;strong&gt;impact_analysis&lt;/strong&gt; (0.90)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&quot;string&quot;&lt;/code&gt; yang dipetik atau token ralat seperti &lt;code&gt;traceback&lt;/code&gt; → &lt;strong&gt;exact_match&lt;/strong&gt; (0.85–0.90)&lt;/li&gt;
&lt;li&gt;satu pengecam &lt;code&gt;CamelCase&lt;/code&gt; atau &lt;code&gt;snake_case&lt;/code&gt; → &lt;strong&gt;find_definition&lt;/strong&gt; (0.60–0.80)&lt;/li&gt;
&lt;li&gt;“how” (bagaimana), “why” (mengapa), “explain” (terangkan), “architecture” (seni bina) → &lt;strong&gt;understand_code&lt;/strong&gt; (0.75)&lt;/li&gt;
&lt;li&gt;tiada yang sepadan → &lt;strong&gt;understand_code&lt;/strong&gt;, keyakinan rendah (0.40)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setiap niat membawa profil pemberat merentasi keempat-empat modaliti. Ini adalah angka sebenar:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Niat&lt;/th&gt;
&lt;th&gt;semantic&lt;/th&gt;
&lt;th&gt;text&lt;/th&gt;
&lt;th&gt;structural (AST)&lt;/th&gt;
&lt;th&gt;graph&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;find_definition&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_references&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;understand_code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_similar&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.3&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;impact_analysis&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exact_match&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Jadi “di mana &lt;code&gt;parseConfig&lt;/code&gt; ditakrifkan” sangat bergantung pada AST (0.6). “bagaimana auth berfungsi” condong kepada vektor semantik (0.5). “apa yang bergantung kepada ini” hampir semuanya graf (0.7). “cari &lt;code&gt;ECONNREFUSED&lt;/code&gt;” hampir semuanya trigram (0.9), dengan model embedding dimatikan sepenuhnya — kerana persamaan semantik adalah alat yang sama sekali tidak sesuai untuk string yang tepat.&lt;/p&gt;
&lt;h2 id=&quot;laluan-pantas-dan-laluan-fusion&quot;&gt;Laluan pantas, dan laluan fusion&lt;/h2&gt;
&lt;p&gt;Apabila classifier itu yakin — skor ≥ 0.85 — dan pertanyaan itu adalah biasa, Maguyva melangkau fusion sepenuhnya dan menghalakan terus kepada satu modaliti dominan. “di mana X ditakrifkan” tidak memerlukan empat retriever; ia memerlukan indeks AST, sekarang. Laluan langsung itu dilaporkan semula sebagai &lt;code&gt;fusion_strategy: &quot;direct&quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Segala yang kabur melalui fusion. Keempat-empat (atau tiga, pada preset lalai) modaliti berjalan secara selari, setiap satu memulangkan senarai hasilnya sendiri yang disusun mengikut kedudukan, dan kami menggabungkannya.&lt;/p&gt;
&lt;h2 id=&quot;reciprocal-rank-fusion-berpemberat&quot;&gt;Reciprocal Rank Fusion Berpemberat&lt;/h2&gt;
&lt;p&gt;Menggabungkan retriever yang heterogen lebih sukar daripada yang kedengaran: persamaan kosinus 0.82 dan skor trigram 137 dan kesentralan graf 0.004 tidak berada pada skala yang sama, jadi anda tidak boleh sekadar menjumlahkannya. Reciprocal Rank Fusion mengelakkan masalah ini dengan membuang skor mentah dan hanya mengekalkan &lt;strong&gt;kedudukan (rank)&lt;/strong&gt; yang diberikan oleh setiap enjin. Sumbangan sesuatu hasil daripada satu modaliti ialah:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;contribution = weight × 1 / (k + rank + 1)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;di mana &lt;code&gt;rank&lt;/code&gt; adalah kedudukannya dalam senarai modaliti itu dan &lt;code&gt;k&lt;/code&gt; adalah pemalar pelicinan (smoothing constant). Sumbangan dijumlahkan merentasi modaliti untuk sebarang hasil yang ditemui oleh lebih daripada satu enjin — persetujuan antara retriever secara semula jadi terapung ke atas. Kami menggunakan &lt;strong&gt;k = 40&lt;/strong&gt; pada preset lalai dan 60 pada &lt;code&gt;thorough&lt;/code&gt; (&lt;code&gt;quick&lt;/code&gt; berjalan semantik-sahaja, jadi fusion tidak pernah berlaku di situ). Kajian RRF asal mencapai k = 60 untuk pengambilan tujuan umum; kami menetapkan lalai yang sedikit lebih tajam, yang memberi persetujuan berkedudukan tinggi antara modaliti sedikit lebih banyak pemberat — dan kami tidak mengesyorkan penyelarasan manual.&lt;/p&gt;
&lt;p&gt;Selain itu, hasil membawa satu &lt;strong&gt;boost kepentingan graf&lt;/strong&gt;. Satu hub — fungsi yang menjadi sandaran keseluruhan pangkalan kod — sepatutnya mengatasi kedudukan nod daun yang kurang dikenali walaupun pada relevans tekstual yang sama, jadi kami mendarab setiap sumbangan dengan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;boost = min(1 + 0.3 × ln(1 + centrality), 1.5)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kesentralan datang daripada metrik PageRank/degree yang telah dikira lebih awal oleh pipeline, dan boost itu dihadkan pada 1.5× supaya sesuatu fungsi yang popular tidak boleh sepenuhnya mengubur fungsi yang kurang dikenali tetapi lebih relevan. Akhir sekali kami menurunkan taraf hasil daripada laluan vendor, build, dan arkib, dan dedupe kepada chunk terbaik bagi setiap fail.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-masih-tidak-sempurna&quot;&gt;Apa yang masih tidak sempurna&lt;/h2&gt;
&lt;p&gt;Pengelas niat ialah sekumpulan regex, bukan model terlatih. Ia mengendalikan bentuk pertanyaan lazim menggunakan heuristik, dan pertanyaan yang kabur kembali kepada &lt;code&gt;understand_code&lt;/code&gt; serta gabungan yang condong kepada semantik. Versi terdahulu catatan ini menyatakan penurunan kadar carian tanpa hasil daripada sekitar 15% kepada bawah 5% sebagai peningkatan yang telah dicapai. Cadangan Disember 2025 sebenarnya menyenaraikan anggaran garis dasar dan sasaran; tiada set pertanyaan sokongan atau rekod pengukuran dibekalkan. Kami menarik balik dakwaan bahawa peningkatan itu telah dicapai; lihat &lt;a href=&quot;https://maguyva.ai/evidence/search-quality.md&quot;&gt;bukti sumber dan pembetulan&lt;/a&gt;. Kami belum menggantikan pengelas dengan model terlatih kerana versi murah itu pantas dan cukup baik untuk peranan penghalaan yang dimaksudkan, dan kerana pengelas yang salah tetapi yakin lebih buruk daripada fallback yang jujur. Pemberat itu sendiri ialah prior yang dipilih secara manual, bukan dipelajari daripada data klik yang tidak kami kumpulkan.&lt;/p&gt;
&lt;h2 id=&quot;tanya-soalan-itu-bukan-toolnya&quot;&gt;Tanya Soalan Itu, Bukan Toolnya&lt;/h2&gt;
&lt;p&gt;Seorang ejen tidak sepatutnya perlu tahu sama ada hendak menggunakan grep atau embeddings atau graf panggilan — ia sepatutnya bertanya soalannya dalam istilah biasa dan mendapat jawapan yang betul. Fusion pelbagai-modal itulah yang membolehkan &lt;code&gt;find_symbol&lt;/code&gt;, carian semantik, dan analisis kebergantungan berada di sebalik satu antara muka pertanyaan: sistem membaca bentuk soalan itu dan secara senyap menyusun retriever yang tepat untuknya. Model yang memberi skor kepada embeddings itu penting, tetapi begitu juga mengetahui bila &lt;em&gt;tidak&lt;/em&gt; menggunakannya. Memilih tool yang tepat untuk setiap pertanyaan adalah satu jenis kualiti tersendiri, dan kami lebih rela memikul tanggungjawab itu daripada membebankannya kepada pemanggil.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// you bring the question. it brings the tools.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Search</category><category>Architecture</category></item><item><title>Observabiliti Ejen: Hooks, Alloy, dan Grafana</title><link>https://maguyva.ai/ms/blog/agent-observability-hooks-alloy-grafana</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/agent-observability-hooks-alloy-grafana</guid><description>Kami menyambungkan Claude Code dan Codex ke dalam satu stack Grafana dengan OpenTelemetry dan Alloy, kemudian menggunakan trace dan log untuk mencari dan membaiki isu gelagat ejen pada puncanya.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sistem ejen gagal dengan cara yang pelik.&lt;/p&gt;
&lt;p&gt;Kadangkala model itu masalahnya. Kadangkala tool itu masalahnya. Kadangkala MCP server anda baik-baik sahaja, tetapi ejen memilih spesialis yang salah, atau menghabiskan separuh sesi melakukan kerja shell yang tidak anda jangkakan, atau secara senyap membazir kos dalam gelung yang kelihatan produktif dari luar.&lt;/p&gt;
&lt;p&gt;Jika anda tidak dapat melihat perbezaannya, anda sebenarnya bukan mengendalikan sistem ejen. Anda sedang meneka.&lt;/p&gt;
&lt;p&gt;Jadi kami membina stack observabiliti untuk aliran kerja kami sendiri: Claude Code, Codex, event hook Claude, event notify Codex, OpenTelemetry native, Grafana Alloy, dan Grafana Cloud di hujung yang satu lagi.&lt;/p&gt;
&lt;p&gt;Bahagian yang menarik bukanlah “kami membina dashboard.” Bahagian yang menarik ialah kami terpaksa memecahkan telemetri kepada dua stream berbeza kerana tiada satu feed pun yang memberi kami gambaran keseluruhan.&lt;/p&gt;
&lt;h2 id=&quot;masalahnya-telemetri-ejen-berpecah-belah&quot;&gt;Masalahnya: Telemetri Ejen Berpecah-belah&lt;/h2&gt;
&lt;p&gt;Ejen pengekodan moden sudah pun memancarkan sedikit telemetri. Itu membantu, tetapi tidak mencukupi.&lt;/p&gt;
&lt;p&gt;OTEL native pandai menjawab soalan seperti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Berapa banyak permintaan yang kami buat?&lt;/li&gt;
&lt;li&gt;Berapa kos sesuatu sesi?&lt;/li&gt;
&lt;li&gt;Di mana span dan trace berada?&lt;/li&gt;
&lt;li&gt;Adakah kependaman melonjak?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ia jauh lebih lemah dalam menjawab soalan seperti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP server mana yang ejen bergantung kepadanya?&lt;/li&gt;
&lt;li&gt;Adakah kegagalan ini berlaku dalam &lt;code&gt;Bash&lt;/code&gt;, tool fail terbina-dalam, atau panggilan MCP?&lt;/li&gt;
&lt;li&gt;Skill mana yang benar-benar diaktifkan?&lt;/li&gt;
&lt;li&gt;Jenis subagent mana yang dihantar?&lt;/li&gt;
&lt;li&gt;Adakah sesi itu melakukan kerja yang berguna, atau sekadar berpusing-pusing tanpa hala tuju?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kelas soalan kedua itu lebih hampir kepada hooks berbanding trace.&lt;/p&gt;
&lt;p&gt;Tetapi sebaliknya juga benar: sebahagian soalan prestasi yang paling penting lebih hampir kepada trace berbanding hooks.&lt;/p&gt;
&lt;p&gt;Jika anda ingin tahu di mana kependaman sebenarnya terkumpul, span mana yang perlahan, atau sama ada sesi itu membazir masa dalam panggilan model berbanding pelaksanaan tool, anda memerlukan data trace selain event semantik.&lt;/p&gt;
&lt;h2 id=&quot;seni-bina-yang-akhirnya-kami-gunakan&quot;&gt;Seni Bina Yang Akhirnya Kami Gunakan&lt;/h2&gt;
&lt;p&gt;Kami menjalankan dua laluan telemetri secara bersebelahan.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Claude Code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  hooks        -&amp;gt; send_event.py -&amp;gt; Grafana Cloud Loki&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Codex&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  notify hook -&amp;gt; codex_notify.py -&amp;gt; shared Loki schema&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pemisahan itu sengaja dilakukan.&lt;/p&gt;
&lt;p&gt;Ia juga tidak simetri. Claude Code memberi kami antara muka hook kitar hayat yang jauh lebih kaya. Codex memberi kami OTEL native ditambah antara muka notify, jadi kami menormalkan event penyempurnaan giliran (turn-completion) dengan butiran yang lebih terhad kepada skema log yang sama, dan bukan berpura-pura kedua-dua runtime mendedahkan kawalan yang sama.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OTEL Native&lt;/strong&gt; memberi kami stream garis dasar: log dan trace daripada runtime itu sendiri, ditambah metrik di mana runtime benar-benar memancarkannya.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Event hook dan notify&lt;/strong&gt; memberi kami lapisan semantik: perkara seperti &lt;code&gt;PreToolUse&lt;/code&gt;, &lt;code&gt;PostToolUse&lt;/code&gt;, &lt;code&gt;PostToolUseFailure&lt;/code&gt;, &lt;code&gt;UserPromptSubmit&lt;/code&gt;, &lt;code&gt;SubagentStop&lt;/code&gt;, &lt;code&gt;SkillActivated&lt;/code&gt;, dan metadata terklasifikasi yang benar-benar kami pedulikan semasa menyahpepijat gelagat ejen. Claude Code menyumbang stream event yang lebih kaya di sini. Codex menyumbang stream yang dinormalkan dengan butiran lebih terhad tetapi masih berguna.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-hooks-diperlukan&quot;&gt;Mengapa Hooks Diperlukan&lt;/h2&gt;
&lt;p&gt;Saluran paip hook kami memperkaya event sebelum ia sampai ke Loki.&lt;/p&gt;
&lt;p&gt;Selain sekadar mengatakan “satu tool telah berjalan,” kami mengklasifikasikan event itu ke dalam medan seperti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tool_type&lt;/code&gt;: builtin, mcp, skill, agent, bash&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp_server&lt;/code&gt;: backend MCP mana yang mengendalikan panggilan itu&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bash_cli&lt;/code&gt;: keluarga arahan shell&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subagent_type&lt;/code&gt;: jenis spesialis yang dihantar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent_tool&lt;/code&gt;: sama ada sumbernya Claude Code atau Codex&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ini bermakna kami dapat bertanya soalan yang penting dari segi operasi:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | agent_tool=&quot;codex-cli&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | tool_type=&quot;mcp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | json | bash_cli=&quot;git&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Itu bukan medan hiasan semata-mata. Ia adalah perbezaan antara “ejen terasa perlahan” dengan “ejen menghabiskan sepuluh minit terakhir dalam operasi git yang sarat shell dengan kadar kegagalan tool yang tinggi.”&lt;/p&gt;
&lt;p&gt;Satu butiran pelaksanaan yang kelihatan lebih pelik daripada sebenarnya: stream Loki kongsi masih menggunakan &lt;code&gt;service_name=&quot;claude-code-hooks&quot;&lt;/code&gt; sebagai label walaupun apabila event itu datang daripada Codex. Pemisahan sebenar antara runtime berlaku pada &lt;code&gt;agent_tool&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-alloy-berada-di-tengah&quot;&gt;Mengapa Alloy Berada Di Tengah&lt;/h2&gt;
&lt;p&gt;Grafana Alloy bukan sekadar forwarder dalam persediaan ini. Ia adalah sempadan polisi.&lt;/p&gt;
&lt;p&gt;Kami mengarahkan stream OTEL native daripada Claude Code dan Codex ke proxy Alloy setempat pada &lt;code&gt;localhost:4318&lt;/code&gt;, kemudian membenarkan Alloy membersihkan payload sebelum meneruskannya ke Grafana Cloud.&lt;/p&gt;
&lt;p&gt;Itu penting kerana telemetri ejen yang mentah sarat dengan medan kardinaliti tinggi yang berguna untuk analisis tetapi teruk sebagai label yang diindeks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompt_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;kiraan token&lt;/li&gt;
&lt;li&gt;tempoh&lt;/li&gt;
&lt;li&gt;blob parameter tool&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jika anda mengindeks segala-galanya, anda akan mendapat letupan label dan hari yang teruk.&lt;/p&gt;
&lt;p&gt;Jadi Alloy melakukan tiga perkara untuk kami:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mengekalkan set label berkardinaliti rendah yang sangat kecil untuk diindeks.&lt;/li&gt;
&lt;li&gt;Memindahkan medan yang bising tetapi berguna ke dalam metadata berstruktur.&lt;/li&gt;
&lt;li&gt;Membuang sepenuhnya data yang tidak berguna.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Idea pentingnya mudah: &lt;strong&gt;perhatikan lebih banyak, indeks lebih sedikit&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-stream-hook-memintas-alloy&quot;&gt;Mengapa Stream Hook Memintas Alloy&lt;/h2&gt;
&lt;p&gt;Stream hook sudah dibentuk untuk Loki.&lt;/p&gt;
&lt;p&gt;Pada masa &lt;code&gt;send_event.py&lt;/code&gt; menghantar sesuatu event, kami sudah pun menentukan medan mana yang layak dilabel dan mana yang tergolong dalam badan JSON berstruktur. Stream itu terus ke gateway OTLP Grafana Cloud tanpa melalui satu lagi laluan menerusi Alloy.&lt;/p&gt;
&lt;p&gt;Jadi sistem itu mempunyai pembahagian kerja yang jelas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alloy&lt;/strong&gt; menjinakkan stream OTEL native yang mentah.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pengayaan hook&lt;/strong&gt; menjadikan event semantik boleh disoal (queryable).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Itu mengekalkan seni bina lebih ringkas berbanding cuba memaksa segala-galanya melalui satu laluan.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-dashboard-sebenarnya-tunjukkan&quot;&gt;Apa Yang Dashboard Sebenarnya Tunjukkan&lt;/h2&gt;
&lt;p&gt;Tangkapan skrin di bawah diambil daripada salah satu dashboard observabiliti di sebalik aliran kerja ejen kami. Ia bukan penanda aras, dan angka-angka itu hanyalah cebisan pada satu-satu masa. Intinya ialah bentuk data itu: feed aktiviti, panggilan tool, kegagalan, prompt, dan pecahan mengikut ejen, tool terbina-dalam, penggunaan MCP, arahan shell, dan skill.&lt;/p&gt;
&lt;p&gt;Bahagian yang berguna ialah dashboard ini berada pada stack Grafana yang sama dengan selebihnya telemetri ejen. Kami dapat menapis mengikut ejen sumber dan keluarga tool serta melihat merentasi runtime tanpa perlu mencipta cerita observabiliti yang berbeza untuk setiap sistem.&lt;/p&gt;
&lt;figure class=&quot;feature-figure feature-figure--wide&quot;&gt;
  &lt;a
    href=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
    target=&quot;_blank&quot;
    rel=&quot;noreferrer&quot;
    aria-label=&quot;Buka tangkapan skrin dashboard observabiliti pada resolusi penuh&quot;
  &gt;
    &lt;img
      src=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
      alt=&quot;Dashboard Grafana menunjukkan feed aktiviti, kiraan panggilan tool, kegagalan, prompt, dan pecahan mengikut ejen, tool terbina-dalam, penggunaan MCP, arahan CLI, dan skill untuk aliran kerja ejen.&quot;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;
    Salah satu dashboard langsung di sebalik aliran kerja ejen kami. Tangkapan skrin ini hanyalah satu cebisan daripada stack Grafana kongsi yang turut menerima telemetri daripada runtime dan sistem ejen kami yang lain. Klik imej untuk versi resolusi penuh.
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;mengapa-trace-lebih-penting-daripada-yang-kelihatan-pada-mulanya&quot;&gt;Mengapa Trace Lebih Penting Daripada Yang Kelihatan Pada Mulanya&lt;/h2&gt;
&lt;p&gt;Log memberitahu kami kategori kerja apa yang berlaku. Trace memberitahu kami bagaimana kerja itu berlangsung mengikut urutan masa.&lt;/p&gt;
&lt;p&gt;Perbezaan itu penting dalam sistem ejen kerana “perlahan” terlalu kabur untuk berguna.&lt;/p&gt;
&lt;p&gt;Satu trace boleh memberitahu kami sama ada kesukaran itu datang daripada:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kependaman model&lt;/li&gt;
&lt;li&gt;masa pelaksanaan tool&lt;/li&gt;
&lt;li&gt;percubaan semula yang berulang&lt;/li&gt;
&lt;li&gt;satu interaksi MCP yang amat mahal&lt;/li&gt;
&lt;li&gt;ekor panjang operasi kecil yang kelihatan tidak berbahaya secara berasingan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dalam praktiknya kami menggunakan stream hook dan trace Tempo bersama-sama.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Log hook&lt;/strong&gt; menjawab: apa jenis perkara yang berlaku?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trace&lt;/strong&gt; menjawab: ke mana masa itu pergi?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gabungan itulah yang mengubah observabiliti daripada sekadar dashboard kepada satu penjelasan.&lt;/p&gt;
&lt;h2 id=&quot;di-mana-codex-sesuai&quot;&gt;Di Mana Codex Sesuai&lt;/h2&gt;
&lt;p&gt;Codex adalah sebahagian daripada stack yang sama, tetapi ia tidak sama seperti Claude Code.&lt;/p&gt;
&lt;p&gt;Untuk Codex kami menyambungkan dua bahagian:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OTEL native daripada Codex ke Alloy&lt;/li&gt;
&lt;li&gt;Webhook notify ke &lt;code&gt;codex_notify.py&lt;/code&gt;, yang memetakan penyempurnaan giliran kepada skema Loki yang sama yang kami gunakan untuk event hook&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Itu memberi kami penapis bersatu seperti &lt;code&gt;agent_tool=&quot;codex-cli&quot;&lt;/code&gt; di dalam stream log yang sama.&lt;/p&gt;
&lt;p&gt;Peringatan jujur: payload notify Codex kini mengandungi butiran yang lebih terhad berbanding payload hook Claude Code kerana ia bukan jenis antara muka integrasi yang sama. Dalam persediaan kami hari ini, penyempurnaan giliran Codex boleh dinormalkan kepada skema kongsi, tetapi pengekstrakan tool demi tool yang kaya masih lebih baik dalam stream OTEL native berbanding dalam jambatan notify.&lt;/p&gt;
&lt;p&gt;Itu bukan alasan untuk mengelakkan penulisan ini. Itulah sebenarnya intipati penulisan ini. Sistem observabiliti sebenar dibina daripada isyarat yang tidak sempurna.&lt;/p&gt;
&lt;h2 id=&quot;grafana-menerusi-mcp-mengubah-segalanya&quot;&gt;Grafana Menerusi MCP Mengubah Segalanya&lt;/h2&gt;
&lt;p&gt;Peralihan yang lebih besar ialah Grafana bukan sekadar tempat manusia melawat dalam browser.&lt;/p&gt;
&lt;p&gt;Dalam repositori ini kami turut mendedahkan Grafana menerusi MCP. Ini bermakna ejen dapat menyoal Loki, Prometheus, dan Tempo secara langsung dan bukannya menunggu manusia memeriksa dashboard secara manual terlebih dahulu.&lt;/p&gt;
&lt;p&gt;Itu mengubah observabiliti menjadi input aktif kepada aliran kerja.&lt;/p&gt;
&lt;p&gt;Ejen boleh bertanya:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keluarga tool mana yang paling banyak gagal dalam sejam yang lepas?&lt;/li&gt;
&lt;li&gt;MCP server mana yang mendominasi sesuatu sesi?&lt;/li&gt;
&lt;li&gt;Adakah perubahan terkini mengurangkan kegagalan tool atau sekadar memindahkan kerja itu ke laluan yang lebih sarat shell dengan kesilapan yang sama?&lt;/li&gt;
&lt;li&gt;Trace mana yang menunjukkan kependaman tertinggi atau percubaan semula yang berulang?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sebaik sahaja anda mempunyai itu, anda sangat hampir kepada gelung penambahbaikan kendiri.&lt;/p&gt;
&lt;h2 id=&quot;daripada-dashboard-kepada-gelung-maklum-balas&quot;&gt;Daripada Dashboard Kepada Gelung Maklum Balas&lt;/h2&gt;
&lt;p&gt;Inilah bahagian yang kami dapati paling menarik.&lt;/p&gt;
&lt;p&gt;Sebaik sahaja stack observabiliti boleh disoal daripada lapisan ejen, telemetri berhenti menjadi saluran pelaporan pasif dan menjadi isyarat kawalan.&lt;/p&gt;
&lt;p&gt;Gelung itu kelihatan seperti ini:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Aktiviti ejen memancarkan trace, metrik, dan log hook yang diperkaya.&lt;/li&gt;
&lt;li&gt;Grafana menyimpan bukti itu dalam Loki, Tempo, dan Prometheus di mana metrik wujud.&lt;/li&gt;
&lt;li&gt;Ejen menyoal bukti itu menerusi Grafana MCP.&lt;/li&gt;
&lt;li&gt;Sistem mengenal pasti campuran tool yang buruk, skill yang rapuh, penghalaan yang lemah, atau aliran kerja sarat shell yang terus menghasilkan kesilapan yang boleh dielakkan.&lt;/li&gt;
&lt;li&gt;Ejen atau operator menyelaraskan prompt, config ejen, penerangan skill, peraturan penghalaan, atau akses tool.&lt;/li&gt;
&lt;li&gt;Sesi seterusnya menghasilkan bentuk telemetri baharu, dan kitaran itu berulang.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Itulah caranya anda beralih daripada “dashboard yang menarik” kepada “sistem penambahbaikan yang boleh diukur.”&lt;/p&gt;
&lt;p&gt;Matlamatnya bukan untuk memaksimumkan satu kategori tool. Ia adalah untuk mencapai campuran yang tepat antara CLI, tool terbina-dalam, panggilan MCP, dan skill untuk kerja yang benar-benar sedang dilakukan.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-ini-membolehkan-kami-jawab&quot;&gt;Apa Yang Ini Membolehkan Kami Jawab&lt;/h2&gt;
&lt;p&gt;Sebaik sahaja data kedua-dua runtime diterima oleh stack Grafana yang sama, kami dapat menjawab soalan operasi dengan jauh lebih pantas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adakah kegagalan tertumpu pada satu keluarga tool?&lt;/li&gt;
&lt;li&gt;Adakah aliran kerja sarat shell mencipta kesilapan yang boleh dielakkan di mana sepatutnya wujud tool peringkat lebih tinggi?&lt;/li&gt;
&lt;li&gt;MCP server mana yang menanggung beban kerja?&lt;/li&gt;
&lt;li&gt;Adakah kami membayar untuk aktiviti ejen yang tidak menghasilkan kemajuan yang bermakna?&lt;/li&gt;
&lt;li&gt;Adakah sesuatu sesi tidak sihat kerana model, tool, atau lapisan orkestrasi?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ini amat berguna dalam aliran kerja pelbagai-ejen, di mana “ejen itu sibuk” hampir tidak memberitahu anda apa-apa.&lt;/p&gt;
&lt;p&gt;Jika satu spesialis terus-menerus dihantar dan menghasilkan kadar kegagalan yang tinggi, itu adalah masalah penghalaan atau pembentukan prompt.&lt;/p&gt;
&lt;p&gt;Jika satu MCP server mendominasi semua panggilan, itu mungkin seni bina yang baik atau tanda bahawa segala-galanya yang lain adalah beban yang tidak berguna.&lt;/p&gt;
&lt;p&gt;Jika kegagalan tool melonjak sementara kos kekal tinggi, anda mempunyai masalah operasi, bukan masalah kualiti.&lt;/p&gt;
&lt;p&gt;Jika kerja shell terus gagal dengan cara yang boleh dijangka dan boleh dielakkan di mana sepatutnya wujud tool peringkat lebih tinggi, itu adalah isyarat produk.&lt;/p&gt;
&lt;p&gt;Jika satu skill sentiasa diaktifkan tetapi tidak meningkatkan hasil, itu adalah isyarat prompt atau penghalaan.&lt;/p&gt;
&lt;h2 id=&quot;pengajaran-sebenar&quot;&gt;Pengajaran Sebenar&lt;/h2&gt;
&lt;p&gt;Pengajaran yang lebih mendalam di sini ialah observabiliti ejen memerlukan kedua-dua &lt;strong&gt;telemetri runtime&lt;/strong&gt; dan &lt;strong&gt;telemetri aliran kerja&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Telemetri runtime memberitahu anda apa yang sistem lakukan.&lt;/p&gt;
&lt;p&gt;Telemetri aliran kerja memberitahu anda apa yang ejen fikir ia sedang lakukan.&lt;/p&gt;
&lt;p&gt;Kami memerlukan kedua-duanya.&lt;/p&gt;
&lt;p&gt;Jika anda hanya menyimpan trace dan counter, anda terlepas lapisan semantik. Jika anda hanya menyimpan event hook, anda terlepas kependaman, span, dan gambaran runtime yang lebih luas.&lt;/p&gt;
&lt;p&gt;Dan jika anda menyimpan kedua-duanya tetapi tidak pernah menyalurkannya semula ke lapisan ejen, anda hanya mempunyai pemantauan, bukan penyesuaian.&lt;/p&gt;
&lt;p&gt;Gabungan itulah yang menjadikan sistem cukup boleh dijelaskan untuk dikendalikan dan cukup boleh diselaraskan untuk diperbaiki.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-masih-tidak-sempurna&quot;&gt;Apa Yang Masih Tidak Sempurna&lt;/h2&gt;
&lt;p&gt;Masih ada bahagian yang kasar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tidak setiap event hook merangkumi data tempoh dan token yang kami mahukan.&lt;/li&gt;
&lt;li&gt;Sebahagian daripada paparan masa terbaik masih datang daripada trace Tempo, bukan log hook.&lt;/li&gt;
&lt;li&gt;Codex hari ini kurang kaya secara semantik berbanding Claude Code dalam stream event yang diperkaya.&lt;/li&gt;
&lt;li&gt;Tangkapan skrin dashboard menunjukkan paparan operasi langsung, bukan artifak pemasaran yang digilap.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Perkara terakhir itu adalah sengaja. Kami lebih suka menunjukkan panel instrumen sebenar berbanding berpura-pura sistem ejen secara ajaib menjelaskan diri sendiri.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-ini-penting-untuk-maguyva&quot;&gt;Mengapa Ini Penting Untuk Maguyva&lt;/h2&gt;
&lt;p&gt;Maguyva adalah tentang memberi ejen kecerdasan kod yang lebih baik. Tetapi sebaik sahaja ejen benar-benar melakukan kerja yang berguna, satu keperluan baharu muncul serta-merta: anda perlu melihat bagaimana mereka berkelakuan.&lt;/p&gt;
&lt;p&gt;Kualiti carian, kualiti penghalaan, pemilihan tool, dan kecekapan konteks semuanya menjadi masalah yang boleh diperhatikan.&lt;/p&gt;
&lt;p&gt;Itulah sebabnya kami rasa ini berbaloi ditulis. Stack ejen masa depan bukan sekadar prompt dan tool. Ia adalah prompt, tool, dan lapisan instrumentasi yang memberitahu anda sama ada keseluruhannya berfungsi.&lt;/p&gt;
&lt;p&gt;Jika anda membina aliran kerja ejen yang serius, observabiliti bukan infrastruktur pilihan. Ia adalah sebahagian daripada produk.&lt;/p&gt;
</content:encoded><category>Observability</category><category>Grafana</category><category>OpenTelemetry</category><category>Architecture</category></item><item><title>Mining Gelung: Bagaimana Perubahan Menjadi Memori Institusi</title><link>https://maguyva.ai/ms/blog/mining-workflow-closing-the-loop</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/mining-workflow-closing-the-loop</guid><description>Commit git menjadi entri changelog berstruktur dan rekod keputusan seni bina, kemudian disalurkan semula kepada ejen AI sebagai memori institusi yang boleh disoal.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka dalam penulisan ini mencerminkan sistem pada masa penerbitan (Februari 2026). Lihat &lt;a href=&quot;https://maguyva.ai/ms/team&quot;&gt;halaman pasukan&lt;/a&gt; kami untuk angka terkini.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Setiap pasukan kejuruteraan menghadapi cabaran yang sama: perubahan berlaku secara berterusan, tetapi &lt;em&gt;sebab&lt;/em&gt; di sebalik perubahan itu hilang begitu sahaja. Enam bulan kemudian, seseorang bertanya “mengapa kita memilih untuk menggunakan DuckDB bagi stage pipeline?” dan jawapannya hanya wujud dalam kepala sesiapa yang membuat keputusan itu — jika mereka masih ada.&lt;/p&gt;
&lt;p&gt;Kami membina aliran kerja mining yang menutup gelung ini. Perubahan mengalir melalui commit git, diproses oleh pipeline mining kami, menjadi entri changelog berstruktur dan rekod keputusan seni bina, kemudian disalurkan semula kepada ejen AI kami menerusi pertanyaan CLI. Hasilnya: memori institusi yang boleh dicapai oleh manusia dan AI.&lt;/p&gt;
&lt;h2 id=&quot;masalahnya-keputusan-menguap-hilang&quot;&gt;Masalahnya: Keputusan Menguap Hilang&lt;/h2&gt;
&lt;p&gt;Pertimbangkan satu senario biasa. Seorang developer melakukan commit:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;feat(canonical): add DuckDB runtime for pipeline stages&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Commit ini mewakili satu pilihan seni bina yang signifikan. Pasukan itu menilai pilihan, mempertimbangkan trade-off, dan akhirnya memilih DuckDB atas sebab-sebab tertentu. Tetapi kesemua konteks itu hanya wujud dalam:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Satu thread Slack (kemungkinan besar telah dipadam)&lt;/li&gt;
&lt;li&gt;Ingatan seseorang (pasti semakin pudar)&lt;/li&gt;
&lt;li&gt;Satu komen dalam kod (mungkin, jika anda bertuah)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tiga bulan kemudian, ahli pasukan baharu bertanya: “Patutkah saya guna DuckDB atau SQLite untuk stage baharu ini?” Tanpa memori institusi, mereka sama ada mencipta semula roda atau membuat pilihan yang tidak konsisten.&lt;/p&gt;
&lt;h2 id=&quot;gelung-itu-daripada-commit-kepada-konteks&quot;&gt;Gelung Itu: Daripada Commit Kepada Konteks&lt;/h2&gt;
&lt;p&gt;Aliran kerja mining kami mengubah sejarah git menjadi pengetahuan yang boleh disoal:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Git Commits&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine sync          │  ← Build index from git history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine candidates    │  ← Surface commits for review&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  Classification     │  ← Human or LLM assessment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  (changelog or ADR) │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├──────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Changelog   │    │ Decisions     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Ledger      │    │ Registry      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ (JSONL)     │    │ (YAML files)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ CHANGELOG.md│    │ orkestra CLI  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ per package │    │ queries       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └──────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ AI Agents     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ (via CLI)     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      └───────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pandangan utamanya: kedua-dua changelog dan keputusan seni bina mengalir daripada sejarah git yang sama, diproses menerusi satu pipeline bersatu. Ini memastikan tiada apa-apa yang terlepas pandang.&lt;/p&gt;
&lt;h2 id=&quot;bagaimana-mining-berfungsi&quot;&gt;Bagaimana Mining Berfungsi&lt;/h2&gt;
&lt;h3 id=&quot;langkah-1-segerakkan-indeks&quot;&gt;Langkah 1: Segerakkan Indeks&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Arahan ini mengimbas sejarah git dan membina satu indeks bagi semua commit. Ia mengekstrak isyarat berstruktur daripada setiap commit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jenis commit konvensional (&lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;, &lt;code&gt;docs&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Scope (package atau kawasan yang mana)&lt;/li&gt;
&lt;li&gt;Penanda breaking change&lt;/li&gt;
&lt;li&gt;Fail yang disentuh dan metrik kerumitan&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;langkah-2-semak-status-liputan&quot;&gt;Langkah 2: Semak Status Liputan&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Berikut rupa status semasa kami:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Mining Status&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;=============&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Extracted:       476&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:       15161&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Changelog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Released:       6799&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:        8838&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;15,637 commit diproses. 476 menjadi keputusan seni bina. 6,799 menjadi entri changelog. Setiap commit diklasifikasikan.&lt;/p&gt;
&lt;h3 id=&quot;langkah-3-dapatkan-calon-untuk-semakan&quot;&gt;Langkah 3: Dapatkan Calon Untuk Semakan&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; candidates&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --full&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini memaparkan commit yang belum diproses lagi, dengan konteks penuh untuk pengklasifikasian:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;90571786d99166c0039ca2e80e4d9cd96184bd85&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;date&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;subject&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(canonical): add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;signals&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;commit_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;scope&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;canonical&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;breaking&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;is_releasable_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;domains_affected&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;pipeline&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;data-architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;body&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Establishes DuckDB as canonical in-process analytical database...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;files_changed&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/canonical/pipelines/stages/duckdb_runtime.py&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;stats&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;files&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;insertions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;450&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;deletions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isyarat itu membantu membimbing pengklasifikasian: &lt;code&gt;is_releasable_type: true&lt;/code&gt; mencadangkan ini patut muncul dalam changelog. Kiraan insertion yang besar dan fail infrastruktur mencadangkan ia mungkin juga satu keputusan seni bina.&lt;/p&gt;
&lt;h3 id=&quot;langkah-4-klasifikasikan-commit&quot;&gt;Langkah 4: Klasifikasikan Commit&lt;/h3&gt;
&lt;p&gt;Dua laluan bercabang di sini: entri changelog dan keputusan seni bina.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk entri changelog:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; added&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini merekodkan bahawa commit &lt;code&gt;abc123&lt;/code&gt; patut muncul dalam changelog di bawah kategori “Added.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk keputusan seni bina:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pertama, dapatkan ID keputusan yang sebenar:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --domain&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pipeline&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Returns: DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kemudian klasifikasikan dengan ID keputusan itu:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --decision&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini memautkan commit itu kepada satu rekod keputusan yang akan dicipta atau dikemas kini.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk pemprosesan kelompok (apa yang sebenarnya kami lakukan):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Generate classifications file with LLM assistance&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; commit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --input&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classifications.jsonl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Format JSONL menyokong kedua-dua domain dalam satu pusingan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;release&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;category&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;added&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;extract&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;decision_id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-PL-142&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;def456&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;skip&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;reason&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Chore: dependency update&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;langkah-5-render-output&quot;&gt;Langkah 5: Render Output&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; render&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --package&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pk&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini menjana fail &lt;code&gt;CHANGELOG.md&lt;/code&gt; setiap package daripada ledger. Changelog adalah artifak terbitan — padamkannya dan ia akan dijana semula dengan sempurna daripada ledger sumber.&lt;/p&gt;
&lt;h2 id=&quot;struktur-rekod-keputusan&quot;&gt;Struktur Rekod Keputusan&lt;/h2&gt;
&lt;p&gt;Keputusan yang diekstrak menjadi fail YAML dengan metadata yang kaya:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-PL-142&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adopt DuckDB as Canonical Processing Runtime for Pipeline Stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;active&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;created&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Establishes DuckDB as the canonical in-process analytical database for pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  stage transformations. Provides a shared runtime module that resolves settings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  from pipeline defaults with stage-level overrides.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Pipeline stages performing data transformations each independently configured&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  DuckDB connections. This led to inconsistent settings, duplicated configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  code, and no way to tune DuckDB globally for a pipeline run.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DuckDB provides efficient in-process OLAP with zero configuration deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Centralized runtime module eliminates duplicated DuckDB setup across stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Hierarchical settings enable global tuning with stage-level overrides&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Memory limits and thread counts can be adjusted per-pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;impact&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  positive&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Consistent DuckDB configuration across all pipeline stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Single point of control for memory/thread tuning&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Reduced code duplication in conversion and export stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  negative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adds dependency on shared runtime module&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Stages must adopt new configuration pattern&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;source_commits&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;sha&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;90571786d99166c0039ca2e80e4d9cd96184bd85&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    message&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;feat(canonical): add DuckDB runtime for pipeline stages&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    date&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    role&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;primary&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/duckdb_runtime.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/runner.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/convert_hdx_admin_boundaries_to_geoparquet.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;related&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-DA-014&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Data architecture decisions that influenced this&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Setiap keputusan memaut kembali kepada commit sumbernya. Setiap keputusan menentukan fail mana yang terlibat. Hubungan antara keputusan adalah eksplisit.&lt;/p&gt;
&lt;h2 id=&quot;integrasi-cli-menyoal-memori-institusi&quot;&gt;Integrasi CLI: Menyoal Memori Institusi&lt;/h2&gt;
&lt;p&gt;Di sinilah gelung itu ditutup. Ejen boleh menyoal keputusan menerusi CLI:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Search by topic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;retry&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Memulangkan keputusan tentang logik cuba semula, pengendalian ralat, corak pemulihan.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Get full details on a specific decision&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-142&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Memulangkan rekod keputusan yang lengkap dengan konteks, rasional, dan kesan.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# List recent decisions for context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Menunjukkan pilihan seni bina apa yang telah dibuat baru-baru ini.&lt;/p&gt;
&lt;h3 id=&quot;bagaimana-ejen-menggunakan-ini&quot;&gt;Bagaimana Ejen Menggunakan Ini&lt;/h3&gt;
&lt;p&gt;Arahan garis dasar orchestrator kami merangkumi:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8;font-weight:bold&quot;&gt;**Essential CLI commands:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; `orkestra registry decisions search &quot;X&quot;`&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; — Find architectural decisions&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apabila seorang ejen diminta untuk melaksanakan sesuatu yang berkaitan dengan DuckDB, ia boleh menyemak dahulu:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;DuckDB&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dan menemui DEC-PL-142, mempelajari:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mengapa kami memilih DuckDB (context)&lt;/li&gt;
&lt;li&gt;Bagaimana menggunakannya dengan betul (agent_guidance)&lt;/li&gt;
&lt;li&gt;Fail apa yang perlu dilihat (files)&lt;/li&gt;
&lt;li&gt;Keputusan berkaitan apa yang wujud (related)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ejen itu tidak mencipta semula roda. Ia membina di atas corak yang telah ditetapkan.&lt;/p&gt;
&lt;h2 id=&quot;ujian-tiga-soalan&quot;&gt;Ujian Tiga Soalan&lt;/h2&gt;
&lt;p&gt;Bukan setiap commit layak mendapat rekod keputusan. Kami menggunakan Ujian Tiga Soalan untuk menapis:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Adakah ini sukar untuk dibuat?&lt;/strong&gt; Adakah ia memerlukan analisis, penilaian trade-off, atau perdebatan yang signifikan?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adakah ia mahal untuk diubah?&lt;/strong&gt; Adakah membatalkan keputusan ini memerlukan kerja semula yang signifikan?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adakah ia mempunyai kesan seluruh sistem?&lt;/strong&gt; Adakah ia menjejaskan pelbagai package atau mewujudkan corak yang akan diikuti oleh yang lain?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jika sesuatu commit menjawab “ya” kepada sekurang-kurangnya satu soalan ini, ia adalah calon untuk pengekstrakan keputusan. Kadar biasa kami: 1-4 keputusan bagi setiap 100 commit (kira-kira 1-4%).&lt;/p&gt;
&lt;p&gt;Untuk entri changelog, kayu ukurnya lebih rendah: sebarang perubahan yang dilihat pengguna (ciri, pembaikan, penambahbaikan) direkodkan. Chore dalaman, kemas kini dokumentasi, dan refaktor lazimnya dilangkau. Kadar biasa kami: 30-50 entri changelog bagi setiap 100 commit.&lt;/p&gt;
&lt;h2 id=&quot;penyimpanan-data-ledger-append-only&quot;&gt;Penyimpanan Data: Ledger Append-Only&lt;/h2&gt;
&lt;p&gt;Sistem mining menggunakan ledger JSONL append-only untuk operasi pelbagai-ejen yang bebas konflik:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/changelog/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── commits_processed.jsonl  # Classification ledger (both domains)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── release_notes.jsonl      # Changelog entries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── commits_index.yaml       # Derived index (gitignored)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/decisions/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── registry.yaml            # Decision index&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── records/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-001.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-002.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Format JSONL dengan &lt;code&gt;merge=union&lt;/code&gt; dalam &lt;code&gt;.gitattributes&lt;/code&gt; bermakna pelbagai ejen boleh mengklasifikasikan commit secara serentak tanpa konflik merge. Setiap baris adalah bebas.&lt;/p&gt;
&lt;h2 id=&quot;gate-pengesahan&quot;&gt;Gate Pengesahan&lt;/h2&gt;
&lt;p&gt;Sebelum sebarang sesi mining, kami menjalankan pengesahan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --quick&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini menyemak:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kesahihan format SHA&lt;/li&gt;
&lt;li&gt;Pematuhan format ID keputusan&lt;/li&gt;
&lt;li&gt;Tiada entri pendua untuk SHA yang sama&lt;/li&gt;
&lt;li&gt;Keputusan yang dirujuk benar-benar wujud&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Selepas pengklasifikasian, kami mengesahkan semula sebelum melakukan commit perubahan.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-ini-penting&quot;&gt;Mengapa Ini Penting&lt;/h2&gt;
&lt;p&gt;Gelung maklum balas yang kami bina menyelesaikan beberapa masalah:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk ahli pasukan baharu:&lt;/strong&gt; Daripada bertanya “mengapa kita buat X?”, mereka boleh mencari registri keputusan. Konteks itu terpelihara.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk ejen AI:&lt;/strong&gt; Mereka tidak beroperasi dalam ruang hampa. Mereka boleh menyoal pengetahuan institusi sebelum membuat cadangan. Apabila diminta menambah satu stage pipeline baharu, mereka boleh menemui corak DuckDB dan mengikutinya.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk konsistensi seni bina:&lt;/strong&gt; Keputusan bersifat eksplisit dan boleh dicari. Apabila seseorang mencadangkan pendekatan yang bercanggah dengan keputusan sedia ada, sistem boleh memaparkan konflik itu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk penjanaan changelog:&lt;/strong&gt; Nota keluaran tidak lagi perlu disiapkan secara tergesa-gesa pada saat akhir. Ia adalah hasil sampingan daripada pengklasifikasian berterusan semasa pembangunan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untuk onboarding:&lt;/strong&gt; Ejen baharu mewarisi konteks penuh pangkalan kod. Mereka bukan sahaja melihat kod — mereka melihat keputusan yang membentuknya.&lt;/p&gt;
&lt;h2 id=&quot;keadaan-semasa&quot;&gt;Keadaan Semasa&lt;/h2&gt;
&lt;p&gt;Setakat hari ini:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15,637 commit&lt;/strong&gt; diproses melalui pipeline&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;476 keputusan seni bina&lt;/strong&gt; diekstrak dan didokumenkan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6,799 entri changelog&lt;/strong&gt; direkodkan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liputan 100%&lt;/strong&gt; merentasi kedua-dua domain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setiap commit sejak kami bermula telah diklasifikasikan. Memori institusi itu lengkap dan boleh disoal.&lt;/p&gt;
&lt;h2 id=&quot;bermula&quot;&gt;Bermula&lt;/h2&gt;
&lt;p&gt;Jika anda ingin melaksanakan sesuatu yang serupa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mulakan dengan commit konvensional.&lt;/strong&gt; Pipeline mining berfungsi terbaik apabila commit mempunyai prefix berstruktur (&lt;code&gt;feat:&lt;/code&gt;, &lt;code&gt;fix:&lt;/code&gt;, &lt;code&gt;chore:&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Takrifkan domain anda.&lt;/strong&gt; Kami menggunakan domain seperti &lt;code&gt;pipeline&lt;/code&gt;, &lt;code&gt;agent-design&lt;/code&gt;, &lt;code&gt;observability&lt;/code&gt;, &lt;code&gt;data-modeling&lt;/code&gt;. Ini menyusun keputusan mengikut kawasan.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bina tabiat pengklasifikasian.&lt;/strong&gt; Mining berfungsi apabila pasukan kerap mengklasifikasikan commit. Pemprosesan kelompok dengan bantuan LLM membantu penskalaan.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Jadikan keputusan boleh disoal.&lt;/strong&gt; Nilainya berganda apabila ejen boleh mencari keputusan menerusi CLI. Strukturkan output anda untuk penggunaan mesin.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tutup gelung itu.&lt;/strong&gt; Keputusan patut mempengaruhi kerja masa depan. Sertakan rujukan keputusan dalam arahan ejen dan senarai semak semakan kod.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Matlamatnya bukan dokumentasi yang sempurna. Ia adalah menjadikan &lt;em&gt;sebab&lt;/em&gt; di sebalik perubahan boleh dicapai oleh manusia dan AI, hari ini dan enam bulan dari sekarang. Apabila perubahan menjadi memori institusi, pasukan membina di atas corak yang telah ditetapkan dan bukannya mencipta semula.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Aliran kerja mining adalah sebahagian daripada enjin orkestrasi kami, khususnya modul enjin konteks dalam package orkestrasi kami.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Workflows</category></item><item><title>Skill Mining: Daripada 3,500 Calon Kepada 466 Keupayaan</title><link>https://maguyva.ai/ms/blog/skill-mining-3500-and-counting</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/skill-mining-3500-and-counting</guid><description>Kami menyaring 3,500 calon skill dan menerima pakai 466. Satu gelung mining dan ingestion yang sistematik untuk membina perpustakaan skill ejen AI yang koheren pada skala besar.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka dalam penulisan ini mencerminkan sistem pada masa penerbitan (Januari 2026). Lihat &lt;a href=&quot;https://maguyva.ai/ms/team&quot;&gt;halaman pasukan&lt;/a&gt; kami untuk angka terkini.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;masalah-3500-skill&quot;&gt;Masalah 3,500 Skill&lt;/h2&gt;
&lt;p&gt;Apabila kami mula membina satu sistem orkestrasi ejen, kami berhadapan dengan satu cabaran yang menarik: terdapat beribu-ribu bakal skill yang bertaburan merentasi ekosistem AI. Repositori GitHub, dokumentasi vendor, projek komuniti, corak dalaman - skill wujud di mana-mana. Tetapi yang mana penting? Yang mana berfungsi? Dan bagaimana anda menyenggara satu perpustakaan skill yang koheren yang benar-benar boleh digunakan oleh ejen?&lt;/p&gt;
&lt;p&gt;Jawapan kami: satu gelung mining dan ingestion yang sistematik.&lt;/p&gt;
&lt;h2 id=&quot;angka-hari-ini&quot;&gt;Angka Hari Ini&lt;/h2&gt;
&lt;p&gt;Lebih tiga bulan sedikit selepas Anthropic melancarkan Agent Skills pada 16 Oktober 2025, berikut kedudukan kami apabila penulisan ini diterbitkan pada 27 Januari 2026:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metrik&lt;/th&gt;
&lt;th&gt;Bilangan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Calon dikenal pasti&lt;/td&gt;
&lt;td&gt;3,500+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill diterima pakai&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill vendor&lt;/td&gt;
&lt;td&gt;373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill dalaman&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor aktif&lt;/td&gt;
&lt;td&gt;25+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purata token setiap skill&lt;/td&gt;
&lt;td&gt;2,834&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool dirujuk&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tag unik&lt;/td&gt;
&lt;td&gt;635&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Kami telah menyemak lebih 3,500 calon skill. Kami telah menerima pakai 466. Itu adalah kadar penerimaan pakai 13% - dan keselektifan itu adalah sengaja.&lt;/p&gt;
&lt;h2 id=&quot;sistem-tier-pengetahuan&quot;&gt;Sistem Tier Pengetahuan&lt;/h2&gt;
&lt;p&gt;Bukan semua skill dicipta setara. Kami menyusunnya ke dalam lima lapisan pengetahuan (K0-K4), setiap satu mewakili skop kebolehterapan yang berbeza:&lt;/p&gt;
&lt;h3 id=&quot;k0-foundations-universal&quot;&gt;K0: Foundations (Universal)&lt;/h3&gt;
&lt;p&gt;Skill yang sepatutnya dimiliki oleh setiap ejen. Ini mewakili keupayaan “pemikir yang baik” yang berfungsi di mana-mana.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;foundations/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── test-first-discipline       # TDD: Red-Green-Refactor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── evidence-based-completion   # Verify before claiming done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── systematic-debugging        # Root cause methodology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── structured-planning         # Break work into tasks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── context-budget-awareness    # Manage token consumption&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Skill K0 boleh dibawa ke mana-mana projek, mana-mana domain, mana-mana stack. Ia mengekod corak kognitif universal.&lt;/p&gt;
&lt;h3 id=&quot;k1-identities-disiplin&quot;&gt;K1: Identities (Disiplin)&lt;/h3&gt;
&lt;p&gt;Skill “jurutera yang baik” atau “penyelidik yang baik” yang terpakai merentasi projek dalam sesuatu disiplin.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;identities/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── research-workflows          # Multi-source research&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── web-extraction-playbook     # Content extraction&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── code-review                 # PR review patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── cli-interface-standards     # CLI design patterns&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k2-domains-kepakaran-subjek&quot;&gt;K2: Domains (Kepakaran Subjek)&lt;/h3&gt;
&lt;p&gt;Skill “pakar pangkalan data yang baik” atau “jurutera keselamatan yang baik” yang boleh dibawa dalam sesuatu bidang.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domains/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── schema-migration-workflow   # Safe migration patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── rpc-validation-checklist    # RPC health checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── auth-validation-checklist   # JWT/OAuth patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── secrets-audit-checklist     # Credential scanning&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k3-stacks-teknologi&quot;&gt;K3: Stacks (Teknologi)&lt;/h3&gt;
&lt;p&gt;Skill “pengguna Supabase yang baik” atau “developer Cloudflare yang baik” untuk stack teknologi tertentu.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;stacks/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── maguyva-quickstart          # Our semantic search patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── cloudflare-deployment       # Workers/Pages deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── mcp-tool-best-practices     # MCP tool selection&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k4-project-organisasi&quot;&gt;K4: Project (Organisasi)&lt;/h3&gt;
&lt;p&gt;Skill khusus untuk organisasi dan aliran kerja kami.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;project/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── agent-creation-workflow     # How we build agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── skill-authoring-workflow    # How we write skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── mining-session-workflow     # This very process&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor-skill-evaluation     # Evaluation rubrics&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;gelung-mining&quot;&gt;Gelung Mining&lt;/h2&gt;
&lt;h3 id=&quot;fasa-1-discovery&quot;&gt;Fasa 1: Discovery&lt;/h3&gt;
&lt;p&gt;Skill datang dari mana-mana:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repositori Vendor&lt;/strong&gt;: AWS, Anthropic, Cloudflare, Supabase, dan penyumbang komuniti menerbitkan koleksi skill. Kami menjejaki 25+ root vendor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projek Komuniti&lt;/strong&gt;: GitHub penuh dengan templat Claude Code, corak ejen, dan takrifan aliran kerja.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Corak Dalaman&lt;/strong&gt;: Semasa pasukan kami menyelesaikan masalah, corak muncul. Ini diformalkan menjadi skill.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perlombongan Dokumentasi&lt;/strong&gt;: Dokumentasi teknikal selalunya mengandungi skill tersirat - prosedur, senarai semak, pokok keputusan.&lt;/p&gt;
&lt;p&gt;Discovery adalah berterusan. Kami menggunakan backlog skill untuk menjejaki calon sebelum penilaian formal.&lt;/p&gt;
&lt;h3 id=&quot;fasa-2-evaluation&quot;&gt;Fasa 2: Evaluation&lt;/h3&gt;
&lt;p&gt;Setiap calon melalui rubrik yang sama:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;adoption_criteria&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;fills_real_gap&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # We lack this capability&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;well_structured&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;actively_maintained&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Commits in last 6 months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;portable&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;            # Not hyper-specific&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;tested&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Evidence of usage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kesemua lima kriteria produk mesti lulus. Inilah sebabnya 87% calon ditolak.&lt;/p&gt;
&lt;p&gt;Kemudian setiap calon melalui satu semakan kepercayaan yang berasingan. Kami tidak menganggap repositori vendor rasmi, penyenggara komuniti yang terkenal, dan repositori GitHub rawak sebagai sumber kebenaran yang setara.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;trust_review&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  vendor_credibility&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ownership_verified&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Official vendor, known maintainer, or internal source&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;maintenance_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Recent commits, issue response, release history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adoption_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Evidence of real use, stars alone are not enough&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;provenance_clear&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;         # We can trace where the skill came from&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  prompt_injection_scan&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;hidden_instruction_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Buried &quot;ignore previous instructions&quot; patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;exfiltration_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Prompts that try to leak files, secrets, or context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;authority_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Claims of priority over system or developer rules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  script_audit&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;inspect_scripts&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Read shell/python/js helpers before adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;network_and_exec_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # curl|bash, remote downloads, subprocess execution&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;file_and_secret_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;   # Env vars, credential access, broad file writes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;destructive_action_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # rm, reset, overwrite, or unsafe automation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vendor yang dipercayai mendapat semakan provenans yang lebih ringan, tetapi tetap perlu lulus semakan. Sumber yang tidak dipercayai atau tidak diketahui mendapat audit manual yang lebih mendalam, dan kami tidak melaksanakan skrip yang dibundel sehingga ia telah dibaca, diskop, dan diklasifikasikan sebagai selamat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analisis Jurang&lt;/strong&gt;: Sebelum menerima pakai, kami mencari registri kami:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&amp;lt;capability&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jika kami sudah mempunyainya, kami tidak memerlukannya. Jika kami mempunyai sesuatu yang hampir, kami mungkin merge dan bukan menerima pakai.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skor Kedalaman dan Piawaian&lt;/strong&gt;: Kami juga memberi skor kepada sejauh mana sesuatu calon menggunakan model agent-skill sepenuhnya. Satu &lt;code&gt;SKILL.md&lt;/code&gt; yang bersendirian masih boleh berguna, tetapi skill yang lebih mendalam lebih bernilai apabila ia memisahkan arahan daripada rujukan, skrip, dan aset dengan cara yang digalakkan oleh &lt;code&gt;agentskills.io&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;skill_depth&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md only&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                     # Single instruction file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md + strong description&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Clear triggers and scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                  # Load docs only when needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds atomic scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Small, reviewable helpers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds assets/examples/templates&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;    # Full progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;depth_signals&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;standards_adherence&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;        # Structure aligns with agentskills.io conventions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;reference_quality&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Curated references, not giant context dumps&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;script_atomicity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Focused helpers, not opaque monoliths&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tool_boundary_clarity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Clear limits on what the skill can execute&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;community_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Stars/forks/users help, but only as a weak boost&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bintang GitHub boleh meningkatkan skor kredibiliti sedikit, tetapi ia tidak pernah menyelamatkan skill yang cetek atau tidak selamat. Satu repo berbintang tinggi dengan satu &lt;code&gt;SKILL.md&lt;/code&gt; yang kabur dan skrip legap mendapat skor lebih rendah daripada satu repo yang lebih kecil dengan penerangan yang tepat, &lt;code&gt;references/&lt;/code&gt; yang dikurasi, dan helper atomik yang benar-benar memanfaatkan keupayaan skill sepenuhnya.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analisis Struktur&lt;/strong&gt;: Kami menyemak kualiti skill:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;wc&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -l&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/SKILL.md&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Size check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Supporting files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Bundled docs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jika sesuatu calon merangkumi skrip, semakan itu menjadi lebih ketat. Satu skill yang baik bukan sekadar berguna; ia mesti mudah difahami, mempunyai skop yang jelas, dan selamat untuk diserahkan kepada seorang ejen. Penapis keselamatan itu sahaja menyingkirkan sebahagian calon yang ketara yang sebenarnya menarik.&lt;/p&gt;
&lt;h3 id=&quot;fasa-3-ingestion&quot;&gt;Fasa 3: Ingestion&lt;/h3&gt;
&lt;p&gt;Apabila sesuatu skill lulus penilaian, ia memasuki registri. Tetapi skill tidak pernah diterima pakai tanpa perubahan. Ia diubah suai supaya sesuai dengan sistem kami.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pengubahsuaian Semasa Penerimaan Pakai&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Normalisasi Metadata&lt;/strong&gt;: Setiap skill mendapat skema frontmatter kami&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Penetapan K-Tier&lt;/strong&gt;: Skill diletakkan dalam lapisan pengetahuan yang sesuai&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pengayaan Tag&lt;/strong&gt;: Tag ditambah untuk discovery&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pengisytiharan Tool&lt;/strong&gt;: Tool yang dibenarkan diisytiharkan secara eksplisit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Penjajaran Seksyen&lt;/strong&gt;: Kandungan disusun semula untuk sepadan dengan templat kami&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Satu YAML skill biasa selepas ingestion:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  identifier&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Systematic evaluation of vendor skills for adoption.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  layer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;K4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  semantic_folder&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;project&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  source&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-17&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skill-adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  allowed_tools&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Read&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Write&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Edit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Grep&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Glob&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fasa-4-scope-assignment&quot;&gt;Fasa 4: Scope Assignment&lt;/h3&gt;
&lt;p&gt;Skill diberikan kepada scope - kategori yang menentukan ejen mana memuatkan skill mana:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/rpc-validation-checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-auth&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/research-workflows&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/web-extraction-playbook&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/dataset-discovery-quickstart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejen mengisytiharkan scope mereka, dan skill diberikan secara automatik:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent definition&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Gets: all database skills + all research skills + universal skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;fasa-5-materialization&quot;&gt;Fasa 5: Materialization&lt;/h3&gt;
&lt;p&gt;Skill tidak digunakan dalam bentuk YAML dalam persekitaran produksi. Ia dirender menjadi fail SKILL.md yang boleh dimuatkan oleh Claude Code:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Arahan ini:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Membaca semua takrifan YAML skill&lt;/li&gt;
&lt;li&gt;Merendernya menerusi templat Jinja&lt;/li&gt;
&lt;li&gt;Menulis fail SKILL.md ke &lt;code&gt;.claude/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Menyusun mengikut K-tier (foundations/, identities/, domains/, stacks/, project/)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Struktur output akhir:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/skills/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── foundations/     # K0: Universal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── identities/      # K1: Discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── domains/         # K2: Subject&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── stacks/          # K3: Technology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── project/         # K4: Organization&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor/          # External skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;corak-scope-dorman&quot;&gt;Corak Scope Dorman&lt;/h2&gt;
&lt;p&gt;Salah satu corak kami yang paling berkuasa ialah skill “diterima pakai-tetapi-tidak-dimuatkan.” Kami memanggilnya dormant scope.&lt;/p&gt;
&lt;p&gt;Pertimbangkan skill pengkomputeran saintifik daripada repositori k-dense-scientific. Kami telah menerima pakai 120+ skill merangkumi bioinformatik, kimia, pengkomputeran kuantum, dan informatik klinikal. Tetapi kebanyakan ejen kami tidak memerlukan molecular docking atau analisis ekspresi gen.&lt;/p&gt;
&lt;p&gt;Daripada memuatkan kesemua 120 skill ke dalam setiap ejen (yang membazirkan tetingkap konteks), kami:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Menerima pakai&lt;/strong&gt; skill itu dengan scope tertentu (contohnya, &lt;code&gt;bioinformatics&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Mengekalkannya &lt;strong&gt;dorman&lt;/strong&gt; - didaftarkan tetapi tidak dimuatkan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mengaktifkannya&lt;/strong&gt; hanya apabila seorang ejen mengisytiharkan scope itu&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# In scopes.yaml - dormant scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Bioinformatics and genomics&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: []  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Empty - skills exist but aren&apos;t loaded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# When an agent needs bioinformatics:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent YAML&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Now loads bioinformatics skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Corak ini membolehkan kami mempunyai 466 skill dalam registri sementara ejen biasa hanya memuatkan 40-60 yang relevan.&lt;/p&gt;
&lt;h2 id=&quot;jenis-skill&quot;&gt;Jenis Skill&lt;/h2&gt;
&lt;p&gt;Skill datang dalam tiga corak kognitif:&lt;/p&gt;
&lt;h3 id=&quot;workflow&quot;&gt;Workflow&lt;/h3&gt;
&lt;p&gt;Langkah prosedural tersusun: “1. Lakukan X, 2. Kemudian Y, 3. Akhirnya Z”&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: schema-migration-workflow, mining-session-workflow&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;discipline&quot;&gt;Discipline&lt;/h3&gt;
&lt;p&gt;Panduan kawalan gelagat: “Sentiasa X”, “Jangan sesekali Y”, “Utamakan Z”&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: test-first-discipline, evidence-based-completion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;checklist&quot;&gt;Checklist&lt;/h3&gt;
&lt;p&gt;Kriteria pengesahan: “Sahkan X”, “Verifikasi Y”, “Semak Z”&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: auth-validation-checklist, secrets-audit-checklist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;gate-kualiti&quot;&gt;Gate Kualiti&lt;/h2&gt;
&lt;p&gt;Setiap skill mesti lulus pengesahan sebelum ia dikeluarkan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;validation&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  file_exists&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Skill file at declared path&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  frontmatter_valid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Frontmatter parses correctly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  sections_complete&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Expected sections present&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tools_registered&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Declared tools exist in registry&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Penerangan mesti 50-400 aksara dengan frasa pencetus (“Use when…”, “When you need…”) supaya Claude Code tahu bila hendak mencadangkannya.&lt;/p&gt;
&lt;p&gt;Kami mengesahkan secara berterusan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;ekosistem-vendor&quot;&gt;Ekosistem Vendor&lt;/h2&gt;
&lt;p&gt;373 skill vendor kami datang daripada:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Penyedia&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Agent&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Perkhidmatan cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Penjanaan dokumen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Pengkomputeran edge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Pangkalan data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k-dense&lt;/td&gt;
&lt;td&gt;100+&lt;/td&gt;
&lt;td&gt;Pengkomputeran saintifik&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;silvainfm&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Data science&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java Developer Kit&lt;/td&gt;
&lt;td&gt;45+&lt;/td&gt;
&lt;td&gt;Spring/Java&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Automasi browser&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Setiap root vendor diisytiharkan dalam metadata.yaml:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;vendor_roots&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/aws-agent-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;aws&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/k-dense-scientific/scientific-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;k-dense&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;supabase&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apabila &lt;code&gt;orkestra sync&lt;/code&gt; berjalan, skill vendor disymlink ke dalam &lt;code&gt;.claude/skills/vendor/&lt;/code&gt; dengan namespace penyedianya.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-kami-pelajari&quot;&gt;Apa Yang Kami Pelajari&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Keselektifan berbaloi.&lt;/strong&gt; Amat menggoda untuk menerima pakai segala-galanya yang kelihatan berguna. Tetapi setiap skill menelan kos token. Dengan purata 2,834 token setiap skill, konteks yang berlebihan cepat membebankan sistem. Kadar penerimaan pakai 13% kami mengekalkan konteks ejen yang ringkas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Struktur membolehkan discovery.&lt;/strong&gt; Sistem K-tier bukan sekadar penyusunan - ia tentang portabiliti. Skill K0 boleh digunakan semula di mana-mana. Skill K4 sengaja khusus projek. Kejelasan ini membantu manusia dan ejen mencari apa yang mereka perlukan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dormant scope membolehkan penskalaan.&lt;/strong&gt; Anda boleh menerima pakai beratus-ratus skill tanpa memuatkannya semua. Scope membolehkan anda membina satu registri komprehensif sambil mengekalkan tetingkap konteks ejen individu boleh diurus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pengubahsuaian semasa penerimaan pakai adalah penting.&lt;/strong&gt; Skill vendor mentah jarang sesuai dengan sistem anda. Proses ingestion - menambah metadata, memberikan tier, memperkaya tag - menjadikan skill luaran berfungsi secara dalaman.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mining adalah berterusan.&lt;/strong&gt; Angka 3,500 itu terus berkembang. Repo vendor baharu muncul. Corak komuniti terserlah. Aliran kerja dalaman menjadi mantap. Gelung ini tidak pernah berhenti.&lt;/p&gt;
&lt;h2 id=&quot;apa-seterusnya&quot;&gt;Apa Seterusnya&lt;/h2&gt;
&lt;p&gt;Kami sedang mengusahakan beberapa penambahbaikan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pengesanan gap automatik&lt;/strong&gt;: Memberi amaran apabila kegagalan ejen yang biasa boleh ditangani oleh satu skill yang belum diterima pakai&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aliran kerja deprecation skill&lt;/strong&gt;: Proses formal untuk menghentikan penggunaan skill yang telah digantikan atau tidak digunakan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kebergantungan silang-skill&lt;/strong&gt;: Pengisytiharan eksplisit prasyarat skill&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analitik penggunaan&lt;/strong&gt;: Menjejaki skill mana yang benar-benar dipanggil oleh ejen berbanding sekadar dimuatkan&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Gelung skill mining adalah infrastruktur. Ia tidak glamour. Tetapi itulah yang menjadikan 41 ejen berfungsi secara koheren dengan 466 keupayaan sambil kekal dalam had konteks.&lt;/p&gt;
&lt;p&gt;Itulah kisah bagaimana 3,500 menjadi 466. Bukan dengan mengabaikan 3,000 - tetapi dengan menilainya secara sistematik dan menerima pakai hanya apa yang berfungsi.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Mahu melihat sistem skill beraksi? Lihat &lt;code&gt;uv run orkestra skills list&lt;/code&gt; untuk meneroka registri semasa kami.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Skills</category></item><item><title>Progressive Disclosure: Tetingkap CLI ke Dalam Sistem Ejen</title><link>https://maguyva.ai/ms/blog/progressive-disclosure-cli-into-agents</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/progressive-disclosure-cli-into-agents</guid><description>Sistem ejen bersifat legap secara lalai. Progressive disclosure memberi operator paparan CLI berlapis daripada semakan status pantas kepada bahagian dalaman ejen penuh dan jejak keputusan.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka dalam penulisan ini mencerminkan sistem pada masa penerbitan (Januari 2026). Lihat &lt;a href=&quot;https://maguyva.ai/ms/team&quot;&gt;halaman pasukan&lt;/a&gt; kami untuk angka terkini.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sistem ejen bersifat legap mengikut reka bentuk. Ia membuat keputusan, memanggil tool, dan menyelaraskan kerja merentasi berpuluh-puluh spesialis. Tetapi apabila sesuatu tidak kena — atau apabila anda sekadar mahu memahami apa yang sedang berlaku — di manakah anda perlu lihat?&lt;/p&gt;
&lt;p&gt;Jawapannya ialah progressive disclosure: satu antara muka berlapis yang mendedahkan tepat seberapa banyak kerumitan yang anda perlukan, tepat pada masa anda memerlukannya.&lt;/p&gt;
&lt;h2 id=&quot;masalah-kelegapan&quot;&gt;Masalah Kelegapan&lt;/h2&gt;
&lt;p&gt;Satu sistem orkestrasi ejen moden mungkin mempunyai:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;40+ ejen spesialis, setiap satu dengan keupayaan berbeza&lt;/li&gt;
&lt;li&gt;700+ skill merentasi automasi dalaman dan integrasi vendor&lt;/li&gt;
&lt;li&gt;470+ keputusan seni bina yang membentuk gelagat&lt;/li&gt;
&lt;li&gt;Berpuluh-puluh server tool MCP yang menyediakan keupayaan luaran&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kerumitan ini adalah sengaja. Ejen memerlukan akses kepada konteks yang kaya — pengetahuan domain, kecerdasan kod, skema pangkalan data — untuk membuat keputusan yang baik. Tetapi kekayaan yang sama itu mencipta satu masalah keterlihatan.&lt;/p&gt;
&lt;p&gt;Bagaimana anda tahu ejen mana yang mengendalikan migrasi pangkalan data? Keputusan apa yang membentuk gelagat pemeringkatan sistem carian? Tool apa yang boleh dicapai oleh architecture advisor?&lt;/p&gt;
&lt;p&gt;Tanpa akses berstruktur, anda terpaksa membaca kod sumber atau berharap dokumentasi itu terkini.&lt;/p&gt;
&lt;h2 id=&quot;progressive-disclosure-sebagai-seni-bina&quot;&gt;Progressive Disclosure sebagai Seni Bina&lt;/h2&gt;
&lt;p&gt;Progressive disclosure bukan sekadar corak UI. Ia adalah satu prinsip seni bina: menyusun maklumat dalam lapisan, setiap satu lebih mendalam daripada yang sebelumnya, supaya pengguna boleh berhenti pada tahap yang menjawab soalan mereka.&lt;/p&gt;
&lt;p&gt;Untuk sistem ejen, ini diterjemahkan kepada arahan CLI pada kedalaman yang semakin meningkat:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tahap&lt;/th&gt;
&lt;th&gt;Arahan&lt;/th&gt;
&lt;th&gt;Soalan Yang Dijawab&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra system status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Adakah segala-galanya sihat?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ejen apa yang wujud?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents info &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Apa yang dilakukan oleh ejen ini?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra decisions search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mengapa ia berfungsi sebegini?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Tool MCP Maguyva&lt;/td&gt;
&lt;td&gt;Tunjukkan kod itu.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Setiap tahap menjawab satu soalan susulan yang semula jadi. Anda jarang perlu melompat terus ke tahap 5.&lt;/p&gt;
&lt;h2 id=&quot;tahap-1-kesihatan-sistem&quot;&gt;Tahap 1: Kesihatan Sistem&lt;/h2&gt;
&lt;p&gt;Soalan pertama sentiasa: adakah segala-galanya berfungsi?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; system&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_internal&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;466&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_vendor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;240&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;706&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;commands&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Satu arahan. Empat angka. Cukup untuk mengetahui sistem itu telah dikonfigurasikan dan registri telah diisi.&lt;/p&gt;
&lt;p&gt;Jika bilangan ejen jatuh secara tidak dijangka atau skill gagal dimuatkan, anda melihatnya di sini dahulu. Tiada keperluan menyelam ke dalam log.&lt;/p&gt;
&lt;h2 id=&quot;tahap-2-inventori-ejen&quot;&gt;Tahap 2: Inventori Ejen&lt;/h2&gt;
&lt;p&gt;Sebaik sahaja anda tahu sistem itu sihat, soalan seterusnya ialah: apa yang tersedia?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini memulangkan data berstruktur — nama ejen, penerangan, keutamaan model, liputan domain. Output itu adalah JSON secara lalai, memudahkan ia untuk di-pipe ke dalam &lt;code&gt;jq&lt;/code&gt; untuk penapisan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;.agents[] | select(.model == &quot;opus&quot;) | .name&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mahukan ejen yang mengendalikan kerja pangkalan data? Arahan carian menyempitkan pencarian itu:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini mengimbas nama, penerangan, dan keupayaan. Anda menemui spesialis yang tepat tanpa membaca 40 takrifan ejen.&lt;/p&gt;
&lt;h2 id=&quot;tahap-3-kenali-ejen-secara-mendalam&quot;&gt;Tahap 3: Kenali Ejen secara Mendalam&lt;/h2&gt;
&lt;p&gt;Menemui satu ejen yang kelihatan relevan? Arahan &lt;code&gt;info&lt;/code&gt; mendedahkan segala-galanya:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architecture-advisor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output itu merangkumi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadata&lt;/strong&gt;: Nama, kategori, keutamaan model, penerangan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domains&lt;/strong&gt;: Kawasan pengetahuan mana yang diliputi oleh ejen ini&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identity&lt;/strong&gt;: Sifat karakter (architect, strategist, knowledge-architect)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panduan tool&lt;/strong&gt;: Dokumentasi tool mana yang disuntik ke dalam konteks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt;: Senarai penuh tool MCP yang boleh dicapai oleh ejen ini&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Berikut satu sampel apa yang anda lihat:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;architecture-advisor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;model&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;opus&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;description&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Strategic decision-making and architectural guidance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;domains&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;product&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;development/architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;meta/strategy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;mcp_tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__intelligent_search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__analyze_dependencies&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__supabase__execute_sql&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt;      ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini memberitahu anda dengan tepat apa yang boleh dilakukan oleh ejen itu. Tidak perlu membaca kod sumber.&lt;/p&gt;
&lt;h2 id=&quot;tahap-4-arkeologi-keputusan&quot;&gt;Tahap 4: Arkeologi Keputusan&lt;/h2&gt;
&lt;p&gt;Ejen bergelagat mengikut keputusan yang didokumenkan. Apabila anda perlu memahami &lt;em&gt;mengapa&lt;/em&gt; sesuatu berfungsi dengan cara tertentu, registri keputusan adalah sumber kebenaran.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;agent&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini memulangkan keputusan seni bina yang sepadan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;status&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;active&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Setiap keputusan mempunyai provenans penuh — bila ia dibuat, mengapa, trade-off apa yang dipertimbangkan, commit mana yang melaksanakannya:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-SR-049&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Changes default values for search tools to AI-agent-optimal behavior...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;AI agents work better with pre-ranked, importance-weighted results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Graph metrics already computed by pipeline - leverage them&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Community context helps agents understand feature scope in single query&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;source_commits&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;156a880d05eae295669ef7c194b039023f245511&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;message&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(maguyva): enable boost_by_importance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini adalah dokumentasi seni bina yang kekal terkini kerana ia di-mine daripada commit, bukan disenggara secara manual.&lt;/p&gt;
&lt;h2 id=&quot;tahap-5-kecerdasan-kod-langsung&quot;&gt;Tahap 5: Kecerdasan Kod Langsung&lt;/h2&gt;
&lt;p&gt;Apabila anda perlu melihat pelaksanaan sebenar — bukan metadata tentangnya — tool MCP Maguyva menyediakan akses langsung.&lt;/p&gt;
&lt;p&gt;Dari dalam sesuatu sesi ejen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__intelligent_search&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  query: &quot;agent context loading&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini auto-menghalakan merentasi carian semantic, text, dan AST untuk mencari kod yang relevan. Untuk simbol khusus:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__find_symbol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  symbol_name: &quot;load_agent_context&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Untuk analisis kebergantungan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__analyze_dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  target: &quot;packages/orchestration/core/agents.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini bukan sekadar pengganti grep. Ia memahami struktur graf (graph-aware), diindeks secara semantik, dan diintegrasikan dengan kecerdasan kod yang sama yang menggerakkan ejen itu sendiri.&lt;/p&gt;
&lt;h2 id=&quot;carian-bersatu-merentasi-registri&quot;&gt;Carian Bersatu Merentasi Registri&lt;/h2&gt;
&lt;p&gt;Kadangkala anda tidak tahu registri mana yang menyimpan jawapan itu. Carian bersatu merangkumi segala-galanya:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --summary&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;query&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;254&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;counts&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;skills&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;59&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;476&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;truths&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;packages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;254 padanan merentasi lima registri. Ringkasan itu memberitahu anda di mana untuk menyelam lebih dalam. Buang &lt;code&gt;--summary&lt;/code&gt; untuk hasil terperinci, atau tambah &lt;code&gt;--limit 5&lt;/code&gt; untuk mengekalkan output yang boleh diurus.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-ini-penting&quot;&gt;Mengapa Ini Penting&lt;/h2&gt;
&lt;p&gt;Progressive disclosure bukan sekadar tentang kemudahan. Ia mengubah cara anda berinteraksi dengan sistem yang kompleks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Penyahpepijatan menjadi terkawal.&lt;/strong&gt; Apabila seorang ejen membuat keputusan yang tidak dijangka, anda tidak perlu grep menerusi log. Anda menyemak tool apa yang boleh dicapainya (&lt;code&gt;agents info&lt;/code&gt;), keputusan apa yang membentuk gelagatnya (&lt;code&gt;decisions search&lt;/code&gt;), dan menjejaki pelaksanaan jika perlu (&lt;code&gt;intelligent_search&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Onboarding dipercepatkan.&lt;/strong&gt; Ahli pasukan baharu tidak perlu membaca keseluruhan pangkalan kod. Mereka bermula dengan &lt;code&gt;system status&lt;/code&gt;, meneroka dengan &lt;code&gt;agents list&lt;/code&gt;, dan menyelam lebih dalam hanya apabila mereka bertembung dengan sesuatu yang mereka tidak faham.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentasi kekal terkini.&lt;/strong&gt; Kerana CLI membaca daripada registri yang sama yang mengkonfigurasikan ejen, output itu sentiasa tepat. Tiada penyimpangan antara apa yang dikatakan oleh dokumentasi dan apa yang dilakukan oleh sistem.&lt;/p&gt;
&lt;h2 id=&quot;cli-sebagai-antara-muka&quot;&gt;CLI sebagai Antara Muka&lt;/h2&gt;
&lt;p&gt;Kami boleh sahaja membina satu dashboard web. Kami boleh sahaja menulis dokumentasi yang ekstensif. Sebaliknya, kami membina satu CLI yang membaca daripada sumber kebenaran.&lt;/p&gt;
&lt;p&gt;CLI itu mempunyai kelebihan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Boleh Digubah (Composable)&lt;/strong&gt;: Pipe output menerusi &lt;code&gt;jq&lt;/code&gt;, integrasikan dengan skrip&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boleh Diskrip (Scriptable)&lt;/strong&gt;: Automasikan semakan, jana laporan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pantas&lt;/strong&gt;: Tiada pemuatan halaman, tiada aliran autentikasi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tepat&lt;/strong&gt;: Membaca konfigurasi sebenar, bukan representasi cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Untuk sistem di mana ketepatan lebih penting daripada estetika, CLI menang.&lt;/p&gt;
&lt;h2 id=&quot;membina-progressive-disclosure-anda-sendiri&quot;&gt;Membina Progressive Disclosure Anda Sendiri&lt;/h2&gt;
&lt;p&gt;Jika anda sedang membina sistem ejen, pertimbangkan bagaimana pengguna akan memeriksanya:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Mulakan dengan semakan kesihatan.&lt;/strong&gt; Satu arahan yang memberitahu anda sama ada perkara berfungsi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sediakan paparan inventori.&lt;/strong&gt; Senaraikan apa yang wujud sebelum menerangkan apa yang ia lakukan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bolehkan pertanyaan bersasar.&lt;/strong&gt; Carian mengatasi penyemakan imbas pada skala besar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dedahkan provenans.&lt;/strong&gt; Benarkan pengguna menjejaki keputusan kembali kepada asal-usulnya.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sambungkan kepada kecerdasan kod.&lt;/strong&gt; Akhirnya, pengguna perlu melihat pelaksanaan.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Setiap lapisan menjawab satu soalan susulan. Bina ia mengikut urutan kekerapan — kebanyakan pengguna berhenti pada lapisan 2 atau 3. Hanya pengguna mahir yang mencapai lapisan 5.&lt;/p&gt;
&lt;p&gt;Matlamatnya bukan untuk mendedahkan segala-galanya. Ia adalah untuk mendedahkan tepat apa yang diperlukan, tepat pada masa ia diperlukan. Itulah progressive disclosure yang diterapkan kepada seni bina ejen.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>CLI</category><category>Tooling</category></item><item><title>Ground Truths: Menambatkan Ejen AI kepada Realiti</title><link>https://maguyva.ai/ms/blog/ground-truths-anchoring-ai-to-reality</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/ground-truths-anchoring-ai-to-reality</guid><description>Ejen AI berhalusinasi dengan penuh keyakinan. Ground Truths adalah fakta berversi dan berskop yang menambatkan gelagat ejen kepada realiti. Berikut cara kami membina dan menguatkuasakannya.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka dalam penulisan ini mencerminkan sistem pada masa penerbitan (Januari 2026). Lihat &lt;a href=&quot;https://maguyva.ai/ms/team&quot;&gt;halaman pasukan&lt;/a&gt; kami untuk angka terkini.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ejen AI amat berkebolehan. Mereka boleh menaakul, mensintesis, dan menjana. Tetapi mereka mempunyai satu kelemahan asasi: mereka mereka-reka perkara. Bukan dengan niat jahat, tetapi dengan penuh keyakinan. Seorang ejen mungkin mencipta parameter API yang tidak wujud, merujuk konfigurasi yang tidak pernah ditakrifkan, atau menggunakan corak daripada data latihannya yang bercanggah dengan seni bina sebenar anda.&lt;/p&gt;
&lt;p&gt;Mitigasi piawai ialah “beri ejen lebih banyak konteks.” Tetapi konteks boleh bercanggah. Dokumentasi menyimpang daripada pelaksanaan. Komen menipu. Malah kod pun boleh mengelirukan apabila dibaca tanpa memahami niat.&lt;/p&gt;
&lt;p&gt;Kami memerlukan sesuatu yang lebih eksplisit. Sesuatu yang tidak boleh diabaikan atau disalahtafsir. Sesuatu yang dapat menambatkan ejen kepada realiti yang boleh disahkan.&lt;/p&gt;
&lt;p&gt;Kami menamakannya Ground Truths.&lt;/p&gt;
&lt;h2 id=&quot;apakah-itu-ground-truth&quot;&gt;Apakah itu Ground Truth?&lt;/h2&gt;
&lt;p&gt;Satu Ground Truth adalah pernyataan fakta yang eksplisit dan berversi yang mesti dihormati oleh ejen. Ia bukan dokumentasi. Ia bukan komen. Ia adalah entiti kelas pertama dalam sistem dengan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pengecam unik&lt;/strong&gt; (seperti &lt;code&gt;GT-MAG-015&lt;/code&gt; atau &lt;code&gt;GT-MAG-036&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status kitar hayat&lt;/strong&gt; (current, tentative, atau deprecated)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skop&lt;/strong&gt; (seluruh platform, khusus package, atau terikat domain)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bukti&lt;/strong&gt; (laluan fail, URL, atau rujukan yang membuktikan pernyataan itu)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panduan ejen&lt;/strong&gt; (arahan jelas tentang tindakan yang perlu dilakukan atau dielakkan)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Berikut contoh daripada platform kecerdasan kod Maguyva kami:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Fuzzy symbol matching is opt-in via `find_similar=true`.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Default behavior returns empty results for non-existent symbols;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    `exact_match=true` enforces strict matching and disables all fuzzy fallbacks.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Deterministic defaults prevent agents from receiving misleading results.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Typos should fail explicitly rather than silently returning unrelated symbols.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/code_analysis_service.py&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/docs/quick_reference/parameters.md&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-25&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ai_first&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini bukan prosa. Ia adalah kontrak. Apabila seorang ejen bertemu dengan Ground Truth ini, ia tahu:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lalai adalah deterministik (hasil kosong, bukan tekaan berasaskan padanan fuzzy)&lt;/li&gt;
&lt;li&gt;Terdapat parameter khusus (&lt;code&gt;find_similar&lt;/code&gt;, &lt;code&gt;exact_match&lt;/code&gt;) dengan gelagat yang ditakrifkan&lt;/li&gt;
&lt;li&gt;Bukti wujud dalam fail khusus yang boleh disahkan&lt;/li&gt;
&lt;li&gt;Pernyataan itu telah disahkan pada tarikh tertentu&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;anatomi-registri-ground-truth&quot;&gt;Anatomi Registri Ground Truth&lt;/h2&gt;
&lt;p&gt;Ground Truths hidup dalam registri YAML di bawah &lt;code&gt;ai_assets/reference/ground_truths.yaml&lt;/code&gt;. Setiap package atau domain boleh mempunyai registrinya sendiri. Strukturnya ialah:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva Ground Truths&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Foundational constraints and principles that guide Maguyva.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  owner&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;maguyva&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  render&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    include_statuses&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    show_deprecated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    groups&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Product Principles&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;brand&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Architecture &amp;amp; Boundaries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architecture&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;boundaries&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;cqrs&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;statements&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-001&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva is read-only with respect to user repositories...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Registri itu merangkumi metadata tentang koleksi itu sendiri, konfigurasi render untuk penjanaan dokumentasi, dan pernyataan itu sendiri. Setiap pernyataan mengikuti skema ketat yang disahkan oleh model Pydantic:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GroundTruthStatement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;BaseModel&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    status: GTStatus  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# current, tentative, deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    source: GTSource &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # claude-code, orkestra, discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    scope: GTScope  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# platform, package, domain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    statement: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    rationale: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    evidence: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    last_verified: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    tags: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    agent_guidance: AgentGuidance &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;cara-ejen-mengakses-ground-truths&quot;&gt;Cara Ejen Mengakses Ground Truths&lt;/h2&gt;
&lt;p&gt;Ground Truths didedahkan menerusi pelbagai saluran:&lt;/p&gt;
&lt;h3 id=&quot;1-dokumentasi-yang-dirender&quot;&gt;1. Dokumentasi Yang Dirender&lt;/h3&gt;
&lt;p&gt;Arahan &lt;code&gt;orkestra sync&lt;/code&gt; mengubah registri YAML kepada markdown yang boleh dibaca:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini menjana fail &lt;code&gt;GROUND_TRUTHS.md&lt;/code&gt; yang disertakan dalam konteks ejen. Output yang dirender mengumpulkan pernyataan mengikut status dan kategori:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;## Current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Product Principles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Maguyva is read-only with respect to user repositories... (GT-MAG-001)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Design tool responses for AI agents first... (GT-MAG-009)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Architecture &amp;amp; Boundaries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Pipeline and Maguyva boundaries are intentional... (GT-MAG-006)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-carian-cli&quot;&gt;2. Carian CLI&lt;/h3&gt;
&lt;p&gt;Ejen dengan akses shell boleh mencari Ground Truths secara programatik:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;embedding&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --tag&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; security&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; current&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Fungsi carian itu memberi skor kepada padanan merentasi pelbagai medan dengan relevans berpemberat:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; truth_fields&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(gt: GroundTruthStatement) -&amp;gt; list[FieldSpec]:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.id]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;statement&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.statement]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.rationale] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; gt.rationale &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.tags &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;evidence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.evidence &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-komposisi-konteks&quot;&gt;3. Komposisi Konteks&lt;/h3&gt;
&lt;p&gt;Apabila ejen dirender daripada takrifan YAML, konteks mereka boleh merujuk registri Ground Truth:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context_composition&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  domain_knowledge&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/maguyva/ai_assets/reference/ground_truths.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini memastikan Ground Truths yang relevan dimuatkan sebelum ejen memulakan kerja.&lt;/p&gt;
&lt;h2 id=&quot;kategori-ground-truths&quot;&gt;Kategori Ground Truths&lt;/h2&gt;
&lt;p&gt;Melihat merentasi registri kami, Ground Truths berkumpul kepada beberapa corak:&lt;/p&gt;
&lt;h3 id=&quot;prinsip-produk&quot;&gt;Prinsip Produk&lt;/h3&gt;
&lt;p&gt;Kekangan tentang apa produk itu dan apa yang bukan:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Maguyva bersifat baca-sahaja berhubung repositori pengguna; satu-satunya aset yang tidak boleh dibina semula ialah cache embeddings berbayar.” (GT-MAG-001)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;sempadan-seni-bina&quot;&gt;Sempadan Seni Bina&lt;/h3&gt;
&lt;p&gt;Di mana tanggungjawab berada dan mengapa:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Sempadan antara pipeline dan Maguyva adalah sengaja: pipeline boleh digunakan semula, Maguyva memegang logik khusus kod, dan CQRS memisahkan penulisan stage daripada bacaan server.” (GT-MAG-006)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;peraturan-anti-halusinasi&quot;&gt;Peraturan Anti-Halusinasi&lt;/h3&gt;
&lt;p&gt;Mandat eksplisit yang mengekalkan kontrak tool bersifat deterministik dan bukan diandaikan:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Padanan simbol fuzzy adalah opt-in menerusi &lt;code&gt;find_similar=true&lt;/code&gt;. Gelagat lalai memulangkan hasil kosong untuk simbol yang tidak wujud; &lt;code&gt;exact_match=true&lt;/code&gt; menguatkuasakan padanan ketat dan melumpuhkan semua fallback fuzzy.” (GT-MAG-015)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;gate-kualiti&quot;&gt;Gate Kualiti&lt;/h3&gt;
&lt;p&gt;Piawaian yang mesti dikekalkan:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Perubahan kepada infrastruktur kongsi (post_filters.py, relationship extractor, handler kongsi) MESTI disahkan terhadap SEMUA bahasa yang disokong menerusi penjanaan manifest penuh sebelum commit. Pengesahan satu bahasa sahaja tidak mencukupi untuk kod kongsi.” (GT-MAG-036)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;corak-kod&quot;&gt;Corak Kod&lt;/h3&gt;
&lt;p&gt;Keperluan pelaksanaan:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Gunakan &lt;code&gt;asyncio.to_thread()&lt;/code&gt; untuk kerja terikat-CPU dalam konteks async; corak &lt;code&gt;loop.run_in_executor()&lt;/code&gt; yang deprecated tidak sepatutnya digunakan dalam kod baharu.” (GT-MAG-018)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;lifecycle-sesuatu-ground-truth&quot;&gt;Lifecycle Sesuatu Ground Truth&lt;/h2&gt;
&lt;p&gt;Ground Truths tidak statik. Ia berkembang menerusi lifecycle yang ditakrifkan:&lt;/p&gt;
&lt;h3 id=&quot;tentative&quot;&gt;Tentative&lt;/h3&gt;
&lt;p&gt;Satu kebenaran yang dicadangkan sedang dinilai. Pernyataan itu direkodkan tetapi mungkin berubah:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-044&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    get_file with include_metadata=false may still return metadata in the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    response because middleware may re-inject it for AI agent disambiguation.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;current&quot;&gt;Current&lt;/h3&gt;
&lt;p&gt;Satu kebenaran yang disahkan yang mesti dihormati oleh ejen. Bukti telah disahkan:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-017&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/supabase.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;deprecated&quot;&gt;Deprecated&lt;/h3&gt;
&lt;p&gt;Satu kebenaran yang tidak lagi terpakai. Disimpan untuk rujukan sejarah dengan penunjuk kepada apa yang menggantikannya:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-099&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  superseded_by&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  notes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Replaced when we moved to explicit matching behavior&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mengapa-bukan-sekadar-dokumentasi&quot;&gt;Mengapa Bukan Sekadar Dokumentasi?&lt;/h2&gt;
&lt;p&gt;Dokumentasi berkhidmat untuk tujuan yang berbeza. Ia menjelaskan. Ia mengajar. Ia boleh kabur, boleh menggunakan pengubah suai seperti “secara umum” atau “biasanya.”&lt;/p&gt;
&lt;p&gt;Ground Truths tidak boleh kabur. Ia adalah dakwaan. Ia sama ada terpakai atau tidak.&lt;/p&gt;
&lt;p&gt;Pertimbangkan perbezaannya:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentasi:&lt;/strong&gt; “API secara umum memulangkan hasil kosong apabila simbol tidak dijumpai, walaupun padanan fuzzy mungkin diaktifkan dalam sesetengah konfigurasi.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ground Truth:&lt;/strong&gt; “Gelagat lalai memulangkan hasil kosong untuk simbol yang tidak wujud; &lt;code&gt;exact_match=true&lt;/code&gt; menguatkuasakan padanan ketat dan melumpuhkan semua fallback fuzzy.”&lt;/p&gt;
&lt;p&gt;Yang pertama berguna untuk manusia yang sedang mempelajari sistem. Yang kedua boleh ditindaki oleh ejen yang membuat keputusan.&lt;/p&gt;
&lt;h2 id=&quot;panduan-ejen-lakukan-dan-elakkan&quot;&gt;Panduan Ejen: Lakukan dan Elakkan&lt;/h2&gt;
&lt;p&gt;Sesetengah Ground Truths merangkumi panduan ejen yang eksplisit:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  agent_guidance&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    do&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Fix extraction bugs in YAML config, handlers, or tree-sitter queries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add test cases at the layer where the fix lives&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    avoid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Adding validator filters to mask production bugs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Creating test-only workarounds for extraction issues&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini menghapuskan kekaburan. Seorang ejen yang membaca ini tahu bukan sahaja apa yang benar, tetapi tindakan apa yang tersirat oleh kebenaran itu.&lt;/p&gt;
&lt;h2 id=&quot;pengesahan-dan-penyenggaraan&quot;&gt;Pengesahan dan Penyenggaraan&lt;/h2&gt;
&lt;p&gt;Ground Truths memerlukan penyenggaraan. Kami menjejaki:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;last_verified&lt;/strong&gt;: Bila seseorang mengesahkan pernyataan itu masih terpakai&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;evidence&lt;/strong&gt;: Fail yang membuktikan pernyataan itu (boleh disemak kewujudannya)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;source&lt;/strong&gt;: Dari mana kebenaran itu berasal (pemeriksaan CLI, semakan seni bina, pembelajaran pasca-insiden)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sesuatu Ground Truth dengan tarikh pengesahan yang sudah lama atau pautan bukti yang rosak adalah isyarat untuk disiasat. Sama ada kebenaran itu masih sah dan memerlukan pengesahan semula, atau realiti telah berubah dan kebenaran itu memerlukan kemas kini.&lt;/p&gt;
&lt;h2 id=&quot;contoh-sebenar-daripada-persekitaran-produksi&quot;&gt;Contoh Sebenar daripada Persekitaran Produksi&lt;/h2&gt;
&lt;h3 id=&quot;sempadan-keselamatan&quot;&gt;Sempadan Keselamatan&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-014&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Maguyva queries are search patterns, not executable code.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    SQL injection prevention is handled by PostgREST parameterization;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    application-layer SQL keyword blocking must never be added.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Blocking SQL keywords breaks legitimate code search. Users search FOR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    code containing patterns like &apos;DROP TABLE&apos;, they don&apos;t execute them.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ground Truth ini menghalang satu kelas “penambahbaikan keselamatan” yang tersasar yang akan merosakkan produk.&lt;/p&gt;
&lt;h3 id=&quot;ketepatan-pada-peringkat-pengekstrakan&quot;&gt;Ketepatan pada Peringkat Pengekstrakan&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (YAML config, handlers, queries), never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Validator filters only run during tests. They can hide extractor bugs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    while production responses remain wrong.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini datang daripada pengalaman yang menyakitkan. Ejen dahulunya menampal pek bahasa yang gagal dengan menambah penapis validator-sahaja yang menjadikan harness ujian kelihatan lebih hijau, sementara extractor Maguyva sebenar masih memancarkan edge yang salah. Peraturan itu memaksa pembaikan kembali ke laluan sebenar: config YAML, query, atau handler.&lt;/p&gt;
&lt;h3 id=&quot;penapisan-berbilang-tier&quot;&gt;Penapisan Berbilang Tier&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-023&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Language engine uses three-tier filtering: external_method_patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (builtins/stdlib), allowlists (legitimate idioms), and expected_call_targets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (validation-time deduplication). Each tier serves a distinct purpose.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Conflating filter purposes leads to either over-filtering (missing real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    relationships) or under-filtering (noise).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ini menghalang ejen daripada menambah penapis di tempat yang salah, satu kesilapan lazim yang menyebabkan regresi ketepatan.&lt;/p&gt;
&lt;h2 id=&quot;integrasi-dengan-sistem-orkestrasi&quot;&gt;Integrasi dengan Sistem Orkestrasi&lt;/h2&gt;
&lt;p&gt;Ground Truths adalah satu lapisan daripada sistem konteks yang lebih luas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Keputusan Seni Bina (ADR)&lt;/strong&gt; - Merekod mengapa kami memilih pendekatan A berbanding B&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ground Truths&lt;/strong&gt; - Menyatakan apa yang secara muktamad benar sekarang&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corak Domain&lt;/strong&gt; - Menerangkan cara melakukan sesuatu dengan betul&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anti-Corak&lt;/strong&gt; - Menerangkan apa yang perlu dielakkan dan mengapa&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Seorang ejen yang bekerja dalam sistem mempunyai akses kepada keempat-empat lapisan. Ground Truths menyediakan tambatan fakta, manakala keputusan menjelaskan sejarah, corak membimbing pelaksanaan, dan anti-corak memberi amaran tentang perangkap.&lt;/p&gt;
&lt;h2 id=&quot;mengukur-kesan&quot;&gt;Mengukur Kesan&lt;/h2&gt;
&lt;p&gt;Sejak memperkenalkan Ground Truths, kami telah memerhatikan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kitaran “membaiki pembaikan yang berhalusinasi” yang lebih sedikit&lt;/li&gt;
&lt;li&gt;Pembuatan keputusan ejen yang lebih yakin apabila fakta jelas&lt;/li&gt;
&lt;li&gt;Semakan PR yang lebih baik kerana jangkaan bersifat eksplisit&lt;/li&gt;
&lt;li&gt;Masa onboarding yang lebih singkat untuk ejen (dan manusia) baharu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pelaburan dalam menyenggara Ground Truths berbaloi dengan penyahpepijatan yang berkurangan dan sempadan sistem yang lebih jelas.&lt;/p&gt;
&lt;h2 id=&quot;bermula&quot;&gt;Bermula&lt;/h2&gt;
&lt;p&gt;Untuk menambah satu Ground Truth ke sistem anda:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cipta satu &lt;code&gt;ground_truths.yaml&lt;/code&gt; dalam direktori &lt;code&gt;ai_assets/reference/&lt;/code&gt; package anda&lt;/li&gt;
&lt;li&gt;Takrifkan metadata dan konfigurasi render&lt;/li&gt;
&lt;li&gt;Tambah pernyataan mengikuti skema&lt;/li&gt;
&lt;li&gt;Jalankan &lt;code&gt;uv run orkestra sync&lt;/code&gt; untuk menjana dokumentasi&lt;/li&gt;
&lt;li&gt;Sertakan registri itu dalam komposisi konteks ejen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Mulakan dengan fakta yang menyebabkan paling banyak kekeliruan atau kekangan yang paling kerap dilanggar. Itulah Ground Truths anda yang bernilai paling tinggi.&lt;/p&gt;
&lt;h2 id=&quot;kesimpulan&quot;&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Ejen AI akan berhalusinasi. Itulah sifat semula jadinya. Tetapi kita boleh mencipta persekitaran di mana halusinasi dikekang, di mana fakta tertentu tidak boleh dipertikaikan, di mana ejen boleh menyemak andaian mereka berbanding realiti yang disahkan.&lt;/p&gt;
&lt;p&gt;Ground Truths bukan penyelesaian yang lengkap. Ia memerlukan penyenggaraan. Faktanya boleh menjadi lapuk. Ia menambah overhead kepada proses pembangunan.&lt;/p&gt;
&lt;p&gt;Tetapi ia menyediakan sesuatu yang bernilai: perbendaharaan kata fakta yang dikongsi yang dipercayai oleh manusia dan ejen. Dalam dunia di mana ejen semakin banyak mengambil bahagian dalam pembangunan perisian, asas kongsi itu menjadi penting.&lt;/p&gt;
&lt;p&gt;Alternatifnya ialah kitaran tanpa henti ejen membuat kesilapan dengan penuh keyakinan dan manusia membetulkannya. Ground Truths memutuskan kitaran itu dengan menjadikan pembetulan itu eksplisit dan berkekalan.&lt;/p&gt;
&lt;p&gt;Ejen anda berhak untuk tahu apa yang benar. Beritahu mereka.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Grounding</category></item><item><title>Orkestra: Mengorkestrasi Ejen AI Pada Skala Besar</title><link>https://maguyva.ai/ms/blog/orkestra-agent-orchestration</link><guid isPermaLink="true">https://maguyva.ai/ms/blog/orkestra-agent-orchestration</guid><description>Satu orchestrator menghalakan kerja kepada ejen AI khusus, setiap satu dengan skill dan memori yang berbeza. Bagaimana Orkestra menyelaraskan 46 ejen dan 466 skill dalam persekitaran produksi.</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Angka dalam penulisan ini mencerminkan sistem pada masa penerbitan (Januari 2026). Lihat &lt;a href=&quot;https://maguyva.ai/ms/team&quot;&gt;halaman pasukan&lt;/a&gt; kami untuk angka terkini.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apabila kami mula membina dengan Claude Code, kami bertembung dengan satu masalah yang akhirnya dihadapi oleh setiap pasukan yang menggunakan pembantu pengekodan AI: satu ejen sahaja tidak dapat melakukan segala-galanya dengan baik.&lt;/p&gt;
&lt;p&gt;Anda boleh meminta ejen menjadi pakar pangkalan data. Atau juruaudit keselamatan. Atau jurutera frontend. Tetapi sebaik sahaja anda memintanya menjadi ketiga-tiganya serentak, kualiti terjejas. Konteks menjadi cair. Arahan bercanggah. Ejen itu menjadi generalis yang sederhana dalam segala-galanya.&lt;/p&gt;
&lt;p&gt;Jadi kami membina Orkestra.&lt;/p&gt;
&lt;h2 id=&quot;apakah-itu-orkestra&quot;&gt;Apakah itu Orkestra?&lt;/h2&gt;
&lt;p&gt;Orkestra adalah sistem orkestrasi ejen untuk Claude Code dan alatan pengekodan AI yang serupa. Ia menyelaraskan pelbagai ejen khusus, setiap satu dengan kepakaran yang berbeza, di bawah satu orchestrator yang menghalakan kerja kepada spesialis yang tepat.&lt;/p&gt;
&lt;p&gt;Bayangkannya sebagai satu agensi pengambilan kakitangan untuk ejen AI. Orchestrator itu menerima satu tugas, mengenal pasti spesialis mana yang patut mengendalikannya, dan mewakilkan tugas itu dengan konteks yang tepat. Apabila kerja itu selesai, hasilnya mengalir semula kepada orchestrator untuk disintesis.&lt;/p&gt;
&lt;p&gt;Angka-angka itu menceritakan kisahnya:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Komponen&lt;/th&gt;
&lt;th&gt;Bilangan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ejen spesialis&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill boleh guna semula&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arketaip identiti&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mindset&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gaya komunikasi&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain pengetahuan&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;sistem-karakter-dd-untuk-ejen&quot;&gt;Sistem Karakter: D&amp;amp;D untuk Ejen&lt;/h2&gt;
&lt;p&gt;Pandangan teras di sebalik Orkestra ialah gelagat ejen muncul daripada tiga primitif yang boleh digubah bersama:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Identity&lt;/strong&gt; mentakrifkan &lt;em&gt;apa&lt;/em&gt; ejen itu. Seorang architect mereka bentuk struktur sistem. Seorang debugger menjejaki kegagalan kepada punca akarnya. Seorang guardian menguatkuasakan pematuhan dan sempadan keselamatan. Kami mempunyai 27 arketaip identiti yang boleh dicampur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mindset&lt;/strong&gt; mentakrifkan &lt;em&gt;bagaimana&lt;/em&gt; ejen berfikir. Satu mindset analytical mengasaskan dakwaan pada bukti dan mengkuantifikasikan ketidakpastian. Satu mindset skeptical mempersoalkan andaian dan mencari bukti yang menyangkal. Satu mindset exploratory merangkul kekaburan dan mencuba pelbagai pendekatan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Style&lt;/strong&gt; mentakrifkan &lt;em&gt;bagaimana&lt;/em&gt; ejen berkomunikasi. Satu style technical merangkumi nilai tepat dan merujuk fail khusus. Satu style concise membuang bahasa berbunga dan memulakan dengan jawapan. Satu style diplomatic mengimbangi kejujuran dengan kebijaksanaan berkomunikasi.&lt;/p&gt;
&lt;p&gt;Seorang ejen menggabungkan primitif-primitif ini:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# architecture-advisor.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;identity&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;knowledge-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;strategist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;mindset&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;analytical&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;concise&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Komposisi ini mencipta seorang ejen yang mereka bentuk sistem (architect), menghubungkan pengetahuan merentasi domain (knowledge-architect), menetapkan hala tuju strategik (strategist), berfikir menerusi bukti dan data (analytical), dan berkomunikasi tanpa bahasa berbunga (concise).&lt;/p&gt;
&lt;p&gt;Kekuatannya terletak pada letupan gabungan (combinatorial explosion). 27 identity darab 11 mindset darab 10 style menghasilkan hampir 3,000 personaliti ejen yang mungkin. Tetapi anda hanya mentakrifkan gabungan yang penting untuk kerja anda.&lt;/p&gt;
&lt;h2 id=&quot;skill-modul-keupayaan-boleh-guna-semula&quot;&gt;Skill: Modul Keupayaan Boleh Guna Semula&lt;/h2&gt;
&lt;p&gt;Skill adalah pengetahuan dan aliran kerja yang boleh dipanggil oleh ejen. Ia mengikuti satu sistem bertingkat berasaskan skop:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Nama&lt;/th&gt;
&lt;th&gt;Skop&lt;/th&gt;
&lt;th&gt;Contoh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K0&lt;/td&gt;
&lt;td&gt;Foundations&lt;/td&gt;
&lt;td&gt;Metodologi universal&lt;/td&gt;
&lt;td&gt;Disiplin test-first, penyempurnaan berasaskan bukti&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K1&lt;/td&gt;
&lt;td&gt;Identities&lt;/td&gt;
&lt;td&gt;Aliran kerja berasaskan peranan&lt;/td&gt;
&lt;td&gt;Piawaian antara muka CLI, playbook prestasi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K2&lt;/td&gt;
&lt;td&gt;Domains&lt;/td&gt;
&lt;td&gt;Pengetahuan khusus domain&lt;/td&gt;
&lt;td&gt;Corak migrasi pangkalan data, pengesahan aliran autentikasi (authentication)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K3&lt;/td&gt;
&lt;td&gt;Stacks&lt;/td&gt;
&lt;td&gt;Khusus teknologi&lt;/td&gt;
&lt;td&gt;Deployment Cloudflare, operasi Supabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K4&lt;/td&gt;
&lt;td&gt;Project&lt;/td&gt;
&lt;td&gt;Pangkalan kod ini sahaja&lt;/td&gt;
&lt;td&gt;Aliran kerja dan konvensyen khusus projek&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Skill dimuatkan secara lazy-loaded. Seorang ejen melihat nama dan penerangan skill semasa permulaan, tetapi kandungan skill penuh hanya dimuatkan apabila dicetuskan. Ini mengekalkan konteks ramping sambil menjadikan beratus-ratus skill boleh ditemui.&lt;/p&gt;
&lt;p&gt;Setiap skill merangkumi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syarat pencetus yang jelas (“Gunakan apabila memigrasi skema pangkalan data”)&lt;/li&gt;
&lt;li&gt;Panduan langkah demi langkah&lt;/li&gt;
&lt;li&gt;Tool yang dibenarkan untuk aliran kerja itu&lt;/li&gt;
&lt;li&gt;Kriteria kejayaan dan laluan pemulihan kegagalan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;466 skill dalam registri kami merangkumi segala-galanya daripada pengasingan git worktree kepada aliran kerja penyelidikan web kepada pengesahan kesihatan deployment.&lt;/p&gt;
&lt;h2 id=&quot;mengapa-orkestrasi-penting&quot;&gt;Mengapa Orkestrasi Penting&lt;/h2&gt;
&lt;p&gt;Seni bina ejen tunggal cepat bertembung dengan dinding:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pencairan konteks.&lt;/strong&gt; Tetingkap konteks 200k token kedengaran besar sehinggalah anda memuatkan skema pangkalan data, dokumentasi API, fixture ujian, dan pengetahuan domain. Spesialis boleh bekerja dengan konteks yang bersasar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Percanggahan arahan.&lt;/strong&gt; Memberitahu seorang ejen untuk “teliti tetapi pantas” dan “sahkan segala-galanya tetapi jangan over-engineer” mencipta ketegangan. Spesialis menyelesaikan ini dengan mempunyai skop yang jelas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kedalaman kepakaran.&lt;/strong&gt; Seorang ejen generalis tahu sedikit tentang segala-galanya. Seorang ejen spesialis, digubah dengan identity dan skill yang tepat, mengetahui domainnya secara mendalam.&lt;/p&gt;
&lt;p&gt;Orkestra melaksanakan orkestrasi rata (flat orchestration): satu orchestrator menyelaraskan pelbagai spesialis. Spesialis tidak boleh mencipta sub-spesialis. Ini menghalang letupan kerumitan sambil membolehkan kerja selari.&lt;/p&gt;
&lt;p&gt;Orchestrator itu mempunyai akses kepada 2.2 juta token kapasiti efektif: tetingkapnya sendiri 200k ditambah 10 subagent serentak dengan 200k setiap satu. Kerja yang akan menghabiskan satu ejen sahaja berjalan dengan selesa merentasi pasukan itu.&lt;/p&gt;
&lt;h2 id=&quot;pipeline-rendering&quot;&gt;Pipeline Rendering&lt;/h2&gt;
&lt;p&gt;Takrifan ejen hidup dalam YAML. Claude Code membaca Markdown. Orkestra merapatkan jurang ini dengan satu pipeline rendering yang deterministik:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;YAML Registries → Jinja Templates → .claude/agents/*.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Operator menyunting sumber YAML. Jalankan &lt;code&gt;orkestra sync&lt;/code&gt;. Markdown yang dirender muncul dalam &lt;code&gt;.claude/agents/&lt;/code&gt;. Claude Code mengambil perubahan itu.&lt;/p&gt;
&lt;p&gt;Pemisahan ini berkhidmat untuk khalayak yang berbeza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sumber YAML&lt;/strong&gt; merangkumi metadata lifecycle, tag, peraturan pengesahan, dan nota deprecation untuk tooling&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown yang dirender&lt;/strong&gt; hanya merangkumi apa yang diperlukan oleh model: penerangan, tool, skill, dan panduan gelagat&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pipeline itu menggubah identity, mindset, style, dan skill menjadi satu prompt yang koheren. Seorang ejen architect-analytical-concise mendapat prompt sistem yang sangat berbeza daripada seorang ejen debugger-skeptical-technical, walaupun mereka berkongsi sesetengah skill yang mendasari.&lt;/p&gt;
&lt;h2 id=&quot;pengetahuan-domain-corak-empat-fail&quot;&gt;Pengetahuan Domain: Corak Empat Fail&lt;/h2&gt;
&lt;p&gt;Setiap domain pengetahuan mengikuti struktur yang konsisten:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domain-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  decisions.md      # Key choices, rationale, consequences&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  patterns.md       # Step-by-step guidance and examples&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  anti-patterns.md  # Failure modes and remediation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  evolution.md      # Dated log of changes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Struktur ini berkhidmat untuk pemuatan konteks ejen. Seorang ejen yang bekerja pada authentication memuatkan &lt;code&gt;authentication/patterns.md&lt;/code&gt; untuk panduan dan &lt;code&gt;authentication/anti-patterns.md&lt;/code&gt; untuk mengelakkan perangkap yang diketahui. Fail-fail itu bersaiz untuk pemuatan konteks yang cekap: cukup fokus untuk berguna, cukup komprehensif untuk berautoriti.&lt;/p&gt;
&lt;p&gt;Kami menyenggara 21 domain peringkat atas termasuk analitik, authentication, data science, infrastruktur, pembelajaran mesin, prestasi, keselamatan, dan banyak lagi. Setiap domain boleh mempunyai sub-domain untuk granulariti yang lebih halus.&lt;/p&gt;
&lt;h2 id=&quot;values-sistem-operasi&quot;&gt;Values: Sistem Operasi&lt;/h2&gt;
&lt;p&gt;Semua ejen berkongsi satu lapisan asas values yang mentakrifkan bagaimana mereka beroperasi:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kesederhanaan dahulu.&lt;/strong&gt; Gunakan penyelesaian paling ringkas yang berfungsi. Tambah kerumitan hanya apabila wajar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Baiki punca akar.&lt;/strong&gt; Jangan sesekali menutup kegagalan dengan penyelesaian sementara tanpa membaiki puncanya. Jika pipeline gagal, nyahpepijat pipeline itu. Jika ujian gagal, baiki kod atau ujian itu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Berasaskan bukti.&lt;/strong&gt; Labelkan dakwaan sebagai “disahkan” (dengan penanda aras) atau “dianggarkan” (dengan andaian). Corak yang dikesan tidak sama dengan masalah yang disahkan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ekonomi konteks.&lt;/strong&gt; Tool MCP menelan kos 0.1% konteks. Bacaan fail menelan kos 2% setiap satu. Gunakan kepakaran domain sebelum meneroka kod.&lt;/p&gt;
&lt;p&gt;Values ini merambat kepada setiap spesialis menerusi pipeline rendering. Seorang ejen tidak boleh memintasnya menerusi komposisi.&lt;/p&gt;
&lt;h2 id=&quot;cli-satah-kawalan&quot;&gt;CLI: Satah Kawalan&lt;/h2&gt;
&lt;p&gt;Orkestra dikeluarkan dengan satu CLI untuk menguruskan ekosistem ejen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Discovery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; database-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Validation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Rendering&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;authentication&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CLI itu adalah sumber kebenaran untuk ejen apa yang wujud, skill apa yang mereka ada, dan sama ada sistem itu sihat. Ia menjalankan pengesahan sebelum segerak (sync) untuk menangkap masalah lebih awal.&lt;/p&gt;
&lt;h2 id=&quot;pertimbangan-sumber-terbuka&quot;&gt;Pertimbangan Sumber Terbuka&lt;/h2&gt;
&lt;p&gt;Kami membina Orkestra untuk menyelesaikan masalah kami sendiri: menyelaraskan ejen AI pada skala besar untuk pangkalan kod yang kompleks. Corak yang kami temui bukan khusus untuk domain kami sahaja.&lt;/p&gt;
&lt;p&gt;Sistem komposisi karakter (identity + mindset + style) terpakai kepada mana-mana pasukan yang mentakrifkan personaliti ejen.&lt;/p&gt;
&lt;p&gt;Sistem tier skill (K0-K4) menyediakan satu model mental untuk menyusun keupayaan boleh guna semula mengikut skop.&lt;/p&gt;
&lt;p&gt;Corak pipeline rendering (sumber YAML + templat + artifak yang dijana) memisahkan tanggungjawab tooling daripada keperluan model.&lt;/p&gt;
&lt;p&gt;Model orkestrasi rata (satu koordinator, ramai spesialis) mengelakkan kerumitan sambil membolehkan paralelisme.&lt;/p&gt;
&lt;p&gt;Sama ada Orkestra menjadi sumber terbuka bergantung kepada sama ada corak-corak ini bernilai untuk orang lain yang membina dengan Claude Code. Jika anda bertembung dengan dinding yang kami gambarkan, seni bina ini mungkin membantu.&lt;/p&gt;
&lt;h2 id=&quot;apa-yang-kami-pelajari&quot;&gt;Apa Yang Kami Pelajari&lt;/h2&gt;
&lt;p&gt;Membina Orkestra mengajar kami bahawa orkestrasi bukan tentang menjadikan ejen lebih bijak. Ia adalah tentang menjadikan mereka lebih fokus.&lt;/p&gt;
&lt;p&gt;Satu ejen sahaja dengan arahan yang sempurna masih kehabisan konteks. Satu ejen sahaja dengan semua skill masih keliru tentang yang mana hendak digunakan. Satu ejen sahaja yang cuba menjadi segala-galanya menghasilkan hasil yang sederhana di mana-mana.&lt;/p&gt;
&lt;p&gt;Empat puluh spesialis, setiap satu cemerlang dalam domain mereka, diselaraskan oleh satu orchestrator yang tahu bila hendak mewakilkan tugas: itulah cara kami mengeluarkan produk.&lt;/p&gt;
&lt;p&gt;Angka-angka itu kurang penting berbanding seni bina. Anda mungkin memerlukan lima ejen atau lima puluh. Prinsipnya kekal: komposisi mengatasi keupayaan, pengkhususan mengatasi generalisasi, penyelarasan mengatasi kepahlawanan individu.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Orkestra menggerakkan ekosistem ejen di sebalik Maguyva, platform kecerdasan kod kami. Mahu tahu lebih lanjut? Hubungi pasukan kami.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Open Source</category></item></channel></rss>