记忆层计数 API

wesgine 提供按层计数的 API,与按 scope 统计的运维诊断接口分离。


设计原则

层计数 vs 运维统计

两个端点回答不同的问题:

端点问题面向
GET /memory/counts"我每层有多少条记忆?"用户/前端
GET /memory/stats"哪个存储分区的分布如何?"运维/管理员

CountByLayer API

请求

GET /cells/{id}/memory/counts?actor=&namespace=

响应

{
  "environment": 12,
  "consensus": 3,
  "about_me": 8,
  "agent_memory": 45,
  "session": 2,
  "working": 0,
  "unknown": 0
}

关键约束

  1. 键覆盖全部层含 0:AllMemoryLayers() 七个值全部出现
  2. 缺键 → 前端渲染成"什么都没有"
  3. 新增层在 tsc 失败,不在用户屏幕上失败
  4. 数字是 COUNT,不是逐页折叠
  5. 数字必须 == 列表长度

为什么不用 Stats

Stats 使用 scope 提问,而:

CountByLayer 使用 layer 提问:


前端消费规则

七层芯片恒定渲染

// wesui MemoryCenter
MEMORY_LAYERS.forEach(layer => {
  // 即使 counts[layer] === 0 也渲染芯片
  renderChip(layer, counts[layer])
})

分组列表只画非空层

// useMemoryCenter 分组循环
for (const layer of MEMORY_LAYERS) {
  if (entries[layer].length === 0) continue  // 空组不渲染
  renderGroup(layer, entries[layer])
}

两者不矛盾:芯片回答"有哪些层",分组回答"现在有什么"。


Stats API(运维诊断)

GET /cells/{id}/memory/stats?actor=&scope=&namespace=

相关不变量


相关文档