开发者

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"])
const { chain } = await mem.lineage(undefined, mid);
for (const step of chain) {
  console.log(step.changed_at, step.action, step.content);
}
let r = mem.lineage(None, mid).await?;
for step in r["chain"].as_array().unwrap_or(&vec![]) {
    println!("{} {} {}", step["changed_at"], step["action"], step["content"]);
}
curl -X POST https://api.wontopos.com/api/v1/memory/lineage \
  -H "X-API-Key: $WOS_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice","memory_id":"m_9"}'
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。返回的仍然是最早的那些环节。

用途

两种用途。调试:一条记忆为何是今天这个样子。以及让助手查看自身的历史,被修正过三次的事实与只写入过一次的事实属于不同类型,只有修改链能体现这一点。