BGTS Context Engine BCE · v0.2.0
BGTS Context Engine BCE

Give AI agents the context that actually matters.

BCE maps repositories into a deterministic code graph and retrieves the symbols, relationships and evidence an agent actually needs — not just the files that happen to match a query.

BCE, depolarınızı deterministik bir kod grafına dönüştürür ve bir ajanın gerçekten ihtiyaç duyduğu sembolleri, ilişkileri ve kanıtı getirir — sorguya rastgele benzeyen dosyaları değil.

get_context_for_task live retrieval graph
task_text  =  "Fix the login timeout that fires on POST /meeting/webhook"
Retrieval subgraph: the route anchors the webhook handler, which calls refresh_session, which reads SESSION_TTL.

The same subgraph in three dimensions: depth is each symbol’s distance in the code graph from refresh_session.

THE PROBLEM

AI can read code. The hard part is knowing which code matters.

An agent working on an unfamiliar repository has to decide what to read before it can decide what to change. The usual answer is embedding search over chunked files — cheap to build, and wrong in a specific way: it returns text that reads like the question rather than code that participates in the behaviour.

Tanımadığı bir depoda çalışan bir ajan, neyi değiştireceğine karar vermeden önce neyi okuyacağına karar vermek zorundadır. Alışılmış cevap, parçalanmış dosyalar üzerinde embedding aramasıdır — kurması ucuz, ama çok belirli bir biçimde yanlış: davranışa katılan kodu değil, soruya benzeyen metni döner.

SAME TASK, BOTH SIDES  ·  "Why does the login timeout fire on the meeting webhook?"

Conventional retrieval

Five files that mention timeouts.

  • timeout.py
  • login.md
  • webhook.md
  • session.txt
  • config.md

Textually similar ≠ structurally relevant. Not one of these is the function that sets the value, and none of the three callers that break when you change it appears at all.

Metinsel benzerlik ≠ yapısal ilgi. Bunların hiçbiri değeri ayarlayan fonksiyon değil; değiştirdiğinizde bozulacak üç çağıranın hiçbiri de listede yok.

BGTS Context Engine
handle_meeting_webhookapi/webhooks.py:31
refresh_sessionauth/session.py:84
SESSION_TTLauth/config.py:41
AuthConfigauth/config.py:12

Ranked symbols, real relationships, a confidence level attached. SESSION_TTL is written in exactly one place. That is a graph walk, and it has an exact answer.

Sıralı semboller, gerçek ilişkiler, ekli bir güven seviyesi. SESSION_TTL'e tam olarak tek bir yerde değer atanır. Bu bir graf gezinmesidir ve kesin bir cevabı vardır.

Embedding search can tell an agent which files look similar to a task. BCE tells it which symbols participate in the behaviour.

Embedding araması bir ajana hangi dosyaların göreve benzediğini söyleyebilir. BCE ise hangi sembollerin davranışa katıldığını söyler.

THE INDEX

BCE doesn't search your repository. It understands its structure.

Indexing produces a typed graph in PostgreSQL: symbols and the edges between them, plus two node kinds most code indexes throw away — the HTTP routes that reach your handlers, and the WHY: comments that explain them.

İndeksleme, PostgreSQL içinde tipli bir graf üretir: semboller ve aralarındaki kenarlar; ayrıca çoğu kod indeksinin attığı iki düğüm türü — handler'larınıza ulaşan HTTP route'ları ve onları açıklayan WHY: yorumları.

repository graph hover or focus a node
The same subgraph, showing node kinds and every edge type by name.

Node labels

  • Repo · FileWhere a symbol lives, and which repository owns it.Bir sembolün yaşadığı yer ve onu barındıran depo.
  • SymbolFunction, method, class, interface, variable, constant, enum, type, field, property, constructor.Fonksiyon, metot, sınıf, arayüz, değişken, sabit, enum, tip, alan, property, constructor.
  • ModuleThe import-level grouping a file belongs to.Bir dosyanın ait olduğu import düzeyindeki gruplama.
  • RouteAn HTTP method and path pattern, extracted from the framework. A route can anchor a retrieval on its own.Framework'ten çıkarılan bir HTTP metodu ve yol deseni. Bir route tek başına getirmeye çapa olabilir.
  • DesignNoteA WHY:, NOTE:, HACK:, TODO: or FIXME: comment, bound to the symbol it explains.WHY:, NOTE:, HACK:, TODO: veya FIXME: yorumu; açıkladığı sembole bağlanır.

Edge types

  • CALLSSymbol to symbol, and it may cross repositories.Sembolden sembole; depoları da aşabilir.
  • REFERENCESCarries ref_kind: define, write, read or pass. This is the single most important signal in scoring.ref_kind taşır: define, write, read veya pass. Skorlamadaki en önemli sinyal budur.
  • INHERITS · IMPLEMENTSType hierarchy, walked in both directions.Tip hiyerarşisi; iki yönde de gezilir.
  • IMPORTSFile and module level dependencies.Dosya ve modül düzeyinde bağımlılıklar.
  • ROUTES_TOA route to its handler symbol.Bir route'tan handler sembolüne.
  • EXPLAINS · DEFINED_IN · BELONGS_TORationale to symbol, symbol to file, file to repository.Gerekçeden sembole, sembolden dosyaya, dosyadan depoya.

Every edge carries its provenance

How an edge got into the graph is recorded, weighted differently in scoring, and reported back on every response — so you can audit what the ranking trusted.Bir kenarın grafa nasıl girdiği kaydedilir, skorlamada farklı ağırlıklandırılır ve her yanıtta raporlanır — böylece sıralamanın neye güvendiğini denetleyebilirsiniz.

scip1.0A real compiler index.Gerçek bir derleyici indeksi.
treesitter0.8Extracted from syntax.Sözdiziminden çıkarıldı.
heuristic0.4A pattern match — routes, cross-language bridges.Bir örüntü eşleşmesi — route'lar, diller arası köprüler.
THE PIPELINE

Watch a task become context.

Seven stages run between the task text and the pack the agent receives. This is a real run, recorded by the engine's own trace endpoint while it indexed its own repository — the counters, the scores and the confidence level below are what it actually returned.

Görev metni ile ajanın aldığı paket arasında yedi aşama çalışır. Bu gerçek bir koşu: motorun kendi trace uç noktası, kendi deposunu indekslerken kaydetti — aşağıdaki sayaçlar, skorlar ve güven seviyesi gerçekten döndürdüğü değerler.

get_context_for_task 4.9k edges 136 files 1.5k symbols
RECORDED RUN · BCE INDEXING ITS OWN REPOSITORYKAYDEDİLMİŞ KOŞU · BCE KENDİ DEPOSUNU İNDEKSLİYOR How does get_context_for_task turn find_anchors into a ranked context pack through expand_from_anchors score_candidate and assemble
The call structure this run walked, at the selected stage.

01 / 07

Stage counters, symbol names, file paths, scores and the confidence level come from a recorded run of the shipped /ui trace. The graph draws the call structure the run walked; the run itself scored 458 candidates, more than a canvas can hold. Aşama sayaçları, sembol adları, dosya yolları, skorlar ve güven seviyesi, ürünle gelen /ui trace'inin kaydedilmiş bir koşusundan gelir. Graf, koşunun gezdiği çağrı yapısını çizer; koşunun kendisi 458 aday skorladı — bir tuvalin alabileceğinden fazlası.

THE GUARANTEE

Same task. Same commit. Same context.

Run the same task three times and the pack comes back in the same order, with the same scores, every time. When an agent makes a bad change you can replay exactly what it was told, find the stage that surfaced the wrong symbol, and fix that stage.

Aynı görevi üç kez çalıştırın; paket her seferinde aynı sırayla, aynı skorlarla döner. Bir ajan hatalı bir değişiklik yaptığında ona tam olarak ne söylendiğini yeniden oynatabilir, yanlış sembolü yüzeye çıkaran aşamayı bulabilir ve o aşamayı düzeltebilirsiniz.

bce context --task "…" --commit 9f2c41e
SHA-256 OF THE ORDERING — COMPUTED IN YOUR BROWSER, ONCE PER RUN …

What makes it hold

  • No model in the retrieval pathGetirme yolunda model yok
  • No clock, no randomnessSaat yok, rastgelelik yok
  • Sorted traversal, fixed hop limitsSıralı gezinme, sabit hop sınırları
  • Stable tiebreak: score desc, then symbol_id ascKararlı eşitlik bozma: skor azalan, sonra symbol_id artan
  • Versioned scoring weights: scoring-v1Sürümlenmiş skorlama ağırlıkları: scoring-v1

And what enforces it

Determinism is not a claim in the documentation, it is a test in the pipeline. bce bench runs every case repeatedly and fails unless the ordering comes back byte-identical.

Determinizm dokümantasyondaki bir iddia değil, hattaki bir testtir. bce bench her vakayı tekrar tekrar koşar ve sıralama bayt-birebir aynı dönmezse başarısız olur.

bce bench --cases my-tasks.json --determinism-runs 3 --out report.json

“Determinism is the product.” A change that makes the same task return different results is not merged without an explicit opt-in flag. — CONTRIBUTING.md

“Determinizm ürünün kendisidir.” Aynı görevin farklı sonuç döndürmesine yol açan bir değişiklik, açık bir opt-in bayrağı olmadan birleştirilmez. — CONTRIBUTING.md

THE SHIPPED UI

The interface that explains itself.

The web interface ships inside the wheel at /ui. Its second tab is not a dashboard — it replays a real get_context_for_task call stage by stage against the graph, through POST /v1/ui/context-trace. When retrieval returns something surprising, watching where it went wrong is faster than reading the scores.

Web arayüzü wheel içinde /ui adresinde gelir. İkinci sekmesi bir dashboard değildir — gerçek bir get_context_for_task çağrısını POST /v1/ui/context-trace üzerinden, graf üzerinde aşama aşama yeniden oynatır. Getirme şaşırtıcı bir şey döndürdüğünde, nerede saptığını izlemek skorları okumaktan hızlıdır.

BCE Graph Explorer stage-by-stage replayaşama aşama tekrar
BCE Graph Explorer at the Anchors stage.

What the explorer shows

  • 4.9k edgesThe whole indexed graph, drawn in WebGL.İndekslenmiş grafın tamamı, WebGL ile çizilmiş.
  • 136 files · 1.5k symbolsBCE's own repository, indexed by BCE.BCE'nin kendi deposu, BCE tarafından indekslenmiş.
  • 135 modules · 41 routesRoutes are first-class nodes, not comments in a file.Route'lar bir dosyadaki yorumlar değil, birinci sınıf düğümlerdir.
  • 3 design notesWHY: comments, bound to the symbols they explain.WHY: yorumları, açıkladıkları sembollere bağlı.
  • PY 84% · TS 15%Language mix, computed from the index itself.İndeksin kendisinden hesaplanan dil dağılımı.

Node colour is the node label, size is degree. Click a node for its signature and body; double-click to expand its neighbours. Everything in the panel comes from /v1/ui/* — the same graph the agent queries. Düğüm rengi etiketi, boyutu derecesini gösterir. Bir düğüme tıklayınca imzası ve gövdesi, çift tıklayınca komşuları açılır. Paneldeki her şey /v1/ui/* üzerinden gelir — ajanın sorguladığı grafın aynısı.

The full walkthrough

51 seconds, no audio. The run in the video is the one the pipeline section above steps through. 51 saniye, sessiz. Videodaki koşu, yukarıdaki hat bölümünde adım adım gezdiğiniz koşunun ta kendisi.

COVERAGE & CONFIDENCE

Don't just retrieve. Know how much you can trust the retrieval.

Every Layer-3 response carries a trust report alongside the results. It is not a score for the answer — it is a set of deterministic measurements of how well corroborated that answer is, and it exists so an agent can decide whether to act or to ask.

Her Layer-3 yanıtı, sonuçların yanında bir güven raporu taşır. Bu, cevaba verilen bir not değildir — o cevabın ne kadar doğrulandığının deterministik ölçümleridir ve bir ajanın harekete geçmek ile soru sormak arasında karar verebilmesi için vardır.

coverage
CONFIDENCE MEDIUM

The rule, exactly as it is implemented

HIGH    anchor_source_count        >= 3
    AND connected_component_ratio  >= 0.7
    AND top_candidate_margin       >= 1.0

LOW     anchor_source_count        <= 1
    AND (top_candidate_margin      <  0.5
         OR orphan_ratio          >  0.5)

MEDIUM  everything else

Two more signals sit beside the confidence level. touches_god_node warns that a hub symbol with degree ≥ 20 — a logger, a settings object — reached the context; it touches everything and explains nothing. commit_mismatch says the index is behind your working tree, which makes every line number in the pack suspect. Güven seviyesinin yanında iki sinyal daha durur. touches_god_node, derecesi ≥ 20 olan bir hub sembolünün — bir logger, bir ayar nesnesi — bağlama girdiğini bildirir; her şeye dokunur, hiçbir şeyi açıklamaz. commit_mismatch ise indeksin çalışma ağacınızın gerisinde kaldığını, dolayısıyla paketteki her satır numarasının şüpheli olduğunu söyler.

HIGH

Act on it

Three independent sources agreed, the candidates form one connected region, and the top candidate is clearly ahead. Proceed with the change.

Üç bağımsız kaynak hemfikir, adaylar tek bir bağlı bölge oluşturuyor ve ilk aday açık ara önde. Değişikliğe devam edin.

MEDIUM

Widen before you edit

Something is missing — fewer sources, a thinner margin, or scattered candidates. Pull the callers explicitly, or raise the budget, before touching code.

Eksik bir şey var — daha az kaynak, daha dar bir fark ya da dağınık adaylar. Koda dokunmadan önce çağıranları açıkça çekin veya bütçeyi yükseltin.

LOW

Ask, don't edit

The engine found something but could not corroborate it. This is the moment for an agent to ask a follow-up question instead of editing — the single most valuable thing a retrieval layer can tell you.

Motor bir şey buldu ama doğrulayamadı. Bu, bir ajanın düzenlemeye başlamak yerine soru sorması gereken andır — bir getirme katmanının size söyleyebileceği en değerli şey.

ASSEMBLY

More context is not better context.

The symbol you are changing arrives in full. Its neighbours arrive as signatures. The outer ring arrives as name @ file:line. Detail is decided by graph distance, not by how much room is left — which is why raising the budget does not buy you more of anything.

Değiştirdiğiniz sembol tam gövdesiyle gelir. Komşuları imza olarak gelir. Dış halka name @ dosya:satır biçiminde gelir. Detayı, kalan yer değil graf mesafesi belirler — bütçeyi yükseltmenin size fazladan bir şey kazandırmamasının nedeni budur.

  • fullgraph_distance 0–1 The full body of the symbol.Sembolün tam gövdesi.
  • signaturegraph_distance 2 Signature and docstring only.Yalnızca imza ve docstring.
  • referencegraph_distance 3+ The name and where to find it.Ad ve nerede bulunacağı.

When it does not fit

An item that would overflow is retried at reference detail first. Only if that still overflows is it skipped — and it is skipped, never reordered, so the pack stays reproducible for a given budget. Token cost is estimated at roughly four characters per token: no model, no network.

Bütçeyi aşacak bir öğe önce reference detayında yeniden denenir. Ancak o da aşarsa atlanır — ve atlanır, asla yeniden sıralanmaz; böylece paket verilen bütçe için yeniden üretilebilir kalır. Token maliyeti yaklaşık dört karakter = bir token olarak tahmin edilir: model yok, ağ yok.

assemble pick a budget
Context pack items at the selected token budget
symboldistdetailtokensscore

ARCHITECTURE

One engine, three layers, one database.

MCP and REST are two surfaces over the same functions, so nothing drifts between them. Underneath, a graph traversal, a vector search and a SQL filter all run against one PostgreSQL — which means one query can join them, and one pg_dump backs up the whole index.

MCP ve REST, aynı fonksiyonların iki yüzeyidir; aralarında kayma olmaz. Altta bir graf gezinmesi, bir vektör araması ve bir SQL filtresi tek bir PostgreSQL üzerinde çalışır — yani tek bir sorgu bunları birleştirebilir ve tek bir pg_dump indeksin tamamını yedekler.

AI AGENTClaude Code · Cursor · VS Code · Claude Desktop
MCP (stdio) · REST (:8000)14 tools · OpenAPI at /docs · web UI at /ui
Context Enginedeterministic, embedding-free after anchor finding
Anchors4 sources
Graph walkfixed template
Scoringscoring-v1
PostgreSQL 16Apache AGE · pgvector · SQL · full-text · row-level scopes
Repository indexsymbols · edges · routes · design notes · embeddings
Source code · Gitlocal working trees · remote repositories
LAYER 1

Graph primitives

6 tools

Exact structural questions with exact answers. Every one takes or returns a symbol_id, so tools chain into each other.

Kesin yapısal sorular, kesin cevaplar. Her biri bir symbol_id alır veya döner; böylece araçlar birbirine zincirlenir.

resolve_symbolfind_referencesfind_implementersget_call_graphget_dependenciesget_type_hierarchy
LAYER 2

Search

3 tools

Finding an entry point when the task text names nothing recognisable. This is the only place embeddings appear, and they never reach ranking.

Görev metni tanıdık hiçbir şey adlandırmadığında giriş noktası bulmak. Embedding'lerin göründüğü tek yer burasıdır ve sıralamaya asla ulaşmazlar.

semantic_searchhybrid_searchfind_similar_code
LAYER 3

Orchestration

5 tools

Task-level retrieval: anchors, expansion, scoring, scope, narrowing, assembly and coverage — the whole pipeline behind one call.

Görev düzeyinde getirme: çapalar, genişletme, skorlama, kapsam, daraltma, birleştirme ve kapsama — tek bir çağrının arkasındaki hattın tamamı.

get_context_for_tasksuggest_change_sitesexpand_blast_radiusselect_reposassemble_context

Five principles everything else follows from

These are the project's own design principles, and they are the reason the engine looks unusual next to a vector store. Every constraint on this page traces back to one of them. Bunlar projenin kendi tasarım ilkeleri; motorun bir vektör veritabanının yanında alışılmadık görünmesinin sebebi de bunlar. Bu sayfadaki her kısıt bunlardan birine dayanıyor.

  • P1 · The deterministic lineDeterministik çizgi The system splits in two. The providing side — the engine — has no model and is reproducible. The consuming side — the agent — is probabilistic and makes the decisions. The line is never blurred. Sistem ikiye bölünür. Sağlayan taraf — motor — model içermez ve yeniden üretilebilirdir. Tüketen taraf — ajan — olasılıksaldır ve kararı verir. Bu çizgi asla bulanıklaşmaz.
  • P2 · Semantic seed, graph truthSemantik tohum, graf gerçek Embedding search does not produce an answer; it finds a door. The context itself comes from deterministic traversal, so an embedding's whim is damped by expansion rather than amplified by it. Embedding araması cevap üretmez, bir kapı bulur. Bağlamın kendisi deterministik gezinmeden gelir; embedding'in kaprisi genişletmeyle büyütülmez, sönümlenir.
  • P3 · Narrowing with transparent uncertaintyDaraltma ve şeffaf belirsizlik The job is not "pick the right file". It is reducing a thousand candidates to about eight without losing recall — and measuring what uncertainty remains instead of hiding it. İş "doğru dosyayı seçmek" değildir. Bin adayı recall'ı kaybetmeden yaklaşık sekize indirmek — ve kalan belirsizliği gizlemek yerine ölçmektir.
  • P4 · Recall over precision, deliberatelyBilinçli olarak recall > precision A missed file leads to wrong code. An extra file is only noise. So the engine collects generously, then trims to budget by deterministic ranking — the cost of missing is higher than the cost of over-collecting. Kaçırılan dosya yanlış koda götürür; fazla dosya yalnızca gürültüdür. Motor cömert toplar, sonra deterministik sıralamayla bütçeye budar — kaçırma maliyeti, fazla toplama maliyetinden yüksektir.
  • P5 · One databaseTek veritabanı Graph, embeddings, metadata and permissions in one PostgreSQL, so a single query joins a traversal, a vector search and an access filter — and one backup captures all of it. Graf, embedding, meta veri ve izinler tek bir PostgreSQL'de; böylece tek bir sorgu bir gezinmeyi, bir vektör aramasını ve bir erişim filtresini birleştirir — ve tek bir yedek hepsini kapsar.

The engine is not a system that finds the right code every time. No such system exists. Its value is narrowing without losing recall — and measuring what it is unsure of instead of concealing it.

Motor, doğru kodu her seferinde bulan bir sistem değildir. Öyle bir sistem yok. Değeri, recall'ı kaybetmeden daraltmak — ve emin olmadığı şeyi gizlemek yerine ölçüp bildirmek.

WHAT IT DOES NOT DO YET

The engine has no authentication of its own and expects to sit behind something that does. Only the Layer-3 endpoints apply the per-user repository scope; Layers 1 and 2 do not. Until that closes — it is the first item on the roadmap — the API belongs behind a proxy. That is stated here for the same reason it is stated in the repository: a retrieval layer that hides its limits is not one you can audit.

Motorun kendine ait bir kimlik doğrulaması yoktur ve önünde bunu yapan bir katman bekler. Kullanıcı bazlı depo kapsamını yalnızca Layer-3 uç noktaları uygular; Layer 1 ve 2 uygulamaz. Bu kapanana kadar — yol haritasının ilk maddesidir — API bir proxy arkasında durmalıdır. Bunun burada yazmasının nedeni, depoda yazmasıyla aynıdır: sınırlarını gizleyen bir getirme katmanı denetlenebilir değildir.

INDEXING

From a commit to a graph, and back again.

The first index parses everything. After that, git diff decides what to re-parse — and because symbol identity does not depend on a file path, a refactor that moves a thousand lines does not invalidate a thousand rows.

İlk indeks her şeyi ayrıştırır. Sonrasında neyin yeniden ayrıştırılacağına git diff karar verir — ve sembol kimliği bir dosya yoluna bağlı olmadığı için, bin satır taşıyan bir refactor bin satırı geçersiz kılmaz.

  1. Repository
  2. Parse
  3. Symbols
  4. Relationships
  5. Graph
  6. Incremental updates

git diff decides the work

Re-indexing takes a baseline commit and a target, and only touches what changed between them. Remote repositories index the same way.

Yeniden indeksleme bir temel commit ile bir hedef alır ve yalnızca aralarında değişeni işler. Uzak depolar da aynı şekilde indekslenir.

bce reindex --repo . --name my-service --since 9f2c41e --to HEAD

Symbol ids outlive the file path

Identity follows SCIP-moniker logic — language, package, namespace, name, signature — hashed into an id that is repo- and commit-independent. Move the file, reformat it, and history and embeddings stay valid.

Kimlik SCIP-moniker mantığını izler — dil, paket, ad alanı, ad, imza — ve depodan ve commit'ten bağımsız bir kimliğe hash'lenir. Dosyayı taşıyın, yeniden biçimlendirin; geçmiş ve embedding'ler geçerli kalır.

python::auth::session::refresh_session#88c2

Routes and rationale, not just code

Route extraction is framework-aware for FastAPI, Flask, Express, NestJS, Spring, ASP.NET and Gin. Comment markers become DesignNote nodes bound to the symbol they explain.

Route çıkarımı FastAPI, Flask, Express, NestJS, Spring, ASP.NET ve Gin için framework-farkındadır. Yorum işaretleri, açıkladıkları sembole bağlı DesignNote düğümlerine dönüşür.

# WHY: TTL is short because the meeting
# webhook replays on retry.

Six languages

  • Python.py · .pyi  —  built inyerleşik
  • JavaScript.js · .jsx  —  built inyerleşik
  • TypeScript.ts · .tsx  —  built inyerleşik
  • Java.java  —  langs extra
  • C#.cs  —  langs extra
  • Go.go  —  langs extra

Optional providers register only if their grammar imports, so the supported set is a deterministic function of the environment. Adding a language touches two files — it is the contribution path with the least friction. İsteğe bağlı sağlayıcılar yalnızca grameri import edilebiliyorsa kaydolur; desteklenen küme ortamın deterministik bir fonksiyonudur. Yeni bir dil eklemek iki dosyaya dokunur — sürtünmesi en az katkı yolu budur.

Running at repository scale

  • bce indexIndex a local working tree.Yerel bir çalışma ağacını indeksle.
  • bce index-remoteIndex a Bitbucket repository by URL and branch.Bir Bitbucket deposunu URL ve dal ile indeksle.
  • bce reindexApply a diff between two commits.İki commit arasındaki farkı uygula.
  • POST /v1/jobs/*Queue indexing as a background job; poll status, cancel.İndekslemeyi arka plan işi olarak kuyruğa al; durumu sorgula, iptal et.
  • bce migrateCreate the extensions, graph, tables, vector and full-text indexes.Uzantıları, grafı, tabloları, vektör ve tam metin indekslerini oluştur.
CROSS-LANGUAGE

The call your parser cannot see.

In a React Native app, a TypeScript call and its native implementation are the same behaviour in two languages. No single-language AST spans that gap, so the call graph simply stops at the bridge — and an agent asked to change the native side never learns which screens depend on it.

Bir React Native uygulamasında, bir TypeScript çağrısı ile onun native gerçeklemesi iki dildeki aynı davranıştır. Tek dilli hiçbir AST bu boşluğu kapatmaz; çağrı grafı köprüde durur — ve native tarafı değiştirmesi istenen bir ajan, hangi ekranların ona bağlı olduğunu asla öğrenemez.

TypeScript  ·  src/screens/Login.tsx
await NativeModules.Auth.refresh(token)
Objective-C  ·  ios/AuthModule.m
RCT_EXPORT_METHOD(refresh:(NSString *)token)

These edges are inferred from naming conventions, not resolved by a compiler. That is exactly why they are tagged heuristic and carry the lowest provenance weight in scoring — and why provenance is reported per edge on every response, so you can see which part of an answer rests on an inference. Bu kenarlar bir derleyici tarafından çözülmez, adlandırma kurallarından çıkarılır. heuristic olarak etiketlenmelerinin ve skorlamada en düşük kaynak ağırlığını taşımalarının nedeni tam olarak budur — ve kaynağın her yanıtta kenar bazında raporlanmasının da: bir cevabın hangi kısmının çıkarıma dayandığını görebilirsiniz.

  • React Native bridgeRCT_EXPORT_METHOD / RCT_REMAP_METHOD in Objective-C, called from JS as NativeModules.Foo.bar().Objective-C'deki RCT_EXPORT_METHOD / RCT_REMAP_METHOD, JS'ten NativeModules.Foo.bar() ile çağrılır.rn-bridge
  • Swift ↔ Objective-C@objc(fooBar:) and @objc func expose a Swift symbol under an Objective-C selector.@objc(fooBar:) ve @objc func, bir Swift sembolünü Objective-C seçicisi altında açar.swift-objc-bridge
  • Expo ModulesFunction("foo") and AsyncFunction("foo") inside a Swift or Kotlin module definition.Bir Swift veya Kotlin modül tanımı içindeki Function("foo") ve AsyncFunction("foo").expo-module-extract
  • RN event channelssendEvent(withName:) on the native side paired with addListener("onX") in JS.Native taraftaki sendEvent(withName:), JS'teki addListener("onX") ile eşleşir.rn-event-channel
MCP & REST

Put repository context where your agent works.

The MCP surface speaks stdio, so every client configures it the same way: run bce serve-mcp, put the database connection in the environment. Then ask your agent something that needs the repository rather than the file you have open.

MCP yüzeyi stdio konuşur; bu yüzden her istemci aynı şekilde yapılandırılır: bce serve-mcp çalıştırın, veritabanı bağlantısını ortama koyun. Sonra ajanınıza açık olan dosyayı değil, deponun tamamını gerektiren bir şey sorun.

Claude CodeCursorVS CodeClaude Desktop
bce serve-mcp  ·  14 tools
PostgreSQL  ·  Apache AGE + pgvector

    

ONE LIMITATION WORTH KNOWING

The MCP surface is stdio only today, which means the server runs next to the agent rather than serving a team from one index. Streamable HTTP transport is the second item on the roadmap. Until then, the REST surface is how a shared deployment is reached.

MCP yüzeyi bugün yalnızca stdio'dur; yani sunucu, tek bir indeksten tüm ekibe hizmet etmek yerine ajanın yanında çalışır. Streamable HTTP taşıması yol haritasının ikinci maddesidir. O zamana kadar paylaşımlı bir kuruluma REST yüzeyinden erişilir.

The tool surface

An agent usually starts at get_context_for_task and drills from there — exact callers, type hierarchy, route handlers — without guessing at file names. All fourteen tools are listed here with the names and descriptions the server actually declares. Bir ajan genellikle get_context_for_task ile başlar ve oradan derinleşir — kesin çağıranlar, tip hiyerarşisi, route handler'ları — dosya adlarını tahmin etmeden. On dört aracın tamamı, sunucunun gerçekten bildirdiği ad ve açıklamalarla burada listelenir.

MCP surface14 tools
WHERE IT FITS

Between the thing that is exact and the thing that is broad.

A language server is exact but scoped to what you have open. Embedding search is broad but unaccountable. BCE sits between them: repository-wide and cross-language like the former, exact and reproducible like the latter.

Bir language server kesindir ama açık olanla sınırlıdır. Embedding araması geniştir ama hesap veremez. BCE ikisinin arasında durur: ilki gibi depo çapında ve diller arası, ikincisi gibi kesin ve yeniden üretilebilir.

Comparison of embedding RAG, a language server, and BGTS Context Engine
Property Embedding RAG Language server BGTS Context Engine
Retrieval basisGetirme temeli text similaritymetin benzerliği compiler indexderleyici indeksi code graph + anchorskod grafı + çapalar
Cross-file, cross-repoDosyalar / depolar arası weakzayıf per projectproje bazlı yesevet
Cross-language edgesDiller arası kenarlar noyok noyok yes, heuristicevet, sezgisel
Same query, same answerAynı sorgu, aynı cevap nohayır yesevet yesevet
Ranked for a taskBir göreve göre sıralı by similaritybenzerliğe göre not rankedsıralı değil yes, with coverageevet, kapsama ile
Token budget awareToken bütçesi farkında chunk countparça sayısı nohayır yes, detail by distanceevet, mesafeye göre detay
Explains its own answerKendi cevabını açıklar nohayır nohayır anchors + provenance + confidence
EVIDENCE

Three runs, published whole.

Two independent embedding models and nineteen agent tasks agree: the engine roughly doubles what retrieval finds at twenty symbols, and cuts an agent's search cost by a fifth to a third. The losses are on this page too — at five symbols the engine is behind, and two in five targets are never reachable from the task text at all. Those are not footnotes. They are the reason the rest is worth reading.

İki bağımsız embedding modeli ve on dokuz ajan görevi aynı şeyi söylüyor: motor, yirmi sembolde getirmenin bulduğunu kabaca ikiye katlıyor ve bir ajanın arama maliyetini beşte bir ile üçte bir arasında düşürüyor. Kayıplar da bu sayfada — beş sembolde motor geride ve her beş hedeften ikisi görev metninden hiç erişilebilir değil. Bunlar dipnot değil. Geri kalanını okumaya değer kılan şey tam olarak bunlar.

  • 40 pull requests replayed
  • 2 embedding models
  • 19 agent tasks, two arms each
  • 3 coding agents
  • every loss shown

Layer 1 — does it find the right code?

Forty merged pull requests are replayed. For each one a separate database indexes the repository as it stood immediately before that PR, so the engine never sees the future. The task text is the PR's own title and description. The right answer is the set of symbols and files the diff actually touched — tests and files the PR itself created are excluded, because they do not exist in the snapshot. Both systems return twenty symbols from the same embedding rows; the only difference is what the engine puts on top.

Kırk birleşmiş pull request yeniden oynatılıyor. Her biri için ayrı bir veritabanı, depoyu o PR'dan hemen önceki hâliyle indeksliyor; yani motor geleceği görmüyor. Görev metni, PR'ın kendi başlığı ve açıklaması. Doğru cevap, diff'in gerçekten dokunduğu semboller ve dosyalar — testler ve PR'ın kendi yarattığı dosyalar hariç, çünkü snapshot'ta yoklar. İki sistem de aynı embedding satırlarından yirmi sembol döndürüyor; tek fark motorun üstüne koyduğu şey.

  • 40 indexed
  • 2 excluded by decision
  • 8 touch no symbol — scored at file level
  • 30 scored
  • 16 tune · 14 holdout
  • median 4 code files per PR
The K ladder
MODEL
SPLIT
K

tune is the sixteen pull requests the engine's constants were fitted on. holdout is the fourteen they were not — that is the number worth reporting, and it is the default here. K is a focus, not a filter: all three list lengths stay on screen.

tune, motorun sabitlerinin üzerinde ayarlandığı on altı pull request. holdout, ayarlanmadığı on dört tanesi — raporlanmaya değer sayı budur ve burada varsayılan odur. K bir filtre değil, odak: üç liste uzunluğu da ekranda kalır.

Show the numbers — this table always matches the chart above
LATENCY, MODEL ALONE—median, end to end
LATENCY, WITH THE ENGINE—
RETENTION—of the model's own correct hits, kept
Where the truths were lost

Every symbol the forty diffs actually touched, traced from the channel that put it into the candidate pool to where it ended up. This breakdown was published at K=20 only; inventing a K=5 version of it would be fabrication.

Kırk diff'in gerçekten dokunduğu her sembol, onu aday havuzuna sokan kanaldan nereye vardığına kadar izleniyor. Bu döküm yalnızca K=20 için yayımlandı; K=5 sürümünü uydurmak veri üretmek olurdu.

Show the numbers
WHAT K=5 COSTS — PRESS IT ON THE CHART ABOVE

At five symbols the engine does not help, and on the holdout it actively hurts: 8.3% against the model's 17.9%, three pull requests lost and none won. The cause is structural. The final list interleaves the model's own ranking with the engine's scores — slot one is always the model's top hit, then the two alternate. A target the model ranked fourth therefore lands seventh, which is fine at ten and too late at five.

Beş sembolde motor yardımcı olmuyor, holdout'ta ise açıkça zarar veriyor: modelin %17,9'una karşı %8,3, üç pull request kayıp, sıfır kazanç. Sebep yapısal. Nihai liste, modelin kendi sıralamasıyla motorun puanlarını dönüşümlü yerleştiriyor — birinci slot her zaman modelin en iyisi, sonra ikisi sırayla. Modelin dördüncü sıraya koyduğu bir hedef bu yüzden yediye iniyor; onda sorun değil, beşte çok geç.

The practical rule: if you are showing a developer a list of five, use the model's own ranking. The engine earns its place from ten upward, and most clearly at twenty — which is where a context pack for an agent sits anyway.

Pratik kural: bir geliştiriciye beşlik bir liste gösteriyorsanız modelin kendi sıralamasını kullanın. Motor yerini ondan yukarısında kazanıyor, en açık biçimde de yirmide — ki bir ajan için bağlam paketi zaten oradadır.

How the jina profile was chosen — the guard sweep

Finding the code is not the product. The product is what the agent does with it — and retrieval that is twice as good only pays if the agent stops searching.

Kodu bulmak ürün değil. Ürün, ajanın onunla ne yaptığı — iki kat iyi getirme, ancak ajan aramayı bırakırsa işe yarar.

Layer 2 — does it change what the agent does?

Two separate studies, two coding agents, two models. In both the same tasks were run twice — once with repository context supplied, once without — and both arms produced real diffs against a real codebase.

İki ayrı çalışma, iki kodlama ajanı, iki model. İkisinde de aynı görevler iki kez koşuldu — bir kez depo bağlamı verilerek, bir kez verilmeden — ve iki kol da gerçek bir kod tabanı üzerinde gerçek diff'ler üretti.

  • 14 tasks, 28 runs
  • cursor-grok-4.6-xhigh-fast
  • one machine, one account, arms alternated
  • K=20 · jina-code-embeddings-1.5b
  • context computed once, 1.6 s, ~1.3k tokens
What the agent stopped doing 14 matched pairs

Each row is a ratio against the plain arm, so 1.00 means nothing changed. The bar is the per-run aggregate; the open diamond is the per-task median. Where the two disagree — wall clock most of all — the aggregate is being carried by the heavy tasks, and that disagreement is itself the finding.

Her satır sade kola göre bir oran; yani 1,00 hiçbir şeyin değişmediği anlamına gelir. Çubuk koşu başına toplam oran; içi boş baklava ise görev bazlı medyan. İkisinin ayrıştığı yerde — en çok da sürede — toplamı ağır görevler taşıyor ve bu ayrışmanın kendisi bulgudur.

Show all sixteen measured rows
The gain scales with the task

Fourteen tasks. Horizontal: how long the task took without the engine. Vertical: tokens with the engine as a share of tokens without it, so below the line is cheaper. Marker size is the task's own weight. No trend line is drawn — fourteen tasks at one run each do not support one.

On dört görev. Yatay: görevin motorsuz ne kadar sürdüğü. Dikey: motorla harcanan tokenin motorsuza oranı; yani çizginin altı daha ucuz. İşaret boyutu görevin kendi ağırlığı. Eğilim çizgisi çizilmedi — görev başına tek koşuyla on dört nokta bunu kaldırmaz.

Above roughly 150 seconds the engine cuts 40% or more. Below 60 seconds it is neutral or a few seconds behind: a fixed 1.6 seconds and about 1,300 tokens per turn does not amortise on small work.
Kabaca 150 saniyenin üstünde motor %40 ve fazlasını kesiyor. 60 saniyenin altında nötr ya da birkaç saniye geride: sabit 1,6 saniye ve tur başına yaklaşık 1.300 token küçük işlerde amorti olmuyor.
Show all fourteen tasks
THE RUN THAT WAS NOT STARTED

A fifteenth task was prepared. On its engine arm, preflight measured a seventeen-second round trip to the embedding server and refused to start the run. The plain arm finished, but with no pair it could not be compared, so it was dropped. A stopping rule that actually fires is worth more than a fifteenth data point.

On beşinci bir görev hazırlanmıştı. Motor kolunda preflight, embedding sunucusuna on yedi saniyelik bir gidiş-dönüş ölçtü ve koşuyu başlatmadı. Sade kol tamamlandı ama eşi olmadığı için karşılaştırılamadı ve elendi. Gerçekten ateşlenen bir durma kuralı, on beşinci bir veri noktasından değerlidir.

WHAT THIS DOES NOT SHOW
  • The samples are small and the agent runs are n=1. One run per task, no repeats, in both agent studies. A single task's difference can be noise — hard-1 and T13 are proof. What is reliable is the total and the consistent direction on the large tasks.
  • Örneklemler küçük ve ajan koşuları n=1. İki ajan çalışmasında da görev başına tek koşu, tekrar yok. Tek bir görevdeki fark gürültü olabilir — hard-1 ve T13 bunun kanıtı. Güvenilir olan, toplam ve büyük görevlerdeki tutarlı yön.
  • A fourteen-pull-request holdout moves with a single PR. In the jina run, #839 alone is worth about seven percentage points. Read the win–tie–loss columns in the tables before the averages.
  • On dört pull request'lik bir holdout tek bir PR ile oynar. jina koşusunda yalnız #839 yaklaşık yedi puan değerinde. Ortalamalardan önce tablolardaki kazanç–berabere–kayıp sütunlarına bakın.
  • Two in five targets are never reachable. Forty percent of the symbols a diff touched are not in the model's list, not named in the task text, and not a neighbour of anything that is. No list length fixes that; it is a property of how the task was written.
  • Her beş hedeften ikisine hiç ulaşılamıyor. Bir diff'in dokunduğu sembollerin %40'ı ne modelin listesinde, ne görev metninde adı geçiyor, ne de bunlardan birinin komşusu. Bunu liste uzunluğu çözmez; görevin nasıl yazıldığına bağlı bir özellik.
  • The graph walk finds targets it cannot rank. Every symbol reached only by walking the code graph failed to make the final twenty, in all three retrieval runs. They are in the pool at a median rank near seventy. This is the single largest open defect, and it is ours.
  • Graf yürüyüşü, sıralayamadığı hedefler buluyor. Yalnızca kod grafı yürünerek ulaşılan her sembol, üç getirme koşusunun üçünde de son yirmiye giremedi. Havuzda medyan yetmişe yakın bir sırada duruyorlar. Bu, en büyük açık kusur ve bize ait.
  • Ranking quality is ambiguous. Mean reciprocal rank improves overall but is still negative on the voyage holdout. The engine finds more, and sometimes places it a few rows lower.
  • Sıralama kalitesi belirsiz. Ortalama karşılıklı sıra (MRR) toplamda iyileşiyor ama voyage holdout'unda hâlâ eksi. Motor daha çok buluyor, bazen birkaç sıra aşağıya koyuyor.
  • A bare title gains nothing. Replayed with only the PR title and no description, the engine and the model score identically. Without an identifier or a distinctive word in the text, there is nothing for the anchor channels to work with.
  • Çıplak başlık hiçbir şey kazandırmıyor. Yalnız PR başlığıyla, açıklama olmadan koşulduğunda motor ve model aynı skoru alıyor. Metinde bir tanımlayıcı ya da ayırt edici kelime yoksa çıpa kanallarının çalışacağı malzeme yok.
  • Locale and configuration files are invisible to the graph. It indexes code. Translation tasks therefore go the wrong way — T03 and T13 are both worse with the engine on.
  • Locale ve konfigürasyon dosyaları graf için görünmez. Graf kodu indeksler. Bu yüzden çeviri görevleri ters yöne gidiyor — T03 ve T13, motor açıkken daha kötü.
  • The engine does not fix scope. Expected-file precision is 0.73 in both arms of the Cursor run, and on T07 both touched twenty-one files where six were expected. That needs a rule in the prompt, not better retrieval.
  • Motor kapsamı düzeltmiyor. Cursor koşusunun iki kolunda da beklenen dosya hassasiyeti 0,73 ve T07'de altı dosya beklenirken ikisi de yirmi bir dosyaya dokundu. Bunun için daha iyi getirme değil, prompt'ta bir kural gerekiyor.
  • The confidence label is weakly predictive. The engine's two best tasks were labelled low; its worst was labelled high. Confidence measures how much the anchors agree, not whether they are sufficient for the task. The trust report earlier on this page should be read with that caveat.
  • Güven etiketi zayıf öngörücü. Motorun en iyi iki görevi low etiketliydi; en kötüsü high. Güven, çıpaların ne kadar hemfikir olduğunu ölçer; görev için yeterli olup olmadıklarını değil. Bu sayfanın başındaki güven raporu bu kayıtla okunmalı.
  • Retrieval costs time. End to end the engine roughly doubles query latency — 0.73 to 1.71 seconds on the hosted model, 1.32 to 2.42 on the self-hosted one, of which about 0.85 seconds is the engine itself.
  • Getirme zamana mal oluyor. Uçtan uca motor sorgu gecikmesini kabaca ikiye katlıyor — barındırılan modelde 0,73'ten 1,71 saniyeye, kendi sunucumuzdakinde 1,32'den 2,42'ye; bunun yaklaşık 0,85 saniyesi motorun kendisi.
  • No pull request in the Claude run was compiled or tested. In all ten runs the agent had no shell, so tsc, lint, test and build were skipped in favour of static review. "Quality is equal" there rests on diff volume and file structure, not on running code. The Cursor run did compile — which is how T09's failure was caught.
  • Claude koşusunda hiçbir PR derlenmedi veya test edilmedi. On koşunun onunda da ajanın kabuğu yoktu; tsc, lint, test ve build yerine statik inceleme yapıldı. Oradaki "kalite eşit" ifadesi çalışan koda değil, diff hacmine ve dosya yapısına dayanıyor. Cursor koşusu derledi — T09'un hatası bu sayede yakalandı.
  • One earlier comparison was withdrawn. It showed the engine 7% worse on tokens. The cause was two machines routing to different model backends with different prompt-cache behaviour — 3.9k against 7.1k uncached input per turn — not the engine. On a single machine the difference vanished. It is recorded here because a benchmark that publishes only the run that worked is not a benchmark.
  • Daha önceki bir karşılaştırma geri çekildi. Motoru tokende %7 geride gösteriyordu. Sebep, iki makinenin farklı model arka uçlarına yönlenmesi ve farklı prompt-cache davranışıydı — tur başına 3,9k'ya karşı 7,1k cache'siz girdi — motor değil. Tek makinede fark ortadan kalktı. Burada kayıtlı, çünkü yalnızca işe yarayan koşuyu yayımlayan bir ölçüm, ölçüm değildir.

These are BGTS's own runs, published with their weaknesses attached because that is the only kind of retrieval number worth reading. The engine ships bce bench and bce bench-prs so you can run the equivalent on your own repositories, your own pull requests and your own tasks. Bunlar BGTS'nin kendi koşuları ve zayıflıklarıyla birlikte yayımlanıyor; çünkü okumaya değer tek getirme sayısı bu türdendir. Motor bce bench ve bce bench-prs ile birlikte gelir — aynısını kendi depolarınızda, kendi pull request'lerinizde ve kendi görevlerinizde koşabilirsiniz.

OPEN SOURCE

Open source by design.

The engine is published so people can run it. Everything on this page — the weights, the thresholds, the hop limits, the fourteen tools — is in the repository, and the benchmark harness ships so you can measure it on your own repositories instead of taking a number on trust.

Motor, insanların çalıştırabilmesi için yayımlanır. Bu sayfadaki her şey — ağırlıklar, eşikler, hop sınırları, on dört araç — depoda mevcuttur; ölçüm aracı da birlikte gelir, böylece bir sayıya güvenmek yerine kendi depolarınızda ölçebilirsiniz.

  • MIT © BGTS
  • v0.2.0
  • Python ≥ 3.11
  • PostgreSQL 16
  • Runs offline
BGTS Context Engine social preview: the project name over a code graph whose anchor symbol is highlighted, with the line MCP, REST, PostgreSQL, Apache AGE, pgvector.
og:image The card the repository hands to GitHub, PyPI and every link unfurl. The palette on this page is sampled from it — accent #06609c, band #04142b, instrument cyan #22c9fb, anchor gold #fec835. Deponun GitHub'a, PyPI'ye ve her bağlantı önizlemesine verdiği kart. Bu sayfadaki palet bu görselden örneklendi — aksan #06609c, bant #04142b, enstrüman camgöbeği #22c9fb, çapa altını #fec835.

Run it in five commands

1 · DATABASEVERİTABANI
docker compose -f deploy/docker-compose.yml up -d
2 · INSTALL & MIGRATEKUR VE MİGRE ET
pip install bgts-context-engine
cp .env.example .env
bce migrate
3 · INDEX SOMETHINGBİR ŞEY İNDEKSLE
bce index --repo /path/to/your/repo --name my-service
4 · ASKSOR
bce context --task "fix the login timeout in the meeting webhook"
5 · SERVE ITSERVİS ET
bce serve        # REST at :8000/docs, web UI at :8000/ui/
bce serve-mcp    # MCP over stdio, for agents

Measuring it, honestly

Retrieval-quality claims are worthless without the task set they were measured on, so the harness ships instead of a leaderboard. You give it your own tasks and the symbols you believe answer them; it reports recall, precision, precision@1, MRR and latency — plus the two pass/fail checks that matter more than the scores.

Getirme kalitesi iddiaları, hangi görev kümesinde ölçüldüğü bilinmeden değersizdir; bu yüzden bir skor tablosu değil, ölçüm aracının kendisi gelir. Kendi görevlerinizi ve onları yanıtladığına inandığınız sembolleri verirsiniz; recall, precision, precision@1, MRR ve gecikme raporlanır — ayrıca skorlardan daha önemli iki geç/kal kontrolü.

Roadmap

Ordered by how often it comes up, not by difficulty.Zorluğa göre değil, ne sıklıkta gündeme geldiğine göre sıralı.

  1. Scope enforcement on every layerHer katmanda kapsam denetimi Layer 3 applies the per-user repository filter; Layers 1 and 2 do not. Kullanıcı bazlı depo filtresini Layer 3 uygular, Layer 1 ve 2 uygulamaz.
  2. Streamable HTTP transport for MCPMCP için streamable HTTP taşıması Remote transport makes one index serve a team. Uzak taşıma, tek bir indeksin tüm ekibe hizmet etmesini sağlar.
  3. More languagesDaha fazla dil Rust, Kotlin and PHP are the most requested. En çok istenenler Rust, Kotlin ve PHP.
  4. Wider SCIP ingestionDaha geniş SCIP alımı Compiler-grade edges beat syntax-derived ones and are scored as such. Derleyici seviyesindeki kenarlar sözdiziminden türetilenleri yener ve öyle skorlanır.
  5. A published benchmark corpusYayımlanmış bir ölçüm kümesi An open task set over public repositories, so results are comparable between projects. Açık depolar üzerinde açık bir görev kümesi; sonuçlar projeler arasında karşılaştırılabilir olur.

Contributing

New languages are the contribution the pipeline is most ready for — a provider module and a one-line registration. Anything touching scoring or ordering needs a test that pins the output.

Hattın en hazır olduğu katkı yeni dillerdir — bir sağlayıcı modülü ve tek satırlık bir kayıt. Skorlamaya veya sıralamaya dokunan her şey, çıktıyı sabitleyen bir test gerektirir.

Topics

The repository's own topics — the vocabulary this project is filed under. Deponun kendi konu etiketleri — bu projenin altında yer aldığı sözlük.

    BGTS

    Bring repository context closer to your engineering workflow.

    The engine is published so anyone can run it. Organisations that want the same thing inside their own perimeter — help with indexing, deployment, scoring tuned to their repositories, or the agent stack around it — can engage BGTS.

    Motor, herkesin çalıştırabilmesi için yayımlanır. Aynı şeyi kendi çevrelerinde isteyen kurumlar — indeksleme, kurulum, depolarına göre ayarlanmış skorlama veya etrafındaki ajan yığını konusunda yardım — BGTS ile iletişime geçebilir.

    What an engagement usually covers

    • Indexing and deployment inside your own perimeter, on your own PostgreSQL.Kendi çevrenizde, kendi PostgreSQL'iniz üzerinde indeksleme ve kurulum.
    • Scoring weights tuned to how your repositories are actually written.Depolarınızın gerçekte nasıl yazıldığına göre ayarlanmış skorlama ağırlıkları.
    • The agent stack around it — which tools your agents call, and when.Etrafındaki ajan yığını — ajanlarınızın hangi araçları, ne zaman çağıracağı.
    • A benchmark case file built from your own tasks, so a scoring change can be judged.Kendi görevlerinizden oluşturulmuş bir ölçüm dosyası; böylece skorlama değişikliği değerlendirilebilir.
    PROJECT opensource-ai@bgts.com The maintainers, directlyDoğrudan proje ekibi
    GENERAL info@bgts.com Reply within 24 hours24 saat içinde yanıt
    PHONE +90 444 3330 Weekdays 09:00 – 18:00Hafta içi 09:00 – 18:00
    OFFICES İstanbul · Ankara İTÜ ARI Teknokent · Bilkent Cyberpark
    opensource-ai@bgts.com direct to the teamdoğrudan ekibe

    Tell us what you would index first. We will come back with what it would take.Önce neyi indekslemek istediğinizi yazın. Bunun ne gerektireceğini size dönelim.

    Please enter your name.
    Please enter a valid email address.
    Please write a short message.
    Consent is required to send the form.

    Sent directly — nothing is stored by this page. Doğrudan gönderilir — bu sayfa hiçbir şey saklamaz.

    Message sent

    Thanks — your message reached opensource-ai@bgts.com. We will get back to you at the email address you provided.

    Teşekkürler — mesajınız opensource-ai@bgts.com adresine ulaştı. Belirttiğiniz e-posta adresinden size dönüş yapacağız.