Skip to content

记忆

记忆由会话提交或显式提取生成,存储在用户记忆命名空间中,并可通过内容、文件系统和检索 API 使用。

内置记忆类型

分类位置说明
profileuser/memories/profile.md用户个人信息
preferencesuser/memories/preferences/按主题分类的用户偏好
entitiesuser/memories/entities/重要实体(人物、项目等)
eventsuser/memories/events/重要事件
identityuser/memories/identity.md助手身份与自我介绍
souluser/memories/soul.md助手原则、边界、风格和连续性
casesuser/memories/cases/可训练、可评估的任务案例
trajectoriesuser/memories/trajectories/可复用的操作契约
experiencesuser/memories/experiences/可复用的执行经验
toolsuser/memories/tools/工具使用经验与最佳实践
skillsuser/memories/skills/技能执行经验与工作流策略

以上是当前启用的内置类型;部署可以通过自定义记忆模板扩展或覆盖。


API 参考

recall()

按记忆类型分别检索,并在字符预算内组合成可直接注入 Agent 上下文的记忆块。默认检索 eventsentitiespreferencesexperiences 默认配额为 0,需要时应显式开启。

参数类型必填默认值说明
querystring-召回查询
quotasobjectevents=10, entities=10, preferences=3, experiences=0各类型最大返回数
max_charsinteger6500渲染后记忆块的最大字符数
min_scorenumber0.1最低相关性分数
peer_scopestringallactor 只检索当前 actor peer;all 同时检索用户全局和其他 peer
other_peer_penaltynumber/object按类型默认值对其他 peer 结果施加的分数折损
renderbooleantrue是否生成 rendered 记忆块

HTTP API

http
POST /api/v1/search/recall
Content-Type: application/json
bash
curl -X POST http://localhost:1933/api/v1/search/recall \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-key" \
  -d '{
    "query":"OpenViking API 文档偏好",
    "quotas":{"events":5,"entities":5,"preferences":3,"experiences":2},
    "max_chars":6500,
    "peer_scope":"all"
  }'

MCP

text
recall(
  query="OpenViking API 文档偏好",
  quotas={"events": 5, "entities": 5, "preferences": 3, "experiences": 2},
  max_chars=6500,
  peer_scope="all"
)

响应

json
{
  "status": "ok",
  "result": {
    "entries": [
      {
        "uri": "viking://user/default/memories/preferences/api-docs.md",
        "score": 0.82,
        "type": "preferences",
        "mode": "full",
        "rank": 1,
        "content": "用户偏好在 API 文档中同时提供 HTTP、SDK 和 CLI 示例。",
        "origin": "self"
      }
    ],
    "rendered": "## Global Memory\n### Preferences\n[1] viking://user/default/memories/preferences/api-docs.md (score=0.8200)\n用户偏好在 API 文档中同时提供 HTTP、SDK 和 CLI 示例。",
    "stats": {
      "quotas": {
        "events": 5,
        "entities": 5,
        "preferences": 3,
        "experiences": 2
      },
      "roots": [
        "viking://user/default/memories"
      ],
      "searched": {
        "events": 2,
        "entities": 1,
        "preferences": 1,
        "experiences": 0
      },
      "returned": 1,
      "dropped": 0,
      "max_chars": 6500,
      "min_score": 0.1,
      "peer_scope": "all",
      "other_peer_penalties": {
        "events": 0.1,
        "entities": 0.1,
        "preferences": 0.02,
        "experiences": 0.02
      },
      "origins": {
        "actor_peer": 0,
        "self": 1,
        "other_peer": 0
      }
    }
  }
}
字段类型说明
entriesobject[]结构化召回结果,按类型配额和相关性筛选
entries[].uristring记忆条目的 Viking URI
entries[].scorenumber原始相关性分数
entries[].typestringeventsentitiespreferencesexperiences
entries[].modestring渲染方式:fullsummaryuri
entries[].rankinteger该记忆类型内的排名,从 1 开始
entries[].originstring来源:actor_peerselfother_peer
entries[].contentstringmode=full 时返回的正文;否则可能省略
entries[].summarystring使用摘要降级时返回;否则可能省略
entries[].abstractstring检索命中的摘要;没有摘要时省略
renderedstring已受 max_chars 限制、可直接注入 Agent 上下文的文本;render=false 时为空字符串
statsobject实际配额、检索根、各类型检索量、返回量、丢弃量、阈值、peer 范围及来源统计

公共 Python、TypeScript、Go SDK 和 ov CLI 当前尚未封装类型配额召回,因此本节只展示 HTTP Tab,并补充实际存在的 MCP 调用。

相关文档

Released under the Apache-2.0 License.