Eidentic 完全指南:开源全能型 AI Agent SDK,自带自进化记忆和生产级特性
AI Agent 框架已经很多了——LangChain、LlamaIndex、CrewAI 各有所长。但它们往往只专注一个方向:要么是记忆系统,要么是编码沙箱,要么是编排引擎。真正把记忆、持久化执行、安全沙箱、成本控制、可观测性全打包在一起,还完全开源的——很少。
Eidentic 就是这样一个「全栈」方案。它是一个 TypeScript AI Agent SDK,核心卖点是自进化的四层记忆引擎 + 生产级基础设施(持久化 checkpoint、成本上限、安全隔离、GDPR 删除),而且 Apache-2.0 开源,没有企业版功能屏蔽。支持 Node、Bun、Deno 和 Edge 运行时。
这篇文章带你从安装到实战,完整走一遍。
快速上手:一行代码开始
npm install eidentic ai @ai-sdk/anthropic
然后创建一个最简单的 Agent:
import { Agent, AIModel, SqliteStore } from "eidentic";
import { anthropic } from "@ai-sdk/anthropic";
const agent = new Agent({
id: "support",
model: new AIModel(anthropic("claude-sonnet-4-5")),
store: new SqliteStore("./eidentic.sqlite"),
});
for await (const ev of agent.query("What did we decide last week?", { sessionId: "u-42" })) {
console.log(ev);
}
这个 Agent 不是一次性的——它会把对话和记忆持久化到 SQLite 文件,下次启动时还能回忆之前的上下文。
自进化记忆系统
Eidentic 最大的亮点是它的记忆系统,不是简单的向量检索,而是四层架构:
- 词汇检索(Lexical):精确关键词匹配,用 BM25 算法,适合查找具体的人名、数字、版本号
- 语义检索(Semantic):向量相似度搜索,适合模糊概念回忆
- 时序知识图谱(Temporal Knowledge Graph):为事实加上时间戳和有效期。如果用户周一说了「用 PostgreSQL」,周三改口说「换 MySQL」,旧事实会被标记为过期而非堆积
- 休眠期合并(Sleep-time Consolidation):Agent 空闲时自动整理记忆块,合并重复信息、压缩过期数据
看性能基准测试结果:
| 基准测试 | 全上下文模式 | Eidentic 记忆模式 | Token 节省 |
|---|---|---|---|
| LongMemEval (500 问, ~115k 上下文) | 41.0% | 55.2% (+14.2pp) | ~39× 更少 |
| LoCoMo (1,540 问) | 61.6% | 53.8% (时序类 +12pp, 对抗类 +16pp) | ~21× 更少 |
在 LongMemEval 上,Eidentic 的记忆检索不仅超过了全上下文基线,而且只用了全上下文 1/39 的 token——这意味着更低的 API 成本和更快的响应。
嵌入到你的应用中
Eidentic 最常用的方式是作为库嵌入到你现有的后端。下面是 Next.js App Router 的示例:
// app/api/chat/route.ts
import { Agent, AIModel } from "eidentic";
import { LibsqlStore } from "@eidentic/libsql";
import { anthropic } from "@ai-sdk/anthropic";
export const runtime = "nodejs";
const agent = new Agent({
id: "support",
model: new AIModel(anthropic("claude-sonnet-4-5")),
store: new LibsqlStore("file:eidentic.db"),
});
export async function POST(req: Request) {
const { message, sessionId } = await req.json();
const stream = new ReadableStream({
async start(controller) {
for await (const ev of agent.query(message, { sessionId, signal: req.signal }))
controller.enqueue(new TextEncoder().encode(JSON.stringify(ev) + "\n"));
controller.close();
},
});
return new Response(stream, { headers: { "content-type": "application/x-ndjson" } });
}
注意:使用 Next.js 时,需要用 @eidentic/libsql(纯 JS 实现)替代默认的 SqliteStore(后者依赖 native addon,在 Next/Turbopack 下不兼容)。
Express 版本更简洁:
app.post("/chat", async (req, res) => {
res.type("application/x-ndjson");
const controller = new AbortController();
res.on("close", () => { if (!res.writableEnded) controller.abort(); });
for await (const ev of agent.query(req.body.message, { sessionId: req.body.sessionId, signal: controller.signal }))
res.write(JSON.stringify(ev) + "\n");
res.end();
});
生产级特性一览
Eidentic 内置了大多数框架需要自己拼装的生产功能:
| 领域 | 特性 |
|---|---|
| 执行可靠性 | 持久化 checkpoint/resume · 精确一次工具调度 · 协作式取消 · 上下文压缩 |
| 成本控制 | 按 token/轮次设上限 · 每轮成本可见 · 内置限流和配额 |
| 安全性 | 默认拒绝权限 · E2B 沙箱执行 · 密钥对模型不可见 · 多租户隔离 |
| 合规 | 一键 GDPR 删除(跨所有存储) · 数据过期策略 |
| 可观测性 | OpenTelemetry GenAI spans · 结构化日志(DEBUG=eidentic:*) |
| 多 Agent | spawn_agent 委托 · MCP 服务端/客户端 · A2A 协议 |
持久化执行
Agent 运行中如果崩溃或重启,Eidentic 会自动从最后一个 checkpoint 恢复,工具调用不会被重复执行。
成本上限
Eidentic 内置了按 token 和按轮次双维度成本限制。你可以设定每次对话的 token 上限和总费用上限,超过阈值后 Agent 自动暂停——不用担心一觉醒来发现 API 账单爆了。配置方式在 Agent 初始化时通过预算参数指定,每轮调用的成本也实时可见。
沙箱执行
危险操作(代码执行、命令执行)在 E2B 沙箱中隔离运行,模型看不到实际凭据。
两种运行模式
模式 1:嵌入(Embedded) — 上面已经展示过。直接 import 到你的后端代码中,一个函数调用就能跑 Agent。不需要额外启动服务。
模式 2:服务(Server — 可选) — 当你需要多租户 Agent 后端时,@eidentic/server 提供开箱即用的 Hono HTTP 服务,带认证和 SSE 流式输出:
import { createServer, serveNode, ApiKeyAuth } from "@eidentic/server";
const app = createServer({
agents: { support: agent },
auth: ApiKeyAuth({ key_live_123: { userId: "u1" } }),
});
await serveNode(app, { port: 3000 });
// POST /v1/agents/support/query → SSE
或者用脚手架快速创建:
npm create eidentic@latest my-agent cd my-agent && eidentic dev
包生态
Eidentic 采用模块化设计,核心包 eidentic 包含基础功能,可选包按需安装:
| 包名 | 用途 |
|---|---|
@eidentic/server | Hono HTTP 服务 + 认证 + SSE |
@eidentic/react | React hooks(useAgent, useEidenticStream) |
@eidentic/nextjs | Next.js App Router 适配器 |
@eidentic/studio | 开发仪表盘 — 查看会话、记忆、技能 |
@eidentic/workflow | 多步骤工作流编排 |
@eidentic/libsql | libSQL/Turso 存储(纯 JS) |
@eidentic/mcp | MCP 服务端/客户端 |
npm install eidentic 只装核心栈,其他包按需额外安装。
与同类框架对比
市面上几个主流方案各有侧重,Eidentic 的差异化在于「全都要」:
| 维度 | Eidentic | LangChain | CrewAI | Mastra |
|---|---|---|---|---|
| 记忆系统 | ✅ 四层自进化 | 基础向量 | 有限 | 基础 |
| 持久化执行 | ✅ checkpoint/resume | ❌ | ❌ | ❌ |
| 成本控制 | ✅ 上限+配额 | ❌ | ❌ | 部分 |
| 沙箱执行 | ✅ E2B 集成 | 需外接 | ❌ | ❌ |
| 可观测性 | ✅ OTel | 有 | 有限 | 有 |
| 许可证 | Apache-2.0 | MIT | MIT | MIT |
| 运行时 | Node/Bun/Deno/Edge | Python/JS | Python | Node |
生产部署注意事项
部署前需要关注几个默认配置:
- Studio 默认无认证 —
serveStudio和createStudioApi暴露完整的 Agent 记忆和会话数据,不要绑定到公网地址 - Server 默认无认证 —
@eidentic/server需要配置ApiKeyAuth才能部署到生产环境 - 技能签名 — 如果允许 Agent 自建技能或用户提交技能,开启
requireSigned: true,只接受 ed25519 签名后的技能包 - 可观测性数据脱敏 — 使用
@eidentic/langfuse时,传redactAttributes参数过滤 PII 和密钥
总结
Eidentic 是当前为数不多的「一站式」AI Agent SDK——你不用再拼凑 LangChain 做记忆、Temporal 做持久化、Guardrails 做安全、Langfuse 做追踪。它把所有这些打包到一个 Apache-2.0 的开源包里,而且 TypeScript 原生支持让前端全栈团队可以零门槛接入。
如果你正在用 TypeScript 构建需要长期记忆、安全合规、成本可控的 AI Agent,Eidentic 值得一试。
GitHub: github.com/eidentic/eidentic