使用说明
回声
Echo是一个面向AI代理和开发人员的本地持久内存系统,内置于Go中,带有SQLite、FTS5、DuckDB和模型上下文协议。它为无状态LLM会话提供了一个持久的存储层,AI主机可以通过MCP查询该层,也可以直接从终端进行管理。
该项目侧重于快速局部召回、显式内存治理和安全的人在循环维护。内存存储在本地,按上下文确定范围,为关键字搜索建立索引,并通过JSON-RPC MCP服务器和CLI公开。
亮点
| 区域 | 它展示了什么 |
|---|---|
| 持久内存 | SQLite通过UPSERT存储具有上下文键、条目类型、标签、源属性和强化的持久内存。 |
| AI集成 | MCP服务器为代理工作流提供存储、调用、搜索、更新、删除和分析工具。 |
| 人工控制 | CLI支持存储、调用、搜索、删除、维护以及表、JSON或CSV输出格式。 |
| 搜索性能 | SQLite FTS5为关键字搜索的内存内容建立索引,并为子字符串匹配提供简短的查询回退。 |
| 安全 | 破坏性操作使用基于ID的检索、确认、操作流程,以避免因内容不明确而意外删除。 |
| 分析 | 遥测可以写入JSONL并同步到DuckDB中,用于上下文级别的使用、成本、命中率和碳估算。 |
建筑
Echo使用双接口架构。CLI和MCP传输层共享相同的服务和持久性代码,因此AI驱动和人工驱动的工作流在相同的本地数据模型上运行。
| 路径 | 用例 | 流程 |
|---|---|---|
| MCP路径 | AI代理存储或检索内存 | 代理主机->通过stdio的JSON-RPC->MCP工具->服务层->SQLite和FTS5 |
| CLI路径 | 人工审查或管理内存 | 终端命令->CLI调度器->服务层->SQLite和FTS5 |
| 分析路径 | 使用情况分析和内存调优 | 遥测JSONL->DuckDB同步->上下文级分析 |
graph TD
subgraph "Interfaces"
A[AI Agent or IDE] -- "JSON-RPC over stdio" --> B[MCP Transport]
H[Terminal] -- "CLI Commands" --> I[CLI Dispatcher]
end
subgraph "Core Logic"
B --> C[Shared Service Layer]
I --> C
C --> D{Storage Engine}
end
subgraph "Persistence and Analytics"
D --> E[(SQLite Memories)]
D --> F[(FTS5 Search Index)]
D --> G[(DuckDB Analytics)]
end
技术栈
| 图层 | 工具 |
|---|---|
| 语言 | Go |
| 数据存储 | SQLite、FTS5、DuckDB、JSONL遥测日志 |
| 可观察性 | 内存遥测事件、DuckDB分析视图、基准测试套件 |
| 测试 | 开始 testing 表驱动测试包 |
| CI/CD | GitHub操作 |
文档
演示
本地设置
构建并验证项目:
make build
make test
make bench
安装CLI:
make install
直接使用CLI:
echo-cli store -content "Use FTS5 for memory search." -context project:echo -type directive -tags search,sqlite
echo-cli recall -contexts global,project:echo -limit 10
echo-cli search -query FTS5
echo-cli maintain -rebuild
通过从MCP主机启动二进制文件,并将stdin连接到JSON-RPC传输,将其作为MCP服务器运行。当没有提供CLI子命令并且stdin不是终端时,Echo会自动启动MCP服务器。