lineage
一条记忆背后的修改链,按时间由旧到新。revisions 说明一个存储库整体改动了多少,这里说明单个事实发生了什么。
Tablet 2 及更新版本支持。只读。与
revisions 不同,这是一次正常计费的调用,因为它会返回记忆内容。传入该链中任意一条记忆的 id。被取代的版本会保留而非删除,因此即使检索只返回当前的事实,也仍可回溯。
chain = mem.lineage(memory_id=mid)["chain"]
for step in chain:
print(step["changed_at"], step["action"], step["content"])200
{ "memory_id": "m_9", "count": 3, "truncated": false,
"chain": [
{ "memory_id": "m_3", "content": "lives in Seoul",
"created_at": "2026-03-02T…", "changed_at": "2026-06-11T…",
"action": "replaced", "confidence": 0.94,
"superseded_by": "m_7", "is_current": false },
{ "memory_id": "m_7", "content": "moved to Busan", … },
{ "memory_id": "m_9", "content": "Haeundae, specifically",
"changed_at": null, "superseded_by": null, "is_current": true }
] }| 字段 | 作用 |
|---|---|
| chain | 各个版本,按时间由旧到新。每个版本包含与记忆相同的字段,另加下面四个。 |
| changed_at | 该版本被取代的时间(RFC3339),若仍然生效则为 null。 |
| action | 该环节发生了什么,即替代版本与此版本之间的关系。 |
| confidence | 引擎对该关系的确信程度,取值 0-1。 |
| is_current | 对仍然生效的那个版本为 True。每条链中恰好有一个。 |
| truncated | 当链的长度超过服务遍历的范围时为 True。返回的仍然是最早的那些环节。 |
用途
两种用途。调试:一条记忆为何是今天这个样子。以及让助手查看自身的历史,被修正过三次的事实与只写入过一次的事实属于不同类型,只有修改链能体现这一点。