Glosari
Entiti teras
Bahagian bertajuk “Entiti teras”Ejen: Pekerja AI dengan identiti, peranan, kemahiran dan penyesuai. Tergolong dalam tepat satu ruang kerja. Pelaku utama dalam sistem.
Penyesuai: Pelari yang melaksanakan satu giliran ejen. Dua disertakan: Control Center (terbina) — harness dalam proses yang bercakap dengan penyedia model — dan Claude Code melalui claude -p. Cursor, Codex, Anthropic, OpenAI dan yang lain ialah penyedia pada penyesuai terbina, bukan CLI berasingan. Lihat Urus penyesuai dan model.
Ruang kerja: Penyewa pengasingan peringkat teratas. Mengelompokkan ejen, repo, ruang, tiket, memori dan pipeline. Pengasingan bersifat struktur, bukan konvensyen: setiap ruang kerja mempunyai fail SQLite sendiri (<dataDir>/<workspaceId>/workspace.db), jadi bacaan merentas ruang kerja tidak dapat dikompil. Setiap laluan dalam apl diawali dengan /workspaces/:workspaceId — lihat peta laluan.
Forge: Hos kod — GitHub, GitLab atau Bitbucket Cloud. Forge ialah properti setiap repo, dibaca daripada remote origin semasa pendaftaran, dan ia memilih penyesuai API serta kelayakan repo itu. Satu ruang kerja boleh memegang repo pada ketiga-tiganya; permukaan pengagregatan (peti masuk, baris gilir PR) menyebar merentas setiap forge yang diwakili dan menggabungkan hasilnya, mengasingkan kegagalan supaya forge yang tidak dapat dicapai tidak pernah mengosongkan yang lain. Forge berbeza dari segi apa yang disokongnya — lihat jadual keupayaan dalam Sambungkan hos kod.
Repo: Repositori Git yang didaftarkan dalam satu ruang kerja. Berskop ruang kerja — checkout yang sama yang didaftarkan dalam dua ruang kerja ialah dua baris bebas dengan dua id; identiti repo merentas ruang kerja adalah mengikut laluan sistem fail, tidak pernah mengikut id. Pendaftaran memerlukan pokok kerja git yang remote originnya menunjuk ke forge yang disokong. Setiap repo membawa forge itu (github / gitlab / bitbucket), yang memilih penyesuai API dan kelayakan yang digunakan untuknya.
Repo terasing: Worktree berskop ruang kerja bagi repo yang didaftarkan. Copy-on-write melalui rift di mana natif itu disertakan; git worktree pada Windows. Disediakan mengikut ruang — setiap perbualan dalam ruang itu berkongsi satu checkout — jadi ejen tidak pernah mengubah sumbernya.
Ruang: Kontena kerjasama berskop ruang kerja dengan peserta manusia dan ejen, Mode yang dikekalkan, status penyediaan dan SpaceKind (topic / agentPeer / system / pr / slack) yang menentukan cara ia dibahagikan, dibisukan, diberi lencana dan dikutip sampah. Ia memiliki worktree terasing yang dikongsi oleh perbualannya (copy-on-write melalui rift; git worktree pada Windows).
Perbualan: Satu aliran mesej di dalam sesuatu Ruang, dengan id, sejarah dan konteks larian ejen tersendiri. Perbualan dalam satu ruang adalah setara rata — tiada aliran utama atau “main”. Setiap satu dibuka sebagai tab editor; status belum dibaca sesuatu ruang diagregatkan merentas kesemuanya.
Benang: Perbualan yang anchorMessageIdnya ditetapkan: bersauh pada satu mesej perbualan bersebelahan dalam Ruang yang sama, dengan konteks ejen baharu yang disemai oleh mesej sauh itu. Satu peringkat dalam — benang tidak pernah bersauh pada benang.
Tiket: Agregat unit kerja. Neutral vendor: local secara lalai, dengan penyesuai penyegerakan untuk Linear, GitHub Issues, Jira Cloud dan ClickUp — walaupun tiada permukaan dalam apl yang mencipta sambungan penyegerakan. Menyokong hierarki, pautan dan perwakilan. Penugasan kepada ejen merekod pemilikan dan tidak menghantar apa-apa; penugasan kepada pasukan ialah pengecualian (TeamRoutingService menghantar ketua).
Pipeline: Aliran kerja berasaskan DAG yang merantai langkah (penghantaran ejen, skrip, bersyarat) bersama. Ditakrifkan oleh templat; dilaksanakan sebagai larian.
Objek nilai
Bahagian bertajuk “Objek nilai”AgentRole: Peranan tersenarai (CEO, coder, reviewer, QA, designer, security, devops, PM, general). Menentukan persona, akses memori dan hierarki.
AgentSkills: Set pengenal kemahiran yang tidak sensitif huruf besar-kecil yang menyuntik konteks berkaitan ke dalam prompt semasa penghantaran.
Sumber kemahiran: Repositori GitHub yang didaftarkan bagi setiap ruang kerja sebagai katalog kemahiran. Tidak dipercayai secara binaan: metadata repositori itu hanya untuk paparan dan setiap pemasangan melalui pintu imbasan gagal-tertutup sebelum sebarang kandungan sampai ke cakera atau prompt. Lihat pasang dan urus kemahiran.
skills-lock.json: Manifes kemahiran yang dipasang bagi setiap ruang kerja: bagi setiap satu, repositori sumbernya, laluan dalam repo, commit yang dipinkan padanya dan hash kandungan terkumpul. Pemasangan, kemas kini dan nyahpasang menjaganya terkini; verify_skills menyemaknya terhadap cakera.
Gerbang larian ejen: Titik akhir loopback pada cc_server yang menerapkan polisi tindakan di dalam kotak pasir ejen. Setiap push GitHub yang dibuat ejen dihalakan ke situ, disemak terhadap peraturan Push ke remote dan dimajukan dengan token tulis yang tidak pernah dipegang ejen; perintah Bash Claude Code disemak melalui hook pada titik akhir yang sama. Lihat Kotak pasir dan keselamatan.
Modus: chat, plan, review, atau orchestrate. Disimpan mengikut ruang, jadi satu ejen boleh berada dalam modus berbeza dalam ruang berbeza; setiap perbualan dalam satu ruang berkongsinya. Mengawal prompt sistem, peraturan tulis kotak pasir dan senarai izin alat MCP. Penggubah hanya menawarkan chat, plan dan orchestrate; chat dilabelkan “Ejen”.
SandboxBackend: microvm (VM tertutup — satu-satunya bahagian belakang dengan sempadan kernel, digunakan pada terminal interaktif), native (Seatbelt pada macOS, bubblewrap pada Linux dan WSL2) atau none. Diprobe sekali semasa but; native digunakan pada penghantaran ejen apabila tersedia, membalut CLI Claude Code dan alat bash harness. Windows tiada bahagian belakang natif dan Linux memerlukan bwrap serta socat, jadi larian di sana tidak dibalut; --sandbox off memilih untuk keluar secara sengaja.
Stesen: Mesin pakai buang yang dipandu ejen secara masa nyata — penyemak imbas atau desktop Linux tertutup, emulator Android atau Simulator iOS yang diuruskan hos, atau terminal tertutup. Ditonton secara langsung melalui lorong resolusi penuhnya sendiri, dengan pengambilalihan dikuatkuasakan di pihak pelayan. Berskop pada satu perbualan supaya tab manusia dan panggilan browser_use / computer_use / mobile_use / ios_use ejen menuju ke satu mesin lalai. Lihat Stesen dan persekitaran terasing.
Persekitaran terasing: Sempadan stesen bersandarkan VM yang lebih kuat — sempadan kernel, cakera tindanan pakai buang, gerbang rangkaian tolak-secara-lalai dan broker kelayakan. Stesen Android dan iOS boleh dibuang tetapi menggunakan rangkaian yang diuruskan hos dan tidak menuntut sempadan ini. Memandu mana-mana stesen menggunakan kelas guardrail enclosureControl.
RunCost: Rekod token/kos (token input, token output, anggaran kos dalam sen) bagi satu larian ejen.
WakeReason: Sebab ejen dihantar. Enam nilai: mesej pengguna, penugasan tiket, penghantaran semula pemulihan selepas kegagalan, tiket anak selesai, denyutan susulan berjadual dan langkah pipeline.
SandboxPort: Mengurus kitaran hayat kotak pasir (probe, launch, events, exec, destroy).
CredentialBrokerPort: Menempa kelayakan berskop untuk pelancaran kotak pasir — baca sahaja untuk persekitaran ejen, tulis hanya untuk laluan push di pihak pelayan — dan mencabutnya semasa pembongkaran.
GitRepoInspectorPort: Mengekstrak metadata (owner, repo, branch) daripada laluan repo Git setempat.
EmbeddingPort: Menghasilkan vektor embedding teks bernorma unit untuk carian semantik.
NotificationPort: Menunjukkan pemberitahuan desktop natif dengan menghormati gerbang kategori/laluan.
TicketProviderPort: Sempadan neutral vendor ke bahagian belakang penetikan (create, get, list, update, transition, assign).
PipelineEnginePort: Memulakan larian pipeline daripada templat, memisahkan pemanggil daripada enjin konkrit.
Perkhidmatan domain
Bahagian bertajuk “Perkhidmatan domain”AgentDispatchService: Melancarkan larian ejen: menyediakan repo terasing, membina prompt, mencipta log larian, mengembalikan strim acara langsung.
TicketWorkflowService: Enjin kitaran hayat tiket domain tulen dengan titik sesak mutasi konkurensi optimistik dan penguatkuasaan pengasingan ruang kerja. Graf peralihannya hanya mengikat ejen dan automasi; perubahan UI yang dipacu pengguna menghantar force: true dan memintasnya. Tiada penghantar tiket bagi penerima tugas ejen — AgentDispatchService memiliki penghantaran, dan menugaskan tiket kepada ejen tidak memulakan sebarang larian. Menugaskan tiket kepada pasukan ialah pengecualian (TeamRoutingService menghantar ketua).
PipelineEngine: Mengorkestra pelaksanaan larian: memulakan larian, menjadualkan langkah, mengekalkan keadaan, mengendalikan router/join/continue-on-fail, menyambung semula larian yang sedang berjalan selepas permulaan semula.
PipelineTriggerDispatcher: Melanggan acara domain dan memulakan secara automatik larian pipeline yang sepadan bagi pencetus yang didayakan.
MemoryAccessPolicy: Menyelesaikan dan menguatkuasakan kebenaran memori peranan ejen pada domain.
HarnessCostCalculator: Menghitung penggunaan token harness terbina menjadi RunCost daripada katalog models.dev. Penghantaran mengekalkan rekod itu ke atas log larian.
BudgetEnforcementService: Mengira perbelanjaan bulanan bagi setiap ejen dan sekatan pra-penghantaran (checkInvocationBlock). Sekatan itu hanya dirujuk oleh reconciler pemulihan (OrphanRunReaper, StrandedTicketReconciler), tidak pernah oleh penghantaran pengguna atau ejen biasa.
BudgetGovernanceService: Menilai perbelanjaan bulanan bagi setiap ejen selepas setiap larian — ambang lembut merekodkan insiden amaran; kehabisan merekodkan insiden keras dan menukar kitaran hayat ejen kepada paused.
DomainEventBus: Bas terbit/langgan siaran dalam proses untuk komunikasi merentas ciri. Acara adalah bertipe; pelanggan menggunakan strim on<T>().
DomainEvent: Antara muka asas. Setiap acara mempunyai occurredAt. Kategori utama: ruang kerja/ejen, PR/semakan, pemesejan, penetikan, pipeline, mesyuarat/kalendar, identiti, stesen, kebolehcerapan.
Mesyuarat dan kalendar
Bahagian bertajuk “Mesyuarat dan kalendar”Mesyuarat: Sesi mesyuarat yang dirakam dan ditranskripsikan secara setempat. Menangkap mikrofon dan audio sistem, mentranskripsi pada peranti dengan model ASR yang boleh dipilih (Parakeet TDT v3 secara lalai; Parakeet TDT v2, Whisper large-v3-turbo dan Whisper base.en ialah alternatif), memisahkan penutur dan meringkaskan kepada nota, item tindakan dan keputusan. Model ASR yang dipilih dipasang secara paksa semasa but dan operasi rakaman menyala selepas satu permulaan semula. Berskop ruang kerja; kekal pada mesin.
MeetingSegment: Satu tetingkap audio yang ditranskripsikan, bertanda penutur (me/them) dengan label pemisahan penutur dan offset milisaat.
MeetingActionItem / MeetingDecision: Output berstruktur yang diekstrak oleh pipeline ringkasan dan disimpan sebagai baris berasingan. Item tindakan boleh dipautkan pada tiket.
CalendarEvent: Entri Google Calendar yang disegerakkan, berskop pada satu ruang kerja dan akaun bersambung. Berbeza daripada Mesyuarat: acara ialah komitmen berjadual; Mesyuarat ialah sesi yang dirakam. Dipautkan satu-ke-satu melalui MeetingCalendarLink.
CalendarAccount: Akaun Google yang bersambung, bagi setiap ruang kerja dan e-mel. Token penyegaran OAuth disimpan di pihak pelayan sebagai kunci google_* dalam <dataDir>/secrets.json dan tidak pernah sampai ke klien; aliran kod peranti selesai pada pelayan. Bendera authExpiredAt memacu sepanduk sambung semula.
Istilah seni bina
Bahagian bertajuk “Istilah seni bina”Clean Architecture: Peraturan kebergantungan: Presentation → Application/Providers → Domain ← Infrastructure. Domain mempunyai sifar import infrastruktur.
Port dan penyesuai: Domain mentakrifkan antara muka abstrak (port); infrastruktur menyediakan pelaksanaan konkrit (penyesuai). Akar komposisi mengikatnya.
Kernel dikongsi: Entiti, objek nilai, port dan perkhidmatan core/domain/ yang dikongsi merentas 3+ ciri.
Berteraskan ciri: Kod disusun mengikut domain perniagaan (ejen, pipeline, pemesejan) dan bukan mengikut lapisan teknikal.
Multipemain, identiti dan kepantasan
Bahagian bertajuk “Multipemain, identiti dan kepantasan”Principal: Nilai tersegel yang menyatukan manusia dan ejen sebagai satu abstraksi pelaku — UserPrincipal(userId) atau AgentPrincipal(agentId). Setiap mesej, tiket, semakan, pelan dan log larian diatribusikan melalui Principal.
Pengguna: Identiti manusia, disimpan dalam global.db dan oleh itu global merentas ruang kerja. Principal yang mencipta sesuatu ruang kerja menjadi pemiliknya — distempel pada Workspace.ownerUserId dengan baris keahlian berperanan owner dalam operasi yang sama. Yang lain menyertai melalui jemputan atau SSO.
WorkspaceMember / WorkspaceRole: Baris keahlian yang mengikat seorang Pengguna pada sesuatu Ruang kerja pada sesuatu peranan (owner / admin / member / viewer / guest). Keahlian — bukan kunci penggandingan — ialah sempadan akses. Geran setiap repo menghalang keahlian daripada memberi keistimewaan melebihi forge.
ParticipantPresence: Kesedaran fana untuk sesuatu Principal (status, lokus, kursor, menaip, status langsung ejen dan kos berjalan). Tidak pernah dikekalkan; berhab pelayan; ditapis geran repo sebelum disebarkan.
Modus ikut: Klik avatar untuk menaiki viewportnya sehingga anda bertindak, kemudian lepaskan. Berfungsi untuk manusia dan untuk ejen (“lihat ejen bekerja”).
Dail autonomi: Kawalan bagi setiap ruang dan setiap ejen — propose-only / act-with-approval / act-freely — dilaksanakan sebagai profil bernama di atas stor guardrail tindakan.
ActionClass: Set tertutup 13 kelas kesan (fileDelete, gitPush, prCreate, networkEgress, processSpawn, enclosureControl, …). Setiap alat yang mengubah keadaan mengisytiharkan kelasnya; enjin guardrail menyelesaikan allow / prompt / deny mengikut skop (ruang > ejen > ruang kerja > praset modus > lalai terbina).
WriteLedger / kunci idempotensi: Setiap mutasi membawa kunci idempotensi yang dijana klien (UUIDv7, bagi setiap tindakan logik). Ledger berskop ruang kerja menyahduplikasi sebelum pengendali berjalan; main balik mengembalikan hasil asal yang identik bait demi bait. Menjadikan sambung semula dan berbilang klien selamat secara binaan.
Peti masuk “Needs me”: Baris gilir merentas tiang dengan peraturan ketat — sesuatu item muncul hanya jika ia menyekat sesuatu (ejen, cantuman, segerak) atau secara eksplisit meminta pengendali.
Plan Studio: Permukaan perancangan interaktif — pelan DAG bertipe yang boleh disunting dengan kos, masa dan risiko setiap langkah, serta kelulusan separa.
Pengiraan semakan: Pengiraan semakan PR di pihak pelayan (kohort terbitan graf, rajah panduan bertipe, diff visual, diff kontrak API, pintu berbilang paksi) yang disajikan melalui review_studio.* dan dilipat ke dalam tab Semakan.
Ruang semakan: Ruang sokongan tunggal sesuatu PR (modus review, jenis pr), dicipta secara idempoten dan dipautkan pada PR oleh ReviewSpaceAssociation. Setiap penyemak memfailkan penemuan di dalamnya, dan itulah yang menjadikan penemuan mereka boleh dibandingkan; worktree terasingnya mempunyai PR yang di-checkout pada headnya.
Nod semakan: Unit berstruktur bagi penemuan semakan AI: jenis (bug, suggestion, recommendation, question, ticket), keutamaan P0–P3, tiga serangkai triaj kategori/keterukan/usaha, sauh fail-dan-baris, cadangan pembaikan pilihan dan skor keyakinan. Difailkan dengan add_review_node; keputusan dikira daripada nod, bukan prosa.
Sedia konsensus: Status nod semakan yang dicapai hanya apabila penyemak rakan sebaya mengesahkan sesuatu penemuan — ejen tidak boleh mengesahkan penemuannya sendiri. Butang Terbitkan ke GitHub pada tab Semakan menghantar setiap penemuan terbuka yang tinggal (selection: all_open); alat MCP publish_review_to_github masih secara lalai menghantar penemuan yang disahkan rakan sebaya sahaja.
Tahap semakan: Polisi ruang kerja (light, balanced, thorough) yang mengawal penyemak mana yang disebar (jurutera sahaja; +qa+arkitek; +security+perf) dan di mana penemuan bawah ambang dipaparkan. Tidak pernah memadam penemuan.
Paksi semakan: Salah satu daripada lima lorong penilaian bagi setiap semakan: correctness, security dan testGap diambil daripada penemuan penyemak; visual dan apiContract deterministik. Paksi berpintu dilipat ke dalam keputusan dan hanya boleh menjadikannya lebih berat — pintu partial atau unavailable menahan keputusan itu dan bukan meluluskannya.
Keputusan semakan: ship, hold atau block. Mana-mana penemuan P0 dengan keyakinan ≥ 0.7 menyekat; mana-mana P0 lain atau mana-mana P1 menahan; sebaliknya ship. Paksi gagal berpintu memaksa block dan tidak boleh dikalahkan oleh penemuan.
Armada dan eval
Bahagian bertajuk “Armada dan eval”cc_worker: Binari pelaksana armada Dart tulen tanpa kepala. Berganding dengan cc_server, mengisytiharkan keupayaan hosnya, menarik kerja yang dipajak, melaksanakannya dan menstrim acara proses kembali. Tidak memegang sebarang keadaan berkekalan — satu pelayan berwibawa, N anggota badan yang tidak berfikir.
JobSpec: Spesifikasi bertipe untuk segala yang boleh dilaksanakan (larian ejen, langkah pipeline, indeks kod, render golden, benchmark, kelompok eval).
Suite eval: Takrif penilaian berskop ruang kerja (prompt, ejen dan modus sasaran, penggred). Lima set permulaan disemai semasa penciptaan ruang kerja; Kebolehcerapan → Kualiti menyenaraikannya.
Penerapan dan klien
Bahagian bertajuk “Penerapan dan klien”Seni bina klien nipis: Tiada klien membuka pangkalan data; proses cc_server tanpa kepala memiliki data dan menyajikannya melalui RPC WebSocket. Setiap klien (desktop, web, telefon) ialah pemapar di atas satu sambungan RPC itu.
cc_server: Binari pelayan tanpa kepala (Dart tulen, tiada enjin Flutter). Memiliki pangkalan data Drift/SQLite, menyajikan repo-RPC melalui WebSocket dan menjalankan perkhidmatan latar belakang (pipeline, MCP, reconciler).
ServerConnectionMode: Cara desktop mencapai pelayannya — local (lancarkan cc_server pada mesin ini, lalai) atau remote (dail satu di tempat lain). Klien web sentiasa remote.
RemoteRpcClient: Klien JSON-RPC bebas pengangkutan yang digunakan setiap klien nipis untuk bercakap dengan pelayannya — melalui WSS, loopback, atau geganti berperantara.
Skop ruang kerja per panggilan: Pelayan adalah tanpa keadaan — tiada pengikatan ruang kerja bagi setiap sesi, jadi berbilang klien pada satu pelayan tidak pernah berkongsi “ruang kerja semasa”. Setiap repo/call dan sub/subscribe berskop ruang kerja mesti membawa workspace_id dalam argumennya; id yang hilang atau tidak didaftarkan ditolak sebelum mana-mana pangkalan data dibuka. Akses kemudiannya digerbangi oleh keahlian dan peranan ruang kerja, bukan oleh sesi.
cc_remote: Klien nipis telefon — PWA web Flutter yang mengawal armada dari jauh melalui geganti berperantara dengan polisi alat tolak-secara-lalai.
cc_signaling_server: Broker geganti WebSocket tanpa keadaan yang menghoskan bilik bergerbang jemputan — geganti bodoh yang hanya memajukan bingkai tersegel hujung-ke-hujung, tidak memegang data apl dan tidak pernah melihat PSK penggandingan.