Sun'iy intellekt agentlari kod yozganda, shartnomalar tahlil qilibganda yoki kodni ko'rib chiqganda, odamning oxirgi so'zi odatda chatinga, ticket izohiga yoki dasturchining xotirasiga qoladi. Bir oy o'tgach, kim, nima uchun va qanday qaror qilganini qayta tiklash — yarim soatlik tahmin o'yini. Collaborative Human Agent Protocol (CHAP) bu bo'shliqni to'ldiradi: har bir agent natijasi (artefakt) va har bir odam tahriri (override) — diff, sabab va teglar bilan birga — kontent xeshlar zanjirida saqlanadi. Natija: o'tgan qarorlarni so'rov qilish, ijro etish va ularning ustidan o'rganish mumkin bo'lgan yagona, tekshiruvga tayyor jurnal.
Nima muammo hal qilinmoqda?
Hozirgi AI-ga yuklangan ish jarayonlari (coding assistant, contract review, ticket triage) quyidagi shemada ishlaydi: agent taslak yaratadi, odam uni tasdiqlaydi yoki o'zgartiradi. Ammo bu o'zgarishning «nima» va «nima uchun»i uch xil joyda yashirin bo'ladi: ilova kodi, chat tarixi, ticket tizimi. Agar xato yuzaga kelsa — masalan, agent noto'g'ri ogohlantirish bergan va odam uni o'tkazib yuborgan bo'lsa — sababni topish uchun uchta interfeysni qidirib chiqish kerak. CHAP bu fragmentlarni bitta protokol ostida yig'ib, har bir qadamni envelop (qo'ng'iroq) shaklida saqlaydi.
Protokol qanday ishlaydi
CHAP da uchta asosiy tushuncha ishlatiladi:
import { Coordinator } from "@brightbeamai/chap-coordinator";
import { SqliteStore } from
"@brightbeamai/chap-coordinator/storage/sqlite";
const coord = new Coordinator({
store: new SqliteStore("./chap.db"),
});
coord.api.workspace.create({
workspace: "wsp_pr_reviews",
profiles: ["core/1.0", "review/1.0"],
});
coord.api.participant.join({
workspace: "wsp_pr_reviews",
from: "human:me@local",
type: "human",
});
coord.api.participant.join({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
type: "agent",
});
- Artefakt — agent tomonidan yaratilgan to'liq natija (kod sharhi, shartnoma tahlili, qaror taslaqi).
- Override — odamning strukturaviy o'zgartirishi. U
diff (JSON Patch formatida), rationale (sabab matni) va tags (masalan, false-positive, framework-pattern-misread) maydonlarini o'z ichiga oladi. Muhim maydon — intent_preserved: agar true bo'lsa, odam agentning maqsadini qoldirgan, faqat yondashuvni to'g'irlaganini bildiradi.
- Zanjir (chain) — har bir envelop oldining kontent xeshini (SHA-256) o'z ichiga olgan holda birlashtirilgan. Bu o'zgarishlarni aniqlash va butun tarixidan o'tkazib yuborish imkonsiz qiladi.
Barcha operatsiyalar JSON-RPC 2.0 orqali Coordinator komponentiga yuboriladi. Saqlash uchun referens SqliteStore yetadi, lekin interfeys ochiq — PostgreSQL, Redis yoki maxsus backend qo'shish mumkin.
from chap_coordinator import Coordinator
from chap_coordinator.storage.sqlite \
import SqliteStore
coord = Coordinator(store=SqliteStore("./chap.db"))
def send(method, params):
return coord.dispatch({
"jsonrpc": "2.0", "id": method,
"method": method, "params": params,
})
send("workspace.create", {
"workspace": "wsp_pr_reviews",
"profiles": ["core/1.0", "review/1.0"],
})
send("participant.join", {
"workspace": "wsp_pr_reviews",
"from": "human:me@local",
"type": "human",
})
send("participant.join", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"type": "agent",
})
Kodda ko'rinishi: TypeScript va Python
Protokol ikki til uchun bir xil tarmoq baytlarini yaratadi. TypeScript versiyasi coord.api.* fasadini berib, kompilyatsiya vaqti tekshiruvini ta'minlaydi. Python tomoni coord.dispatch({...}) shaklida JSON-RPC konvertlarini yuzaga keltirib, asend() yordamchisi bilan qulay async interfeys yaratadi. Ikkala yo'l ham byte-for-byte identik audit zanjirini hosil qiladi — qaysi til ishlatilsa ham, tekshiruv natijasi o'zgarmaydi.
// The bot's review is the output of a task.
const { task_id } = coord.api.task.create({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
assignee: "agent:cursor#v1",
kind: "code_review",
input: { pr_id: "PR-482" },
});
coord.api.task.complete({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
task_id,
output: cursorReview,
});
coord.api.review.request({
workspace: "wsp_pr_reviews",
from: "agent:cursor#v1",
task_id,
artefact: cursorReview,
to: "human:me@local",
});
// You disagree with one comment. Override it.
coord.api.decide.override({
workspace: "wsp_pr_reviews",
from: "human:me@local",
task_id,
intent_preserved: true,
diff: [{ op: "replace",
path: "/comments/0/severity",
value: "info" }],
rationale: "False positive. Framework " +
"convention, not a bug.",
tags: ["false-positive",
"framework-pattern-misread"],
});
Misol: Cursor agent code_review vazifasini tugatadi, natijasi artefakt sifatida yuboriladi, odam review.request orqali chaqiriladi. Agar ogohlantirish darajasi warning dan info ga o'tkazilsa, override envelopida diff (path: /comments/0/severity), rationale ("Framework convention, not a bug") va teglar saqlanadi. 23 soniyalik bu almashinuv butunlay qayta ijro etilishi mumkin.
# The bot's review is the output of a task.
r = send("task.create", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"assignee": "agent:cursor#v1",
"kind": "code_review",
"input": {"pr_id": "PR-482"},
})
task_id = r["result"]["task_id"]
send("task.complete", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"task_id": task_id,
"output": cursor_review,
})
send("review.request", {
"workspace": "wsp_pr_reviews",
"from": "agent:cursor#v1",
"task_id": task_id,
"artefact": cursor_review,
"to": "human:me@local",
})
# You disagree with one comment. Override it.
send("decide.override", {
"workspace": "wsp_pr_reviews",
"from": "human:me@local",
"task_id": task_id,
"intent_preserved": True,
"diff": [{"op": "replace",
"path": "/comments/0/severity",
"value": "info"}],
"rationale": "False positive. Framework "
"convention, not a bug.",
"tags": ["false-positive",
"framework-pattern-misread"],
})
Analitika: o'tgan xatolardan kelajak promptlarini tuzish
Protokolning kuchli tomoni — saqlangan ma'lumotlardan o'rganish. Referens repositoriyada analyze_overrides skripti bor: u SQLite faylidan (yoki HTTP API orqali) zanjirni o'qiydi va teglar, fayl yo'llari, niyat saqlanishi bo'yicha guruhlaydi. Natija — quyidagicha hisobot:
# TypeScript reference, against the SqliteStore from step 1:
$ npm --prefix reference/core-plus-review run analyze -- --db ./chap.db wsp_pr_reviews
# Python reference, same idea:
$ python3 reference/python/analyze_overrides.py --db ./chap.db wsp_pr_reviews
Override Learning Report
========================
Total overrides: 47
By tag:
false-positive ████████████████ 31 (66%)
framework-pattern-misread ███████████ 22 (47%)
cosmetic-pref ████ 8 (17%)
Top file paths:
src/handlers/ 18 overrides
src/components/ 9 overrides
Override Learning Report
========================
Total overrides: 47
By tag:
false-positive ████████████████ 31 (66%)
framework-pattern-misread ███████████ 22 (47%)
cosmetic-pref ████ 8 (17%)
Top file paths:
src/handlers/ 18 overrides
src/components/ 9 overrides
Bu ma'lumot bilan keyingi Cursor prompti taxmin emas, ma'lumotga asoslangan bo'ladi: "Framework pattern misread" tegini kamaytirish uchun maxsus misollar qo'shish yetarli. Yani, protokol faqat jurnal emas, o'rganish aylanmasi hamdir.
npm install @brightbeamai/chap-coordinator
Qaysi holatlarda foydali
- Kod ko'rib chiqish (PR review) — agent ogohlantirishlar beradi, odam noto'g'riliklarni to'g'irlaydi, patternlar aniqlanib, agent sozlanadi.
- Shartnoma va hujjat tahlili — yurist agent tavsiyasini o'zgartirganda, sabab (precedent, risk) saqlanib, keyingi tekshiruvda keltiriladi.
- Ticket triage va settlement — agent kategoriyalashni o'zgartirganda, qaysi qoida ishlatilgani va nima uchun o'zgartirilgani izlanib borinadi.
- Compliance va audit — regulyator talab qilganda, har bir qaror diff, sabab va vaqt belgisi bilan taqdim etiladi.
Cheklovlar va ochiq savollar
CHAP hali erta bosqichda (v0.1). Ba'zi nuqtalarga e'tibor kerak:
pip install chap-coordinator
- Profil tizimi —
core/1.0, review/1.0 profillari hali stabil emas, o'zgarishi mumkin.
- Masshtablashuv — SQLite referens kichik jamoalar uchun yetarli, lekin yuzlab agent/odam uchun PostgreSQL backend kerak bo'ladi.
- Interoperabilitet — boshqa agent freymvorklari (LangGraph, AutoGen, CrewAI) CHAP enveloplarini native emit qilmasa, adapter yozish talab qilinadi.
- Maxfiylik — artefaktlarda maxfiy ma'lumot bo'lishi mumkin; shifrlash va nazorat protokolga kirilmagan, ilova darajasida hal qilinishi kerak.
Nega bu muhim — global kontekst
AI agentlar «copilot» dan «avtonom operator» ga o'tganda, odamning nazorati va mas'uliyeti markaziy muammo bo'lib qolmoqda. EU AI Act, NIST AI RMF va boshqa standartlar «human-in-the-loop» ni talab qiladi, lekin qanday hujjatlashtirishni aytmaydi. CHAP bu bo'shliqni texnik darajada to'ldirib, «human-in-the-loop» ni soddalikdan qutqarib, tekshiruvga va o'rganishga qulay strukturaga aylantiradi. Bu faqat qulaylik emas — kelajakda majburiy bo'lishi mumkin bo'lgan audit talablariga tayyorgarlik.
Xulosa
CHAP — bu AI va odam o'rtasidagi har bir qaror uchun «git log» kabi narsa. U sun'iy intellektni qora qutida emas, shaffof va o'rganadigan tizimga aylantiradi. Agar siz agentlardan haqiqiy ish natijalari kutayotgan dasturchi yoki mahsulot rahbari bo'lsangiz, hozir bu protokolni sinab ko'rish — ertangi audit va o'rganish uchun fundamente qo'yish degani.
Asl manba: github.com