Code Context Engine

io.github.ai-elara由 GitHub 账号 ai-elara 发布v0.4.13更新于 Oct 24, 2026

Index your codebase. AI searches instead of re-reading files. 94% token savings.

已验证STDIO仅桌面知识与记忆开发者工具

概览

AI 生成的概览

本地代码库索引,让 AI 助手检索语义代码片段并回忆过往会话决策,而不必重读整个文件。

可以做什么
用向量与关键词混合检索在已索引的代码库中查找代码,并将压缩结果展开为完整源码,或沿调用与导入关系找到相关代码。回忆过往会话:读取此前记录的决策和代码区域、浏览会话时间线、查看原始事件。记录新的决策和代码区域,使上下文在重启后保留。检查索引是否最新,并重新索引单个文件或整个项目。调整助手回复的简洁程度。
适用场景
适合助手需要在中大型代码库中反复工作、希望它定位相关函数而不是通读整个文件时使用,也适合希望架构决策能跨会话延续的场景。定位是本地、私密的索引,可服务多个编辑器。
运行要求
以本地进程方式通过 uvx 或 pip/pipx 安装运行;需要 Python 3.11+ 以及用于 tree-sitter 语法的 C 编译器。嵌入向量在本地通过 ONNX 运行,或使用本地/远程 Ollama。未声明需要 API 密钥或账号。安装过程会写入编辑器配置文件和指令文件。
安装前请注意
安装会修改编辑器配置和 CLAUDE.md、AGENTS.md、.cursorrules 等代理指令文件,并可能安装生命周期钩子;输出压缩规则随后作用于该会话的每条回复。README 称会跳过密钥文件并扫描凭据,但索引仍会把源码和会话决策存入本地 SQLite 文件。宣传的 94% token 节省是相对整文件读取测得,而非相对助手的常规行为,实际节省会更低。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Code Context Engine,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[Code Context Engine]

Code Context Engine

Index your codebase. AI searches instead of re-reading files.
94% token savings, reproducibly benchmarked.

Website · Docs · Why CCE? · Benchmark · GitHub


[PyPI] [Downloads] [CI] [MCP Registry] [MIT License] [Stars]

Python 3.11+ · macOS · Linux · Windows


[Claude Code]  [VS Code]  [Cursor]  [Gemini CLI]  [Codex CLI]  [OpenCode]  [Tabnine]  [Pi]

One command. Auto-detects your editor. Zero cloud, zero config.


[CCE Demo]

[Talk: We Cut 94% of Our AI Coding Tokens — AI Engineer World's Fair 2026]
Talk: We Cut 94% of Our AI Coding Tokens — AI Engineer World's Fair 2026


Use cases

Use caseHow CCE helps
💰Reduce Claude Code costs94% fewer input tokens per session
🔒Keep code privateEverything local, no cloud indexing
🔄Multi-editor teamsOne index across Claude Code, Cursor, VS Code, Gemini CLI
🧠Cross-session memoryDecisions and context survive restarts
⚡Faster responsesLess context = faster Claude replies
📊Track actual savingsDollar amounts, not estimates

Quick start

One command. 30 seconds.

bash
uvx --from "code-context-engine[local]" cce init    # install + index + configure, one shot

Or if you prefer a persistent install:

bash
uv tool install "code-context-engine[local]"    # or: pipx install "code-context-engine[local]"cd /path/to/your/projectcce init

Restart your editor. Done. Every question now hits the index instead of re-reading files.

Agent Plugin support: Run cce init --plugin to generate a portable Agent Plugin directory that works with VS Code, Cursor, Copilot, Codex, ChatGPT, and Kiro. The plugin uses uvx to launch CCE on demand, so users don't need to pre-install the Python package. See Agent Plugin below.

Already have Ollama? Skip [local] and use uv tool install code-context-engine instead. CCE auto-detects Ollama at localhost:11434 and uses nomic-embed-text.

System requirements

Python 3.11+ and a C compiler (for tree-sitter grammars).

PlatformSetup
macOSxcode-select --install
Ubuntu/Debiansudo apt install build-essential cmake
Fedora/RHELsudo dnf install gcc gcc-c++ cmake
WindowsVisual Studio Build Tools (C++ workload) + CMake

Tested on macOS, Linux, Windows with Python 3.11/3.12/3.13.

cce init auto-detects your editor and writes the right config. To target a specific agent, use --agent claude, --agent codex, --agent copilot, --agent pi, or --agent all.

EditorConfig writtenInstructions
Claude Code.mcp.jsonCLAUDE.md
VS Code / Copilot.vscode/mcp.json.github/copilot-instructions.md
Cursor.cursor/mcp.json.cursorrules
Gemini CLI.gemini/settings.jsonGEMINI.md
OpenAI Codex~/.codex/config.toml (user-global, per-project section)AGENTS.md
OpenCodeopencode.json
Tabnine.tabnine/agent/settings.jsonTABNINE.md
Pi.mcp.jsonAGENTS.md

Multiple editors in the same project? All get configured in one command.

Codex note: Codex CLI reads MCP servers from ~/.codex/config.toml only — it has no per-project config. cce init adds one [mcp_servers.cce-<project>-<hash>] section per project so multiple projects coexist; cce uninstall removes only the section for the current project.

Pi note: Pi does not support MCP natively. To use CCE with Pi, you need a pi MCP adapter extension (e.g. pi-mcp-adapter) that consumes the .mcp.json config and exposes CCE's tools to the Pi agent. cce init sets up both .mcp.json and AGENTS.md (Pi loads the latter automatically for startup instructions).

  my-project · 38 queries · last query 5m ago
  ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶  88% tokens saved
  Input savings   1.9M  tokens   $27.78  Output savings  4.8k  tokens   $0.36  ──────────────────────────────────────────  Total saved   1.9M  tokens   $28.15
  Breakdown:    retrieval              84%  ▰▰▰▰▰▰▰▰▰▰    1.8M   $26.76 · 12 calls    chunk compression       3%  ▰▱▱▱▱▱▱▱▱▱   68.5k    $1.03 · 12 calls    output compression*    <1%  ▰▱▱▱▱▱▱▱▱▱    4.8k    $0.36 · 12 calls
  Cost estimate based on Opus pricing (input $15.0/1M, output $75.0/1M)

Supports Anthropic, OpenAI, and Google model pricing. Configure via pricing.model in ~/.cce/config.yaml.


Why this matters

Input tokens are 85-95% of your Claude Code bill. CCE cuts them by 94% (benchmarked on FastAPI).

Without CCE:    Claude reads payments.py + shipping.py   = 45,000 tokensWith CCE:       context_search "payment flow"            =    800 tokens
Without CCEWith CCE
Session startupRe-reads files every timeQueries the index
Finding a functionRead entire 800-line fileGet the 40-line function
Cross-session memoryNoneDecisions + code areas persisted
Token cost (Sonnet, medium project)~$0.14/session~$0.04/session

Benchmark: FastAPI (reproducible)

We benchmarked CCE against FastAPI (53 source files, 180K tokens) with 20 real coding questions. No cherry-picking, no synthetic queries.

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.

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.

MetricResult
Retrieval savings94% (83,681 → 4,927 tokens/query)
Compression (additional, on retrieved chunks)89% (4,927 → 523 tokens/query)
Recall@10 (found the right files)0.90
Latency p500.4ms
Queries tested20

Per-Layer Savings (each measured independently)

LayerWhat it doesSavingsMethod
RetrievalFull files → relevant code chunks94%measured
Chunk CompressionRaw chunks → signatures + docstrings89%measured
GrammarDrops articles/fillers from memory text13%measured

Output compression (reducing Claude's reply length) provides additional savings (~65% estimated) but is not included in the headline number above.

Multi-language benchmarks

RepoLanguageFilesRetrieval savingsRecall@10
FastAPIPython5394%0.90
DjangoPython (large)2,34793%0.95
ExpressJavaScript694%1.00
chiGo9476%0.67
fiberGo (monorepo)39693%0.07

Django (2,347 files, 5.4M tokens) shows CCE scales to large codebases with 0.95 recall. 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.

Reproduce it yourself:

bash
pip install code-context-enginepython benchmarks/run_benchmark.py --repo https://github.com/fastapi/fastapi.git --source-dir fastapipython benchmarks/run_benchmark.py --repo https://github.com/go-chi/chi.git --source-dir .

Full results in benchmarks/results/. Queries and methodology in benchmarks/.


What you get

11 MCP tools that Claude uses automatically:

ToolWhat it does
context_searchHybrid vector + BM25 search with graph expansion
expand_chunkFull source for a compressed result
related_contextFind code via graph edges (calls, imports)
session_recallRecall decisions from past sessions
session_timelineWalk turn summaries for a session (drill into recall hits)
session_eventInspect raw tool input/output for a specific event
record_decisionSave a decision for future sessions
record_code_areaRecord which files were worked in
index_statusCheck index freshness
reindexRe-index a file or the full project
set_output_compressionAdjust response verbosity (off / lite / standard / max)

Live dashboard with donut charts, file health, and session history:

bash
cce dashboard

[CCE Dashboard]

Dollar estimates with multi-provider pricing (Anthropic, OpenAI, Google):

bash
cce savings --all    # see savings across all projects

How it works

  1. Index: Tree-sitter parses your code into semantic chunks (functions, classes, modules). Stored as vector embeddings locally.
  2. Search: Claude calls context_search. Hybrid vector + BM25 retrieval finds the right chunks. Code graph adds related files automatically.
  3. Compress: Chunks are truncated to signatures + docstrings (or LLM-summarized if Ollama is running).
  4. Remember: Decisions and code areas persist across sessions via session_recall.
  5. Track: Every query is logged. cce savings shows exactly how much you saved.

Re-indexing after edits takes under 1 second (96% embedding cache hit rate). Git hooks keep the index current automatically.


What makes CCE different

It saves where the money is

Output compression tools (like Caveman) save 20-75% on output tokens. Output is 5-15% of your bill. Net savings: ~11%.

CCE saves on input tokens (94% retrieval savings on FastAPI, reproducibly benchmarked). Input is 85-95% of your bill.

It actually understands your code

Not a text search. Tree-sitter AST parsing creates semantic chunks. Hybrid retrieval merges vector similarity with BM25 keyword matching via Reciprocal Rank Fusion. A confidence scorer blends similarity (50%), keyword match (30%), and recency (20%). Graph expansion walks CALLS/IMPORTS edges to pull in related code.

It remembers

record_decision("use JWT for auth", reason="session tokens flagged by legal") is stored in SQLite and surfaces via session_recall in the next session. No re-explaining your architecture.

It tracks real savings

Not estimates. Actual tokens served vs full-file baseline, broken down by buckets (retrieval, compression, output, memory, grammar). Dollar costs fetched from Anthropic's pricing page. Savings summary shown at every session start.

It is secure by default

Secret files (.env, *.pem, credentials.json) are never indexed. Content is scanned for AWS keys, GitHub tokens, Slack tokens, Stripe keys, JWTs, and generic credentials. PII (emails, IPs, SSNs, credit cards) is scrubbed from memory writes. All MCP file paths are validated against path traversal.


Under the hood

Content-Hash Embedding Cache

SHA-256 fingerprint per chunk, salted with model name. Re-index skips unchanged code. Binary float32 storage (10x smaller than JSON). Typical re-index: 96% cache hit, under 1 second.

sqlite-vec: 2 MB instead of 217 MB

Replaced LanceDB with sqlite-vec. Same cosine-distance quality, 99% smaller install. WAL mode + PRAGMA NORMAL for 80% write speedup. Vectors, FTS5, code graph, and compression cache all in three SQLite files.

Deterministic Grammar Compression

Memory entries compressed without LLM calls. Drops articles, fillers, pronouns. Three levels (lite/full/ultra, 20-60% savings). Code, paths, URLs preserved byte-for-byte. Same input always yields same output.

Fail-Closed Hook Design

5 Claude Code lifecycle hooks capture session context. Every hook runs curl ... || true, so a crashed server never blocks the user. SessionStart injects bootstrap context; others capture silently.

Multi-Provider Pricing

Dollar estimates in cce savings support 15+ models across Anthropic, OpenAI, and Google. Static pricing ships with CCE, live Anthropic pricing is fetched and cached 7 days. Configure pricing.model (e.g. gpt-4o, gemini-2.5-pro, sonnet) or override with pricing.input / pricing.output for custom rates.

Resource Governor (Multi-Instance Safety)

Running dozens of cce serve processes (one per project per AI session) can exhaust system memory. The resource governor caps ONNX Runtime threads per process, uses advisory file locks so only one process indexes a given project at a time, backs off under Linux memory pressure (PSI), and auto-shuts down idle servers after 30 minutes. Configure via serve.idle_timeout_minutes and serve.max_ort_threads.

Memory Nudges

CCE's cross-session memory depends on the agent calling record_decision and record_code_area. Memory nudges make recording ambient: after N searches without a recording, context_search results include a short reminder. At session end, the Stop hook summarizes unrecorded activity. Nudges re-arm after the first recording so they stay useful without being noisy.

HTTP Search Endpoint

cce serve --http exposes a POST /search endpoint for custom agent integrations that speak HTTP instead of MCP stdio. Same hybrid retrieval pipeline, structured JSON response with confidence scores. Input validation clamps top_k (1..100) and confidence_threshold (0.0..1.0).

Append-Only Savings Ledger

7 buckets track every token saved: retrieval, chunk compression, output compression, memory recall, grammar, turn summarization, progressive disclosure. Survives restarts. Powers CLI and dashboard analytics.


Agent Plugin

Agent Plugins is an open standard (v1.0.0) backed by Amazon, Cursor, Microsoft, OpenAI, and Vercel for packaging AI skills and MCP servers into portable, zero-install bundles. CCE can generate a plugin directory that compatible editors can discover and load automatically.

bash
cce init --plugin                          # Generate at .cce/plugin/cce init --plugin --plugin-dir ~/plugins/cce  # Custom locationcce init --agent claude --plugin           # Both: agent config + plugin

What gets generated

.cce/plugin/├── plugin.json                       # Agent Plugins v1.0.0 manifest├── mcp.json                          # MCP server config (uvx + stdio)├── skills/│   └── code-context/│       ├── SKILL.md                  # Agent instructions (frontmatter + body)│       └── references/│           └── tools.md              # Per-tool parameter docs (loaded on demand)└── LICENSE

Compatible editors

VS Code, GitHub Copilot, ChatGPT, Codex, Cursor, and Kiro. The plugin uses uvx to launch CCE on demand, so users do not need to pre-install the Python package. The MCP server auto-discovers the project root by walking up from its working directory, looking for .context-engine.yaml or .git/.

When to use --plugin vs --agent

--agent (default)--plugin
Install methodWrites editor-specific config filesGenerates a portable plugin directory
Zero-installNo, CCE must be on PATHYes, uvx fetches CCE on demand
Instruction updatesStale until cce init re-runStale until cce init --plugin re-run
Best forYour own machineSharing with a team or distributing

Both can be used together. --agent handles per-editor MCP config, --plugin provides a portable alternative.


CLI at a glance

bash
cce init                    # Index + install hooks + register MCPcce init --plugin           # Generate Agent Plugin for VS Code, Cursor, etc.cce                         # Status bannercce savings                 # Token savings with dollar estimatescce savings --all           # All projectscce dashboard               # Web dashboard with live chartscce search "auth flow"      # Test a querycce status                  # Index health + configcce services                # Ollama + dashboard + MCP statuscce commands add-rule '...' # Project rules for Claudecce uninstall               # Clean removal of all CCE artifacts

Run cce list for the full command reference.


Configuration

Zero-config by default. Override what you need in ~/.cce/config.yaml or .context-engine.yaml:

yaml
compression:  level: standard          # minimal | standard | full  output: standard         # off | lite | standard | max  ollama_url: http://localhost:11434   # point at a remote Ollama if desired
retrieval:  top_k: 20  confidence_threshold: 0.5
pricing:  model: opus              # opus | sonnet | haiku | gpt-4o | gemini-2.5-pro | ...  # input: 15.0            # override $/1M input tokens  # output: 75.0           # override $/1M output tokens

Remote Ollama: If you run Ollama on another machine in your network, set compression.ollama_url (e.g. http://nas.local:11434) or export CCE_OLLAMA_URL (the env var wins). CCE probes the endpoint and falls back to truncation-only compression when it's unreachable, so a flaky link won't break indexing.


Output Compression

CCE also compresses Claude's responses (same concept as Caveman):

LevelStyleSavings
offFull output0%
liteNo filler or hedging~30%
standardFragments, drop articles~65%
maxTelegraphic~75%

Tell Claude: "switch to max compression" or "turn off compression". Code blocks and commands are never compressed.


Disk Footprint

ComponentSize
Core install (Ollama backend)~17 MB
With [local] extra (fastembed + ONNX)~189 MB
Embedding model (one-time download)~60 MB (fastembed) or managed by Ollama
Index per project (small/medium/large)5-60 MB

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.


Supported Languages

AST-aware chunking (tree-sitter parsed, 11 extensions):

LanguageExtensions
Python.py
JavaScript.js, .jsx
TypeScript.ts, .tsx
PHP.php
Go.go
Rust.rs
Java.java
C#.cs

Language-aware fallback chunking (40+ extensions):

CategoryLanguages
WebHTML, CSS, SCSS, LESS, Vue, Svelte
SystemsC, C++, Zig, Nim
MobileSwift, Kotlin, Dart
FunctionalHaskell, Scala, Clojure, Elixir, Erlang, F#
ScriptingRuby, Perl, Lua, R, Bash/Zsh
Data/ConfigJSON, YAML, TOML, XML, SQL, GraphQL, Protobuf
DevOpsTerraform, HCL, Dockerfile
DocsMarkdown

All other text files are chunked by line range. Binary files are skipped.


Documentation

PageContent
How Much Are You Spending on AI Coding Tokens?The math on input vs output tokens
What is CCE? (Complete Guide)Setup, tools, how it works, FAQ
How to Save Claude Code TokensCost breakdown and savings guide
Benchmark Deep DiveFull FastAPI benchmark methodology
Comparison with AlternativesCCE vs Cursor, Aider, Continue, Greptile
ExamplesReal conversations with Claude
How It WorksFull 9-stage pipeline
CLI ReferenceEvery command with output
ConfigurationAll config options

FAQ

Does CCE affect response quality?

No. Quality stays the same or slightly improves.

CCE replaces "dump the entire file" with "search for the relevant function." The model still gets the code it needs (0.90 Recall@10 in benchmarks). Less irrelevant context means less noise competing for attention, which can improve the model's focus on your actual question.

How does output token savings work?

CCE writes output compression rules directly into your agent's instruction files (CLAUDE.md, AGENTS.md, .cursorrules, etc.) during cce init. These rules apply to the entire session, not just CCE tool responses, so every reply from the agent follows them.

Set the level in ~/.cce/config.yaml or .context-engine.yaml:

yaml
compression:  output: max       # off | lite | standard | max

Then re-run cce init to update instruction files. Or change at runtime:

set_output_level output_level=max
LevelSavingsWhat it does
off0%No compression
lite~25%Removes filler/hedging/pleasantries + diff-only for code changes
standard~70%Drops articles, fragments, short synonyms + diff-only for code
max~80%Telegraphic style + diff-only for code

Default is standard. All levels include code output rules that tell the model to show only changed lines (not full file rewrites), which is where most output tokens go in coding sessions. The max level produces very terse prose (similar to "caveman mode"). Code blocks, paths, and commands are never compressed regardless of level.

Where do the savings come from?

Most savings are input tokens (what goes into the model):

LayerTypeTypical savings
RetrievalInput94% (full files → relevant chunks)
Chunk compressionInput89% (chunks → signatures)
Grammar compressionInput13% (article/filler removal)
Turn summarizationInputvaries (session history)
Progressive disclosureInputvaries (tool payloads)
Output compressionOutput25-80% (depends on level)

Output tokens cost 5x more per token (e.g. Opus: $15/1M input vs $75/1M output), so even a small output reduction has outsized cost impact.


Roadmap

  • Multi-repo benchmarks (FastAPI, chi, fiber)
  • More benchmarks (Django, Express)
  • Tree-sitter support for C, C++, Ruby, Swift, Kotlin
  • Docker support for remote mode
  • Port to mcp 2.x API

See CHANGELOG.md for shipped features.


Contributing

Contributions welcome. See https://github.com/elara-labs/code-context-engine/blob/main/CONTRIBUTING.md for setup.


License

MIT. See LICENSE.

Authors

Acknowledgments

Claude Code · MCP · sqlite-vec · Tree-sitter · fastembed · Ollama


If CCE saves you tokens, give it a star.

来源:README.md,提交 7507115

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.4.13最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分