360 Secure SkillHub
360 安全技能中心

Eidolon Search

这是面向AI Agent的基于SQLite FTS5的记忆搜索工具,核心功能是对markdown文件构建全文索引后,通过关键词快速检索,可节省90%以上令牌。典型场景包括多份日常笔记/记忆文件检索、令牌受限上下文、重复搜索、含10+总大小超50KB的markdown文件的工作区。支持命令行操作构建索引、搜索及重索引,搜索输出匹配片段、文件路径和相关度得分;不适用于单个小文件或语义搜索需求。

dev-jslee
dev-jslee
热度 84.37
最近更新 2026-05-17 13:23:59
分类:知识依赖:代码执行 / 读写文件应用场景:笔记整理 / 研究

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add eidolon-search
Metadata
name
eidolon-search
description
AI Agent memory search using SQLite FTS5. 90%+ token reduction (10x+) compared to reading full files. Use when the agent needs to search through markdown memory files, daily notes, or any text corpus efficiently. Triggers on memory search, file search, knowledge retrieval, or when context window is limited and full-file reading is too expensive.

Eidolon Search

FTS5-based memory search for AI Agents. Index markdown files once, search with 90%+ token savings.

Quick Start

1. Index memory files (once)

python3 scripts/build-index.py <memory_dir> <db_path>

Example:

python3 scripts/build-index.py ./memory ./memory.db

This creates a SQLite database with FTS5 full-text index of all .md files in the directory (recursive).

2. Search

python3 scripts/search.py <query> [limit] [db_path]

Example:

python3 scripts/search.py "Physical AI roadmap" 5
python3 scripts/search.py "project timeline" 10 ./memory.db

Default limit: 10. Default db_path: ./memory.db

Output: matching snippets with file paths and relevance scores.

3. Re-index when files change

Run build-index.py again. It rebuilds the index from scratch (fast, <1 second for typical workspaces).

When to Use

  • Memory search: Find specific information across many daily notes or memory files
  • Token-limited contexts: When reading all files would exceed context limits
  • Repeated searches: Index once, search many times
  • Large workspaces: 10+ markdown files with cumulative size >50KB

When NOT to Use

  • Single small file (<5KB): just read it directly
  • Need semantic/meaning-based search: FTS5 is keyword-based only
  • See references/QUALITY.md for known limitations

Search Tips for Agents

FTS5 is keyword-based. Improve results by:

  • Use specific terms: "Jetson Orin" not "hardware plans"
  • Use OR for synonyms: "car OR vehicle OR automobile"
  • Use quotes for phrases: "Physical AI"
  • Try multiple queries if first attempt returns nothing
  • Check file paths in results to read full context when needed

Benchmarks

Run benchmarks yourself:

python3 scripts/benchmark-recall.py    # Recall@5, Recall@10
python3 scripts/benchmark-cache.py     # Warm vs cold cache

DB Schema

CREATE VIRTUAL TABLE memory_fts USING fts5(path, content);

Direct SQL access:

sqlite3 memory.db "SELECT path, snippet(memory_fts, 1, '<b>', '</b>', '...', 32) FROM memory_fts WHERE memory_fts MATCH 'query' ORDER BY rank LIMIT 5;"