Asi AgentDB Advanced Features

Advanced AgentDB: QUIC sync, multi-database, hybrid search, MMR, context synthesis.

install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/agentdb-advanced-features" ~/.claude/skills/plurigrid-asi-agentdb-advanced-features && rm -rf "$T"
manifest: skills/agentdb-advanced-features/SKILL.md
source content

AgentDB Advanced Features

QUIC Synchronization

import { createAgentDBAdapter } from 'agentic-flow/reasoningbank';

const adapter = await createAgentDBAdapter({
  dbPath: '.agentdb/distributed.db',
  enableQUICSync: true,
  syncPort: 4433,
  syncPeers: ['192.168.1.10:4433', '192.168.1.11:4433'],
});

QUIC Configuration Options

const adapter = await createAgentDBAdapter({
  enableQUICSync: true,
  syncPort: 4433,              // QUIC server port
  syncPeers: ['host1:4433'],   // Peer addresses
  syncInterval: 1000,          // Sync interval (ms)
  syncBatchSize: 100,          // Patterns per batch
  maxRetries: 3,               // Retry failed syncs
  compression: true,           // Enable compression
});

Multi-Node Env Vars

AGENTDB_QUIC_SYNC=true \
AGENTDB_QUIC_PORT=4433 \
AGENTDB_QUIC_PEERS=192.168.1.11:4433,192.168.1.12:4433 \
node server.js

QUIC Troubleshooting

# Firewall: allow UDP on sync port
sudo ufw allow 4433/udp

# Debug logging
DEBUG=agentdb:quic node server.js

Distance Metrics

# CLI: cosine (default), euclidean, dot
npx agentdb@latest query ./vectors.db "[0.1,0.2,...]" -m cosine
npx agentdb@latest query ./vectors.db "[0.1,0.2,...]" -m euclidean
npx agentdb@latest query ./vectors.db "[0.1,0.2,...]" -m dot
// API
const result = await adapter.retrieveWithReasoning(queryEmbedding, {
  metric: 'cosine',  // or 'euclidean' or 'dot'
  k: 10,
});

Metric selection:

cosine
for text embeddings/semantic search,
euclidean
for spatial/image data where magnitude matters,
dot
for pre-normalized vectors (fastest).


Hybrid Search (Vector + Metadata)

// Store with metadata
await adapter.insertPattern({
  id: '',
  type: 'document',
  domain: 'research-papers',
  pattern_data: JSON.stringify({
    embedding: documentEmbedding,
    text: documentText,
    metadata: { author: 'Jane Smith', year: 2025, category: 'machine-learning', citations: 150 }
  }),
  confidence: 1.0,
  usage_count: 0,
  success_count: 0,
  created_at: Date.now(),
  last_used: Date.now(),
});

// Hybrid search: vector similarity + metadata filters
const result = await adapter.retrieveWithReasoning(queryEmbedding, {
  domain: 'research-papers',
  k: 20,
  filters: {
    year: { $gte: 2023 },
    category: 'machine-learning',
    citations: { $gte: 50 },
  },
});

Filter Operators

const result = await adapter.retrieveWithReasoning(queryEmbedding, {
  domain: 'products',
  k: 50,
  filters: {
    price: { $gte: 10, $lte: 100 },
    category: { $in: ['electronics', 'gadgets'] },
    rating: { $gte: 4.0 },
    inStock: true,
    tags: { $contains: 'wireless' },
  },
});

Weighted Hybrid Search

const result = await adapter.retrieveWithReasoning(queryEmbedding, {
  domain: 'content',
  k: 20,
  hybridWeights: {
    vectorSimilarity: 0.7,
    metadataScore: 0.3,
  },
  filters: {
    recency: { $gte: Date.now() - 30 * 24 * 3600000 },
  },
});

Multi-Database Management

// Separate databases per domain
const knowledgeDB = await createAgentDBAdapter({ dbPath: '.agentdb/knowledge.db' });
const conversationDB = await createAgentDBAdapter({ dbPath: '.agentdb/conversations.db' });

// Sharding by domain prefix
const shards = {
  'domain-a': await createAgentDBAdapter({ dbPath: '.agentdb/shard-a.db' }),
  'domain-b': await createAgentDBAdapter({ dbPath: '.agentdb/shard-b.db' }),
};
function getDBForDomain(domain: string) {
  const shardKey = domain.split('-')[0];
  return shards[shardKey] || shards['domain-a'];
}

MMR (Maximal Marginal Relevance)

const diverseResults = await adapter.retrieveWithReasoning(queryEmbedding, {
  k: 10,
  useMMR: true,
  mmrLambda: 0.5,  // 0 = max relevance, 1 = max diversity
});

Context Synthesis

const result = await adapter.retrieveWithReasoning(queryEmbedding, {
  domain: 'problem-solving',
  k: 10,
  synthesizeContext: true,
});

console.log('Synthesized Context:', result.context);
console.log('Patterns:', result.patterns);

Error Handling

AgentDB-specific error codes:

try {
  const result = await adapter.retrieveWithReasoning(queryEmbedding, options);
} catch (error) {
  if (error.code === 'DIMENSION_MISMATCH') {
    // Query embedding dims don't match stored vectors
  } else if (error.code === 'DATABASE_LOCKED') {
    // Retry — SQLite write lock contention
    await new Promise(resolve => setTimeout(resolve, 100));
    return safeRetrieve(queryEmbedding, options);
  }
  throw error;
}

CLI Operations

# Export/import with compression
npx agentdb@latest export ./vectors.db ./backup.json.gz --compress
npx agentdb@latest import ./backup.json.gz --decompress

# Merge databases
npx agentdb@latest merge ./db1.sqlite ./db2.sqlite ./merged.sqlite

# Rebuild indices
npx agentdb@latest reindex ./vectors.db

# SQLite maintenance
sqlite3 .agentdb/vectors.db "VACUUM;"
sqlite3 .agentdb/vectors.db "ANALYZE;"

Environment Variables

AGENTDB_PATH=.agentdb/reasoningbank.db
AGENTDB_ENABLED=true
AGENTDB_QUANTIZATION=binary     # binary|scalar|product|none
AGENTDB_CACHE_SIZE=2000
AGENTDB_HNSW_M=16
AGENTDB_HNSW_EF=100
AGENTDB_LEARNING=true
AGENTDB_REASONING=true
AGENTDB_QUIC_SYNC=true
AGENTDB_QUIC_PORT=4433
AGENTDB_QUIC_PEERS=host1:4433,host2:4433