[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M799CS82KD4EPD40FSA516C8":3,"skill-same:01M799CS82KD4EPD40FSA516C8":44},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":29,"install":30,"resources":43},"01M799CS82KD4EPD40FSA516C8","AgentDB Advanced Features",null,"Master advanced AgentDB features including QUIC synchronization, multi-database management, custom distance metrics, hybrid search, and distributed systems integration. Use when building distributed AI systems, multi-agent coordination, or advanced vector search applications.","pjherron\u002Fhypoc","pjherron","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F800763?v=4","01M799C7XC0XKKW2D6RMYNHCY8","Patrick Herron","01M799C7XZPGZ9QZ7XAQN5MQAN",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Fagentdb-advanced\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: \"AgentDB Advanced Features\"\ndescription: \"Master advanced AgentDB features including QUIC synchronization, multi-database management, custom distance metrics, hybrid search, and distributed systems integration. Use when building distributed AI systems, multi-agent coordination, or advanced vector search applications.\"\n---\n\n# AgentDB Advanced Features\n\n## What This Skill Does\n\nCovers advanced AgentDB capabilities for distributed systems, multi-database coordination, custom distance metrics, hybrid search (vector + metadata), QUIC synchronization, and production deployment patterns. Enables building sophisticated AI systems with sub-millisecond cross-node communication and advanced search capabilities.\n\n**Performance**: \u003C1ms QUIC sync, hybrid search with filters, custom distance metrics.\n\n## Prerequisites\n\n- Node.js 18+\n- AgentDB v1.0.7+ (via agentic-flow)\n- Understanding of distributed systems (for QUIC sync)\n- Vector search fundamentals\n\n---\n\n## QUIC Synchronization\n\n### What is QUIC Sync?\n\nQUIC (Quick UDP Internet Connections) enables sub-millisecond latency synchronization between AgentDB instances across network boundaries with automatic retry, multiplexing, and encryption.\n\n**Benefits**:\n- \u003C1ms latency between nodes\n- Multiplexed streams (multiple operations simultaneously)\n- Built-in encryption (TLS 1.3)\n- Automatic retry and recovery\n- Event-based broadcasting\n\n### Enable QUIC Sync\n\n```typescript\nimport { createAgentDBAdapter } from 'agentic-flow\u002Freasoningbank';\n\n\u002F\u002F Initialize with QUIC synchronization\nconst adapter = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fdistributed.db',\n  enableQUICSync: true,\n  syncPort: 4433,\n  syncPeers: [\n    '192.168.1.10:4433',\n    '192.168.1.11:4433',\n    '192.168.1.12:4433',\n  ],\n});\n\n\u002F\u002F Patterns automatically sync across all peers\nawait adapter.insertPattern({\n  \u002F\u002F ... pattern data\n});\n\n\u002F\u002F Available on all peers within ~1ms\n```\n\n### QUIC Configuration\n\n```typescript\nconst adapter = await createAgentDBAdapter({\n  enableQUICSync: true,\n  syncPort: 4433,              \u002F\u002F QUIC server port\n  syncPeers: ['host1:4433'],   \u002F\u002F Peer addresses\n  syncInterval: 1000,          \u002F\u002F Sync interval (ms)\n  syncBatchSize: 100,          \u002F\u002F Patterns per batch\n  maxRetries: 3,               \u002F\u002F Retry failed syncs\n  compression: true,           \u002F\u002F Enable compression\n});\n```\n\n### Multi-Node Deployment\n\n```bash\n# Node 1 (192.168.1.10)\nAGENTDB_QUIC_SYNC=true \\\nAGENTDB_QUIC_PORT=4433 \\\nAGENTDB_QUIC_PEERS=192.168.1.11:4433,192.168.1.12:4433 \\\nnode server.js\n\n# Node 2 (192.168.1.11)\nAGENTDB_QUIC_SYNC=true \\\nAGENTDB_QUIC_PORT=4433 \\\nAGENTDB_QUIC_PEERS=192.168.1.10:4433,192.168.1.12:4433 \\\nnode server.js\n\n# Node 3 (192.168.1.12)\nAGENTDB_QUIC_SYNC=true \\\nAGENTDB_QUIC_PORT=4433 \\\nAGENTDB_QUIC_PEERS=192.168.1.10:4433,192.168.1.11:4433 \\\nnode server.js\n```\n\n---\n\n## Distance Metrics\n\n### Cosine Similarity (Default)\n\nBest for normalized vectors, semantic similarity:\n\n```bash\n# CLI\nnpx agentdb@latest query .\u002Fvectors.db \"[0.1,0.2,...]\" -m cosine\n\n# API\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  metric: 'cosine',\n  k: 10,\n});\n```\n\n**Use Cases**:\n- Text embeddings (BERT, GPT, etc.)\n- Semantic search\n- Document similarity\n- Most general-purpose applications\n\n**Formula**: `cos(θ) = (A · B) \u002F (||A|| × ||B||)`\n**Range**: [-1, 1] (1 = identical, -1 = opposite)\n\n### Euclidean Distance (L2)\n\nBest for spatial data, geometric similarity:\n\n```bash\n# CLI\nnpx agentdb@latest query .\u002Fvectors.db \"[0.1,0.2,...]\" -m euclidean\n\n# API\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  metric: 'euclidean',\n  k: 10,\n});\n```\n\n**Use Cases**:\n- Image embeddings\n- Spatial data\n- Computer vision\n- When vector magnitude matters\n\n**Formula**: `d = √(Σ(ai - bi)²)`\n**Range**: [0, ∞] (0 = identical, ∞ = very different)\n\n### Dot Product\n\nBest for pre-normalized vectors, fast computation:\n\n```bash\n# CLI\nnpx agentdb@latest query .\u002Fvectors.db \"[0.1,0.2,...]\" -m dot\n\n# API\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  metric: 'dot',\n  k: 10,\n});\n```\n\n**Use Cases**:\n- Pre-normalized embeddings\n- Fast similarity computation\n- When vectors are already unit-length\n\n**Formula**: `dot = Σ(ai × bi)`\n**Range**: [-∞, ∞] (higher = more similar)\n\n### Custom Distance Metrics\n\n```typescript\n\u002F\u002F Implement custom distance function\nfunction customDistance(vec1: number[], vec2: number[]): number {\n  \u002F\u002F Weighted Euclidean distance\n  const weights = [1.0, 2.0, 1.5, ...];\n  let sum = 0;\n  for (let i = 0; i \u003C vec1.length; i++) {\n    sum += weights[i] * Math.pow(vec1[i] - vec2[i], 2);\n  }\n  return Math.sqrt(sum);\n}\n\n\u002F\u002F Use in search (requires custom implementation)\n```\n\n---\n\n## Hybrid Search (Vector + Metadata)\n\n### Basic Hybrid Search\n\nCombine vector similarity with metadata filtering:\n\n```typescript\n\u002F\u002F Store documents with metadata\nawait adapter.insertPattern({\n  id: '',\n  type: 'document',\n  domain: 'research-papers',\n  pattern_data: JSON.stringify({\n    embedding: documentEmbedding,\n    text: documentText,\n    metadata: {\n      author: 'Jane Smith',\n      year: 2025,\n      category: 'machine-learning',\n      citations: 150,\n    }\n  }),\n  confidence: 1.0,\n  usage_count: 0,\n  success_count: 0,\n  created_at: Date.now(),\n  last_used: Date.now(),\n});\n\n\u002F\u002F Hybrid search: vector similarity + metadata filters\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'research-papers',\n  k: 20,\n  filters: {\n    year: { $gte: 2023 },          \u002F\u002F Published 2023 or later\n    category: 'machine-learning',   \u002F\u002F ML papers only\n    citations: { $gte: 50 },       \u002F\u002F Highly cited\n  },\n});\n```\n\n### Advanced Filtering\n\n```typescript\n\u002F\u002F Complex metadata queries\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'products',\n  k: 50,\n  filters: {\n    price: { $gte: 10, $lte: 100 },      \u002F\u002F Price range\n    category: { $in: ['electronics', 'gadgets'] },  \u002F\u002F Multiple categories\n    rating: { $gte: 4.0 },                \u002F\u002F High rated\n    inStock: true,                        \u002F\u002F Available\n    tags: { $contains: 'wireless' },      \u002F\u002F Has tag\n  },\n});\n```\n\n### Weighted Hybrid Search\n\nCombine vector and metadata scores:\n\n```typescript\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'content',\n  k: 20,\n  hybridWeights: {\n    vectorSimilarity: 0.7,  \u002F\u002F 70% weight on semantic similarity\n    metadataScore: 0.3,     \u002F\u002F 30% weight on metadata match\n  },\n  filters: {\n    category: 'technology',\n    recency: { $gte: Date.now() - 30 * 24 * 3600000 },  \u002F\u002F Last 30 days\n  },\n});\n```\n\n---\n\n## Multi-Database Management\n\n### Multiple Databases\n\n```typescript\n\u002F\u002F Separate databases for different domains\nconst knowledgeDB = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fknowledge.db',\n});\n\nconst conversationDB = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fconversations.db',\n});\n\nconst codeDB = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fcode.db',\n});\n\n\u002F\u002F Use appropriate database for each task\nawait knowledgeDB.insertPattern({ \u002F* knowledge *\u002F });\nawait conversationDB.insertPattern({ \u002F* conversation *\u002F });\nawait codeDB.insertPattern({ \u002F* code *\u002F });\n```\n\n### Database Sharding\n\n```typescript\n\u002F\u002F Shard by domain for horizontal scaling\nconst shards = {\n  'domain-a': await createAgentDBAdapter({ dbPath: '.agentdb\u002Fshard-a.db' }),\n  'domain-b': await createAgentDBAdapter({ dbPath: '.agentdb\u002Fshard-b.db' }),\n  'domain-c': await createAgentDBAdapter({ dbPath: '.agentdb\u002Fshard-c.db' }),\n};\n\n\u002F\u002F Route queries to appropriate shard\nfunction getDBForDomain(domain: string) {\n  const shardKey = domain.split('-')[0];  \u002F\u002F Extract shard key\n  return shards[shardKey] || shards['domain-a'];\n}\n\n\u002F\u002F Insert to correct shard\nconst db = getDBForDomain('domain-a-task');\nawait db.insertPattern({ \u002F* ... *\u002F });\n```\n\n---\n\n## MMR (Maximal Marginal Relevance)\n\nRetrieve diverse results to avoid redundancy:\n\n```typescript\n\u002F\u002F Without MMR: Similar results may be redundant\nconst standardResults = await adapter.retrieveWithReasoning(queryEmbedding, {\n  k: 10,\n  useMMR: false,\n});\n\n\u002F\u002F With MMR: Diverse, non-redundant results\nconst diverseResults = await adapter.retrieveWithReasoning(queryEmbedding, {\n  k: 10,\n  useMMR: true,\n  mmrLambda: 0.5,  \u002F\u002F Bhypocce relevance (0) vs diversity (1)\n});\n```\n\n**MMR Parameters**:\n- `mmrLambda = 0`: Maximum relevance (may be redundant)\n- `mmrLambda = 0.5`: Bhypocced (default)\n- `mmrLambda = 1`: Maximum diversity (may be less relevant)\n\n**Use Cases**:\n- Search result diversification\n- Recommendation systems\n- Avoiding echo chambers\n- Exploratory search\n\n---\n\n## Context Synthesis\n\nGenerate rich context from multiple memories:\n\n```typescript\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'problem-solving',\n  k: 10,\n  synthesizeContext: true,  \u002F\u002F Enable context synthesis\n});\n\n\u002F\u002F ContextSynthesizer creates coherent narrative\nconsole.log('Synthesized Context:', result.context);\n\u002F\u002F \"Based on 10 similar problem-solving attempts, the most effective\n\u002F\u002F  approach involves: 1) analyzing root cause, 2) brainstorming solutions,\n\u002F\u002F  3) evaluating trade-offs, 4) implementing incrementally. Success rate: 85%\"\n\nconsole.log('Patterns:', result.patterns);\n\u002F\u002F Extracted common patterns across memories\n```\n\n---\n\n## Production Patterns\n\n### Connection Pooling\n\n```typescript\n\u002F\u002F Singleton pattern for shared adapter\nclass AgentDBPool {\n  private static instance: AgentDBAdapter;\n\n  static async getInstance() {\n    if (!this.instance) {\n      this.instance = await createAgentDBAdapter({\n        dbPath: '.agentdb\u002Fproduction.db',\n        quantizationType: 'scalar',\n        cacheSize: 2000,\n      });\n    }\n    return this.instance;\n  }\n}\n\n\u002F\u002F Use in application\nconst db = await AgentDBPool.getInstance();\nconst results = await db.retrieveWithReasoning(queryEmbedding, { k: 10 });\n```\n\n### Error Handling\n\n```typescript\nasync function safeRetrieve(queryEmbedding: number[], options: any) {\n  try {\n    const result = await adapter.retrieveWithReasoning(queryEmbedding, options);\n    return result;\n  } catch (error) {\n    if (error.code === 'DIMENSION_MISMATCH') {\n      console.error('Query embedding dimension mismatch');\n      \u002F\u002F Handle dimension error\n    } else if (error.code === 'DATABASE_LOCKED') {\n      \u002F\u002F Retry with exponential backoff\n      await new Promise(resolve => setTimeout(resolve, 100));\n      return safeRetrieve(queryEmbedding, options);\n    }\n    throw error;\n  }\n}\n```\n\n### Monitoring and Logging\n\n```typescript\n\u002F\u002F Performance monitoring\nconst startTime = Date.now();\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, { k: 10 });\nconst latency = Date.now() - startTime;\n\nif (latency > 100) {\n  console.warn('Slow query detected:', latency, 'ms');\n}\n\n\u002F\u002F Log statistics\nconst stats = await adapter.getStats();\nconsole.log('Database Stats:', {\n  totalPatterns: stats.totalPatterns,\n  dbSize: stats.dbSize,\n  cacheHitRate: stats.cacheHitRate,\n  avgSearchLatency: stats.avgSearchLatency,\n});\n```\n\n---\n\n## CLI Advanced Operations\n\n### Database Import\u002FExport\n\n```bash\n# Export with compression\nnpx agentdb@latest export .\u002Fvectors.db .\u002Fbackup.json.gz --compress\n\n# Import from backup\nnpx agentdb@latest import .\u002Fbackup.json.gz --decompress\n\n# Merge databases\nnpx agentdb@latest merge .\u002Fdb1.sqlite .\u002Fdb2.sqlite .\u002Fmerged.sqlite\n```\n\n### Database Optimization\n\n```bash\n# Vacuum database (reclaim space)\nsqlite3 .agentdb\u002Fvectors.db \"VACUUM;\"\n\n# Analyze for query optimization\nsqlite3 .agentdb\u002Fvectors.db \"ANALYZE;\"\n\n# Rebuild indices\nnpx agentdb@latest reindex .\u002Fvectors.db\n```\n\n---\n\n## Environment Variables\n\n```bash\n# AgentDB configuration\nAGENTDB_PATH=.agentdb\u002Freasoningbank.db\nAGENTDB_ENABLED=true\n\n# Performance tuning\nAGENTDB_QUANTIZATION=binary     # binary|scalar|product|none\nAGENTDB_CACHE_SIZE=2000\nAGENTDB_HNSW_M=16\nAGENTDB_HNSW_EF=100\n\n# Learning plugins\nAGENTDB_LEARNING=true\n\n# Reasoning agents\nAGENTDB_REASONING=true\n\n# QUIC synchronization\nAGENTDB_QUIC_SYNC=true\nAGENTDB_QUIC_PORT=4433\nAGENTDB_QUIC_PEERS=host1:4433,host2:4433\n```\n\n---\n\n## Troubleshooting\n\n### Issue: QUIC sync not working\n\n```bash\n# Check firewall allows UDP port 4433\nsudo ufw allow 4433\u002Fudp\n\n# Verify peers are reachable\nping host1\n\n# Check QUIC logs\nDEBUG=agentdb:quic node server.js\n```\n\n### Issue: Hybrid search returns no results\n\n```typescript\n\u002F\u002F Relax filters\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  k: 100,  \u002F\u002F Increase k\n  filters: {\n    \u002F\u002F Remove or relax filters\n  },\n});\n```\n\n### Issue: Memory consolidation too aggressive\n\n```typescript\n\u002F\u002F Disable automatic optimization\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  optimizeMemory: false,  \u002F\u002F Disable auto-consolidation\n  k: 10,\n});\n```\n\n---\n\n## Learn More\n\n- **QUIC Protocol**: docs\u002Fquic-synchronization.pdf\n- **Hybrid Search**: docs\u002Fhybrid-search-guide.md\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fruvnet\u002Fagentic-flow\u002Ftree\u002Fmain\u002Fpackages\u002Fagentdb\n- **Website**: https:\u002F\u002Fagentdb.ruv.io\n\n---\n\n**Category**: Advanced \u002F Distributed Systems\n**Difficulty**: Advanced\n**Estimated Time**: 45-60 minutes\n","# AgentDB Advanced Features\n\n## What This Skill Does\n\nCovers advanced AgentDB capabilities for distributed systems, multi-database coordination, custom distance metrics, hybrid search (vector + metadata), QUIC synchronization, and production deployment patterns. Enables building sophisticated AI systems with sub-millisecond cross-node communication and advanced search capabilities.\n\n**Performance**: \u003C1ms QUIC sync, hybrid search with filters, custom distance metrics.\n\n## Prerequisites\n\n- Node.js 18+\n- AgentDB v1.0.7+ (via agentic-flow)\n- Understanding of distributed systems (for QUIC sync)\n- Vector search fundamentals\n\n---\n\n## QUIC Synchronization\n\n### What is QUIC Sync?\n\nQUIC (Quick UDP Internet Connections) enables sub-millisecond latency synchronization between AgentDB instances across network boundaries with automatic retry, multiplexing, and encryption.\n\n**Benefits**:\n- \u003C1ms latency between nodes\n- Multiplexed streams (multiple operations simultaneously)\n- Built-in encryption (TLS 1.3)\n- Automatic retry and recovery\n- Event-based broadcasting\n\n### Enable QUIC Sync\n\n```typescript\nimport { createAgentDBAdapter } from 'agentic-flow\u002Freasoningbank';\n\n\u002F\u002F Initialize with QUIC synchronization\nconst adapter = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fdistributed.db',\n  enableQUICSync: true,\n  syncPort: 4433,\n  syncPeers: [\n    '192.168.1.10:4433',\n    '192.168.1.11:4433',\n    '192.168.1.12:4433',\n  ],\n});\n\n\u002F\u002F Patterns automatically sync across all peers\nawait adapter.insertPattern({\n  \u002F\u002F ... pattern data\n});\n\n\u002F\u002F Available on all peers within ~1ms\n```\n\n### QUIC Configuration\n\n```typescript\nconst adapter = await createAgentDBAdapter({\n  enableQUICSync: true,\n  syncPort: 4433,              \u002F\u002F QUIC server port\n  syncPeers: ['host1:4433'],   \u002F\u002F Peer addresses\n  syncInterval: 1000,          \u002F\u002F Sync interval (ms)\n  syncBatchSize: 100,          \u002F\u002F Patterns per batch\n  maxRetries: 3,               \u002F\u002F Retry failed syncs\n  compression: true,           \u002F\u002F Enable compression\n});\n```\n\n### Multi-Node Deployment\n\n```bash\n# Node 1 (192.168.1.10)\nAGENTDB_QUIC_SYNC=true \\\nAGENTDB_QUIC_PORT=4433 \\\nAGENTDB_QUIC_PEERS=192.168.1.11:4433,192.168.1.12:4433 \\\nnode server.js\n\n# Node 2 (192.168.1.11)\nAGENTDB_QUIC_SYNC=true \\\nAGENTDB_QUIC_PORT=4433 \\\nAGENTDB_QUIC_PEERS=192.168.1.10:4433,192.168.1.12:4433 \\\nnode server.js\n\n# Node 3 (192.168.1.12)\nAGENTDB_QUIC_SYNC=true \\\nAGENTDB_QUIC_PORT=4433 \\\nAGENTDB_QUIC_PEERS=192.168.1.10:4433,192.168.1.11:4433 \\\nnode server.js\n```\n\n---\n\n## Distance Metrics\n\n### Cosine Similarity (Default)\n\nBest for normalized vectors, semantic similarity:\n\n```bash\n# CLI\nnpx agentdb@latest query .\u002Fvectors.db \"[0.1,0.2,...]\" -m cosine\n\n# API\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  metric: 'cosine',\n  k: 10,\n});\n```\n\n**Use Cases**:\n- Text embeddings (BERT, GPT, etc.)\n- Semantic search\n- Document similarity\n- Most general-purpose applications\n\n**Formula**: `cos(θ) = (A · B) \u002F (||A|| × ||B||)`\n**Range**: [-1, 1] (1 = identical, -1 = opposite)\n\n### Euclidean Distance (L2)\n\nBest for spatial data, geometric similarity:\n\n```bash\n# CLI\nnpx agentdb@latest query .\u002Fvectors.db \"[0.1,0.2,...]\" -m euclidean\n\n# API\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  metric: 'euclidean',\n  k: 10,\n});\n```\n\n**Use Cases**:\n- Image embeddings\n- Spatial data\n- Computer vision\n- When vector magnitude matters\n\n**Formula**: `d = √(Σ(ai - bi)²)`\n**Range**: [0, ∞] (0 = identical, ∞ = very different)\n\n### Dot Product\n\nBest for pre-normalized vectors, fast computation:\n\n```bash\n# CLI\nnpx agentdb@latest query .\u002Fvectors.db \"[0.1,0.2,...]\" -m dot\n\n# API\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  metric: 'dot',\n  k: 10,\n});\n```\n\n**Use Cases**:\n- Pre-normalized embeddings\n- Fast similarity computation\n- When vectors are already unit-length\n\n**Formula**: `dot = Σ(ai × bi)`\n**Range**: [-∞, ∞] (higher = more similar)\n\n### Custom Distance Metrics\n\n```typescript\n\u002F\u002F Implement custom distance function\nfunction customDistance(vec1: number[], vec2: number[]): number {\n  \u002F\u002F Weighted Euclidean distance\n  const weights = [1.0, 2.0, 1.5, ...];\n  let sum = 0;\n  for (let i = 0; i \u003C vec1.length; i++) {\n    sum += weights[i] * Math.pow(vec1[i] - vec2[i], 2);\n  }\n  return Math.sqrt(sum);\n}\n\n\u002F\u002F Use in search (requires custom implementation)\n```\n\n---\n\n## Hybrid Search (Vector + Metadata)\n\n### Basic Hybrid Search\n\nCombine vector similarity with metadata filtering:\n\n```typescript\n\u002F\u002F Store documents with metadata\nawait adapter.insertPattern({\n  id: '',\n  type: 'document',\n  domain: 'research-papers',\n  pattern_data: JSON.stringify({\n    embedding: documentEmbedding,\n    text: documentText,\n    metadata: {\n      author: 'Jane Smith',\n      year: 2025,\n      category: 'machine-learning',\n      citations: 150,\n    }\n  }),\n  confidence: 1.0,\n  usage_count: 0,\n  success_count: 0,\n  created_at: Date.now(),\n  last_used: Date.now(),\n});\n\n\u002F\u002F Hybrid search: vector similarity + metadata filters\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'research-papers',\n  k: 20,\n  filters: {\n    year: { $gte: 2023 },          \u002F\u002F Published 2023 or later\n    category: 'machine-learning',   \u002F\u002F ML papers only\n    citations: { $gte: 50 },       \u002F\u002F Highly cited\n  },\n});\n```\n\n### Advanced Filtering\n\n```typescript\n\u002F\u002F Complex metadata queries\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'products',\n  k: 50,\n  filters: {\n    price: { $gte: 10, $lte: 100 },      \u002F\u002F Price range\n    category: { $in: ['electronics', 'gadgets'] },  \u002F\u002F Multiple categories\n    rating: { $gte: 4.0 },                \u002F\u002F High rated\n    inStock: true,                        \u002F\u002F Available\n    tags: { $contains: 'wireless' },      \u002F\u002F Has tag\n  },\n});\n```\n\n### Weighted Hybrid Search\n\nCombine vector and metadata scores:\n\n```typescript\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'content',\n  k: 20,\n  hybridWeights: {\n    vectorSimilarity: 0.7,  \u002F\u002F 70% weight on semantic similarity\n    metadataScore: 0.3,     \u002F\u002F 30% weight on metadata match\n  },\n  filters: {\n    category: 'technology',\n    recency: { $gte: Date.now() - 30 * 24 * 3600000 },  \u002F\u002F Last 30 days\n  },\n});\n```\n\n---\n\n## Multi-Database Management\n\n### Multiple Databases\n\n```typescript\n\u002F\u002F Separate databases for different domains\nconst knowledgeDB = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fknowledge.db',\n});\n\nconst conversationDB = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fconversations.db',\n});\n\nconst codeDB = await createAgentDBAdapter({\n  dbPath: '.agentdb\u002Fcode.db',\n});\n\n\u002F\u002F Use appropriate database for each task\nawait knowledgeDB.insertPattern({ \u002F* knowledge *\u002F });\nawait conversationDB.insertPattern({ \u002F* conversation *\u002F });\nawait codeDB.insertPattern({ \u002F* code *\u002F });\n```\n\n### Database Sharding\n\n```typescript\n\u002F\u002F Shard by domain for horizontal scaling\nconst shards = {\n  'domain-a': await createAgentDBAdapter({ dbPath: '.agentdb\u002Fshard-a.db' }),\n  'domain-b': await createAgentDBAdapter({ dbPath: '.agentdb\u002Fshard-b.db' }),\n  'domain-c': await createAgentDBAdapter({ dbPath: '.agentdb\u002Fshard-c.db' }),\n};\n\n\u002F\u002F Route queries to appropriate shard\nfunction getDBForDomain(domain: string) {\n  const shardKey = domain.split('-')[0];  \u002F\u002F Extract shard key\n  return shards[shardKey] || shards['domain-a'];\n}\n\n\u002F\u002F Insert to correct shard\nconst db = getDBForDomain('domain-a-task');\nawait db.insertPattern({ \u002F* ... *\u002F });\n```\n\n---\n\n## MMR (Maximal Marginal Relevance)\n\nRetrieve diverse results to avoid redundancy:\n\n```typescript\n\u002F\u002F Without MMR: Similar results may be redundant\nconst standardResults = await adapter.retrieveWithReasoning(queryEmbedding, {\n  k: 10,\n  useMMR: false,\n});\n\n\u002F\u002F With MMR: Diverse, non-redundant results\nconst diverseResults = await adapter.retrieveWithReasoning(queryEmbedding, {\n  k: 10,\n  useMMR: true,\n  mmrLambda: 0.5,  \u002F\u002F Bhypocce relevance (0) vs diversity (1)\n});\n```\n\n**MMR Parameters**:\n- `mmrLambda = 0`: Maximum relevance (may be redundant)\n- `mmrLambda = 0.5`: Bhypocced (default)\n- `mmrLambda = 1`: Maximum diversity (may be less relevant)\n\n**Use Cases**:\n- Search result diversification\n- Recommendation systems\n- Avoiding echo chambers\n- Exploratory search\n\n---\n\n## Context Synthesis\n\nGenerate rich context from multiple memories:\n\n```typescript\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  domain: 'problem-solving',\n  k: 10,\n  synthesizeContext: true,  \u002F\u002F Enable context synthesis\n});\n\n\u002F\u002F ContextSynthesizer creates coherent narrative\nconsole.log('Synthesized Context:', result.context);\n\u002F\u002F \"Based on 10 similar problem-solving attempts, the most effective\n\u002F\u002F  approach involves: 1) analyzing root cause, 2) brainstorming solutions,\n\u002F\u002F  3) evaluating trade-offs, 4) implementing incrementally. Success rate: 85%\"\n\nconsole.log('Patterns:', result.patterns);\n\u002F\u002F Extracted common patterns across memories\n```\n\n---\n\n## Production Patterns\n\n### Connection Pooling\n\n```typescript\n\u002F\u002F Singleton pattern for shared adapter\nclass AgentDBPool {\n  private static instance: AgentDBAdapter;\n\n  static async getInstance() {\n    if (!this.instance) {\n      this.instance = await createAgentDBAdapter({\n        dbPath: '.agentdb\u002Fproduction.db',\n        quantizationType: 'scalar',\n        cacheSize: 2000,\n      });\n    }\n    return this.instance;\n  }\n}\n\n\u002F\u002F Use in application\nconst db = await AgentDBPool.getInstance();\nconst results = await db.retrieveWithReasoning(queryEmbedding, { k: 10 });\n```\n\n### Error Handling\n\n```typescript\nasync function safeRetrieve(queryEmbedding: number[], options: any) {\n  try {\n    const result = await adapter.retrieveWithReasoning(queryEmbedding, options);\n    return result;\n  } catch (error) {\n    if (error.code === 'DIMENSION_MISMATCH') {\n      console.error('Query embedding dimension mismatch');\n      \u002F\u002F Handle dimension error\n    } else if (error.code === 'DATABASE_LOCKED') {\n      \u002F\u002F Retry with exponential backoff\n      await new Promise(resolve => setTimeout(resolve, 100));\n      return safeRetrieve(queryEmbedding, options);\n    }\n    throw error;\n  }\n}\n```\n\n### Monitoring and Logging\n\n```typescript\n\u002F\u002F Performance monitoring\nconst startTime = Date.now();\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, { k: 10 });\nconst latency = Date.now() - startTime;\n\nif (latency > 100) {\n  console.warn('Slow query detected:', latency, 'ms');\n}\n\n\u002F\u002F Log statistics\nconst stats = await adapter.getStats();\nconsole.log('Database Stats:', {\n  totalPatterns: stats.totalPatterns,\n  dbSize: stats.dbSize,\n  cacheHitRate: stats.cacheHitRate,\n  avgSearchLatency: stats.avgSearchLatency,\n});\n```\n\n---\n\n## CLI Advanced Operations\n\n### Database Import\u002FExport\n\n```bash\n# Export with compression\nnpx agentdb@latest export .\u002Fvectors.db .\u002Fbackup.json.gz --compress\n\n# Import from backup\nnpx agentdb@latest import .\u002Fbackup.json.gz --decompress\n\n# Merge databases\nnpx agentdb@latest merge .\u002Fdb1.sqlite .\u002Fdb2.sqlite .\u002Fmerged.sqlite\n```\n\n### Database Optimization\n\n```bash\n# Vacuum database (reclaim space)\nsqlite3 .agentdb\u002Fvectors.db \"VACUUM;\"\n\n# Analyze for query optimization\nsqlite3 .agentdb\u002Fvectors.db \"ANALYZE;\"\n\n# Rebuild indices\nnpx agentdb@latest reindex .\u002Fvectors.db\n```\n\n---\n\n## Environment Variables\n\n```bash\n# AgentDB configuration\nAGENTDB_PATH=.agentdb\u002Freasoningbank.db\nAGENTDB_ENABLED=true\n\n# Performance tuning\nAGENTDB_QUANTIZATION=binary     # binary|scalar|product|none\nAGENTDB_CACHE_SIZE=2000\nAGENTDB_HNSW_M=16\nAGENTDB_HNSW_EF=100\n\n# Learning plugins\nAGENTDB_LEARNING=true\n\n# Reasoning agents\nAGENTDB_REASONING=true\n\n# QUIC synchronization\nAGENTDB_QUIC_SYNC=true\nAGENTDB_QUIC_PORT=4433\nAGENTDB_QUIC_PEERS=host1:4433,host2:4433\n```\n\n---\n\n## Troubleshooting\n\n### Issue: QUIC sync not working\n\n```bash\n# Check firewall allows UDP port 4433\nsudo ufw allow 4433\u002Fudp\n\n# Verify peers are reachable\nping host1\n\n# Check QUIC logs\nDEBUG=agentdb:quic node server.js\n```\n\n### Issue: Hybrid search returns no results\n\n```typescript\n\u002F\u002F Relax filters\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  k: 100,  \u002F\u002F Increase k\n  filters: {\n    \u002F\u002F Remove or relax filters\n  },\n});\n```\n\n### Issue: Memory consolidation too aggressive\n\n```typescript\n\u002F\u002F Disable automatic optimization\nconst result = await adapter.retrieveWithReasoning(queryEmbedding, {\n  optimizeMemory: false,  \u002F\u002F Disable auto-consolidation\n  k: 10,\n});\n```\n\n---\n\n## Learn More\n\n- **QUIC Protocol**: docs\u002Fquic-synchronization.pdf\n- **Hybrid Search**: docs\u002Fhybrid-search-guide.md\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fruvnet\u002Fagentic-flow\u002Ftree\u002Fmain\u002Fpackages\u002Fagentdb\n- **Website**: https:\u002F\u002Fagentdb.ruv.io\n\n---\n\n**Category**: Advanced \u002F Distributed Systems\n**Difficulty**: Advanced\n**Estimated Time**: 45-60 minutes\n",{"name":5,"description":7},"main","eebcd780d62a0710aa03028091dc1e9baa995b83","hypoc\u002Fskills\u002Fagentdb-advanced","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc","https:\u002F\u002Fgithub.com\u002Fpjherron","2026-09-01 06:45:11",{"source":8,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add pjherron\u002Fhypoc --skill \"AgentDB Advanced Features\"",{"tool":36,"command":37},"bunx","bunx skills add pjherron\u002Fhypoc --skill \"AgentDB Advanced Features\"",{"tool":39,"command":40},"pnpm","pnpm dlx skills add pjherron\u002Fhypoc --skill \"AgentDB Advanced Features\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Fagentdb-advanced\u002FSKILL.md",true,[],[45,52,59,66,73,80],{"skillNo":46,"name":47,"nameZh":6,"description":48,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":49,"categories":50,"keywords":51,"publishedAt":19},"01M799MNB4RVHZZECC75ZFGH0Y","workspace-surface-audit","Audit the active repo, MCP servers, plugins, connectors, env surfaces, and harness setup, then recommend the highest-value ECC-native skills, hooks, agents, and operator workflows. Use when the user wants help setting up Claude Code or understanding what capabilities are actually available in their environment.","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Fworkspace-surface-audit\u002FSKILL.md",[],[],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M799MHR27W0YV1VMW26N691S","Verification & Quality Assurance","Comprehensive truth scoring, code quality verification, and automatic rollback system with 0.95 accuracy threshold for ensuring high-quality agent outputs and codebase reliability.","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Fverification-quality\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M799MEX0F1D253S3KZ1635PE","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M799MCFN5N6A9VWM6R2TFJRK","triage","Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Ftriage\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M799M695F2XJBTP21YHN0R46","token-budget-advisor","Offers the user an informed choice about how much response depth to consume before answering. Use this skill when the user explicitly wants to control response length, depth, or token budget. TRIGGER when: \"token budget\", \"token count\", \"token usage\", \"token limit\", \"response length\", \"answer depth\", \"short version\", \"brief answer\", \"detailed answer\", \"exhaustive answer\", \"respuesta corta vs larga\", \"cuántos tokens\", \"ahorrar tokens\", \"responde al 50%\", \"dame la versión corta\", \"quiero controlar cuánto usas\", or clear variants where the user is explicitly asking to control answer size or depth. DO NOT TRIGGER when: user has already specified a level in the current session (maintain it), the request is clearly a one-word answer, or \"token\" refers to auth\u002Fsession\u002Fpayment tokens rather than response size.","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Ftoken-budget-advisor\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M799M387CZZVGC18PN0AZ70S","to-tickets","Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — edges as text in a local file, or native blocking links on a real tracker.","https:\u002F\u002Fgithub.com\u002Fpjherron\u002Fhypoc\u002Fblob\u002Fmain\u002Fhypoc\u002Fskills\u002Fto-tickets\u002FSKILL.md",[],[]]