Files
wehub-resource-sync 26382a7ac6
CI / Test (macos-latest) (push) Waiting to run
CI / Test (ubuntu-latest) (push) Waiting to run
CI / Test (windows-latest) (push) Waiting to run
CI / Clippy (push) Waiting to run
CI / Build (no embeddings / no ORT) (push) Waiting to run
CI / Format (push) Waiting to run
CI / Cookbook (Node) (push) Waiting to run
CI / Pi Extension (Node) (push) Waiting to run
CI / Rust SDK (lean-ctx-client) (push) Waiting to run
CI / Embed SDK (lean-ctx-sdk) (push) Waiting to run
CI / Python SDK (leanctx) (push) Waiting to run
CI / Hermes Plugin (Python) (push) Waiting to run
CI / SDK Conformance Matrix (push) Waiting to run
CI / Coverage (push) Waiting to run
CI / cargo-deny (push) Waiting to run
CI / Adversarial Safety (push) Waiting to run
CodeQL / Analyze (javascript-typescript) (push) Waiting to run
JetBrains Plugin / Actionlint (push) Waiting to run
CI / Benchmarks (push) Waiting to run
CI / Output-Quality Gate (eval A/B) (push) Waiting to run
CI / Documentation (push) Waiting to run
CI / CI Green (push) Blocked by required conditions
CodeQL / Analyze (actions) (push) Waiting to run
CodeQL / Analyze (rust) (push) Waiting to run
JetBrains Plugin / Validation (push) Waiting to run
JetBrains Plugin / Build (push) Waiting to run
JetBrains Plugin / Test (push) Blocked by required conditions
Security Check / Security Scan (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:35:30 +08:00

228 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Journey 7 — Context Engineering & Observability
> You want to actively *manage the context window itself*: see what's in it,
> measure cost, decide what to keep or evict, plan a budget, and reach for the
> deeper "power" tools. This journey documents the advanced and meta tools that
> don't belong to a single everyday flow — the ones that make lean-ctx a context
> *runtime*, not just a compressor.
Most tools here are in the **power** profile. Enable them with
`lean-ctx tools power`, or load just one category at runtime with
`ctx_load_tools` (see §6).
Source files referenced here:
- `rust/src/tools/registered/ctx_radar.rs`, `ctx_metrics.rs`, `ctx_cost.rs`,
`ctx_feedback.rs`, `ctx_verify.rs`, `ctx_proof.rs`
- `rust/src/tools/ctx_control.rs`, `ctx_plan` / `ctx_compile` / `ctx_ledger`
- `rust/src/tools/ctx_preload.rs`, `ctx_prefetch.rs`, `ctx_dedup.rs`,
`ctx_compose.rs`, `ctx_fill`
- `rust/src/cli/context_cmd.rs`, `ledger_cmd.rs`
---
## 1. See what's in the context — observability
Before managing context, you measure it.
| Tool | CLI | What it answers |
|------|-----|-----------------|
| `ctx_radar` | — | Full budget breakdown: prompt, messages, tools, reads, shell |
| `ctx_metrics` | `lean-ctx stats` | Session token stats, cache hit-rates, per-tool savings |
| `ctx_context` | — | Session-context overview: cache, files seen, current state |
| `ctx_cost` | `lean-ctx gain --cost` | Local cost attribution per agent / per tool |
| `ctx_heatmap` | `lean-ctx heatmap` | File-access heatmap (hot vs. cold files) |
```text
ctx_radar format=display # human-readable context budget
ctx_radar format=json # machine-readable, for dashboards
```
`ctx_radar` is the single best "where are my tokens going?" view: it attributes
the live context window across system prompt, message history, tool schemas, file
reads, and shell output. Pair it with `ctx_metrics` for cumulative savings.
---
## 2. Context Field Theory — actively shape the window
lean-ctx models the context window as a *field* you can manipulate with overlays
(exclude, pin, prioritize) rather than only react to.
### `ctx_control` / `lean-ctx control`
Overlay-based manipulation. Overlays apply at a `scope` (`call`, `session`, or
`project`) and are reversible.
```bash
lean-ctx control pin src/auth.rs --reason "active task"
lean-ctx control exclude vendor/ --scope session
lean-ctx control set_priority src/main.rs --value high
lean-ctx control list # current overlays
lean-ctx control history # what changed and why
lean-ctx control reset # drop overlays
```
Actions: `exclude`, `include`, `pin`, `unpin`, `set_view`, `set_priority`,
`mark_outdated`, `reset`, `list`, `history`.
### `ctx_ledger` / `lean-ctx ledger` — pressure management
The ledger tracks per-file context "pressure" (token cost vs. recency vs. use)
and lets you evict the expensive, stale entries.
```bash
lean-ctx ledger status # pressure table
lean-ctx ledger evict big.json large.log
lean-ctx ledger prune # drop low-value entries
lean-ctx ledger reset
```
### `ctx_plan` / `lean-ctx plan` — budget a task up front
Phi-scored planning: given a task and a token budget, it allocates the budget
across the files/symbols most worth loading.
```bash
lean-ctx plan "add OAuth login" --budget=4000
```
MCP `profile`: `ultra_lean` | `balanced` | `forensic`.
### `ctx_compile` / `lean-ctx compile` — fill the budget optimally
Knapsack + Boltzmann view-selection: compiles the actual context to send under a
budget, choosing per-file *views* (handles, compressed, or full).
```bash
lean-ctx compile --mode=compressed --budget=6000
```
Together these form a pipeline: **radar** (measure) → **plan** (allocate) →
**compile** (materialize) → **control/ledger** (adjust).
---
## 3. Proactive context — load before you're asked
| Tool | What it does |
|------|--------------|
| `ctx_overview` | Task-relevant project map (Journey 3) |
| `ctx_preload` | Load task-relevant files now; compact L-curve summary (~50100 tok) |
| `ctx_prefetch` | Predictive prefetch of blast-radius files for changed files |
| `ctx_compose` | One call: keywords + ranked files + matches + top symbol inline |
| `ctx_fill` | Fill remaining budget with the most coverage-effective files |
| `ctx_dedup` | Detect (and optionally remove) duplicated content across files |
```text
ctx_preload task="refactor the auth module"
ctx_compose task="where is rate limiting enforced?"
ctx_prefetch changed_files=["src/auth.rs"] budget_tokens=3000
ctx_dedup action=analyze # then action=apply to reclaim
```
`ctx_compose` is the highest-leverage everyday power tool: it replaces the
typical search → read → outline → read chain (35 calls) with one rich response.
**Golden output — the compact search primitive.** `ctx_compose` builds on
`ctx_search`, whose results are deliberately terse — a header plus one line per
hit (`path:line code`), so a match costs a handful of tokens instead of pages of
grep context:
```text
1 matches in 805 files:
hooks/mod.rs:153 pub fn refresh_installed_hooks() {
```
`ctx_compose` then ranks the surrounding files and inlines the top symbol, so the
agent gets the answer — not just the location — in the same call.
---
## 4. Advanced reads & symbols
Beyond `ctx_read` (Journey 2):
| Tool | What it does |
|------|--------------|
| `ctx_smart_read` | Auto-pick the optimal read mode for a file |
| `ctx_symbol` | Read just one named symbol block (fn/struct/class) |
| `ctx_outline` | List all symbols of a file with signatures |
| `ctx_retrieve` | Fetch the uncompressed original from cache (CCR) |
| `ctx_compress_memory` | Compress memory/config files (CLAUDE.md, .cursorrules) |
| `ctx_expand` | Zero-loss retrieval of an archived tool output by id |
`ctx_expand` is the escape hatch: any large tool output that was archived can be
fully recovered later (`retrieve`, `list`, `search_all`) — nothing is ever lost,
only deferred.
---
## 5. Execution, workflows & intent
| Tool | What it does |
|------|--------------|
| `ctx_execute` | Sandboxed code execution (11 languages); only stdout enters context |
| `ctx_workflow` | Workflow state machine with evidence tracking |
| `ctx_intent` | Structured intent input with a routing policy |
| `ctx_response` | Compress LLM response text (strip filler, TDD) |
```text
ctx_execute language=python code="print(sum(range(100)))"
ctx_workflow action=start name=release spec=...
ctx_workflow action=transition to=verify
```
`ctx_workflow` enforces an evidence-tracked state machine (e.g. plan → implement
→ verify → ship), so an agent can't claim "done" without recorded evidence.
---
## 6. Dynamic tool loading — keep the surface small
You don't need all 80 tools loaded to use one. Lazy clients (and `minimal`/
`standard` profiles) reach deeper tools on demand:
```text
ctx_discover_tools query="impact analysis" # find tools by keyword
ctx_call name=ctx_impact arguments={...} # call any tool by name
ctx_load_tools action=load category=arch # load a category at runtime
ctx_load_tools action=list # what's loaded
```
Categories: `arch`, `debug`, `memory`, `metrics`, `session`. This is how you keep
per-call overhead low (small visible tool list) without losing access to the full
runtime.
---
## 7. Verification & proofs (CI / audit)
| Tool | CLI | What it does |
|------|-----|--------------|
| `ctx_verify` | `lean-ctx verify` | Verification observability + ContextProofV2 |
| `ctx_proof` | `lean-ctx proof` | Export machine-readable ContextProofV1 |
| `ctx_feedback` | — | Record LLM output tokens + latency for harness feedback |
| `ctx_benchmark` | `lean-ctx benchmark` | Benchmark compression modes for a file/project |
| `ctx_analyze` | — | Entropy analysis → recommends the optimal compression mode |
| `ctx_compare` | — | Preview compression — original vs the bytes lean-ctx would emit (read-only) |
```bash
lean-ctx benchmark run # compare read modes on this repo
lean-ctx benchmark compare # vs. naive baseline, write a report
lean-ctx verify --format both
lean-ctx proof export # ContextProof artifact for audit
```
These exist so the savings are **provable**, not just claimed — useful in CI to
assert a context budget, or for an audit trail (`lean-ctx audit`).
---
## UX notes captured during this walkthrough
- This layer is genuinely advanced; it's gated behind the `power` profile on
purpose so new users aren't overwhelmed. The `radar → plan → compile` pipeline
is the through-line that makes the CFT tools coherent rather than a grab-bag.
- `ctx_compose` deserves promotion: it's the one power tool worth using daily, so
it's also cross-linked from Journey 2.