Dependencies
MoonBit 嵌入式 Agent 记忆层:零部署、崩溃可恢复、按用户隔离。
moon add heyq02/moomemfn main {
let mem = @moomem.MemoryStore::open("./memory").unwrap()
let summary = mem.add("user-42", "我对花生过敏").unwrap()
println("extracted=\{summary.extracted} inserted=\{summary.inserted}")
let hits = mem.recall("user-42", "花生过敏", top_k=3).unwrap()
for e in hits {
println("[\{e.created_at}] \{e.content}")
}
ignore(mem.close())
}[!NOTE] 缺省实现不访问网络。要做语义提取或真实向量,在 open 时注入 Embedder、Extractor、ConflictJudge。
cd demo
moon run cmd/main<path>/moomem/head # 一个字符,"0" 或 "1",指向当前有效槽
<path>/moomem/slot0.jsonl # 快照槽 A
<path>/moomem/slot1.jsonl # 快照槽 B{"v":1,"gen":4,"clock":2}{"id":"000000000001-6091","user_id":"user-42","content":"我对花生过敏",
"kind":"unstructured","embedding":[0,0,...],"keywords":["我","对","我对","花","对花","..."],
"status":"active","created_at":1,"superseded_by":null,"seq":1,
"metadata":{"extractor":"raw"}}[!NOTE] 这是全量快照,不是追加日志:每次落盘都重写整份条目。写入量越大、单次越慢,这个库没有做过规模压测,所以不承诺具体条数上限——请按自己的数据量实测。真正需要追加写时,自己实现 PersistenceBackend(例如 native 侧用 extern C 做 append)。wasm / js 缺省用内存后端,根本不落盘。
moon run examples/default-reopen --target native| 示例 | 看什么 |
|---|---|
| examples/default-reopen | 写入、召回、关掉再打开 |
| examples/host-inject-supersede | 注入嵌入和提取后,旧事实被覆盖 |
| examples/isolation-forget-import | 用户隔离、遗忘、导出再导入 |