会话与记忆

会话模型

记忆压缩(自动,无需参数)

长对话不会无限堆上下文。平台用滚动摘要策略:

含图片的历史轮次,图片本体不会长期保留(历史里以 [图片] 占位),只有文字脉络进入记忆。

对话历史 API

GET /v1/sessions/:id/history — 读回某个会话当前的完整状态。Bearer key 鉴权。

bash
curl "$BASE/v1/sessions/s1/history" \
  -H "Authorization: Bearer $KEY"

成功响应 200:

json
{
  "messages": [
    {"role": "user", "content": "今天上海天气怎么样喵?"},
    {"role": "assistant", "content": "今天上海多云,出门挺舒服的喵。"}
  ],
  "summary": "",
  "count": 2
}
字段说明
messages当前仍按原文保留的轮次(已被压缩的旧轮不在此,在 summary 里)
summary滚动摘要(没发生过压缩时为空串)
countmessages 条数

已知限制:session_id/% 等需要 URL 编码的特殊字符时,读写两侧编码处理不对称,可能读不回。建议 session_id 只用字母、数字、-_

列出 / 删除会话

会话是边缘 Durable Object(每个 session_id 一个),平台另维护一份会话索引让你能列出 / 删除自己的会话。索引只含元数据,绝不含任何对话内容——要看内容仍走上面的历史 API。

列出会话

GET /v1/sessions — 列出本租户会话,按最后活跃时间倒序。Bearer 租户通用 key(App 级 / 设备 key → 403,最小权限)。

bash
curl "$BASE/v1/sessions?limit=50" \
  -H "Authorization: Bearer $KEY"

成功响应 200:

json
{
  "sessions": [
    {
      "id": "user-42",
      "turn_count": 7,
      "first_at": "2026-06-13T02:10:00.000Z",
      "last_at": "2026-06-13T04:25:13.000Z",
      "app_id": null,
      "device_id": null
    }
  ]
}
参数说明
limit返回条数(默认 100,上限 500;非法值回落默认)
since只返回 last_at 不早于此刻的会话(ISO 8601)
字段说明
idsession_id(匿名请求落到 anon)
turn_count累计对话轮数
first_at / last_at首次出现 / 最后活跃时刻(ISO 8601 UTC)
app_id / device_id末次该会话请求所用 key 的归属(通用 key 为 null)

/v1/sessions(列表)与 /v1/sessions/:id/history(读历史)是两个不同端点,互不冲突。

注:会话进列表靠对话时的尽力而为埋点(与计费同位点)。极偶发埋点失败不影响对话本身,只是该会话可能短时不在列表里——下次对话即补上。

删除会话

DELETE /v1/sessions/:id — 删一个会话:清除它的全部记忆(逐轮历史 + 摘要)并从索引移除。Bearer 租户通用 key(App 级 / 设备 key → 403)。

bash
curl -X DELETE "$BASE/v1/sessions/user-42" \
  -H "Authorization: Bearer $KEY"

成功响应 200:{"id":"user-42","deleted":true}

控制台「观测 · 会话」页提供同样的列出 / 查看历史 / 删除(确认后执行),无需写代码。

实践建议