Won · revisions

ストアがどれだけ書き換えられてきたか

revisionsrevisedtotal で答えます。ストアの記憶のうち、書かれたあとで変えられたものが何件あるかです。大事なことを記憶に委ねる前に、あるいは思い出した事実が今ユーザーの言っていることと噛み合わないときに、尋ねてみる価値があります。十のうち三つの事実が置き換わったストアは、誰も手を入れていないストアほどには信頼できません。

Tablet 2 以降で対応しています。HTTP API から、Python・TypeScript・Rust の SDK から、そして MCP ツールとして呼び出せます。それより前のエンジンは 501 を返し、対応できないモデルの名前を伝えます。

件数

変換が触れたものを数えます - 置き換え、更新、撤回、そして削除された画像です。

mem.revisions()
# {"revised": 3, "unrevised": 37, "total": 40, …}
await mem.revisions();
mem.revisions(None).await?;
curl -X POST https://api.wontopos.com/api/v1/won/revisions \
  -H "X-API-Key: $WOS_KEY" -d '{"user_id":"alice"}'
フィールド意味
revised変換が触れた記憶の数です。
unrevised書き込み以降、何も変更が加えられていない記憶です。revised + unrevised は常に total と一致します。個別に数えた値ではなく導出値のため、同時に書き込みがあっても 3 つの値が食い違うことはありません。
totalストアに入っている記憶の数です。
counts / excludes数値が何を対象としているかを、フラグではなく平文の文で示します。呼び出し側はモデルであることが多いためです。

一覧を読む

件数だけでなく記憶そのものを取得するには include を渡します。省略した場合は件数のみが返り、こちらは低コストの呼び出しです。

page = mem.revisions(include="revised", limit=20)
page["memories"], page["matched"], page["has_more"]
const page = await mem.revisions(undefined, { include: "revised", limit: 20 });
let page = mem.revisions_page(None, "revised", 20, None, None).await?;
curl -X POST https://api.wontopos.com/api/v1/won/revisions \
  -H "X-API-Key: $WOS_KEY" \
  -d '{"user_id":"alice","include":"revised","limit":20}'
フィールド動作
include"revised" または "unrevised" を指定します。それ以外の値は件数へのフォールバックではなく 400 で拒否されます。入力ミスで一覧が黙って落ちると、空のストアと見分けがつかなくなるためです。
limit5 から 20 まで、既定は 20 です。範囲外の値や型の誤りは、丸められるのではなく拒否されます。
matchedページのサイズではなく、このページの背後にある総行数です。
ordered_byサービス側が並び順を明示します。最後に編集された順ではなく、保存された順で新しいものからです。
next_beforenext_skip_ids と組で使う次のページ用のカーソルです。両方をそのまま返送してください。id はページをまたいで蓄積されます。
一覧は記憶が変更された日時ではなく、保存された日時で並びます。「最後に編集された順」と想定する呼び出し側はページを読み違えるため、レスポンス側でどちらであるかを明示しています。
削除は数えません。消された記憶には数えるものが残らないため、大きく削り込まれたストアでも revised は低いまま出ます。この数字が示すのは、どれだけ書き換えられたかであって、どれだけ失われたかではありません。