開発者

lineage

1 つの記憶の背後にある編集の連なりを、古い順に返します。revisions がストア全体の変化量を示すのに対し、こちらは 1 つの事実に何が起きたかを示します。

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各版を古い順に返します。それぞれ記憶と同じフィールドに加えて、以下の 4 つを持ちます。
changed_atこの版が置き換えられた日時 (RFC3339) です。まだ有効な間は null になります。
actionこの連結点で何が起きたか、つまり置き換えた側がこの版とどう関係していたかを示します。
confidenceその関係についてエンジンがどれだけ確信していたかを 0-1 で示します。
is_currentまだ有効な 1 つの版で true になります。連なりごとにちょうど 1 つです。
truncated連なりがサービスの辿る長さを超えていた場合に true になります。返される段は、その場合も最も古いものです。

用途

用途は 2 つです。1 つはデバッグで、記憶が現在の内容になっている理由を確認できます。もう 1 つはアシスタント自身の履歴の参照です。3 回訂正された事実は 1 回だけ書かれた事実とは性質が異なり、それは連なりからしか分かりません。