Files
yvgude--lean-ctx/docs/guides/pi.md
T
wehub-resource-sync 26382a7ac6
CI / Clippy (push) Failing after 15m13s
CI / Test (ubuntu-latest) (push) Failing after 16m1s
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Build (no embeddings / no ORT) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Cookbook (Node) (push) Has been cancelled
CI / Pi Extension (Node) (push) Has been cancelled
CI / Rust SDK (lean-ctx-client) (push) Has been cancelled
CI / Embed SDK (lean-ctx-sdk) (push) Has been cancelled
CI / Python SDK (leanctx) (push) Has been cancelled
CI / Hermes Plugin (Python) (push) Has been cancelled
CI / SDK Conformance Matrix (push) Has been cancelled
CI / Coverage (push) Has been cancelled
CI / cargo-deny (push) Has been cancelled
CI / Adversarial Safety (push) Has been cancelled
CI / Benchmarks (push) Has been cancelled
CI / Output-Quality Gate (eval A/B) (push) Has been cancelled
CI / Documentation (push) Has been cancelled
CI / CI Green (push) Has been cancelled
JetBrains Plugin / Actionlint (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (rust) (push) Has been cancelled
JetBrains Plugin / Validation (push) Has been cancelled
JetBrains Plugin / Build (push) Has been cancelled
JetBrains Plugin / Test (push) Has been cancelled
Security Check / Security Scan (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:35:30 +08:00

300 lines
9.9 KiB
Markdown

# Pi Coding Agent + lean-ctx Integration Guide
Complete guide to setting up and optimally using lean-ctx with [Pi Coding Agent](https://github.com/badlogic/pi-mono).
## Overview
| Property | Value |
|----------|-------|
| Integration mode | **Hybrid** (CLI tools + optional MCP bridge) |
| Package | [`pi-lean-ctx`](https://pi.dev/packages/pi-lean-ctx) |
| npm | [`pi-lean-ctx`](https://www.npmjs.com/package/pi-lean-ctx) |
| Rules file | `AGENTS.md` (auto-generated in project root) |
| Setup command | `lean-ctx init --agent pi` |
## Quick Setup
```bash
# Install the Pi extension
pi install npm:pi-lean-ctx
# Or use lean-ctx's setup
lean-ctx init --agent pi
# Verify
lean-ctx doctor
```
## Tool Modes
pi-lean-ctx supports two operational modes:
### Additive Mode (Default)
Pi's built-in tools (`read`, `bash`, `ls`, `find`, `grep`) remain available alongside `ctx_*` tools. The agent can choose either set.
### Replace Mode
Disables Pi builtins — only `ctx_*` tools available:
```bash
export LEAN_CTX_PI_MODE=replace
```
## Available Tools
### CLI-backed Tools (Always Available)
| Tool | Replaces | What it does |
|------|----------|-------------|
| `ctx_read` | `read` | Smart mode selection (full/map/signatures) based on file type and size |
| `ctx_shell` | `bash` | All shell commands compressed via lean-ctx's 95+ patterns |
| `ctx_grep` | `grep` | Results grouped and compressed via ripgrep + lean-ctx |
| `ctx_find` | `find` | File listings compressed and .gitignore-aware |
| `ctx_ls` | `ls` | Directory output compressed |
| `lean_ctx` | — | Direct lean-ctx CLI access (overview, session, knowledge, gain) |
Pi's `edit` and `write` builtins remain unchanged in both modes.
### MCP Tools (Optional)
Enable advanced MCP tools by setting:
```bash
export LEAN_CTX_PI_ENABLE_MCP=1
```
Or during setup:
```bash
lean-ctx init --agent pi --mode mcp
```
This spawns lean-ctx as an embedded MCP server and registers additional tools:
| Tool | Purpose |
|------|---------|
| `ctx_session` | Session state management and persistence |
| `ctx_knowledge` | Project knowledge graph with temporal validity |
| `ctx_semantic_search` | Find code by meaning, not exact text |
| `ctx_overview` | Codebase overview and architecture analysis |
| `ctx_repomap` | PageRank-based repo map (most important symbols) |
| `ctx_callgraph` | Multi-hop call graph traversal and risk analysis |
| `ctx_impact` | Blast radius analysis for code changes |
| `ctx_pack` | Context packaging (export project as AI-friendly format) |
| `ctx_compress` | Manual compression control |
| `ctx_metrics` | Token savings dashboard |
| `ctx_multi_read` | Batch file reads |
### Tool surface: lean / standard / power
The MCP bridge advertises whatever surface it requests from lean-ctx. By default
that's the **lean core** + the `ctx_call` gateway — identical to a normal lean-ctx
install, with every other tool (including the editors `ctx_edit` / `ctx_patch`)
reachable through `ctx_call`. Pi's native `edit` / `write` builtins stay available
in every mode, so you can always edit files regardless of this setting.
To surface the **whole** registry (`ctx_edit`, `ctx_patch`, architecture/quality
tools, …) as first-class Pi tools:
```bash
export LEAN_CTX_PI_TOOL_PROFILE=power # or "standard" for a balanced 16-tool set
```
or set `"toolProfile": "power"` in `config.json`. Values: `lean` (default) ·
`standard` · `power` (`full`/`all` alias `power`). It maps to the engine's
`LEAN_CTX_TOOL_PROFILE`, so it mirrors `lean-ctx profile <name>`. `power` widens
the surface at some prompt-token cost. Run `/lean-ctx` to see the active profile.
## Configuration
### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `LEAN_CTX_PI_MODE` | `additive` | `additive` or `replace` |
| `LEAN_CTX_PI_TOOL_PROFILE` | `lean` | Bridge tool surface: `lean`, `standard`, or `power` (all tools incl. `ctx_edit`/`ctx_patch`) |
| `LEAN_CTX_PI_ENABLE_MCP` | `0` | Set to `1` to enable MCP bridge |
| `LEAN_CTX_PI_MCP_TOOLS` | (all) | Comma-separated list of MCP tools to register |
| `LEAN_CTX_EMBEDDING_MODEL` | `minilm` | Embedding model: `minilm`, `jina-code`, `nomic` |
### Config file (`config.json`)
If you only use lean-ctx through Pi, you can keep every setting in one file
instead of juggling env vars and `~/.lean-ctx/config.toml`. Create:
```
~/.pi/agent/extensions/pi-lean-ctx/config.json
```
```json
{
"mode": "replace",
"enableMcp": true,
"toolProfile": "power",
"binary": "/opt/lean-ctx/bin/lean-ctx",
"env": {
"LEAN_CTX_COMPRESSION": "aggressive"
}
}
```
| Key | Equivalent to | Notes |
|-----|---------------|-------|
| `mode` | `LEAN_CTX_PI_MODE` | `additive` (default) or `replace` |
| `toolProfile` | `LEAN_CTX_PI_TOOL_PROFILE` | `lean` (default), `standard`, or `power` — see [Tool surface](#tool-surface-lean--standard--power) |
| `enableMcp` | `LEAN_CTX_PI_ENABLE_MCP` | Start the embedded MCP bridge |
| `binary` | `LEAN_CTX_BIN` | Absolute path to the `lean-ctx` binary |
| `env` | — | Extra env forwarded to every `lean-ctx` subprocess; use it to override `~/.lean-ctx/config.toml` engine settings (the engine honours `LEAN_CTX_*` vars) |
**Precedence (most explicit wins):** an explicit `LEAN_CTX_PI_*` / `LEAN_CTX_BIN`
environment variable overrides `config.json`, which overrides the built-in
default. This keeps a shared, file-only config working with no env vars while
still allowing ad-hoc env overrides on a single machine. Run `/lean-ctx` inside
Pi to see which config file (if any) was loaded.
### AGENTS.md
lean-ctx auto-generates an `AGENTS.md` file in your project root with Pi-optimized instructions:
```bash
lean-ctx init --agent pi
# Creates AGENTS.md with lean-ctx tool usage patterns
```
The `AGENTS.md` instructs Pi to prefer `ctx_*` tools over builtins for token efficiency.
## Recommended Workflow
### Basic (CLI-only)
Best for simple tasks — no MCP overhead:
```
You (in Pi): "Read the auth module and find security issues"
Pi uses:
ctx_read src/auth/mod.rs → compressed, ~60% smaller
ctx_grep "password" src/ → grouped results
ctx_shell "cargo clippy" → compressed output
```
### Advanced (MCP-enabled)
Best for complex tasks — full lean-ctx power:
```
You (in Pi): "Understand the architecture and find what's affected by changing the User model"
Pi uses:
ctx_overview → project architecture
ctx_repomap → most important symbols
ctx_callgraph action=risk symbol=User → impact analysis
ctx_semantic_search query="user model" → find related code
ctx_knowledge recall → previous findings about User
```
### Session Continuity
lean-ctx persists context across Pi sessions:
```
# Session 1: investigate a bug
Pi → ctx_knowledge remember --category=blocker --content="Race condition in auth middleware"
# Session 2 (next day): lean-ctx auto-restores context
Pi → ctx_knowledge recall → "Race condition in auth middleware" (from yesterday)
```
## Complementary Pi Extensions
Users have found these extensions work well alongside pi-lean-ctx:
| Extension | Purpose | Synergy with lean-ctx |
|-----------|---------|----------------------|
| `pi-git` | Git operations | lean-ctx compresses git output |
| `pi-search` | Web search | Combine with ctx_knowledge for persistence |
| `pi-test` | Test runner | lean-ctx compresses test output |
### Coexisting with AFT and magic-context
lean-ctx, [AFT](https://github.com/cortexkit/aft) and
[magic-context](https://github.com/cortexkit/magic-context) compose cleanly when
each owns a distinct concern: **AFT** symbol-aware file ops, **lean-ctx** context
compression + the session cache, **magic-context** long-horizon memory/compaction.
Keep lean-ctx in its default **additive** mode (don't set `LEAN_CTX_PI_MODE=replace`)
so it never contends for AFT's hoisted `read`/`write`/`edit`/`bash` slots. If two
extensions register the same tool name (e.g. magic-context's `ctx_expand`), the
extension that loads second would normally crash Pi — pi-lean-ctx instead **skips
the clashing tool with a warning** and keeps loading (#359). To control the split:
```bash
# Hand specific names to the other extension:
export LEAN_CTX_PI_DISABLE_TOOLS="ctx_memory,ctx_expand,ctx_search"
# …or prefix all bridge tools so nothing collides:
export LEAN_CTX_PI_TOOL_PREFIX="lc_" # ctx_expand → lc_ctx_expand
```
Run `/lean-ctx` inside Pi to see exactly which tools were registered, handed off,
or skipped. Full reference:
[pi-lean-ctx README → Coexisting with AFT and magic-context](https://github.com/yvgude/lean-ctx/blob/main/packages/pi-lean-ctx/README.md#coexisting-with-aft-and-magic-context).
## Troubleshooting
### lean-ctx binary not found
```bash
# Ensure lean-ctx is in PATH
which lean-ctx
# If not installed
curl -fsSL https://leanctx.com/install.sh | sh
```
### MCP tools not appearing
```bash
# Check if MCP is enabled
echo $LEAN_CTX_PI_ENABLE_MCP # Should be "1"
# Check MCP server health
lean-ctx doctor integrations
```
### High latency on first use
lean-ctx builds indexes on first run. Subsequent uses are cached:
```bash
# Pre-build index
lean-ctx index build
```
### Proxy configuration
If using lean-ctx's API proxy:
```bash
lean-ctx proxy enable
# Sets ANTHROPIC_BASE_URL, OPENAI_BASE_URL, GEMINI_API_BASE_URL
# All three providers are configured (not just Gemini)
```
## Performance
Typical token savings with pi-lean-ctx:
| Operation | Without lean-ctx | With lean-ctx | Savings |
|-----------|-----------------|---------------|---------|
| Read large file (1000 LOC) | ~4000 tokens | ~400 tokens | 90% |
| `git status` | ~200 tokens | ~50 tokens | 75% |
| `cargo test` output | ~2000 tokens | ~100 tokens | 95% |
| `grep` results (50 matches) | ~1500 tokens | ~300 tokens | 80% |
## Further Reading
- [pi-lean-ctx README](https://github.com/yvgude/lean-ctx/tree/main/packages/pi-lean-ctx)
- [Pi Coding Agent Docs](https://github.com/badlogic/pi-mono)
- [lean-ctx Documentation](https://leanctx.com/docs)