| name | nox-auto-capture |
| description | Automatically captures corrections, decisions, facts, and lessons from agent conversations and stores them in a local Qdrant vector database. Filters system noise with 30+ skip patterns, deduplicates via SHA256, and only captures user messages. Use when building agents that should learn from conversations without manual memory management.
|
| license | MIT |
| compatibility | OpenClaw 2026.1.30+, Node.js >= 20, Qdrant (local), mcporter CLI |
| metadata | {"author":"rotomi","version":"2.0.0","platform":"openclaw-plugin"} |
Auto-Capture — Passive Learning for AI Agents
Silently watches conversations and stores the important parts — corrections, decisions, new facts, lessons learned — in your local Qdrant database. Your agent builds memory automatically.
What It Does
- Signal Detection — identifies user messages containing corrections, decisions, facts, or lessons worth remembering
- Noise Filtering — 30+ skip patterns automatically ignore briefings, system events, exec outputs, and technical noise
- Deduplication — SHA256 content hashing prevents storing the same information twice
- Content Cleaning — strips metadata envelopes, markdown headers, and formatting artifacts before storage
- User-Only Capture — only stores human messages (v2.0), not assistant responses or system messages
Configuration
In your openclaw.json plugins section:
{
"id": "nox-auto-capture",
"enabled": true,
"config": {}
}
Currently uses sensible defaults. Future versions will expose:
- Custom skip patterns
- Capture sensitivity threshold
- Storage collection name
- Maximum capture rate
What Gets Captured
| Signal | Example | Stored As |
|---|
| Correction | "No, the meeting is Thursday not Wednesday" | Fact correction |
| Decision | "Let's go with option B" | Decision record |
| New fact | "The API key expires in March" | Factual memory |
| Lesson | "Last time we forgot to backup first" | Lesson learned |
| Preference | "Always use bullet points for summaries" | User preference |
What Gets Skipped
- Morning/evening briefings and digests
- System status updates and health checks
- Shell command outputs and exec results
- Memory operations (sync, hygiene, search results)
- Cron triggers and heartbeat messages
- Git operations and CI/CD notifications
- Messages shorter than ~20 characters
Architecture
User sends message
│
▼
auto-capture intercepts (before_agent_start hook)
│
├── Skip pattern match? → SKIP
├── System/assistant message? → SKIP
├── SHA256 duplicate? → SKIP (logged)
├── Too short / no signal? → SKIP
│
▼
Clean content (strip metadata, normalize)
│
▼
Store in Qdrant (via mcporter) with metadata:
- timestamp, source: "auto-capture"
- content hash for dedup
Production Stats
Battle-tested on a Raspberry Pi 5 running 24/7:
- 2,284 clean memories after hygiene (started at 2,488)
- 7.1% junk rate caught and removed by v2.0 filters
- 0 duplicates since SHA256 dedup was added
Edge Cases
- Qdrant unavailable — capture silently skipped, no session impact
- mcporter timeout — logged and skipped (5s default)
- Rapid messages — internal cooldown prevents burst-storing
- Very long messages — truncated to fit embedding model limits
References