Skip to main content

A lightweight, agent-centric context management framework for LLMs.

Project description

ContextAware

ContextAware is a lightweight, agent-centric context management framework. It acts as a "Map Provider" for LLMs, allowing them to navigate large codebases efficiently without consuming massive amounts of tokens.

🚀 Why ContextAware?

Standard RAG (Retrieval-Augmented Generation) is often too imprecise for coding tasks (missing dependencies, hallucinating imports). Reading the entire codebase is too expensive and slow.

ContextAware solves this by treating your code as a Navigable Graph.

  • Token Efficiency: Reduces exploration costs by 90% via "Skeleton Mode".
  • Contextual Understanding: LLMs often need to read dozens of files just to understand the project structure and locate relevant code. ContextAware replaces this with a structured map.
  • Zero Hallucinations: Provides explicit dependency chains (Import Graph).
  • Scalable: Built on SQLite + AST Analysis, works on projects of any size.
  • Agent-Ready: Returns structured XML optimized for LLM consumption.

🤖 Agent Protocol (How to use this tool)

If you are an AI Agent (e.g., Devin, Cline, Gemini Code Assist), follow this explicit protocol to solve tasks with maximum efficiency.

Workflow: "Skeleton-First" Navigation

Do not read file contents blindly. Use the tool to find what matters.

Phase 1: Discovery (Low Cost)

Ask "Where is the code related to X?" getting only the high-level structure.

  • Command: context_aware query "your search terms" --mode=skeleton
  • Goal: Identify relevant classes/functions and their relationships.
  • Output: You will see signatures and <dependencies> tags.

Phase 2: Traversal (Optional)

If a class depends on another service (e.g., OrderProcessor uses InventoryService), follow the link.

  • Command: context_aware retrieve "class:inventory.py:InventoryService" --mode=skeleton
  • Goal: Understand the API of the dependency without reading its implementation.

Phase 3: Extraction (High Cost, High Value)

Once you pinpoint the exact function/class to modify or debug, fetch its full source code.

  • Command: context_aware retrieve "function:file.py:target_function"
  • Goal: Get the actual code to work on.

� Installation & Setup

  1. Install via pip:

    pip install context-aware
    
  2. Initialize a Project: Navigate to your target project root and run:

    context_aware init
    

    Or for an external project:

    context_aware --root /path/to/project init
    
  3. Index the Codebase: Parse and store the project structure (runs locally, no data leaves your machine).

    context_aware index .
    # Or
    context_aware --root /path/to/project index /path/to/project
    

📖 CLI Reference

init

Creates the local SQLite store (.context_aware/context.db).

context_aware init

index <path>

Parses Python files, extracts AST nodes (classes, functions, imports), and updates the graph.

context_aware index ./src

3. Search

Search for relevant code context. Returns signatures, docstrings, and dependencies.

context_aware search "order processing"

Options:

  • --type <class|function|file>: Filter results.
  • --output <file>: Save results to a file.

4. Read

Read the full source code of a specific item found during search.

context_aware read "class:orders/processor.py:OrderProcessor"

Global Options

  • --root <path>: Specify the root directory of the project (where .context_aware lives). Essential when working on projects outside the current working directory.

⚡️ Example Scenario

Task: "Fix a bug in the discount calculation logic."

  1. Agent asks: Where are discounts handled?

    context_aware search "discount calculation"
    

    Output: Found class:PricingService in pricing.py. It uses UserTierService.

  2. Agent analyzes: I see PricingService.calculate_discount. I need to see the code.

    context_aware read "class:pricing.py:PricingService"
    

    Output: Full Python code of the class.

  3. Agent executes: The bug is identified. The agent creates a patch.


🏗 Architecture (v0.4 - Hybrid Lookup)

  • Analyzer: PythonAnalyzer extracts symbols and dependencies but stores only metadata (pointers) in the DB to keep it light.
  • Store: SQLiteContextStore with FTS5 for fast fuzzy search of docstrings and names.
  • Router: GraphRouter performs graph traversal on the metadata.
  • Retriever: On-Demand AST Parsing. When you request code (retrieve), the system reads the file from disk at that moment and extracts the function body. This ensures zero stale data—you always get the current code.
  • Compiler: Converts nodes into XML prompts (<item>, <dependencies>) for the LLM.

⚠️ Limitations

  • Language Support: Currently optimized for Python only.
  • Semantic Understanding: Relies on keyword/symbol matching + FTS. Does not yet use Vector Embeddings (planned for v0.5).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

context_aware-0.1.5.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

context_aware-0.1.5-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file context_aware-0.1.5.tar.gz.

File metadata

  • Download URL: context_aware-0.1.5.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for context_aware-0.1.5.tar.gz
Algorithm Hash digest
SHA256 5d9a68a6ef0cac9b0c37ee635afa92c876be52c00fa1e756f1ac9615bd4cff4a
MD5 20409db55f7e3c0a51e76f975fd5ee96
BLAKE2b-256 8213b217bc68bcb731486bb5364f58a535e61d2fbdb977e03df525112f3f6af5

See more details on using hashes here.

File details

Details for the file context_aware-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: context_aware-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for context_aware-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3f1b44e3f9efed53ecf4db3416162370437505317f454297dce8d7f1162dc9d5
MD5 37229631be2dd3863ab3b85ec06a6409
BLAKE2b-256 a1294aa319089576590aa3349e91dbc8d3e2144889ba621fc2ef3d3fe05df61c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page