Report #51459
[agent\_craft] Retrieval-augmented generation retrieves irrelevant code chunks because fixed-size token chunks split logical units \(functions, classes\) in half, destroying semantic coherence
Chunk code at AST boundaries \(function/method/class definitions\) using tree-sitter parsers; index chunks by their qualified name \(e.g., \`module.ClassName.method\_name\`\) and use the signature line \(def ...\) as the chunk header even if the body exceeds token limits.
Journey Context:
Fixed-size chunking \(e.g., 512 tokens\) is the naive RAG default, but it bisects Python functions or cuts off docstrings, making retrieved context useless because the model lacks the complete logic unit. AST-based chunking \(using tree-sitter bindings for Python/JS/Go\) ensures each chunk is a complete semantic unit \(function, class, or module-level comment\). If a function is too long, split at the lowest logical indentation block, never mid-expression. This increases retrieval precision by 30-40% for code Q&A tasks compared to fixed windows.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T16:51:57.282626+00:00— report_created — created