[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1225":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},1225,"prax-agent","ChanningLua\u002Fprax-agent","ChanningLua","Self-improving agent runtime that learns from experience — test-verify-fix loops, correction detection, cross-project memory, multi-model orchestration.","",null,"Python",291,35,3,0,4.67,"MIT License",false,"main",true,[],"2026-06-12 02:00:24","\u003Cdiv align=\"center\">\n\n# Prax\n\n**Self-improving agent runtime that learns from experience and drives LLM agents through test-verify-fix loops**\n\n\u003Cbr>\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green.svg)](LICENSE)\n[![Python 3.10+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n\n[Quick Start](#quick-start) · [Why Prax](#why-prax) · [Usage](#usage-examples) · [Results](#results) · [Integration Paths](#integration-paths) · [Configuration](#configuration) · [Architecture](#architecture) · [Contributing](#contributing)\n\n\u003Cbr>\n\n\u003C\u002Fdiv>\n\n---\n\n## Quick Start\n\n**Goal**: install Prax, configure an AI key, run your first task — in under 5 minutes. No programming background required.\n\n> Already an experienced user? Jump to [One-liner for experienced users](#one-liner-for-experienced-users) below.\n\n### Step 1 · Install prerequisites\n\nPrax needs **Node.js** (for the CLI wrapper) and **Python 3.10+** (for the runtime). Check if you already have them:\n\n```bash\nnode --version      # should print v14 or higher\npython3 --version   # should print Python 3.10 or higher\n```\n\nMissing one? Install:\n\n| OS | Install command |\n|---|---|\n| **macOS** | `brew install node python@3.12` (install [Homebrew](https:\u002F\u002Fbrew.sh) first if needed) |\n| **Linux** | `sudo apt install nodejs python3 python3-pip` (Debian\u002FUbuntu) or `sudo dnf install nodejs python3` (Fedora) |\n| **Windows** | Use [WSL2](https:\u002F\u002Flearn.microsoft.com\u002Fwindows\u002Fwsl\u002Finstall) and follow the Linux commands. Native Windows is not supported yet (on the 0.5.x roadmap). |\n\n### Step 2 · Install Prax\n\n```bash\nnpm install -g praxagent\n```\n\nVerify:\n\n```bash\nprax --version\n```\n\n**Should print**:\n\n```\nprax 0.5.0\n```\n\n(0.5.0 or higher is fine.)\n\n**See `command not found`?**\n- macOS with Homebrew Node: run `export PATH=\u002Fopt\u002Fhomebrew\u002Fbin:$PATH` then add it to `~\u002F.zshrc`\n- Linux: confirm `npm prefix -g`'s `bin\u002F` is on your `$PATH`\n\n### Step 3 · Point Prax at an LLM service\n\nPrax needs two things to call any LLM: an **endpoint URL** and an **API key**.\nThe procedure is the same whether you use an official API or a third-party proxy.\n\n1. Get the `base_url` and `api_key` from your service's dashboard or docs.\n\n2. Export them as environment variables (the names are arbitrary — any name your shell can `export` works; `LLM_BASE_URL` \u002F `LLM_API_KEY` is just our recommended convention):\n\n   ```bash\n   export LLM_BASE_URL=\"https:\u002F\u002Fyour-service-endpoint\"\n   export LLM_API_KEY=\"your-key\"\n   ```\n\n3. Wire them into Prax via `~\u002F.prax\u002Fmodels.yaml`:\n\n   ```bash\n   mkdir -p ~\u002F.prax\n   cat > ~\u002F.prax\u002Fmodels.yaml \u003C\u003C'YAML'\n   providers:\n     default:\n       base_url_env: LLM_BASE_URL\n       api_key_env: LLM_API_KEY\n       format: openai          # use \"anthropic\" if your service speaks the Anthropic protocol\n       models:\n         - name: \u003Cyour-model>  # the exact model name your service exposes\n   default_model: \u003Cyour-model>\n   YAML\n   ```\n\n   Replace `\u003Cyour-model>` with whatever model identifier your service supports (check the service's `\u002Fv1\u002Fmodels` endpoint or its dashboard).\n\n4. Verify it works:\n\n   ```bash\n   prax providers\n   ```\n\n   You should see your provider listed with the model name and a status. With `LLM_API_KEY` set the status reads `available`; if it shows `missing-credentials`, the env var didn't reach Prax — re-run the `export` and make sure `echo $LLM_API_KEY` echoes the key back.\n\n### Step 4 · Your first task\n\n```bash\nmkdir -p ~\u002FDesktop\u002Fprax-hello && cd ~\u002FDesktop\u002Fprax-hello\nprax prompt \"你是谁？用一句话回答。\"\n```\n\n**Should print** something like:\n\n```\n我是 Prax 这个智能体运行时里跑的 AI 助手，可以帮你执行代码、测试和自动化任务。\n```\n\nCongrats — Prax is working.\n\n### Step 5 · Prove it can touch files (the real power)\n\n```bash\necho \"hello world\" > greeting.txt\nprax prompt \"读 greeting.txt 里的内容，然后把它改成全大写再写回去\"\ncat greeting.txt\n```\n\n**Should print**:\n\n```\nHELLO WORLD\n```\n\nThat's the distinguishing capability — Prax doesn't just chat, it **reads, writes, runs tests, and verifies** in a loop. Everything below builds on this.\n\n**Got stuck at any step?** Common issues:\n\n| Symptom | Fix |\n|---|---|\n| `Error: Model 'xxx' not found` | The `\u003Cyour-model>` name in `~\u002F.prax\u002Fmodels.yaml` doesn't match what your service exposes. Check its `\u002Fv1\u002Fmodels` endpoint or dashboard. |\n| `HTTP 401 \u002F Unauthorized` | Key typo or expired. Regenerate and re-export `LLM_API_KEY`. |\n| Silent exit with no output | Your endpoint is unreachable. Try `curl -s \"$LLM_BASE_URL\"\u002F...` to confirm, or point `LLM_BASE_URL` at a healthy endpoint. |\n| Chinese characters look broken | Set `export LANG=zh_CN.UTF-8` in your shell rc. |\n\n---\n\n## Two ways to use Prax\n\nOnce Step 5 above works, you're ready to pick a usage mode.\n\n### Way 1 · Standalone from the terminal (what you just did)\n\nUse Prax directly at the shell prompt — perfect for automation, cron jobs, CI\u002FCD, or just batching work without opening an IDE.\n\n```bash\nprax prompt \"run pytest -q, fix the first failure, and stop when tests pass\"\nprax prompt \"read README.md and propose 3 concrete improvements as a checklist\"\nprax cron add --name daily-news --schedule \"0 17 * * *\" --prompt \"...\"   # schedule recurring work\n```\n\nPick a role-matched walkthrough to see a real-world pipeline end-to-end:\n\n| Your role | Tutorial | What you'll build |\n|---|---|---|\n| **PM \u002F support lead** | [support-digest](.\u002Fdocs\u002Ftutorials\u002Fsupport-digest.md) | Daily PII-redacted ticket digest, local-only processing |\n| **Content creator \u002F knowledge-base hobbyist** | [ai-news-daily](.\u002Fdocs\u002Ftutorials\u002Fai-news-daily.md) | Scrape X\u002F知乎\u002FBilibili → compile Obsidian wiki → send digest |\n| **Release manager** | [release-notes](.\u002Fdocs\u002Ftutorials\u002Frelease-notes.md) | Git log → CHANGELOG + release announcement |\n| **DevEx \u002F tech writer** | [docs-audit](.\u002Fdocs\u002Ftutorials\u002Fdocs-audit.md) | Weekly \"which docs drifted from the code?\" report |\n| **Engineering lead** | [pr-triage](.\u002Fdocs\u002Ftutorials\u002Fpr-triage.md) | Per-PR triage that actually runs tests on both branches |\n\nAll five tutorials start with sample data — no external API or real PR needed to follow along.\n\n### Way 2 · Inside Claude Code IDE\n\nIf you use [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) and want Prax's skills, commands, and verification hooks available inside the IDE:\n\n```bash\nprax install --profile full\n```\n\nThis copies Prax's bundled skills (4 commercial recipes + 1 content-automation pipeline + 4 developer workflows) into `~\u002F.claude\u002F`, registers Prax MCP servers, and wires hooks so Claude Code runs Prax's verification loop on every code change.\n\nVerify:\n\n```bash\nprax doctor --target claude\n```\n\nNow reopen your project in Claude Code. You'll see new `\u002Fprax-status`, `\u002Fprax-doctor`, `\u002Fprax-plan`, `\u002Fprax-verify` slash commands, the `prax-planner` agent, and Prax's rules automatically applied.\n\nTo undo: `prax uninstall --target claude`.\n\n> **Note**: `prax install` only ships a Claude Code integration today. Any LLM you configure via Step 3 still works as Prax's backend regardless of IDE choice. A skill-export path for additional IDE\u002FCLI hosts is on the 0.5.x roadmap.\n\n### One-liner for experienced users\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FChanningLua\u002Fprax-agent.git && cd prax-agent\npip install -e .\nexport LLM_BASE_URL=\"https:\u002F\u002Fyour-service-endpoint\"\nexport LLM_API_KEY=\"your-key\"\n# (then write ~\u002F.prax\u002Fmodels.yaml as shown in Step 3 above)\nprax prompt \"run pytest -q, fix the failure, and stop when tests pass\"\n```\n\n> Prax can execute shell commands on your behalf. It defaults to `workspace-write` mode — files outside the project are off-limits. Use `--permission-mode read-only` for safe exploration.\n\n---\n\n## Why Prax\n\n**Prax isn't just another LLM wrapper — it's a production-grade agent runtime built for real repository work.**\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fassets\u002Fcapabilities.svg\" alt=\"Agent Capabilities\" width=\"800\">\n\u003C\u002Fp>\n\n### Experience-Based Self-Improvement\n\nPrax learns from experience and self-improves across sessions and projects:\n\n- **Correction Detection** — Automatically detects when users correct mistakes, extracts problem-solution patterns, and applies them in future sessions (multilingual support)\n- **Cross-Project Experience Accumulation** — Builds a global experience store at `~\u002F.prax\u002Fexperiences.json` that improves performance across all your repositories\n- **Structured Error Recovery** — Blacklists failing approaches and tries alternatives, preventing repeated mistakes within the same session\n- **Persistent Memory with Confidence Scoring** — Two backends (JSON\u002FSQLite) track context, decisions, and learned patterns with decay over time\n- **Temporal Knowledge Graph** — Tracks entity relationships and their evolution across sessions\n- **Checkpoint\u002FResume** — Crash recovery ensures no work is lost, even during long-running tasks\n- **Trajectory Recording** — Learns from execution history to identify successful patterns and avoid failure modes\n\nThese capabilities are production-ready and integrated into the core runtime — not experimental plugins.\n\n### Working with Experience & Memory\n\nPrax automatically learns from your work and applies that knowledge to future tasks. Here's how to work with its memory system:\n\n#### Automatic Learning\n\nPrax captures experience in these situations:\n\n- **Correction Detection** — When you correct a mistake (e.g., \"that's wrong\", \"不对\", \"try again\"), Prax extracts the problem-solution pattern and saves it to `.prax\u002Fsolutions\u002F`\n- **Task Completion** — Facts with confidence ≥ 0.7 are persisted to project memory\n- **Tool Failures** — Failed approaches are blacklisted within the session to avoid repetition\n- **Verification Success** — Successful test-fix patterns are recorded as experiences\n- **Session End** — Context snapshots are saved for the next session to resume\n\n#### Viewing Memory\n\nCheck what Prax has learned:\n\n```bash\n# Project-specific memory\ncat .prax\u002Fmemory.json          # Facts and context (JSON backend)\ncat .prax\u002Fmemory.db            # Or SQLite backend\nls .prax\u002Fsolutions\u002F            # Problem-solution patterns\n\n# Global cross-project experiences\ncat ~\u002F.prax\u002Fexperiences.json   # Shared learnings (JSON backend)\ncat ~\u002F.prax\u002Fexperiences.db     # Or SQLite backend\n\n# Session history\nls .prax\u002Fsessions\u002F             # Past conversation transcripts\n```\n\n#### Managing Memory\n\nClean up memory when needed:\n\n```bash\n# Clear project memory\nrm -rf .prax\u002Fmemory.json .prax\u002Fsolutions\u002F\n\n# Clear global experiences\nrm -rf ~\u002F.prax\u002Fexperiences.json\n\n# Clear session history\nrm -rf .prax\u002Fsessions\u002F\n\n# Full reset\nrm -rf .prax\u002F ~\u002F.prax\u002F\n```\n\n#### Memory Backends\n\nPrax supports two memory backends:\n\n| Backend | Storage | Best For | Search |\n|---------|---------|----------|--------|\n| **local** (JSON) | `.prax\u002Fmemory.json` + `~\u002F.prax\u002Fexperiences.json` | Zero-config, small projects | Linear scan |\n| **sqlite** | `.prax\u002Fmemory.db` + `~\u002F.prax\u002Fexperiences.db` | Medium to large projects, full-text search | FTS5 index |\n\nConfigure in `.prax\u002Fconfig.yaml`:\n\n```yaml\nmemory:\n  backend: local  # or sqlite\n  local:\n    max_facts: 100\n    fact_confidence_threshold: 0.7\n    max_experiences: 500\n```\n\n#### Confidence & Decay\n\n- Facts with confidence ≥ **0.7** are persisted to memory\n- Lower-confidence observations are kept in session context only\n- Confidence scoring is static per fact (no time-based decay currently implemented)\n\n### Verification-First Architecture\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fassets\u002Fverification-loop.svg\" alt=\"Verification Loop\" width=\"800\">\n\u003C\u002Fp>\n\nMost tools send a prompt and hope for the best. Prax runs a **test-verify-fix loop**: it executes your test suite, analyzes failures, edits code, and re-runs until tests pass. The verification layer is first-class — not an afterthought.\n\n**Benchmark-proven**: 10\u002F10 repository repair tasks solved in 29.56s average (vs 8\u002F10 baseline across peer frameworks).\n\n**Dual Runtime Paths** — Native CLI for automation and CI\u002FCD, Claude Code integration for interactive development. Choose the right tool for the job.\n\n**Cross-Session Persistent Memory** — Context persists when you close the terminal. Two memory backends: JSON (zero-config) and SQLite (full-text search).\n\n**Multi-Model Orchestration** — OpenAI-compatible, Anthropic-compatible, and custom-protocol LLMs with explicit routing, fallback chains, and cost tracking. Switch models mid-session with `\u002Fmodel \u003Cyour-model>`.\n\n**Security by Design** — Permission modes (`read-only`, `workspace-write`, `danger-full-access`), schema validation, workspace boundaries, and full audit trail.\n\n**Built for Real Codebases** — 25+ built-in tools, middleware pipeline (loop detection, quality gates), multi-language support, and interactive REPL mode.\n\n**Transparent & Measurable** — Real-time cost tracking, session history and replay, benchmark suite included, open architecture for custom extensions.\n\n---\n\n## Usage Examples\n\n### Repository Repair\n\n```\n$ prax \"run pytest -q, fix the failure, and stop when tests pass\"\n▶ VerifyCommand {\"command\": \"pytest -q\"}\n  ✗ FAILED test_auth.py::test_login - AssertionError\n▶ Read {\"file_path\": \"src\u002Fauth.py\"}\n▶ Edit {\"file_path\": \"src\u002Fauth.py\", ...}\n▶ VerifyCommand {\"command\": \"pytest -q\"}\n  ✓ 1 passed in 0.12s\nVerification passed. Task complete.\n```\n\n### One-off Tasks\n\n```bash\nprax \"explain the authentication flow in login.py\"\nprax \"refactor auth.py error handling, replace requests with httpx\"\nprax \"analyze project architecture, list technical debt, prioritize by impact\"\n```\n\n### Interactive REPL\n\n```bash\nprax repl\n\n> analyze the codebase structure\n> fix the SQL injection in user_query.py\n> \u002Fmodel \u003Cyour-model>\n> \u002Fcost\nSession: 12.4K tokens ($0.04)\n```\n\n### Slash Commands\n\n```\n\u002Fmodel, \u002Fsession list, \u002Fplan, \u002Ftodo show, \u002Fdoctor, \u002Fcost, \u002Fhelp\n```\n\n### Scheduled Tasks & Notifications (new in 0.4)\n\nPrax can own scheduled work end-to-end. Declare channels in `.prax\u002Fnotify.yaml`, jobs in `.prax\u002Fcron.yaml`, and `prax cron install` writes the system-level trigger for you (LaunchAgent on macOS, crontab line on Linux).\n\n```bash\n# 1. configure an outbound channel (Feishu \u002F Lark \u002F Email)\ncat > .prax\u002Fnotify.yaml \u003C\u003CYAML\nchannels:\n  daily-digest:\n    provider: feishu_webhook\n    url: \"\\${FEISHU_WEBHOOK_URL}\"\nYAML\n\n# 2. schedule a daily job\nprax cron add \\\n  --name ai-news-daily \\\n  --schedule \"0 17 * * *\" \\\n  --prompt \"触发 ai-news-daily 技能\" \\\n  --notify-on failure \\\n  --notify-channel daily-digest\n\n# 3. install the per-minute dispatcher\nprax cron install\n```\n\nSee [docs\u002Frecipes\u002Fai-news-daily.md](.\u002Fdocs\u002Frecipes\u002Fai-news-daily.md) for the full AI-news-automation recipe.\n\n### Bundled Skills\n\nSkills live under `skills\u002F` (bundled) or `.prax\u002Fskills\u002F` (project-local) and inject prompt guidance when their triggers match. Content \u002F writing helpers:\n\n| Skill | Triggers | Purpose |\n|---|---|---|\n| `browser-scrape` | `抓取` `scrape` `twitter` `zhihu` `bilibili` `autocli` | Drive [AutoCLI](https:\u002F\u002Fgithub.com\u002Fnashsu\u002FAutoCLI) to scrape 55+ sites reusing the user's Chrome login |\n| `knowledge-compile` | `整理` `compile` `wiki` `digest` `知识库` | Turn raw markdown into Obsidian-ready wiki (`index.md` + `topics\u002F` + `daily-digest.md`) |\n| `ai-news-daily` | `ai-news-daily` `daily digest` `日报` | End-to-end pipeline: scrape → compile → notify |\n| `chinese-coding` | `中文` `注释` `文档` | Chinese comments\u002Fdocs style guide |\n\nFour additional **commercial recipes** (`pr-triage`, `release-notes`, `docs-audit`, `support-digest`) ship under `skills\u002F` as well — see the [Commercial Use Cases](#commercial-use-cases-new-in-04) table below for what each one does. Project-local skills in `.prax\u002Fskills\u002F` override bundled ones with the same name.\n\n### Commercial Use Cases (new in 0.4)\n\nFour recipes tuned for team\u002Fenterprise workflows — designed to ship **reviewable artefacts** (not \"AI said so\" hallucinations) and to keep destructive actions firmly in human hands.\n\n| Case | Target user | Prax differentiator | Recipe |\n|---|---|---|---|\n| **PR Triage Bot** | Eng lead | *Actually* checks out the PR branch and runs tests via `VerifyCommand`; compares against base. No GitHub side-effects. | [`docs\u002Frecipes\u002Fpr-triage.md`](.\u002Fdocs\u002Frecipes\u002Fpr-triage.md) |\n| **Release Notes Generator** | Release manager | Reads git log + issue refs, groups by Conventional Commits into Keep-a-Changelog sections, idempotent per version. Writes files; never tags\u002Fpushes\u002Fpublishes. | [`docs\u002Frecipes\u002Frelease-notes.md`](.\u002Fdocs\u002Frecipes\u002Frelease-notes.md) |\n| **Docs Freshness Audit** | DevEx \u002F tech writer | Diffs recently-changed source vs doc mentions, outputs an evidence-cited drift report. Never edits docs itself. | [`docs\u002Frecipes\u002Fdocs-audit.md`](.\u002Fdocs\u002Frecipes\u002Fdocs-audit.md) |\n| **Support Ticket Digest** | PM \u002F support lead | Zero external API calls; PII redaction runs before any LLM sees the data — compliance-grade local-only processing. | [`docs\u002Frecipes\u002Fsupport-digest.md`](.\u002Fdocs\u002Frecipes\u002Fsupport-digest.md) |\n\nEach case is 10-minute deployable, works with the cron\u002Fnotify plumbing above, and has hard contractual limits baked into its SKILL.md (no auto-approve, no auto-merge, no auto-refund, no auto-edit-docs) so the agent cannot drift.\n\n---\n\n## Results\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fassets\u002Fbenchmark-results.svg\" alt=\"Benchmark Results\" width=\"800\">\n\u003C\u002Fp>\n\nPrax achieves **10\u002F10 success rate** on repository repair tasks, completing them in **29.56s average** — 49% faster than the cross-framework baseline.\n\n| Metric | Prax | Framework Baseline | Improvement |\n|--------|------|-------------------|-------------|\n| Success Rate | **10\u002F10** (100%) | 8\u002F10 (80%) | **+25%** |\n| Average Time | **29.56s** | 58.44s | **-49%** |\n| Timeouts | **0** | 2 | **-100%** |\n\n**What drives these results:**\n- **Verification-First Architecture** — Test-verify-fix loops catch errors early\n- **Quality Gate Middleware** — Loop detection and convergence guidance\n- **Smart Sandbox Downgrade** — Verification commands bypass unnecessary overhead\n- **Experience-Based Learning** — Correction detection, error pattern blacklisting, and cross-session memory accumulation\n\nBenchmark methodology: 10 repeated rounds on real repository-fix tasks with session state preserved. See [docs\u002FBENCHMARKS.md](.\u002Fdocs\u002FBENCHMARKS.md) for full details.\n\n---\n\n## Integration Paths\n\nPrax offers two runtime paths — choose the right tool for the job:\n\n| Feature | Native Runtime | Claude Code Integration |\n|---------|---------------|------------------------|\n| Execution | CLI commands | Claude Code IDE |\n| Interaction | Command-line REPL | IDE conversation interface |\n| Context Management | Local JSON\u002FSQLite | Claude Code sessions |\n| Tool Integration | 25+ built-in tools | Claude Code tools + Prax extensions |\n| Use Cases | Automation, CI\u002FCD | Interactive development, code review |\n\n### Claude Code Integration Advantages\n\n- **IDE Native Experience** — Use Prax capabilities directly within Claude Code\n- **Seamless Integration** — Deep integration via MCP servers and Hooks\n- **Security Protection** — Pre-write secret scanning, pre-commit quality checks\n- **Session Persistence** — Auto-save session state, resume from breakpoints\n- **Bidirectional Collaboration** — Claude Code's conversational ability + Prax's verification loop\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fassets\u002Fintegration-paths.svg\" alt=\"Integration Paths\" width=\"800\">\n\u003C\u002Fp>\n\n> Installation lives under [Way 2 · Inside Claude Code IDE](#way-2--inside-claude-code-ide) above (`prax install --profile full`, then `prax doctor --target claude`).\n\n---\n\n## Configuration\n\n**Models** — create `.prax\u002Fmodels.yaml` in your project (or edit the global `~\u002F.prax\u002Fmodels.yaml` from Quick Start Step 3):\n\n```yaml\ndefault_model: \u003Cyour-model>\n\nproviders:\n  default:\n    base_url_env: LLM_BASE_URL    # any env var name; declared in Quick Start Step 3\n    api_key_env: LLM_API_KEY\n    format: openai                # use \"anthropic\" if your endpoint speaks the Anthropic protocol\n    models:\n      - name: \u003Cyour-model>        # the model identifier your service exposes\n```\n\nTo wire multiple endpoints (e.g. one OpenAI-compatible and one Anthropic-compatible), declare another `providers:` entry with its own `base_url_env` \u002F `api_key_env` and list its models. Each provider can also override `base_url` directly instead of via env (see `core\u002Fllm_client.py` for the full schema).\n\n**Permission modes**\n\n| Mode | What it allows | Default |\n|------|---------------|---------|\n| `read-only` | No file writes, no shell commands | |\n| `workspace-write` | Modify files inside the project | ✓ |\n| `danger-full-access` | Unrestricted | |\n\n```bash\nprax --permission-mode read-only \"analyze security vulnerabilities\"\n```\n\n**Runtime paths**\n\n| Flag | Behavior |\n|------|----------|\n| `--runtime-path auto` | Uses Claude CLI bridge if `claude` is installed, otherwise native runtime (default) |\n| `--runtime-path native` | Always use the native runtime |\n| `--runtime-path bridge` | Always use the Claude CLI bridge; fails if `claude` is not installed |\n\n**Data directory**\n\n| Path | Content |\n|------|---------|\n| `.prax\u002Fsessions\u002F` | Conversation history |\n| `.prax\u002Fmemory.json` | Project memory (auto-extracted facts, JSON backend) |\n| `.prax\u002Fmemory.db` | Project memory (SQLite backend) |\n| `.prax\u002Fsolutions\u002F` | Problem-solution patterns from correction detection |\n| `.prax\u002Ftodos.json` | Current task list |\n| `.prax\u002Fagents\u002F` | Custom agent definitions |\n| `.prax\u002Fmodels.yaml` | Model configuration |\n| `.prax\u002Fconfig.yaml` | Project-level configuration (memory backend, etc.) |\n| `~\u002F.prax\u002F` | Global config (cross-project) |\n| `~\u002F.prax\u002Fexperiences.json` | Global cross-project experiences (JSON backend) |\n| `~\u002F.prax\u002Fexperiences.db` | Global cross-project experiences (SQLite backend) |\n| `~\u002F.prax\u002Fconfig.yaml` | User-level configuration |\n\n---\n\n## Architecture\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fassets\u002Farchitecture.svg\" alt=\"Architecture\" width=\"800\">\n\u003C\u002Fp>\n\nKey modules:\n\n| Path | Role |\n|------|------|\n| `core\u002Fagent_loop.py` | Core orchestration cycle (25 iter max, circuit breaker) |\n| `core\u002Fmiddleware.py` | VerificationGuidance, LoopDetection, QualityGate, etc. |\n| `tools\u002Fverify_command.py` | Bounded verification (pytest, npm test, cargo test, go test) |\n| `tools\u002Fsandbox_bash.py` | Auto-downgrade: verify commands bypass sandbox overhead |\n| `core\u002Fmemory\u002F` | Pluggable backends (JSON \u002F SQLite) |\n| `core\u002Fllm_client.py` | Provider registry, multi-model routing |\n| `agents\u002F` | Ralph (planner), Sisyphus (executor), Team (parallel) |\n| `workflows\u002F` | Task decomposition and orchestration |\n\n---\n\n## Contributing\n\nWe welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for:\n- Development setup\n- Code style guidelines\n- Testing requirements\n- PR process\n\nFor benchmark and reproducibility work, also see [docs\u002FBENCHMARKS.md](.\u002Fdocs\u002FBENCHMARKS.md).\n\n---\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n","Prax 是一个能够从经验中学习并自我改进的代理运行时，通过测试-验证-修复循环来驱动大语言模型（LLM）代理。其核心功能包括错误纠正检测、跨项目记忆以及多模型编排，采用 Python 3.10+ 开发。适用于需要持续优化和自适应能力的人工智能应用场景，如自动化测试、基于反馈的学习系统等。MIT 许可证下开源，社区活跃度良好，适合希望快速搭建具有自学习能力AI系统的开发者使用。",2,"2026-06-11 02:42:26","CREATED_QUERY"]