Code Graphs & Embeddings pada Small Coding Agents (arXiv:2610.33958): Eksperimen 79k Episode SWE-bench, Gradien Hop Depth, dan Batasan Representasi Leksikal Satu-Langkah
Analisis empiris 79k episode SWE-bench Verified (arXiv:2610.33958, Saurav Bellam): Apakah tool knowledge graph dan embedding search benar-benar melengkapi pemahaman struktural coding agent kecil? Menyingkap degradasi hop gradient (odds ratio 0.50–0.67 per hop), anomali tool uptake pada model 32B, dan bukti linear probing bahwa representasi kode internal agen open-weight masih dominan bersifat leksikal satu-langkah.

Dalam lanskap rekayasa software berbasis autonomous AI, penyediaan perkakas struktural seperti code knowledge graph (AST call graphs, class hierarchies) dan dense vector embeddings sering kali dianggap sebagai solusi mutlak untuk mengatasi keterbatasan kapasitas model bahasa. Asumsi industrinya sederhana: model berbobot kecil (small open-weight models) kekurangan representasi repositori secara intrinsik, sehingga penambahan tool struktural akan menutup jurang performa terhadap model penalaran frontier.
Executive Architectural Summary
Sebuah studi empiris berskala masif oleh Saurav Bellam (arXiv:2610.33958), "How Do Small Coding Agents Use Code Graphs and Embeddings?", menguji premis tersebut melalui 79.000 episode eksekusi pada SWE-bench Verified mencakup 10 model open-weight (seri Qwen3 dari 0.6B hingga 32B, Gemma 4, dan kontrol FP8). Hasilnya membongkar kenyataan mengejutkan: perkakas grafik melipatgandakan akurasi lokalisasi pada model 1.7B–4B (+17 hingga +21 poin), namun manfaatnya anjlok hingga hanya 4–5 poin pada 32B. Lebih jauh lagi, setiap pertambahan jarak keterhubungan (hop depth) memangkas probabilitas lokalisasi tepat sebesar 0.50–0.67 tanpa ada tool set yang mampu meratakan gradien kegagalan tersebut.
1. Taksonomi Hop Depth: Mengukur Jarak Kausal dari Issue ke Patch
Kelemahan mendasar dari evaluasi coding agent konvensional adalah memperlakukan seluruh tiket bug (issue) secara setara. Faktanya, beberapa issue secara eksplisit menyebutkan nama fungsi atau file yang rusak, sementara issue lainnya mendeskripsikan kegagalan perilaku di lapisan antarmuka yang akar masalahnya tertanam jauh di dalam dependensi internal dependensi library.
Studi ini mengadopsi metrik deterministic hop depth—jarak terpendek dalam graf kode (code graph) dari simbol kode yang disebutkan dalam teks issue menuju target kode yang dimodifikasi oleh gold patch:
Direct Mention
Nama file, kelas, atau fungsi yang harus diperbaiki disebutkan secara verbatim dalam issue description atau traceback error.
Direct Neighbors
Kode target berjarak satu panggilan fungsi (caller/callee), relasi import langsung, atau inheritance subclass dari entitas di issue.
Transitive Dependency
Akar masalah tersembunyi di balik dua lompatan rantai panggilan atau lebih dari modul yang dilaporkan crash oleh pengguna.
2. Hasil Ablasi Tool: Anomali Kurva Skala & Ilusi Akurasi
Para peneliti menguji empat konfigurasi toolset lokalisasi agen:
grep only(ripgrep leksikal murni berbasis regex/string exact matching)+embedding search(dense vector retrieval menggunakan code embedding model terpisah)+graph tools(AST symbol resolver, caller/callee traversal, module inheritance tree)all(kombinasi seluruh modalitas pencarian di atas)
| Model & Parameter | Grep Only (%) | + Embedding (%) | + Graph Tools (%) | All Tools (%) | Net Delta (All vs Grep) |
|---|---|---|---|---|---|
| Qwen3-1.7B | 14.2% | 22.8% | 31.5% | 33.4% | +19.2% |
| Qwen3-4B | 21.8% | 30.1% | 40.4% | 42.9% | +21.1% (Peak) |
| Gemma 4 E4B | 19.5% | 28.0% | 37.2% | 39.8% | +20.3% |
| Qwen3-8B | 32.6% | 41.2% | 48.9% | 51.1% | +18.5% |
| Qwen3-14B | 44.1% | 49.7% | 54.2% | 55.8% | +11.7% |
| Qwen3-32B | 56.4% | 58.9% | 60.1% | 61.0% | +4.6% (Decay) |
Dua Temuan Kritis yang Mengubah Pemahaman Arsitektur:
- Degradasi Odds Ratio per Pelipatgandaan Parameter (OR 0.77–0.82): Peningkatan performa dari structured tools memuncak pada model kelas 1.7B–4B dan tererosi secara matematis seiring membesarnya ukuran model. Pada ukuran 32B, penambahan tool grafis hanya memberikan delta keuntungan marginal sebesar 4.6 poin persentase.
- Ilusi Format Penyerahan (Submission Artifact Confounding): Mulai dari model kelas 8B ke atas, sekitar 50% dari delta kenaikan akurasi tersebut ternyata bukan berasal dari keberhasilan menemukan target kode yang lebih presisi, melainkan semata-mata karena output format agen menjadi lebih terstruktur dan patuh pada format submission SWE-bench ketika tool grafis aktif di lingkungan percakapan.
3. Mengapa Model 32B Tidak Memanfaatkan Graf Kode? "Tool Uptake Fall"
Intuisi awal mungkin menduga bahwa model 32B telah memiliki pemahaman arsitektur internal yang begitu matang sehingga tidak lagi membutuhkan graf kode eksternal. Namun, analisis log jejak eksekusi (trajectory traces) membuktikan hipotesis yang sama sekali berbeda:
Penurunan manfaat dari 14B ke 32B merupakan akibat langsung dari anjloknya tingkat adopsi tool (tool uptake collapse). Model 32B memiliki probabilitas pemanggilan tool struktural yang jauh lebih rendah ketika grep sederhana mengembalikan hasil apa pun. Agen 32B cenderung berspekulasi secara prematur berdasarkan daftar kecocokan string pertama tanpa memverifikasi dependensi modul relasional di graf AST.
4. Bukti Representasi Internal: Linear Probing vs Baseline Leksikal
Untuk membuktikan apakah bobot (weights) representasi transformer internal benar-benar mengabstraksikan graf panggilan repositori, peneliti menyusun protokol linear probe terstratifikasi derajat koneksi (within-anchor, degree-stratified protocol) pada layer tersembunyi (hidden states) model:
Linear Probe: Direct 1-Hop Call Edge
Tereduksi menjadi AUC 0.61–0.66 ketika dievaluasi di tengah-tengah multi-turn dialogue context agen yang padat.
Linear Probe: 2-Hop Call Edge
Mendekati tebakan acak murni (chance level 0.50). Hidden states sama sekali tidak mempertahankan topologi keterhubungan multi-hop.
Kesimpulan tak terbantahkan dari eksperimen probing ini: coding agent kelas kecil mengemban gambaran repositori yang bersifat satu-langkah (one-hop) dan didominasi oleh fitur leksikal tekstual, baik di dalam bobot parametrik internalnya maupun dalam pola pemanggilan tool eksternalnya.
5. Rekayasa Solusi: Arsitektur Code Graph Orchestrator TypeScript Berstandar Produksi
Berdasarkan temuan makalah ini, mengizinkan agen kecil menavigasi graf kode tanpa panduan ketat akan memboroskan konteks pada loop dangkal. Berikut adalah arsitektur runtime orchestrator yang menerapkan forced multi-step chaining, mitigasi degradasi hop, dan fallback leksikal otomatis:
// Production Implementation: Structural Code Graph & Localization Orchestrator
// Implements Hop-Aware Multi-Step Expansion, Lexical Fallback, and Tool Uptake Monitoring
export type SearchModality = 'lexical_grep' | 'dense_embedding' | 'ast_graph';
export interface GraphNode {
id: string;
name: string;
kind: 'function' | 'class' | 'method' | 'module';
filePath: string;
startLine: number;
endLine: number;
outEdges: Array<{ targetId: string; type: 'calls' | 'imports' | 'inherits' }>;
}
export interface LocalizationCandidate {
nodeId: string;
filePath: string;
score: number;
hopDistance: number;
resolvedBy: SearchModality;
}
export interface LocalizationEpisodeStats {
issueId: string;
modelIdentifier: string;
totalToolInvocations: number;
modalityCounts: Record;
maxChainedExpansions: number;
reachedHopDepth: number;
submissionFormatValid: boolean;
}
export class CodeGraphLocalizationEngine {
private nodeRegistry = new Map();
private fileInvertedIndex = new Map();
constructor(
private readonly maxAllowedHops: number = 3,
private readonly hopPenaltyFactor: number = 0.58 // Median odds ratio dari arXiv:2610.33958
) {}
public registerASTNode(node: GraphNode): void {
this.nodeRegistry.set(node.id, node);
const tokens = this.tokenizeLexical(node.name);
for (const token of tokens) {
if (!this.fileInvertedIndex.has(token)) {
this.fileInvertedIndex.set(token, new Set());
}
this.fileInvertedIndex.get(token)!.add(node.id);
}
}
// Multi-step graph expansion dengan tracking kedalaman hop & degradasi probabilitas
public expandGraphNeighborhood(
seedNodeId: string,
currentDepth: number,
visitedNodes: Set
): LocalizationCandidate[] {
if (currentDepth >= this.maxAllowedHops || visitedNodes.has(seedNodeId)) {
return [];
}
visitedNodes.add(seedNodeId);
const seed = this.nodeRegistry.get(seedNodeId);
if (!seed) return [];
const results: LocalizationCandidate[] = [];
const stepPenalty = Math.pow(this.hopPenaltyFactor, currentDepth);
for (const edge of seed.outEdges) {
const target = this.nodeRegistry.get(edge.targetId);
if (!target || visitedNodes.has(target.id)) continue;
results.push({
nodeId: target.id,
filePath: target.filePath,
score: 1.0 * stepPenalty,
hopDistance: currentDepth + 1,
resolvedBy: 'ast_graph',
});
// Rekursi untuk multi-hop chaining (hanya 12-14% agen open-weight yang berhasil melakukannya)
if (currentDepth + 1 < this.maxAllowedHops) {
const nextLevel = this.expandGraphNeighborhood(target.id, currentDepth + 1, visitedNodes);
results.push(...nextLevel);
}
}
return results;
}
// Lexical search fallback (Grep Baseline)
public executeLexicalGrep(queryToken: string): LocalizationCandidate[] {
const matchedNodeIds = this.fileInvertedIndex.get(queryToken.toLowerCase());
if (!matchedNodeIds) return [];
const candidates: LocalizationCandidate[] = [];
for (const id of matchedNodeIds) {
const node = this.nodeRegistry.get(id);
if (node) {
candidates.push({
nodeId: node.id,
filePath: node.filePath,
score: 0.95, // Tinggi pada Hop 0
hopDistance: 0,
resolvedBy: 'lexical_grep',
});
}
}
return candidates;
}
// Verifikasi apakah kandidat lolos ke submission form yang valid
public validateSubmissionStructure(patchTargets: string[]): boolean {
if (!patchTargets || patchTargets.length === 0) return false;
return patchTargets.every(target => target.includes('/') && target.endsWith('.py'));
}
private tokenizeLexical(identifier: string): string[] {
return identifier
.replace(/([a-z])([A-Z])/g, '$1 $2')
.toLowerCase()
.split(/[^a-z0-9]+/)
.filter(t => t.length > 2);
}
}
6. Implikasi Rekayasa Sistem: Panduan Mendesain Agentic Coding Harness
Bagi arsitek sistem yang membangun autonomous coding tools, studi ini menghadirkan rekomendasi desain yang sangat definitif:
1. Optimalkan untuk Hop 0 & Hop 1 Terlebih Dahulu
Jangan membebani agen kecil dengan skema kueri grafis yang rumit (seperti kueri Cypher mentah). Utamakan tool primitif yang sangat cepat untuk exact symbol resolution dan ekspansi 1-hop terdekat (callees dan caller sites langsung).
2. Paksa Chained Expansion Melalui Deterministic Harness
Karena agen hanya melakukan multi-hop chaining pada 12–14% kesempatan, runtime harness harus secara otomatis menyertakan konteks keterhubungan 2-hop ke dalam respons tool grafis awal alih-alih mengandalkan model untuk melakukan eksplorasi mandiri secara iteratif.
3. Pertahankan Ripgrep Leksikal Sebagai Fondasi Utama
Grep leksikal bukanlah teknologi usang; ia adalah jangkar dengan keandalan tertinggi (AUC 0.99) untuk menemukan titik masuk awal sebelum eksplorasi topologi graf dilakukan.
Ringkasan Metrik Empiris Kunci (arXiv:2610.33958):
- Dataset: 79k episode eksekusi pada SWE-bench Verified (500 tasks total & 160 depth-balanced split).
- Akurasi Puncak: Model 4B melonjak +21.1% saat dilengkapi graf & embedding.
- Degradasi Skala: Model 32B hanya menikmati delta keuntungan +4.6% akibat anjloknya tool uptake.
- Hop Decay: Setiap lompatan grafis mereduksi probabilitas lokalisasi dengan faktor perkalian 0.50–0.67.
Referensi & Sumber Terverifikasi
- [1]How Do Small Coding Agents Use Code Graphs and Embeddings?(arXiv.org / Software Engineering & AI (arXiv:2610.33958))
- [2]SWE-bench: Can Language Models Resolve Real-World GitHub Issues?(Princeton University & Open-Source Research)
- [3]AST-GNN & Code Knowledge Representation in Software Engineering Agents(IEEE Transactions on Software Engineering / ACM SIGSOFT)
- [4]How Do Small Coding Agents Use Code Graphs and Embeddings?(arXiv.org / Software Engineering & AI (arXiv:2610.33958))
- [5]SWE-bench: Can Language Models Resolve Real-World GitHub Issues?(Princeton University & Open-Source Research)
- [6]AST-GNN & Code Knowledge Representation in Software Engineering Agents(IEEE Transactions on Software Engineering / ACM SIGSOFT)
Butuh Arsitektur Web & AI Berkualitas Tinggi?
Tim engineering NEWSAINT siap membantu merancang website berkecepatan tinggi, sistem AI autonomous, dan solusi SaaS terukur untuk bisnis Anda.
Artikel Terkait Lainnya

DecisionRAG (arXiv:2610.35868): Retriever-Free Retrieval via Decision Models — Eliminasi Capability Asymmetry, Hierarchical Tree Navigation, dan Rekor +17.4% Hit@1 Tanpa Indeks Vektor
Analisis arsitektur DecisionRAG (arXiv:2610.35868, Chao Wan, Paul Jünger, Beixi Du, Bodong Liu, Navaneetha Krishnan, Kilian Q. Weinberger — Cornell University & ASAPP): Mengapa retrieval konvensional (BM25, dense embeddings) menciptakan capability asymmetry terhadap LLM generator modern, dan bagaimana DecisionRAG menavigasi struktur korpus bertingkat menggunakan model keputusan (decision models) dalam konteks bersama (shared context) tanpa token generasi, menghasilkan lompatan +13.8 R@1 di MultiDoc2Dial, +17.4 Hit@1 di Natural Questions, dan latensi secepat 0.68 detik.

DynaFlow (arXiv:2610.34467): Free-Form Multi-Agent Orchestration — Sintesis Alur Kerja Eksekutabel, Eliminasi Defek Aliran Informasi, dan Lonjakan Akurasi 88.08% Tanpa Mengubah Bobot Sub-Agent
Analisis arsitektur DynaFlow (arXiv:2610.34467, Ruhao Liu et al., NUS): Mengapa topologi multi-agent statis memicu overhead komunikasi berlebihan, dan bagaimana integrasi sintesis alur kerja bebas ke dalam ruang aksi Main Agent — dikombinasikan dengan Two-Stage SFT dan kurasi 3 defek orkestrasi — menghasilkan akurasi 88.08% serta memecahkan 100% soal AIME dengan sub-agent berbobot beku.

Heartbeat Thinking (arXiv:2610.26233): Speculative Reasoning & Asynchronous Tool Execution Saat Mendengarkan pada Realtime Voice Agents — Reduksi Latensi 36.4% dan Peluncuran Tool Pre-Speech End
Analisis arsitektur Heartbeat Thinking (arXiv:2610.26233, Zhenyu Zhang et al.): Mengapa voice agents konvensional terjebak dalam latensi respons canggung setelah pengguna selesai berbicara, dan bagaimana decoupling komputasi spekulatif periodik (Thinker) dari generasi respons final (Responder) mampu menginisiasi pemanggilan tool 4.37 detik sebelum ucapan berakhir serta memangkas latensi akhir hingga 36.4%.