code-context-engine 0.4.17__tar.gz → 0.4.19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/PKG-INFO +47 -11
- code_context_engine-0.4.17/src/code_context_engine.egg-info/PKG-INFO → code_context_engine-0.4.19/README.md +43 -57
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/pyproject.toml +33 -3
- code_context_engine-0.4.17/README.md → code_context_engine-0.4.19/src/code_context_engine.egg-info/PKG-INFO +93 -8
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/SOURCES.txt +1 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/requires.txt +1 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/cli.py +52 -35
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/editors.py +13 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/event_bus.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/embedder.py +5 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/embedding_cache.py +2 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/git_hooks.py +7 -3
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/pipeline.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/integration/bootstrap.py +1 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/integration/mcp_server.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/compressor.py +70 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/db.py +6 -4
- code_context_engine-0.4.19/src/context_engine/memory/decision_extractor.py +91 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/hooks.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/backend.py +1 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/fts_store.py +2 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/graph_store.py +4 -3
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/remote_backend.py +1 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/vector_store.py +9 -7
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/utils.py +20 -10
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_savings_e2e.py +1 -2
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_smoke.py +2 -2
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_uninstall.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_config.py +0 -3
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_e2e.py +1 -2
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_event_bus.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_project_commands.py +0 -3
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_real_life.py +0 -4
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_services.py +0 -2
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_token_efficiency.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_token_packing.py +0 -1
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/LICENSE +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/setup.cfg +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/dependency_links.txt +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/entry_points.txt +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/code_context_engine.egg-info/top_level.txt +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/cli_style.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/compression/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/compression/compressor.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/compression/ollama_client.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/compression/output_rules.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/compression/prompts.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/compression/quality.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/config.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/dashboard/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/dashboard/_page.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/dashboard/server.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/chunker.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/git_indexer.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/ignorefile.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/manifest.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/secrets.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/indexer/watcher.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/integration/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/integration/git_context.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/integration/session_capture.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/extractive.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/grammar.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/hook_installer.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/hook_server.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/memory/migrate.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/models.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/pricing.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/project_commands.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/retrieval/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/retrieval/confidence.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/retrieval/query_parser.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/retrieval/retriever.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/serve_http.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/services.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/__init__.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/src/context_engine/storage/local_backend.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_init_probe.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_mcp_config.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_safe_cwd.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_savings.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_savings_buckets.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_serve.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_sessions_export.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_cli_sessions_status.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_editors_codex.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_editors_opencode.py +0 -0
- {code_context_engine-0.4.17 → code_context_engine-0.4.19}/tests/test_models.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-engine
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: Index your codebase
|
|
3
|
+
Version: 0.4.19
|
|
4
|
+
Summary: Save 94% on Claude Code tokens. Index your codebase locally, AI agents search instead of reading files. Reduce Claude API costs, save tokens on Cursor, VS Code, Gemini CLI. Free, open source MCP server.
|
|
5
5
|
Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/elara-labs/code-context-engine
|
|
8
8
|
Project-URL: Repository, https://github.com/elara-labs/code-context-engine
|
|
9
9
|
Project-URL: Issues, https://github.com/elara-labs/code-context-engine/issues
|
|
10
|
-
Keywords: claude,
|
|
10
|
+
Keywords: claude-code,save-tokens,token-savings,mcp-server,claude,cursor,code-indexing,reduce-ai-costs,llm,vector-search,ai-coding
|
|
11
11
|
Classifier: Development Status :: 4 - Beta
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -44,6 +44,7 @@ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
|
44
44
|
Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
|
|
45
45
|
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
46
46
|
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
47
|
+
Requires-Dist: ruff>=0.13; extra == "dev"
|
|
47
48
|
Provides-Extra: http
|
|
48
49
|
Dynamic: license-file
|
|
49
50
|
|
|
@@ -57,6 +58,10 @@ Dynamic: license-file
|
|
|
57
58
|
<strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
|
|
58
59
|
</p>
|
|
59
60
|
|
|
61
|
+
<p align="center">
|
|
62
|
+
<a href="https://elara-labs.github.io/code-context-engine/">Website</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html">Guide</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html">Benchmark</a> · <a href="https://github.com/elara-labs/code-context-engine">GitHub</a>
|
|
63
|
+
</p>
|
|
64
|
+
|
|
60
65
|
<br>
|
|
61
66
|
|
|
62
67
|
<p align="center">
|
|
@@ -80,7 +85,8 @@ Dynamic: license-file
|
|
|
80
85
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>
|
|
81
86
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI"></a>
|
|
82
87
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>
|
|
83
|
-
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a
|
|
88
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
|
|
89
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
|
|
84
90
|
</p>
|
|
85
91
|
|
|
86
92
|
<p align="center">
|
|
@@ -154,6 +160,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
|
|
|
154
160
|
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
|
|
155
161
|
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
|
|
156
162
|
| OpenCode | `opencode.json` | |
|
|
163
|
+
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
|
|
157
164
|
|
|
158
165
|
Multiple editors in the same project? All get configured in one command.
|
|
159
166
|
|
|
@@ -196,7 +203,9 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
196
203
|
|
|
197
204
|
We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.
|
|
198
205
|
|
|
199
|
-
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression.
|
|
206
|
+
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression.
|
|
207
|
+
|
|
208
|
+
**Important baseline note:** The 94% number is measured against full-file reads, not against what Claude Code actually does. In practice, Claude Code already uses grep, partial file reads, and targeted tools, so the real-world savings compared to normal Claude Code behavior will be lower than 94%. We use full-file as the baseline because it's reproducible and deterministic (no agent behavior variability). The benchmark measures CCE's retrieval efficiency, not a head-to-head comparison with Claude Code's built-in exploration.
|
|
200
209
|
|
|
201
210
|
| Metric | Result |
|
|
202
211
|
|--------|--------|
|
|
@@ -216,14 +225,25 @@ We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 sou
|
|
|
216
225
|
|
|
217
226
|
Output compression (reducing Claude's reply length) provides additional savings (~65% estimated) but is not included in the headline number above.
|
|
218
227
|
|
|
228
|
+
### Multi-language benchmarks
|
|
229
|
+
|
|
230
|
+
| Repo | Language | Files | Retrieval savings | Recall@10 |
|
|
231
|
+
|------|----------|-------|-------------------|-----------|
|
|
232
|
+
| [FastAPI](benchmarks/results/fastapi.md) | Python | 53 | **94%** | 0.90 |
|
|
233
|
+
| [chi](benchmarks/results/chi.md) | Go | 94 | **76%** | 0.67 |
|
|
234
|
+
| [fiber](benchmarks/results/fiber.md) | Go (monorepo) | 396 | **93%** | 0.07 |
|
|
235
|
+
|
|
236
|
+
Go's shorter files reduce the retrieval headroom (smaller baseline). Monorepos dilute recall at top-10 (fiber). Middleware queries with one-feature-per-file hit R=1.00 consistently.
|
|
237
|
+
|
|
219
238
|
**Reproduce it yourself:**
|
|
220
239
|
|
|
221
240
|
```bash
|
|
222
241
|
pip install code-context-engine
|
|
223
242
|
python benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapi
|
|
243
|
+
python benchmarks/run_benchmark.py --repo https://github.com/go-chi/chi.git --source-dir .
|
|
224
244
|
```
|
|
225
245
|
|
|
226
|
-
Full results in [`benchmarks/results
|
|
246
|
+
Full results in [`benchmarks/results/`](benchmarks/results/). Queries and methodology in [`benchmarks/`](benchmarks/).
|
|
227
247
|
|
|
228
248
|
---
|
|
229
249
|
|
|
@@ -415,7 +435,7 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
415
435
|
|
|
416
436
|
## Supported Languages
|
|
417
437
|
|
|
418
|
-
**AST-aware chunking (10 extensions):**
|
|
438
|
+
**AST-aware chunking (tree-sitter parsed, 10 extensions):**
|
|
419
439
|
|
|
420
440
|
| Language | Extensions |
|
|
421
441
|
|----------|-----------|
|
|
@@ -427,7 +447,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
427
447
|
| Rust | `.rs` |
|
|
428
448
|
| Java | `.java` |
|
|
429
449
|
|
|
430
|
-
**
|
|
450
|
+
**Language-aware fallback chunking (40+ extensions):**
|
|
451
|
+
|
|
452
|
+
| Category | Languages |
|
|
453
|
+
|----------|-----------|
|
|
454
|
+
| Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
|
|
455
|
+
| Systems | C, C++, C#, Zig, Nim |
|
|
456
|
+
| Mobile | Swift, Kotlin, Dart |
|
|
457
|
+
| Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
|
|
458
|
+
| Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
|
|
459
|
+
| Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
|
|
460
|
+
| DevOps | Terraform, HCL, Dockerfile |
|
|
461
|
+
| Docs | Markdown |
|
|
462
|
+
|
|
463
|
+
All other text files are chunked by line range. Binary files are skipped.
|
|
431
464
|
|
|
432
465
|
---
|
|
433
466
|
|
|
@@ -435,18 +468,21 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
435
468
|
|
|
436
469
|
| Page | Content |
|
|
437
470
|
|------|---------|
|
|
471
|
+
| [What is CCE? (Complete Guide)](https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html) | Setup, tools, how it works, FAQ |
|
|
472
|
+
| [How to Save Claude Code Tokens](https://elara-labs.github.io/code-context-engine/blog/save-claude-code-tokens.html) | Cost breakdown and savings guide |
|
|
473
|
+
| [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
|
|
474
|
+
| [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
|
|
438
475
|
| [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
|
|
439
476
|
| [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
|
|
440
477
|
| [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
|
|
441
478
|
| [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
|
|
442
|
-
| [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
|
|
443
|
-
| [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
|
|
444
479
|
|
|
445
480
|
---
|
|
446
481
|
|
|
447
482
|
## Roadmap
|
|
448
483
|
|
|
449
|
-
- [
|
|
484
|
+
- [x] Multi-repo benchmarks (FastAPI, chi, fiber)
|
|
485
|
+
- [ ] More benchmarks (Django, Express)
|
|
450
486
|
- [ ] Tree-sitter support for C, C++, Ruby, Swift, Kotlin
|
|
451
487
|
- [ ] Docker support for remote mode
|
|
452
488
|
|
|
@@ -1,52 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: code-context-engine
|
|
3
|
-
Version: 0.4.17
|
|
4
|
-
Summary: Index your codebase. AI searches instead of re-reading files. 94% token savings, benchmarked on FastAPI. Works with Claude Code, Cursor, VS Code, Gemini CLI, Codex, and OpenCode.
|
|
5
|
-
Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/elara-labs/code-context-engine
|
|
8
|
-
Project-URL: Repository, https://github.com/elara-labs/code-context-engine
|
|
9
|
-
Project-URL: Issues, https://github.com/elara-labs/code-context-engine/issues
|
|
10
|
-
Keywords: claude,context,mcp,llm,code-indexing,vector-search
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
18
|
-
Requires-Python: >=3.11
|
|
19
|
-
Description-Content-Type: text/markdown
|
|
20
|
-
License-File: LICENSE
|
|
21
|
-
Requires-Dist: click>=8.1
|
|
22
|
-
Requires-Dist: pyyaml>=6.0
|
|
23
|
-
Requires-Dist: sqlite-vec>=0.1.6
|
|
24
|
-
Requires-Dist: fastembed>=0.4
|
|
25
|
-
Requires-Dist: numpy>=1.24
|
|
26
|
-
Requires-Dist: tree-sitter>=0.22
|
|
27
|
-
Requires-Dist: tree-sitter-python>=0.21
|
|
28
|
-
Requires-Dist: tree-sitter-javascript>=0.21
|
|
29
|
-
Requires-Dist: tree-sitter-typescript>=0.21
|
|
30
|
-
Requires-Dist: tree-sitter-php>=0.23
|
|
31
|
-
Requires-Dist: tree-sitter-go>=0.23
|
|
32
|
-
Requires-Dist: tree-sitter-rust>=0.23
|
|
33
|
-
Requires-Dist: tree-sitter-java>=0.23
|
|
34
|
-
Requires-Dist: watchdog>=4.0
|
|
35
|
-
Requires-Dist: mcp>=1.0
|
|
36
|
-
Requires-Dist: httpx>=0.27
|
|
37
|
-
Requires-Dist: fastapi>=0.110
|
|
38
|
-
Requires-Dist: uvicorn>=0.29
|
|
39
|
-
Requires-Dist: aiohttp>=3.9
|
|
40
|
-
Requires-Dist: psutil>=5.9
|
|
41
|
-
Provides-Extra: dev
|
|
42
|
-
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
43
|
-
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
44
|
-
Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
|
|
45
|
-
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
46
|
-
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
47
|
-
Provides-Extra: http
|
|
48
|
-
Dynamic: license-file
|
|
49
|
-
|
|
50
1
|
<p align="center">
|
|
51
2
|
<img src="https://raw.githubusercontent.com/elara-labs/code-context-engine/main/docs/logo.svg" alt="Code Context Engine" width="140">
|
|
52
3
|
</p>
|
|
@@ -57,6 +8,10 @@ Dynamic: license-file
|
|
|
57
8
|
<strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
|
|
58
9
|
</p>
|
|
59
10
|
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://elara-labs.github.io/code-context-engine/">Website</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html">Guide</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html">Benchmark</a> · <a href="https://github.com/elara-labs/code-context-engine">GitHub</a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
60
15
|
<br>
|
|
61
16
|
|
|
62
17
|
<p align="center">
|
|
@@ -80,7 +35,8 @@ Dynamic: license-file
|
|
|
80
35
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>
|
|
81
36
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI"></a>
|
|
82
37
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>
|
|
83
|
-
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a
|
|
38
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
|
|
39
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
|
|
84
40
|
</p>
|
|
85
41
|
|
|
86
42
|
<p align="center">
|
|
@@ -154,6 +110,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
|
|
|
154
110
|
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
|
|
155
111
|
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
|
|
156
112
|
| OpenCode | `opencode.json` | |
|
|
113
|
+
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
|
|
157
114
|
|
|
158
115
|
Multiple editors in the same project? All get configured in one command.
|
|
159
116
|
|
|
@@ -196,7 +153,9 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
196
153
|
|
|
197
154
|
We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.
|
|
198
155
|
|
|
199
|
-
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression.
|
|
156
|
+
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression.
|
|
157
|
+
|
|
158
|
+
**Important baseline note:** The 94% number is measured against full-file reads, not against what Claude Code actually does. In practice, Claude Code already uses grep, partial file reads, and targeted tools, so the real-world savings compared to normal Claude Code behavior will be lower than 94%. We use full-file as the baseline because it's reproducible and deterministic (no agent behavior variability). The benchmark measures CCE's retrieval efficiency, not a head-to-head comparison with Claude Code's built-in exploration.
|
|
200
159
|
|
|
201
160
|
| Metric | Result |
|
|
202
161
|
|--------|--------|
|
|
@@ -216,14 +175,25 @@ We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 sou
|
|
|
216
175
|
|
|
217
176
|
Output compression (reducing Claude's reply length) provides additional savings (~65% estimated) but is not included in the headline number above.
|
|
218
177
|
|
|
178
|
+
### Multi-language benchmarks
|
|
179
|
+
|
|
180
|
+
| Repo | Language | Files | Retrieval savings | Recall@10 |
|
|
181
|
+
|------|----------|-------|-------------------|-----------|
|
|
182
|
+
| [FastAPI](benchmarks/results/fastapi.md) | Python | 53 | **94%** | 0.90 |
|
|
183
|
+
| [chi](benchmarks/results/chi.md) | Go | 94 | **76%** | 0.67 |
|
|
184
|
+
| [fiber](benchmarks/results/fiber.md) | Go (monorepo) | 396 | **93%** | 0.07 |
|
|
185
|
+
|
|
186
|
+
Go's shorter files reduce the retrieval headroom (smaller baseline). Monorepos dilute recall at top-10 (fiber). Middleware queries with one-feature-per-file hit R=1.00 consistently.
|
|
187
|
+
|
|
219
188
|
**Reproduce it yourself:**
|
|
220
189
|
|
|
221
190
|
```bash
|
|
222
191
|
pip install code-context-engine
|
|
223
192
|
python benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapi
|
|
193
|
+
python benchmarks/run_benchmark.py --repo https://github.com/go-chi/chi.git --source-dir .
|
|
224
194
|
```
|
|
225
195
|
|
|
226
|
-
Full results in [`benchmarks/results
|
|
196
|
+
Full results in [`benchmarks/results/`](benchmarks/results/). Queries and methodology in [`benchmarks/`](benchmarks/).
|
|
227
197
|
|
|
228
198
|
---
|
|
229
199
|
|
|
@@ -415,7 +385,7 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
415
385
|
|
|
416
386
|
## Supported Languages
|
|
417
387
|
|
|
418
|
-
**AST-aware chunking (10 extensions):**
|
|
388
|
+
**AST-aware chunking (tree-sitter parsed, 10 extensions):**
|
|
419
389
|
|
|
420
390
|
| Language | Extensions |
|
|
421
391
|
|----------|-----------|
|
|
@@ -427,7 +397,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
427
397
|
| Rust | `.rs` |
|
|
428
398
|
| Java | `.java` |
|
|
429
399
|
|
|
430
|
-
**
|
|
400
|
+
**Language-aware fallback chunking (40+ extensions):**
|
|
401
|
+
|
|
402
|
+
| Category | Languages |
|
|
403
|
+
|----------|-----------|
|
|
404
|
+
| Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
|
|
405
|
+
| Systems | C, C++, C#, Zig, Nim |
|
|
406
|
+
| Mobile | Swift, Kotlin, Dart |
|
|
407
|
+
| Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
|
|
408
|
+
| Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
|
|
409
|
+
| Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
|
|
410
|
+
| DevOps | Terraform, HCL, Dockerfile |
|
|
411
|
+
| Docs | Markdown |
|
|
412
|
+
|
|
413
|
+
All other text files are chunked by line range. Binary files are skipped.
|
|
431
414
|
|
|
432
415
|
---
|
|
433
416
|
|
|
@@ -435,18 +418,21 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
435
418
|
|
|
436
419
|
| Page | Content |
|
|
437
420
|
|------|---------|
|
|
421
|
+
| [What is CCE? (Complete Guide)](https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html) | Setup, tools, how it works, FAQ |
|
|
422
|
+
| [How to Save Claude Code Tokens](https://elara-labs.github.io/code-context-engine/blog/save-claude-code-tokens.html) | Cost breakdown and savings guide |
|
|
423
|
+
| [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
|
|
424
|
+
| [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
|
|
438
425
|
| [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
|
|
439
426
|
| [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
|
|
440
427
|
| [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
|
|
441
428
|
| [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
|
|
442
|
-
| [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
|
|
443
|
-
| [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
|
|
444
429
|
|
|
445
430
|
---
|
|
446
431
|
|
|
447
432
|
## Roadmap
|
|
448
433
|
|
|
449
|
-
- [
|
|
434
|
+
- [x] Multi-repo benchmarks (FastAPI, chi, fiber)
|
|
435
|
+
- [ ] More benchmarks (Django, Express)
|
|
450
436
|
- [ ] Tree-sitter support for C, C++, Ruby, Swift, Kotlin
|
|
451
437
|
- [ ] Docker support for remote mode
|
|
452
438
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "code-context-engine"
|
|
3
|
-
version = "0.4.
|
|
4
|
-
description = "Index your codebase
|
|
3
|
+
version = "0.4.19"
|
|
4
|
+
description = "Save 94% on Claude Code tokens. Index your codebase locally, AI agents search instead of reading files. Reduce Claude API costs, save tokens on Cursor, VS Code, Gemini CLI. Free, open source MCP server."
|
|
5
5
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
6
6
|
license = "MIT"
|
|
7
7
|
authors = [
|
|
8
8
|
{name = "Fazle Elahee", email = "felahee@gmail.com"},
|
|
9
9
|
{name = "Raj", email = "rajkumar.sakti@gmail.com"},
|
|
10
10
|
]
|
|
11
|
-
keywords = ["claude", "
|
|
11
|
+
keywords = ["claude-code", "save-tokens", "token-savings", "mcp-server", "claude", "cursor", "code-indexing", "reduce-ai-costs", "llm", "vector-search", "ai-coding"]
|
|
12
12
|
classifiers = [
|
|
13
13
|
"Development Status :: 4 - Beta",
|
|
14
14
|
"Intended Audience :: Developers",
|
|
@@ -57,6 +57,7 @@ dev = [
|
|
|
57
57
|
"pytest-aiohttp>=1.0",
|
|
58
58
|
"pytest-cov>=5.0",
|
|
59
59
|
"pytest-xdist>=3.5",
|
|
60
|
+
"ruff>=0.13",
|
|
60
61
|
]
|
|
61
62
|
http = [] # back-compat: aiohttp is now a core dependency
|
|
62
63
|
|
|
@@ -94,4 +95,33 @@ dev = [
|
|
|
94
95
|
"pytest-asyncio>=1.3.0",
|
|
95
96
|
"pytest-aiohttp>=1.0",
|
|
96
97
|
"pytest-xdist>=3.5",
|
|
98
|
+
"ruff>=0.13",
|
|
97
99
|
]
|
|
100
|
+
|
|
101
|
+
[tool.ruff]
|
|
102
|
+
line-length = 100
|
|
103
|
+
target-version = "py311"
|
|
104
|
+
extend-exclude = ["dist", "build", ".venv"]
|
|
105
|
+
|
|
106
|
+
[tool.ruff.lint]
|
|
107
|
+
# Default ruleset — pycodestyle errors (E) + pyflakes (F). Conservative
|
|
108
|
+
# starting point; can be expanded later (I/imports, B/bugbear, UP/pyupgrade)
|
|
109
|
+
# once the team is comfortable with the baseline. Selected rules are the
|
|
110
|
+
# ones that catch real bugs (unused imports, undefined names, redefined
|
|
111
|
+
# symbols) rather than stylistic preferences.
|
|
112
|
+
select = ["E", "F", "W"]
|
|
113
|
+
# E501 (line-too-long) is enforced via `line-length` above; default is 88
|
|
114
|
+
# but we use 100 to match the existing codebase. Ignore a few rules that
|
|
115
|
+
# are noisy in async/test code:
|
|
116
|
+
ignore = [
|
|
117
|
+
"E501", # line-too-long: handled by formatter, not all old code wrapped
|
|
118
|
+
"E402", # module-import-not-at-top: legitimate inside conditional imports
|
|
119
|
+
"E741", # ambiguous-variable-name (l/I/O): one-off in third-party-style code
|
|
120
|
+
]
|
|
121
|
+
|
|
122
|
+
[tool.ruff.lint.per-file-ignores]
|
|
123
|
+
# Tests import fixtures and helpers that look unused but trigger collection.
|
|
124
|
+
"tests/**" = ["F811"]
|
|
125
|
+
# __init__.py files are allowed to re-export (those imports look unused but
|
|
126
|
+
# are part of the public surface of the package).
|
|
127
|
+
"**/__init__.py" = ["F401"]
|
|
@@ -1,3 +1,53 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: code-context-engine
|
|
3
|
+
Version: 0.4.19
|
|
4
|
+
Summary: Save 94% on Claude Code tokens. Index your codebase locally, AI agents search instead of reading files. Reduce Claude API costs, save tokens on Cursor, VS Code, Gemini CLI. Free, open source MCP server.
|
|
5
|
+
Author-email: Fazle Elahee <felahee@gmail.com>, Raj <rajkumar.sakti@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/elara-labs/code-context-engine
|
|
8
|
+
Project-URL: Repository, https://github.com/elara-labs/code-context-engine
|
|
9
|
+
Project-URL: Issues, https://github.com/elara-labs/code-context-engine/issues
|
|
10
|
+
Keywords: claude-code,save-tokens,token-savings,mcp-server,claude,cursor,code-indexing,reduce-ai-costs,llm,vector-search,ai-coding
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: click>=8.1
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Requires-Dist: sqlite-vec>=0.1.6
|
|
24
|
+
Requires-Dist: fastembed>=0.4
|
|
25
|
+
Requires-Dist: numpy>=1.24
|
|
26
|
+
Requires-Dist: tree-sitter>=0.22
|
|
27
|
+
Requires-Dist: tree-sitter-python>=0.21
|
|
28
|
+
Requires-Dist: tree-sitter-javascript>=0.21
|
|
29
|
+
Requires-Dist: tree-sitter-typescript>=0.21
|
|
30
|
+
Requires-Dist: tree-sitter-php>=0.23
|
|
31
|
+
Requires-Dist: tree-sitter-go>=0.23
|
|
32
|
+
Requires-Dist: tree-sitter-rust>=0.23
|
|
33
|
+
Requires-Dist: tree-sitter-java>=0.23
|
|
34
|
+
Requires-Dist: watchdog>=4.0
|
|
35
|
+
Requires-Dist: mcp>=1.0
|
|
36
|
+
Requires-Dist: httpx>=0.27
|
|
37
|
+
Requires-Dist: fastapi>=0.110
|
|
38
|
+
Requires-Dist: uvicorn>=0.29
|
|
39
|
+
Requires-Dist: aiohttp>=3.9
|
|
40
|
+
Requires-Dist: psutil>=5.9
|
|
41
|
+
Provides-Extra: dev
|
|
42
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
43
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
44
|
+
Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
46
|
+
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
47
|
+
Requires-Dist: ruff>=0.13; extra == "dev"
|
|
48
|
+
Provides-Extra: http
|
|
49
|
+
Dynamic: license-file
|
|
50
|
+
|
|
1
51
|
<p align="center">
|
|
2
52
|
<img src="https://raw.githubusercontent.com/elara-labs/code-context-engine/main/docs/logo.svg" alt="Code Context Engine" width="140">
|
|
3
53
|
</p>
|
|
@@ -8,6 +58,10 @@
|
|
|
8
58
|
<strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
|
|
9
59
|
</p>
|
|
10
60
|
|
|
61
|
+
<p align="center">
|
|
62
|
+
<a href="https://elara-labs.github.io/code-context-engine/">Website</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html">Guide</a> · <a href="https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html">Benchmark</a> · <a href="https://github.com/elara-labs/code-context-engine">GitHub</a>
|
|
63
|
+
</p>
|
|
64
|
+
|
|
11
65
|
<br>
|
|
12
66
|
|
|
13
67
|
<p align="center">
|
|
@@ -31,7 +85,8 @@
|
|
|
31
85
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Cursor-000?style=for-the-badge" alt="Cursor"></a>
|
|
32
86
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI"></a>
|
|
33
87
|
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Codex_CLI-412991?style=for-the-badge" alt="Codex CLI"></a>
|
|
34
|
-
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a
|
|
88
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/OpenCode-22C55E?style=for-the-badge&logo=gnometerminal&logoColor=white" alt="OpenCode"></a>
|
|
89
|
+
<a href="#install-and-see-savings-in-60-seconds"><img src="https://img.shields.io/badge/Tabnine-4B32C3?style=for-the-badge&logo=tabnine&logoColor=white" alt="Tabnine"></a>
|
|
35
90
|
</p>
|
|
36
91
|
|
|
37
92
|
<p align="center">
|
|
@@ -105,6 +160,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
|
|
|
105
160
|
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
|
|
106
161
|
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
|
|
107
162
|
| OpenCode | `opencode.json` | |
|
|
163
|
+
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
|
|
108
164
|
|
|
109
165
|
Multiple editors in the same project? All get configured in one command.
|
|
110
166
|
|
|
@@ -147,7 +203,9 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
147
203
|
|
|
148
204
|
We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.
|
|
149
205
|
|
|
150
|
-
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression.
|
|
206
|
+
**Methodology:** For each query, "without CCE" means reading the full content of every file the query touches. "With CCE" means the relevant chunks after compression.
|
|
207
|
+
|
|
208
|
+
**Important baseline note:** The 94% number is measured against full-file reads, not against what Claude Code actually does. In practice, Claude Code already uses grep, partial file reads, and targeted tools, so the real-world savings compared to normal Claude Code behavior will be lower than 94%. We use full-file as the baseline because it's reproducible and deterministic (no agent behavior variability). The benchmark measures CCE's retrieval efficiency, not a head-to-head comparison with Claude Code's built-in exploration.
|
|
151
209
|
|
|
152
210
|
| Metric | Result |
|
|
153
211
|
|--------|--------|
|
|
@@ -167,14 +225,25 @@ We benchmarked CCE against [FastAPI](https://github.com/fastapi/fastapi) (53 sou
|
|
|
167
225
|
|
|
168
226
|
Output compression (reducing Claude's reply length) provides additional savings (~65% estimated) but is not included in the headline number above.
|
|
169
227
|
|
|
228
|
+
### Multi-language benchmarks
|
|
229
|
+
|
|
230
|
+
| Repo | Language | Files | Retrieval savings | Recall@10 |
|
|
231
|
+
|------|----------|-------|-------------------|-----------|
|
|
232
|
+
| [FastAPI](benchmarks/results/fastapi.md) | Python | 53 | **94%** | 0.90 |
|
|
233
|
+
| [chi](benchmarks/results/chi.md) | Go | 94 | **76%** | 0.67 |
|
|
234
|
+
| [fiber](benchmarks/results/fiber.md) | Go (monorepo) | 396 | **93%** | 0.07 |
|
|
235
|
+
|
|
236
|
+
Go's shorter files reduce the retrieval headroom (smaller baseline). Monorepos dilute recall at top-10 (fiber). Middleware queries with one-feature-per-file hit R=1.00 consistently.
|
|
237
|
+
|
|
170
238
|
**Reproduce it yourself:**
|
|
171
239
|
|
|
172
240
|
```bash
|
|
173
241
|
pip install code-context-engine
|
|
174
242
|
python benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapi
|
|
243
|
+
python benchmarks/run_benchmark.py --repo https://github.com/go-chi/chi.git --source-dir .
|
|
175
244
|
```
|
|
176
245
|
|
|
177
|
-
Full results in [`benchmarks/results
|
|
246
|
+
Full results in [`benchmarks/results/`](benchmarks/results/). Queries and methodology in [`benchmarks/`](benchmarks/).
|
|
178
247
|
|
|
179
248
|
---
|
|
180
249
|
|
|
@@ -366,7 +435,7 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
366
435
|
|
|
367
436
|
## Supported Languages
|
|
368
437
|
|
|
369
|
-
**AST-aware chunking (10 extensions):**
|
|
438
|
+
**AST-aware chunking (tree-sitter parsed, 10 extensions):**
|
|
370
439
|
|
|
371
440
|
| Language | Extensions |
|
|
372
441
|
|----------|-----------|
|
|
@@ -378,7 +447,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
378
447
|
| Rust | `.rs` |
|
|
379
448
|
| Java | `.java` |
|
|
380
449
|
|
|
381
|
-
**
|
|
450
|
+
**Language-aware fallback chunking (40+ extensions):**
|
|
451
|
+
|
|
452
|
+
| Category | Languages |
|
|
453
|
+
|----------|-----------|
|
|
454
|
+
| Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
|
|
455
|
+
| Systems | C, C++, C#, Zig, Nim |
|
|
456
|
+
| Mobile | Swift, Kotlin, Dart |
|
|
457
|
+
| Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
|
|
458
|
+
| Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
|
|
459
|
+
| Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
|
|
460
|
+
| DevOps | Terraform, HCL, Dockerfile |
|
|
461
|
+
| Docs | Markdown |
|
|
462
|
+
|
|
463
|
+
All other text files are chunked by line range. Binary files are skipped.
|
|
382
464
|
|
|
383
465
|
---
|
|
384
466
|
|
|
@@ -386,18 +468,21 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
386
468
|
|
|
387
469
|
| Page | Content |
|
|
388
470
|
|------|---------|
|
|
471
|
+
| [What is CCE? (Complete Guide)](https://elara-labs.github.io/code-context-engine/blog/what-is-code-context-engine.html) | Setup, tools, how it works, FAQ |
|
|
472
|
+
| [How to Save Claude Code Tokens](https://elara-labs.github.io/code-context-engine/blog/save-claude-code-tokens.html) | Cost breakdown and savings guide |
|
|
473
|
+
| [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
|
|
474
|
+
| [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
|
|
389
475
|
| [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
|
|
390
476
|
| [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
|
|
391
477
|
| [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
|
|
392
478
|
| [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
|
|
393
|
-
| [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
|
|
394
|
-
| [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
|
|
395
479
|
|
|
396
480
|
---
|
|
397
481
|
|
|
398
482
|
## Roadmap
|
|
399
483
|
|
|
400
|
-
- [
|
|
484
|
+
- [x] Multi-repo benchmarks (FastAPI, chi, fiber)
|
|
485
|
+
- [ ] More benchmarks (Django, Express)
|
|
401
486
|
- [ ] Tree-sitter support for C, C++, Ruby, Swift, Kotlin
|
|
402
487
|
- [ ] Docker support for remote mode
|
|
403
488
|
|
|
@@ -47,6 +47,7 @@ src/context_engine/integration/session_capture.py
|
|
|
47
47
|
src/context_engine/memory/__init__.py
|
|
48
48
|
src/context_engine/memory/compressor.py
|
|
49
49
|
src/context_engine/memory/db.py
|
|
50
|
+
src/context_engine/memory/decision_extractor.py
|
|
50
51
|
src/context_engine/memory/extractive.py
|
|
51
52
|
src/context_engine/memory/grammar.py
|
|
52
53
|
src/context_engine/memory/hook_installer.py
|