Won

Won 是为读取记忆的一方准备的。

这个 API 的大部分是记忆作答。Won 则是关于记忆作答:一个存储库被改写了多少,又能信任到什么程度。它面向的是读取记忆的一方,通常是您正在构建的助手,而不是记忆所描述的那个人。

Wontopos 就是 Won + Topos,记忆栖身的那一个地方。Won 是这个地方里报告记忆状况、而不是把记忆返回来的那一部分。这些调用免费、只读,且从不触碰检索:询问不会让您的用户多花一分钱,也不会改变已经记住的内容。

目前提供的内容

目前只有一个调用。

调用作用
POST /won/revisions该存储库自写入以来有多少内容被改动。返回两个数字以及两句说明。

完整示例

使用比例,而非原始计数。40 条中的 3 条与 40 条中的 30 条需要不同的处理方式。

r = mem.revisions()
# {"revised": 3, "total": 40, "counts": "…", "excludes": "…"}

if r["revised"] / r["total"] > 0.1:
    system += "Some of what you remember here has been corrected since."
const r = await mem.revisions();
// { revised: 3, total: 40, counts: "…", excludes: "…" }

if (r.revised / r.total > 0.1) {
  system += "Some of what you remember here has been corrected since.";
}
let r = mem.revisions(None).await?;
let (rev, tot) = (r["revised"].as_f64().unwrap_or(0.0),
                r["total"].as_f64().unwrap_or(1.0));
if rev / tot > 0.1 { /* say so in the system prompt */ }
curl -X POST https://api.wontopos.com/api/v1/won/revisions \
  -H "X-API-Key: $WOS_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice"}'

# → {"user_id":"alice","revised":3,"total":40,
#     "counts":"memories a transform has touched (supersede, update, retract, image removed)",
#     "excludes":"deletions — a deleted memory leaves nothing to count"}

countsexcludes 以句子而非标志位的形式返回,因为调用方通常是模型。删除不计入统计。

价格与限额

规则
价格无。免费调用会跳过计费环节,不收取 token 费用,不收取按请求计的费用,也不记录用量。
每分钟每分钟 10 次,按账户并且按端点计。消耗某个端点的每分钟配额,不会消耗另一个端点的配额。
每小时每小时 300 次,按账户计,由所有免费调用共享。该限额不区分路径,因此新增免费端点不会提高一个账户可消耗的总量。
与付费流量的关系双向隔离。这些调用不会拖慢你的检索,你的检索也不会耗尽这些配额。同一账户下的多个密钥共用同一批配额桶,因此持有更多密钥不会成倍增加额度。

两个上限都会返回 429,附带以秒为单位的 Retry-After,并在消息中指明触发的是哪一个。

429 rate_limit_error
Retry-After: 41

{ "error": { "type": "rate_limit_error",
    "message": "This endpoint is free and limited to 10 requests per
                minute, counted per endpoint. Retry in 41s." } }
同一调用也可在 /api/v1/memory/revisions 上响应,用于 Won 接口出现之前发布的客户端。它是同一个处理器、同一份预算,而不是第二份额度。新代码应使用 Won 地址。