Talim

Cordis: mikroyadro

Cordis plagin freymvorkining beshta asosiy g‘oyasi va nima uchun harnessda imtiyozli yadro yo‘qligi.

9 daqiqa o‘qish · O‘rta → Ilg‘or

Cordis'da imtiyozli yadro yo‘q

DeepSeek Harness’ni maxsus qiladigan hamma narsa Cordis nomli plagin freymvorkidan keladi. Va Cordis harness uchun yozilmagan — u ancha oldin paydo bo‘lgan.

Cordis’ning o‘z tarixi bor: yillar davomida minglab jamoatchilik plaginlari ishlayotgan chat-bot freymvorki aynan uning ustida qurilgan. U o‘z tashkilotida yashaydi va DeepSeek Harness uni oddiy bog‘liqlik (dependency) sifatida tortib oladi. Uning tagidagi akademik maqolani Pekin universiteti va DeepSeek tadqiqotchilari birga yozgan.

Eslatma

Cordis — bu mikroyadro (microkernel). «Yadro» degani markaziy boshqaruvchi degani emas: bu yerda yadro faqat qobiliyatlarni ro‘yxatga oladigan va ularni bog‘laydigan eng kichik qism. Har bir yangi qobiliyat shu yadro ustiga plagin sifatida qo‘shiladi.

Imtiyozli yadro yo‘q

Cordis’ning asosiy g‘oyasi — hech bir qism boshqasining ustida turmaydi. Diagrammadagi har bir qism bitta umumiy kontekstga ro‘yxatdan o‘tadi va istalganini almashtirish mumkin:

Qism Vazifasi
llm Model bilan gaplashadi
tools Tool’larni ro‘yxatdan o‘tkazadi
permissions Nima ruxsat etilishini hal qiladi
sandbox Ijroni chegaralaydi
session Nima bo‘lganini yozib boradi
agent-loop Keyingi qadamni hal qiladi

Diqqat qiling: agent-loop — ya’ni agentning keyingi qadamini hal qiladigan qism — boshqa hech qaysi qismning ustida emas. U ham xuddi llm yoki tools kabi bitta qism, uni ham almashtirish mumkin. Biror qismni olib tashlasangiz, kontekst uni qo‘shishdan oldingi holatiga qaytadi — o‘chirilgan qismdan asar qolmaydi.

Beshta g‘oya

Cordis’ning butun modeli beshta g‘oyaga sig‘adi:

1. Plugin

Plugin — qobiliyat qo‘shadigan obyekt. Boshqa hech narsa emas. Plugin kategoriyalari yo‘q, ular orasida ierarxiya yo‘q.

2. Context

Context — qobiliyatlar ombori. Har bir qobiliyat barqaror nom oladi, boshqalari aniq implementatsiyaga bog‘lanmaydi — shu nom orqali qidiradi. Bu esa qismlarni almashtirishni oson qiladi: nom o‘zgarmaydi, tagidagi qism o‘zgaradi.

3. Dependencies — e’lon qilinadi, tartiblanmaydi

Kerakli narsani e’lon qilgan plugin uni paydo bo‘lguncha kutadi va shundan keyin ishga tushadi. Yuklash tartibi qo‘lda yozilmaydi — bog‘liqliklardan kelib chiqib hosil qilinadi.

4. Events — tiplangan, yuborish usuli e’lon qilingan

Har bir event tinglovchilar (listener) orasida qanday taqsimlanishini e’lon qiladi. Bu taqsimot usuli — event’ning ommaviy shartnomasining bir qismi.

5. Teardown — har bir ro‘yxatdan o‘tkazish o‘zini bekor qilishni biladi

Plugin yukdan tushganda u o‘rnatgan hamma narsa o‘zi olib tashlanadi. Qolgan barcha g‘oyalar aynan shu g‘oyaga tayanadi — bu butun tizimning poydevori.

Ma'lumot

Event’larni tarqatishning to‘rtta rejimi bor: kuzatish (observed), o‘rash (wrapped), parallel tarqatish va tartibda bajarish. Rejim event’ning ommaviy shartnomasining qismi, va generatsiya qilingan katalog e’lonning amalda ishlatilishiga mosligini tekshiradi. Amaliy qoida: har bir ro‘yxatdan o‘tkazishda teardown funksiyasi bo‘lishi kerak; agar o‘chirish tartibi muhim bo‘lsa — bog‘liq ishlar bitta blokga yoziladi.

Bu g‘oyalar ishda: yetti tayanch qism

Cordis g‘oyalari nazariy emas — ularni tizimning o‘zida ko‘rish mumkin. Harness’ni ushlab turgan yetti tayanch qism bor, va ularning har biri kontekstda barqaror nom oladi:

Qism Nima qiladi Kontekst kaliti
Sessiya jurnali Bo‘lib o‘tgan hamma narsani yozadi ctx.sessions
Prompt yig‘uvchi Har so‘rov boshida model ko‘radigan narsani quradi ctx.systemPrompt
Tool registry Model foydalanishi mumkin narsani tutadi va qo‘riqchilar bilan ishga tushiradi ctx.tools
Agent ta’rifi Agent nima ekanini tasvirlaydi ctx.agents
Agent loop Ishni oldinga haydaydi ctx.agentLoop
Model adapter Ichki lug‘at bilan har bir provayder API’si o‘rtasida tarjima qiladi ctx.llm
Per-agent logging Agent doirasida kuzatuv izlarini beradi kalitsiz

Asosiy xulosa shu jadvalning o‘zida: agent loop, boshqa har qanday mahsulotda daxlsiz yadro bo‘lardi, bu yerda provayder adapteri bilan teng maqomda bitta qism bo‘lib ko‘rinadi.

Ro‘yxat — tayanch, inventar emas. Fayllar, terminallar, til serverlari, veb-ga kirish, subagentlar, fon vazifalari, kontekst siqish va yana bir qancha narsalar uchun alohida qismlar bor.

Amaliy maslahat

Keyingi darslarda uchraydigan `ctx.` prefiksli barcha kalitlar — shu yerda ko‘rsatilgan mexanizmning natijasi. Plugin qismga to‘g‘ridan-to‘g‘ri bog‘lanmaydi, uni kontekst nomi orqali topadi. Shuning uchun bir qismni boshqasiga almashtirish qolganlarini buzmaydi.

Xulosa

Cordis — DeepSeek Harness’ning asosi: hech bir qism boshqasining ustida turmaydigan plagin freymvorki. Uning beshta g‘oyasi — plugin, context, e’lon qilingan bog‘liqliklar, tiplangan event’lar va teardown. Eng muhimi, agent-loop ham boshqa qismlar bilan teng — ya’ni agentning keyingi qadamini hal qiladigan qismni ham almashtirish mumkin. Keyingi darsda bu qismlar mashinada qanday yig‘ilishini ko‘ramiz: profillar, bundle’lar va qatlamlar.

Bu dars foydali bo‘ldimi?