EverOS 代理记忆层
为跨应用和工作流的 AI 代理提供可迁移的本地长期记忆。
- Star 数
- ★ 14k
- 最近更新
- 今天
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 45/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API(部分支持)
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 正在开发编码助手的团队,可把每次编码会话的消息按 project_id 和 session_id 写入 EverOS,再在后续会话中按 user_id 搜索历史上下文。
- 不适合
- 不想安装 LibreOffice 却要处理 Office 文档的用户
- 依赖 /api/v1 且不打算迁移到 /api/v2 的旧集成
这个 Agent 能做什么,适合哪些场景?
EverOS 是面向代理与开发者的 Python 库及本地优先记忆运行时。它将对话、文件和代理轨迹保存为可读、可编辑、可进行 Git 版本控制的 Markdown,并同步本地 SQLite 与 LanceDB 索引以支持检索。服务通过本地 HTTP 接口提供记忆写入、提取、刷新和搜索,新的业务接口位于 /api/v2,/api/v1 仍是兼容旧集成的遗留别名。它可按 user_id、agent_id、app_id、project_id 和 session_id 等维度检索,并将用户 episodes/profile 与代理 cases/skills 作为独立表面处理。该项目还描述了离线反思流程,用于合并 episode 聚类并在会话间完善 profile 和 skills;运行边界是本机文件、SQLite、LanceDB 与本地启动的服务,而不是托管记忆平台。
运行 everos server start 后,EverOS 在本机提供服务。客户端可向 POST /api/v2/memory/add 提交带有 session_id、app_id、project_id 和 messages 的对话;系统将内容写入 Markdown,并在后台同步本地 SQLite 与 LanceDB。POST /api/v2/memory/flush 可为指定会话强制执行提取,POST /api/v2/memory/search 可按用户及应用/项目范围查询并返回召回结果。everos demo 是不连接服务的本地终端教学可视化器;everos demo --live 则依次调用 /health、/api/v2/memory/add、/api/v2/memory/flush 和 /api/v2/memory/search。安装 everos[multimodal] 后,memory/add 的 content 项还可处理图像、PDF、音频和办公文档;办公文档会先通过 LibreOffice 转为 PDF。
- 正在开发编码助手的团队,可把每次编码会话的消息按 project_id 和 session_id 写入 EverOS,再在后续会话中按 user_id 搜索历史上下文。
- 需要让个人 AI 助手跨设备或跨应用保留偏好的开发者,可直接检查和编辑 Markdown 记忆文件,并让级联监视器同步索引。
- 构建带持续记忆的多代理产品时,可将用户 episodes/profile 与代理 cases/skills 分开保存和检索。
- 需要从图片、PDF、音频或办公文件提取长期上下文的应用,可安装 multimodal extra,并为办公文件部署 LibreOffice。
- 希望先向团队演示记忆写入与召回生命周期的开发者,可在不配置 API 密钥的情况下运行 everos demo。
如何安装或部署这个 Agent?
需要 Python 3.12+。先安装并运行无需密钥的本地演示:
uv pip install everos
everos demo要运行真实服务,执行 everos init,然后在生成的 .env 中填写 EVEROS_LLM__API_KEY、EVEROS_MULTIMODAL__API_KEY、EVEROS_EMBEDDING__API_KEY 和 EVEROS_RERANK__API_KEY。默认说明使用 OpenRouter 提供聊天和多模态能力、DeepInfra 提供嵌入与重排;也可通过对应的 *__BASE_URL 配置为其他 OpenAI 兼容端点。需要处理非文本内容时安装:
uv pip install 'everos[multimodal]'办公文档还需要在主机安装 LibreOffice。
如何使用这个 Agent?
配置 .env 后启动服务:
everos server start在另一个终端检查:
curl http://127.0.0.1:8000/health预期返回 {"status":"ok"}。首次真实演示可运行:
everos demo --live新代码应使用 /api/v2。典型流程是先向 /api/v2/memory/add 提交 messages,再向 /api/v2/memory/flush 提交 session_id、app_id、project_id,最后向 /api/v2/memory/search 提交 user_id、app_id、project_id、query 和 top_k。Markdown 同步写入,但本地索引会在后台追上;首次搜索为空时,项目说明建议稍候重试。
这个 Agent 有哪些优点和局限?
- Markdown 是规范数据源,记忆文件可阅读、直接编辑、差异比较并纳入 Git 版本控制。
- 本地栈明确采用 Markdown、SQLite 和 LanceDB,不要求 MongoDB、Elasticsearch 或 Redis。
- 检索范围可正交组合 user_id、agent_id、app_id、project_id 和 session_id,而非仅依赖单一会话或命名空间。
- 提供本地 CLI 演示、HTTP 服务和 Python 包三种可验证入口,便于先体验再嵌入应用。
- 真实服务流程需要聊天、多模态、嵌入和重排能力的提供商凭据;默认配置涉及 OpenRouter 与 DeepInfra。
- 索引在后台同步,刚写入记忆后首次搜索可能暂时为空。
- 办公文档摄取依赖系统级 LibreOffice;缺失时 .doc、.docx、.ppt、.pptx、.xls、.xlsx 上传会返回 HTTP 415。
- README 明确将 /api/v1 标为未来大版本可能移除的遗留别名,旧集成需要迁移至 /api/v2。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| EverOS 代理记忆层 当前 | 45 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 14k | 今天 | Python | — |
| LycheeMemory | 52 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1.1k | 3 个月前 | Python | Claude Code · OpenAI API |
| MemOS 2.0 Stardust | 53 · 缺口较多 | 自托管服务免费版 + 付费版 | ★ 12k | 2 天前 | TypeScript | — |
| PowerContext | 55 · 缺口较多 | 命令行工具免费 | ★ 1.5k | 1 天前 | Python | Codex · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:服务器默认绑定127.0.0.1,文档明确警告不要暴露到不受信任的网络,API密钥存储在本地.env,且不会传输到除配置的提供商之外的地方。这体现了最小权限原则(least_privilege)的部分实现,但缺少用户确认机制(user_confirmation),例如在写入或删除记忆前没有明确的用户确认步骤。数据流透明度(data_flow_transparency)方面,README和SECURITY.md描述了数据流向,但未提供详细的日志或审计功能。敏感数据处理(sensitive_data_handling)方面,文档提到记忆以明文.md存储,建议使用OS级权限或磁盘加密,但未提供内置加密选项。依赖安全(dependency_security)方面,pyproject.toml中固定了lancedb版本范围,并注释了已知问题,但未提及依赖漏洞扫描。外部影响(external_effects)方面,服务器默认仅监听本地,但未说明对系统文件或网络的影响。回滚(rollback)方面,未提供任何回滚机制。来源归属(source_attribution)方面,README列出了多个外部集成项目,但未明确说明这些项目的来源和可信度。
证据显示:项目有严格的测试套件,包括一致性检查(tests/_consistency_assertions.py)和CI配置,表明自我一致性(self_consistency)较好。依赖可用性(dependency_availability)方面,依赖项在pyproject.toml中明确列出,且CI使用uv.lock锁定版本,但未提供依赖的可用性保证。失败消息(failure_messages)方面,文档提到office文档上传失败会返回HTTP 415和清晰错误消息,但整体错误处理机制未详细说明。
证据显示:README明确列出了目标受众(开发者、AI代理)和多种使用场景(如Reunite、Hive等),表明受众和场景(audience_and_scenarios)覆盖较广。能力边界(capability_boundaries)方面,文档说明了demo是本地教育用途,不连接服务器,且多模态支持需要额外安装,但未详细说明所有功能的限制。触发精度(trigger_precision)方面,文档提供了API调用示例,但未说明触发条件或权限控制。环境适配(environment_fit)方面,支持Python 3.12+,并提供了macOS和Linux的安装说明,但未提及Windows支持。
证据显示:信息架构(information_architecture)方面,README结构清晰,有目录和文档链接,但未提供完整的API参考。安装说明(install_notes)方面,提供了pip安装和配置步骤,但未提及系统依赖(如LibreOffice)的安装细节。命名稳定性(naming_stability)方面,API版本v1和v2并存,但v1被标记为遗留,可能在未来移除,存在命名不稳定的风险。示例和FAQ(examples_and_faq)方面,提供了多个使用案例和快速入门示例,但未提供FAQ。已知限制(known_limitations)方面,SECURITY.md提到了威胁模型,但未列出所有已知限制。许可证(license)方面,Apache-2.0许可证完整,且pyproject.toml中明确声明。版本和变更日志(versioning_changelog)方面,有CHANGELOG.md,但未提供详细的版本历史。维护责任(maintenance_responsibility)方面,SECURITY.md提供了安全报告邮箱,但未明确维护者或贡献指南。
证据显示:输出可用性(output_usability)方面,提供了API响应示例和Markdown文件说明,但未提供完整的输出格式文档。边际价值(marginal_value)方面,项目提供了独特的Markdown-first记忆层,与其他库相比有差异化,但未提供性能基准。成本效益(cost_benefit)方面,需要多个API密钥(OpenRouter、DeepInfra),可能增加使用成本,但未提供成本估算。
证据显示:声明可追溯性(claim_traceability)方面,README中的功能声明未提供具体实现细节或测试证据。跨来源佐证(cross_source_corroboration)方面,README引用了多个外部项目,但未提供独立验证。事实与推断分离(fact_inference_separation)方面,文档中区分了事实(如功能描述)和推断(如“self-evolving”),但未明确标注。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 服务器默认绑定127.0.0.1,但若用户手动绑定到0.0.0.0,可能暴露到不受信任的网络,需谨慎配置。
- 记忆以明文Markdown存储,敏感数据需额外加密措施。
- 依赖lancedb版本有已知问题,需关注版本更新。
- API v1为遗留版本,可能在未来移除,新代码应使用v2。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v1.5.1 EverOS 1.5.1
发布说明摘录
Hybrid and vector search keep up with 10 requests a second out of the box. Each of those searches embeds its query first, and the slots reserved for those calls were the limit: with 4 of them and a remote embedding endpoint answering in about 0.45 s, search topped out near 9 requests a second and a steady 10 queued without bound. The default is now 16, which held the same load at a p50 of 0.42 s and a p95 of 1.45 s. Changed - [embedding].query_max_concurrent defaults to 16 instead of 4. Every hybrid or vector search makes one query embedding call, and the budget …在 GitHub 查看 ↗ -
v1.5.0 EverOS 1.5.0
发布说明摘录
**/add no longer has to wait for extraction, and an index can no longer be wrong without saying so.** A client can hand a batch to /add with async_mode and get a 202 back in milliseconds, while a durable in-process queue runs extraction in session order; the field, the response body and the task-status paths match EverOS Cloud, so one client works against both. Vector columns now follow [embedding] dim instead of a hardcoded 1024, startup refuses an index the configured model cannot have produced instead of accepting writes that are truncated or searches that quietly return nothing, …在 GitHub 查看 ↗ -
v1.4.2 EverOS 1.4.2
发布说明摘录
A server that stays healthy for days, not hours. Three faults in this release compounded on exactly the deployments that ran longest: a long-lived index leaked file descriptors until searches took seconds, interactive searches queued behind the cascade's background embedding, and a memory root holding more than one project had each project's index rows overwrite the other's. All three are fixed, and a LanceDB root that the last fault already damaged repairs itself on the first start after upgrading. Changed - [embedding].max_concurrent defaults to 10 instead of 5. The …在 GitHub 查看 ↗