code-context-engine 0.4.18__tar.gz → 0.4.20__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.18 → code_context_engine-0.4.20}/PKG-INFO +45 -13
- code_context_engine-0.4.18/src/code_context_engine.egg-info/PKG-INFO → code_context_engine-0.4.20/README.md +39 -58
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/pyproject.toml +38 -4
- code_context_engine-0.4.18/README.md → code_context_engine-0.4.20/src/code_context_engine.egg-info/PKG-INFO +90 -9
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/SOURCES.txt +1 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/requires.txt +4 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/cli.py +143 -50
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/config.py +7 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/editors.py +13 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/event_bus.py +0 -1
- code_context_engine-0.4.20/src/context_engine/indexer/embedder.py +539 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/embedding_cache.py +2 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/git_hooks.py +23 -5
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/manifest.py +27 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/pipeline.py +45 -4
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/watcher.py +35 -4
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/bootstrap.py +1 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/mcp_server.py +62 -16
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/compressor.py +70 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/db.py +6 -4
- code_context_engine-0.4.20/src/context_engine/memory/decision_extractor.py +91 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/hook_installer.py +35 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/hook_server.py +25 -9
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/hooks.py +0 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/project_commands.py +6 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/backend.py +1 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/fts_store.py +2 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/graph_store.py +4 -3
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/remote_backend.py +1 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/vector_store.py +9 -7
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/utils.py +20 -10
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_savings_e2e.py +1 -2
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_smoke.py +2 -2
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_uninstall.py +0 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_config.py +0 -3
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_e2e.py +1 -2
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_event_bus.py +0 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_project_commands.py +15 -3
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_real_life.py +0 -4
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_services.py +0 -2
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_token_efficiency.py +0 -1
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_token_packing.py +0 -1
- code_context_engine-0.4.18/src/context_engine/indexer/embedder.py +0 -158
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/LICENSE +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/setup.cfg +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/dependency_links.txt +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/entry_points.txt +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/code_context_engine.egg-info/top_level.txt +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/cli_style.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/compressor.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/ollama_client.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/output_rules.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/prompts.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/compression/quality.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/dashboard/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/dashboard/_page.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/dashboard/server.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/chunker.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/git_indexer.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/ignorefile.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/indexer/secrets.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/git_context.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/integration/session_capture.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/extractive.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/grammar.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/memory/migrate.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/models.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/pricing.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/confidence.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/query_parser.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/retrieval/retriever.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/serve_http.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/services.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/__init__.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/src/context_engine/storage/local_backend.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_init_probe.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_mcp_config.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_safe_cwd.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_savings.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_savings_buckets.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_serve.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_sessions_export.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_cli_sessions_status.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_editors_codex.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/tests/test_editors_opencode.py +0 -0
- {code_context_engine-0.4.18 → code_context_engine-0.4.20}/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.20
|
|
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
|
|
@@ -21,7 +21,6 @@ License-File: LICENSE
|
|
|
21
21
|
Requires-Dist: click>=8.1
|
|
22
22
|
Requires-Dist: pyyaml>=6.0
|
|
23
23
|
Requires-Dist: sqlite-vec>=0.1.6
|
|
24
|
-
Requires-Dist: fastembed>=0.4
|
|
25
24
|
Requires-Dist: numpy>=1.24
|
|
26
25
|
Requires-Dist: tree-sitter>=0.22
|
|
27
26
|
Requires-Dist: tree-sitter-python>=0.21
|
|
@@ -44,7 +43,10 @@ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
|
44
43
|
Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
|
|
45
44
|
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
46
45
|
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
46
|
+
Requires-Dist: ruff>=0.13; extra == "dev"
|
|
47
47
|
Provides-Extra: http
|
|
48
|
+
Provides-Extra: local
|
|
49
|
+
Requires-Dist: fastembed>=0.4; extra == "local"
|
|
48
50
|
Dynamic: license-file
|
|
49
51
|
|
|
50
52
|
<p align="center">
|
|
@@ -57,6 +59,10 @@ Dynamic: license-file
|
|
|
57
59
|
<strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
|
|
58
60
|
</p>
|
|
59
61
|
|
|
62
|
+
<p align="center">
|
|
63
|
+
<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>
|
|
64
|
+
</p>
|
|
65
|
+
|
|
60
66
|
<br>
|
|
61
67
|
|
|
62
68
|
<p align="center">
|
|
@@ -80,7 +86,8 @@ Dynamic: license-file
|
|
|
80
86
|
<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
87
|
<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
88
|
<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
|
|
89
|
+
<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>
|
|
90
|
+
<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
91
|
</p>
|
|
85
92
|
|
|
86
93
|
<p align="center">
|
|
@@ -142,6 +149,12 @@ cd /path/to/your/project
|
|
|
142
149
|
cce init # index, install hooks, register MCP server
|
|
143
150
|
```
|
|
144
151
|
|
|
152
|
+
**Embedding backends:** CCE auto-detects the best available backend. If you have Ollama running, it uses `nomic-embed-text` with zero extra dependencies. For offline/local embedding without Ollama, install the `[local]` extra:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
uv tool install "code-context-engine[local]" # includes fastembed + ONNX Runtime
|
|
156
|
+
```
|
|
157
|
+
|
|
145
158
|
Restart your editor. Done. Every question now hits the index instead of re-reading files.
|
|
146
159
|
|
|
147
160
|
`cce init` auto-detects your editor and writes the right config:
|
|
@@ -154,6 +167,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
|
|
|
154
167
|
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
|
|
155
168
|
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
|
|
156
169
|
| OpenCode | `opencode.json` | |
|
|
170
|
+
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
|
|
157
171
|
|
|
158
172
|
Multiple editors in the same project? All get configured in one command.
|
|
159
173
|
|
|
@@ -196,7 +210,9 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
196
210
|
|
|
197
211
|
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
212
|
|
|
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.
|
|
213
|
+
**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.
|
|
214
|
+
|
|
215
|
+
**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
216
|
|
|
201
217
|
| Metric | Result |
|
|
202
218
|
|--------|--------|
|
|
@@ -416,17 +432,18 @@ Tell Claude: "switch to max compression" or "turn off compression". Code blocks
|
|
|
416
432
|
|
|
417
433
|
| Component | Size |
|
|
418
434
|
|-----------|------|
|
|
419
|
-
|
|
|
420
|
-
|
|
|
435
|
+
| Core install (Ollama backend) | ~17 MB |
|
|
436
|
+
| With `[local]` extra (fastembed + ONNX) | ~189 MB |
|
|
437
|
+
| Embedding model (one-time download) | ~60 MB (fastembed) or managed by Ollama |
|
|
421
438
|
| Index per project (small/medium/large) | 5-60 MB |
|
|
422
439
|
|
|
423
|
-
No GPU required.
|
|
440
|
+
No GPU required. With Ollama, embeddings are handled by the Ollama server. With the `[local]` extra, the embedding model runs on CPU via ONNX Runtime.
|
|
424
441
|
|
|
425
442
|
---
|
|
426
443
|
|
|
427
444
|
## Supported Languages
|
|
428
445
|
|
|
429
|
-
**AST-aware chunking (10 extensions):**
|
|
446
|
+
**AST-aware chunking (tree-sitter parsed, 10 extensions):**
|
|
430
447
|
|
|
431
448
|
| Language | Extensions |
|
|
432
449
|
|----------|-----------|
|
|
@@ -438,7 +455,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
438
455
|
| Rust | `.rs` |
|
|
439
456
|
| Java | `.java` |
|
|
440
457
|
|
|
441
|
-
**
|
|
458
|
+
**Language-aware fallback chunking (40+ extensions):**
|
|
459
|
+
|
|
460
|
+
| Category | Languages |
|
|
461
|
+
|----------|-----------|
|
|
462
|
+
| Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
|
|
463
|
+
| Systems | C, C++, C#, Zig, Nim |
|
|
464
|
+
| Mobile | Swift, Kotlin, Dart |
|
|
465
|
+
| Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
|
|
466
|
+
| Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
|
|
467
|
+
| Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
|
|
468
|
+
| DevOps | Terraform, HCL, Dockerfile |
|
|
469
|
+
| Docs | Markdown |
|
|
470
|
+
|
|
471
|
+
All other text files are chunked by line range. Binary files are skipped.
|
|
442
472
|
|
|
443
473
|
---
|
|
444
474
|
|
|
@@ -446,12 +476,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
446
476
|
|
|
447
477
|
| Page | Content |
|
|
448
478
|
|------|---------|
|
|
479
|
+
| [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 |
|
|
480
|
+
| [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 |
|
|
481
|
+
| [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
|
|
482
|
+
| [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
|
|
449
483
|
| [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
|
|
450
484
|
| [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
|
|
451
485
|
| [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
|
|
452
486
|
| [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
|
|
453
|
-
| [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
|
|
454
|
-
| [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
|
|
455
487
|
|
|
456
488
|
---
|
|
457
489
|
|
|
@@ -1,52 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: code-context-engine
|
|
3
|
-
Version: 0.4.18
|
|
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">
|
|
@@ -142,6 +98,12 @@ cd /path/to/your/project
|
|
|
142
98
|
cce init # index, install hooks, register MCP server
|
|
143
99
|
```
|
|
144
100
|
|
|
101
|
+
**Embedding backends:** CCE auto-detects the best available backend. If you have Ollama running, it uses `nomic-embed-text` with zero extra dependencies. For offline/local embedding without Ollama, install the `[local]` extra:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
uv tool install "code-context-engine[local]" # includes fastembed + ONNX Runtime
|
|
105
|
+
```
|
|
106
|
+
|
|
145
107
|
Restart your editor. Done. Every question now hits the index instead of re-reading files.
|
|
146
108
|
|
|
147
109
|
`cce init` auto-detects your editor and writes the right config:
|
|
@@ -154,6 +116,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
|
|
|
154
116
|
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
|
|
155
117
|
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
|
|
156
118
|
| OpenCode | `opencode.json` | |
|
|
119
|
+
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
|
|
157
120
|
|
|
158
121
|
Multiple editors in the same project? All get configured in one command.
|
|
159
122
|
|
|
@@ -196,7 +159,9 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
196
159
|
|
|
197
160
|
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
161
|
|
|
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.
|
|
162
|
+
**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.
|
|
163
|
+
|
|
164
|
+
**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
165
|
|
|
201
166
|
| Metric | Result |
|
|
202
167
|
|--------|--------|
|
|
@@ -416,17 +381,18 @@ Tell Claude: "switch to max compression" or "turn off compression". Code blocks
|
|
|
416
381
|
|
|
417
382
|
| Component | Size |
|
|
418
383
|
|-----------|------|
|
|
419
|
-
|
|
|
420
|
-
|
|
|
384
|
+
| Core install (Ollama backend) | ~17 MB |
|
|
385
|
+
| With `[local]` extra (fastembed + ONNX) | ~189 MB |
|
|
386
|
+
| Embedding model (one-time download) | ~60 MB (fastembed) or managed by Ollama |
|
|
421
387
|
| Index per project (small/medium/large) | 5-60 MB |
|
|
422
388
|
|
|
423
|
-
No GPU required.
|
|
389
|
+
No GPU required. With Ollama, embeddings are handled by the Ollama server. With the `[local]` extra, the embedding model runs on CPU via ONNX Runtime.
|
|
424
390
|
|
|
425
391
|
---
|
|
426
392
|
|
|
427
393
|
## Supported Languages
|
|
428
394
|
|
|
429
|
-
**AST-aware chunking (10 extensions):**
|
|
395
|
+
**AST-aware chunking (tree-sitter parsed, 10 extensions):**
|
|
430
396
|
|
|
431
397
|
| Language | Extensions |
|
|
432
398
|
|----------|-----------|
|
|
@@ -438,7 +404,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
438
404
|
| Rust | `.rs` |
|
|
439
405
|
| Java | `.java` |
|
|
440
406
|
|
|
441
|
-
**
|
|
407
|
+
**Language-aware fallback chunking (40+ extensions):**
|
|
408
|
+
|
|
409
|
+
| Category | Languages |
|
|
410
|
+
|----------|-----------|
|
|
411
|
+
| Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
|
|
412
|
+
| Systems | C, C++, C#, Zig, Nim |
|
|
413
|
+
| Mobile | Swift, Kotlin, Dart |
|
|
414
|
+
| Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
|
|
415
|
+
| Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
|
|
416
|
+
| Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
|
|
417
|
+
| DevOps | Terraform, HCL, Dockerfile |
|
|
418
|
+
| Docs | Markdown |
|
|
419
|
+
|
|
420
|
+
All other text files are chunked by line range. Binary files are skipped.
|
|
442
421
|
|
|
443
422
|
---
|
|
444
423
|
|
|
@@ -446,12 +425,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
446
425
|
|
|
447
426
|
| Page | Content |
|
|
448
427
|
|------|---------|
|
|
428
|
+
| [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 |
|
|
429
|
+
| [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 |
|
|
430
|
+
| [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
|
|
431
|
+
| [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
|
|
449
432
|
| [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
|
|
450
433
|
| [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
|
|
451
434
|
| [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
|
|
452
435
|
| [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
|
|
453
|
-
| [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
|
|
454
|
-
| [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
|
|
455
436
|
|
|
456
437
|
---
|
|
457
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.20"
|
|
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",
|
|
@@ -23,7 +23,6 @@ dependencies = [
|
|
|
23
23
|
"click>=8.1",
|
|
24
24
|
"pyyaml>=6.0",
|
|
25
25
|
"sqlite-vec>=0.1.6",
|
|
26
|
-
"fastembed>=0.4",
|
|
27
26
|
"numpy>=1.24",
|
|
28
27
|
"tree-sitter>=0.22",
|
|
29
28
|
"tree-sitter-python>=0.21",
|
|
@@ -57,8 +56,14 @@ dev = [
|
|
|
57
56
|
"pytest-aiohttp>=1.0",
|
|
58
57
|
"pytest-cov>=5.0",
|
|
59
58
|
"pytest-xdist>=3.5",
|
|
59
|
+
"ruff>=0.13",
|
|
60
60
|
]
|
|
61
61
|
http = [] # back-compat: aiohttp is now a core dependency
|
|
62
|
+
# Local on-device embedding via fastembed (ONNX). ~172 MB install
|
|
63
|
+
# footprint; needed only if you don't have Ollama running. Without
|
|
64
|
+
# this extra, CCE auto-detects Ollama at localhost:11434 and uses
|
|
65
|
+
# nomic-embed-text via /api/embed.
|
|
66
|
+
local = ["fastembed>=0.4"]
|
|
62
67
|
|
|
63
68
|
[project.scripts]
|
|
64
69
|
cce = "context_engine.cli:main"
|
|
@@ -94,4 +99,33 @@ dev = [
|
|
|
94
99
|
"pytest-asyncio>=1.3.0",
|
|
95
100
|
"pytest-aiohttp>=1.0",
|
|
96
101
|
"pytest-xdist>=3.5",
|
|
102
|
+
"ruff>=0.13",
|
|
97
103
|
]
|
|
104
|
+
|
|
105
|
+
[tool.ruff]
|
|
106
|
+
line-length = 100
|
|
107
|
+
target-version = "py311"
|
|
108
|
+
extend-exclude = ["dist", "build", ".venv"]
|
|
109
|
+
|
|
110
|
+
[tool.ruff.lint]
|
|
111
|
+
# Default ruleset — pycodestyle errors (E) + pyflakes (F). Conservative
|
|
112
|
+
# starting point; can be expanded later (I/imports, B/bugbear, UP/pyupgrade)
|
|
113
|
+
# once the team is comfortable with the baseline. Selected rules are the
|
|
114
|
+
# ones that catch real bugs (unused imports, undefined names, redefined
|
|
115
|
+
# symbols) rather than stylistic preferences.
|
|
116
|
+
select = ["E", "F", "W"]
|
|
117
|
+
# E501 (line-too-long) is enforced via `line-length` above; default is 88
|
|
118
|
+
# but we use 100 to match the existing codebase. Ignore a few rules that
|
|
119
|
+
# are noisy in async/test code:
|
|
120
|
+
ignore = [
|
|
121
|
+
"E501", # line-too-long: handled by formatter, not all old code wrapped
|
|
122
|
+
"E402", # module-import-not-at-top: legitimate inside conditional imports
|
|
123
|
+
"E741", # ambiguous-variable-name (l/I/O): one-off in third-party-style code
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
[tool.ruff.lint.per-file-ignores]
|
|
127
|
+
# Tests import fixtures and helpers that look unused but trigger collection.
|
|
128
|
+
"tests/**" = ["F811"]
|
|
129
|
+
# __init__.py files are allowed to re-export (those imports look unused but
|
|
130
|
+
# are part of the public surface of the package).
|
|
131
|
+
"**/__init__.py" = ["F401"]
|
|
@@ -1,3 +1,54 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: code-context-engine
|
|
3
|
+
Version: 0.4.20
|
|
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: numpy>=1.24
|
|
25
|
+
Requires-Dist: tree-sitter>=0.22
|
|
26
|
+
Requires-Dist: tree-sitter-python>=0.21
|
|
27
|
+
Requires-Dist: tree-sitter-javascript>=0.21
|
|
28
|
+
Requires-Dist: tree-sitter-typescript>=0.21
|
|
29
|
+
Requires-Dist: tree-sitter-php>=0.23
|
|
30
|
+
Requires-Dist: tree-sitter-go>=0.23
|
|
31
|
+
Requires-Dist: tree-sitter-rust>=0.23
|
|
32
|
+
Requires-Dist: tree-sitter-java>=0.23
|
|
33
|
+
Requires-Dist: watchdog>=4.0
|
|
34
|
+
Requires-Dist: mcp>=1.0
|
|
35
|
+
Requires-Dist: httpx>=0.27
|
|
36
|
+
Requires-Dist: fastapi>=0.110
|
|
37
|
+
Requires-Dist: uvicorn>=0.29
|
|
38
|
+
Requires-Dist: aiohttp>=3.9
|
|
39
|
+
Requires-Dist: psutil>=5.9
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
43
|
+
Requires-Dist: pytest-aiohttp>=1.0; extra == "dev"
|
|
44
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
46
|
+
Requires-Dist: ruff>=0.13; extra == "dev"
|
|
47
|
+
Provides-Extra: http
|
|
48
|
+
Provides-Extra: local
|
|
49
|
+
Requires-Dist: fastembed>=0.4; extra == "local"
|
|
50
|
+
Dynamic: license-file
|
|
51
|
+
|
|
1
52
|
<p align="center">
|
|
2
53
|
<img src="https://raw.githubusercontent.com/elara-labs/code-context-engine/main/docs/logo.svg" alt="Code Context Engine" width="140">
|
|
3
54
|
</p>
|
|
@@ -8,6 +59,10 @@
|
|
|
8
59
|
<strong>Index your codebase. AI searches instead of re-reading files.<br>94% token savings, reproducibly benchmarked.</strong>
|
|
9
60
|
</p>
|
|
10
61
|
|
|
62
|
+
<p align="center">
|
|
63
|
+
<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>
|
|
64
|
+
</p>
|
|
65
|
+
|
|
11
66
|
<br>
|
|
12
67
|
|
|
13
68
|
<p align="center">
|
|
@@ -31,7 +86,8 @@
|
|
|
31
86
|
<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
87
|
<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
88
|
<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
|
|
89
|
+
<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>
|
|
90
|
+
<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
91
|
</p>
|
|
36
92
|
|
|
37
93
|
<p align="center">
|
|
@@ -93,6 +149,12 @@ cd /path/to/your/project
|
|
|
93
149
|
cce init # index, install hooks, register MCP server
|
|
94
150
|
```
|
|
95
151
|
|
|
152
|
+
**Embedding backends:** CCE auto-detects the best available backend. If you have Ollama running, it uses `nomic-embed-text` with zero extra dependencies. For offline/local embedding without Ollama, install the `[local]` extra:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
uv tool install "code-context-engine[local]" # includes fastembed + ONNX Runtime
|
|
156
|
+
```
|
|
157
|
+
|
|
96
158
|
Restart your editor. Done. Every question now hits the index instead of re-reading files.
|
|
97
159
|
|
|
98
160
|
`cce init` auto-detects your editor and writes the right config:
|
|
@@ -105,6 +167,7 @@ Restart your editor. Done. Every question now hits the index instead of re-readi
|
|
|
105
167
|
| Gemini CLI | `.gemini/settings.json` | `GEMINI.md` |
|
|
106
168
|
| OpenAI Codex | `~/.codex/config.toml` (user-global, per-project section) | |
|
|
107
169
|
| OpenCode | `opencode.json` | |
|
|
170
|
+
| Tabnine | `.tabnine/agent/settings.json` | `TABNINE.md` |
|
|
108
171
|
|
|
109
172
|
Multiple editors in the same project? All get configured in one command.
|
|
110
173
|
|
|
@@ -147,7 +210,9 @@ With CCE: context_search "payment flow" = 800 tokens
|
|
|
147
210
|
|
|
148
211
|
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
212
|
|
|
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.
|
|
213
|
+
**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.
|
|
214
|
+
|
|
215
|
+
**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
216
|
|
|
152
217
|
| Metric | Result |
|
|
153
218
|
|--------|--------|
|
|
@@ -367,17 +432,18 @@ Tell Claude: "switch to max compression" or "turn off compression". Code blocks
|
|
|
367
432
|
|
|
368
433
|
| Component | Size |
|
|
369
434
|
|-----------|------|
|
|
370
|
-
|
|
|
371
|
-
|
|
|
435
|
+
| Core install (Ollama backend) | ~17 MB |
|
|
436
|
+
| With `[local]` extra (fastembed + ONNX) | ~189 MB |
|
|
437
|
+
| Embedding model (one-time download) | ~60 MB (fastembed) or managed by Ollama |
|
|
372
438
|
| Index per project (small/medium/large) | 5-60 MB |
|
|
373
439
|
|
|
374
|
-
No GPU required.
|
|
440
|
+
No GPU required. With Ollama, embeddings are handled by the Ollama server. With the `[local]` extra, the embedding model runs on CPU via ONNX Runtime.
|
|
375
441
|
|
|
376
442
|
---
|
|
377
443
|
|
|
378
444
|
## Supported Languages
|
|
379
445
|
|
|
380
|
-
**AST-aware chunking (10 extensions):**
|
|
446
|
+
**AST-aware chunking (tree-sitter parsed, 10 extensions):**
|
|
381
447
|
|
|
382
448
|
| Language | Extensions |
|
|
383
449
|
|----------|-----------|
|
|
@@ -389,7 +455,20 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
389
455
|
| Rust | `.rs` |
|
|
390
456
|
| Java | `.java` |
|
|
391
457
|
|
|
392
|
-
**
|
|
458
|
+
**Language-aware fallback chunking (40+ extensions):**
|
|
459
|
+
|
|
460
|
+
| Category | Languages |
|
|
461
|
+
|----------|-----------|
|
|
462
|
+
| Web | HTML, CSS, SCSS, LESS, Vue, Svelte |
|
|
463
|
+
| Systems | C, C++, C#, Zig, Nim |
|
|
464
|
+
| Mobile | Swift, Kotlin, Dart |
|
|
465
|
+
| Functional | Haskell, Scala, Clojure, Elixir, Erlang, F# |
|
|
466
|
+
| Scripting | Ruby, Perl, Lua, R, Bash/Zsh |
|
|
467
|
+
| Data/Config | JSON, YAML, TOML, XML, SQL, GraphQL, Protobuf |
|
|
468
|
+
| DevOps | Terraform, HCL, Dockerfile |
|
|
469
|
+
| Docs | Markdown |
|
|
470
|
+
|
|
471
|
+
All other text files are chunked by line range. Binary files are skipped.
|
|
393
472
|
|
|
394
473
|
---
|
|
395
474
|
|
|
@@ -397,12 +476,14 @@ No GPU required. Embedding model runs on CPU via ONNX Runtime.
|
|
|
397
476
|
|
|
398
477
|
| Page | Content |
|
|
399
478
|
|------|---------|
|
|
479
|
+
| [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 |
|
|
480
|
+
| [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 |
|
|
481
|
+
| [Benchmark Deep Dive](https://elara-labs.github.io/code-context-engine/blog/benchmark-fastapi.html) | Full FastAPI benchmark methodology |
|
|
482
|
+
| [Comparison with Alternatives](https://elara-labs.github.io/code-context-engine/comparison.html) | CCE vs Cursor, Aider, Continue, Greptile |
|
|
400
483
|
| [Examples](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Examples.md) | Real conversations with Claude |
|
|
401
484
|
| [How It Works](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/How-It-Works.md) | Full 9-stage pipeline |
|
|
402
485
|
| [CLI Reference](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/CLI-Reference.md) | Every command with output |
|
|
403
486
|
| [Configuration](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Configuration.md) | All config options |
|
|
404
|
-
| [Project Commands](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Project-Commands.md) | Rules and preferences for Claude |
|
|
405
|
-
| [Tech Stack](https://github.com/elara-labs/code-context-engine/blob/main/docs/wiki/Tech-Stack.md) | Every library and why |
|
|
406
487
|
|
|
407
488
|
---
|
|
408
489
|
|
|
@@ -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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
click>=8.1
|
|
2
2
|
pyyaml>=6.0
|
|
3
3
|
sqlite-vec>=0.1.6
|
|
4
|
-
fastembed>=0.4
|
|
5
4
|
numpy>=1.24
|
|
6
5
|
tree-sitter>=0.22
|
|
7
6
|
tree-sitter-python>=0.21
|
|
@@ -25,5 +24,9 @@ pytest-asyncio>=0.23
|
|
|
25
24
|
pytest-aiohttp>=1.0
|
|
26
25
|
pytest-cov>=5.0
|
|
27
26
|
pytest-xdist>=3.5
|
|
27
|
+
ruff>=0.13
|
|
28
28
|
|
|
29
29
|
[http]
|
|
30
|
+
|
|
31
|
+
[local]
|
|
32
|
+
fastembed>=0.4
|