上下文服务(Context0)使用指南

更新时间:
复制 MD 格式

本文介绍上下文服务(Context0)六大核心能力的使用方法:记忆管理、知识库管理、会话管理、上下文装配、记忆晋升、工作空间管理。

准备工作

阅读前请确保已完成接入(详见快速入门),下文示例统一使用:

export API_KEY="<YOUR_API_KEY>"       # 数据面用 USER Key
export HOST="https://<your-endpoint>"
说明

涉及管理面操作(成员、Key、晋升审核等)需使用Owner Key,示例中标注为$OWNER_KEY。

记忆管理

记忆(Memory)是 Context0 为 Agent 提供的长期记忆能力,与 Mem0 协议兼容。

记忆体系(L1 事实 / L0 实体 / 规则)

对话写入后,Context0 逐级蒸馏出三层记忆:

对话写入 ──► L2 原始对话 ──LLM 抽取──► L1 原子事实 ──实体识别──► L0 实体画像
           (不可变,溯源)        (单条事实,带时效)      (结构化实体卡)

层级

内容

说明

L2

原始对话文本

不可变,用于溯源与实时召回兜底。

L1

原子事实

单条事实,如“项目选用 TypeScript”,带 subject(主题)与 validity(时效)。

L0

实体画像

结构化实体卡,支持 person / project / technology / organization / concept 五类。

  • L1 事实的时效性(validity):

    取值

    含义

    permanent

    永久(如姓名、核心偏好)。

    durable

    持久(如技术选型)。

    temporal

    时效(如"本周聚焦性能优化")。

  • 规则(蒸馏规则):你可以自定义“从对话中提取什么、怎么提取”的规则,控制蒸馏行为。此外,通过置顶(pin)可将关键记忆固定为高优先级、不参与热度衰减。

写入记忆(自动 vs 手动)

  • 自动写入(推荐):通过 ingest 写入对话,服务端异步抽取记忆,不阻塞对话。

    curl -X POST "$HOST/v1/context/ingest" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{
        "session_id": "sess_789",
        "user_id": "user_001",
        "messages": [
          {"role": "user", "content": "项目偏好 TypeScript,ORM 选 Prisma"},
          {"role": "assistant", "content": "好的,已记下技术栈选型"}
        ]
      }'
    说明

    使用 CLI 插件时,插件默认在每个有效完成回合调用 POST /v3/memories/add,由后端异步提炼长期记忆,无需手动操作。

  • 手动写入:直接调用 /v1/memories 从一段对话提取原子事实:

    curl -X POST "$HOST/v1/memories" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{
        "messages": [
          {"role": "user", "content": "鉴权方案选 NextAuth"}
        ],
        "user_id": "user_001",
        "metadata": {"source": "manual"}
      }'
  • (推荐)V3 记忆写入:POST /v3/memories/add 是带 Box 包装的记忆写入端点,请求参数与 /v1/memories 相同,响应包含去重信息:

    curl -X POST "$HOST/v3/memories/add" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{
        "messages": [{"role": "user", "content": "项目选用 Vite 构建"}],
        "user_id": "user_001"
      }'

    响应

    {"code": 0, "msg": "ok", "data": {"memory_id": "mem_1_2_abc", "event_id": 789, "created": true}}

    字段

    说明

    memory_id

    记忆 ID

    event_id

    写入对应的事件 ID(created=false 时为去重命中的已有记忆)

    created

    true 新建 / false 去重命中已有记忆

    说明

    CLI 插件默认使用此端点写入记忆。

搜索记忆

按语义检索记忆,向量 kNN + BM25 词法两路召回,RRF 融合取 top-k。提供三个版本,功能逐级递增:

路径

L1 事实

L2 源文本

响应格式

POST /v1/memories/search

是

否

裸 JSON 数组

POST /v2/memories/search

是

是(默认开启)

裸 JSON 数组

POST /v3/memories/search

是

是

{"results": [...]} 信封(Mem0 v1.1 SDK 兼容)

示例

参数说明

字段

必填

说明

query

是

查询文本

user_id

否

限定用户。USER Key 自动绑定自身

limit

否

返回条数 [1,200],默认 10(别名 top_k 也可使用)

filters

否

附加过滤,支持时间范围:{"created_at": {"$gte": "...", "$lte": "..."}}

vector_only

否

true 时仅向量召回,关闭 BM25

cosine_threshold

否

相似度下限 [0,1],缺省不过滤(别名 threshold 亦可使用)

说明
  • V3 搜索 filters map 传参(Mem0 v1.1 SDK 兼容):V3 端点 POST /v3/memories/search 中,user_id / agent_id / run_id 等实体参数应放在 filters map 内传递,例如:{"query": "技术栈", "filters": {"user_id": "user_001"}, "limit": 10}。

  • 顶层同名参数(如 V1/V2 的 user_id)在 V3 路由中仍被接受,但推荐使用 filters 以与 Mem0 v1.1 SDK 对齐。

记忆操作(查看 / 更新 / 删除 / 置顶 / 失效)

操作

方法与路径

列表

GET /v1/memories

示例:可选参数 doc_type 按层过滤:L1(原子事实)/ L0_ENTITY_CARD(画像卡)/ L2(源文本)。

curl "$HOST/v1/memories?user_id=user_001&limit=20&offset=0" \
  -H "X-API-Key: $API_KEY"

详情

GET /v1/memories/{id}

示例

curl "$HOST/v1/memories/mem_123" -H "X-API-Key: $API_KEY"

更新

PUT /v1/memories/{id}

示例

curl -X PUT "$HOST/v1/memories/mem_123" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"data": "项目选用 TypeScript + Prisma + Zod 校验"}'

删除

DELETE /v1/memories/{id}

示例:

curl -X DELETE "$HOST/v1/memories/mem_123" -H "X-API-Key: $API_KEY"

置顶 / 取消

POST /v1/memories/{id}/pin / /unpin(置顶记忆提升召回优先级,不参与热度衰减。)

示例:

curl -X POST "$HOST/v1/memories/mem_123/pin"   -H "X-API-Key: $API_KEY"
curl -X POST "$HOST/v1/memories/mem_123/unpin" -H "X-API-Key: $API_KEY"

失效

POST /v3/memories/{id}/invalidate(记忆过时后,后续召回直接排除,而非降权。)

示例:

curl -X POST "$HOST/v3/memories/mem_123/invalidate" -H "X-API-Key: $API_KEY"

历史

GET /v1/memories/{id}/history

示例

curl "$HOST/v1/memories/mem_123/history" -H "X-API-Key: $API_KEY"

统计

GET /v1/memories/stats

清空(不可逆)

DELETE /v1/memories/clear?confirm=true

说明

重置场景,不可逆。query和body中都需要添加confirm: true才会执行不可逆批量删除。任一缺少均返回 400。

示例

curl -X DELETE "$HOST/v1/memories/clear?confirm=true" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "user_id": "user_001",
    "scope": "all",
    "confirm": true
  }'

参数说明

  • scope:all(全部)/ before_date(指定日期前)/ by_session_ids(按会话)。

  • before_date:scope=before_date时使用,ISO-8601 时间戳。

  • session_ids:scope=by_session_ids时使用,会话 ID 数组。

  • confirm:query 参数和 body 中均必须为 true,否则返回 400

响应示例

{"message": "memories cleared", "deleted": 156, "scope": "all"}

反馈

POST /v3/memories/{id}/feedback

说明
  • 正反馈会影响记忆的热度分数。

  • negative_explicit 还会触发异步 Dream 反证流水线重新评估该记忆。

  • 已失效(invalidated)的记忆不支持提交反馈,尝试对已失效记忆操作会返回 400。请对有效状态的记忆提交反馈。

示例

curl -X POST "$HOST/v3/memories/mem_123/feedback" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "signal_type": "negative_explicit",
    "channel": "agent",
    "corrected_content": "应为 Drizzle 而非 Prisma"
  }'

参数说明

  • signal_type:positive_explicit / negative_explicit / positive_implicit / negative_implicit。

  • channel:反馈来源,如 agent / user / dashboard。

  • corrected_content:负反馈时的修正内容。

  • recall_path:召回路径(bm25 / vector / graph),用于召回权重自适应。

响应示例

{
  "code": 0,
  "data": {
    "id": 501,
    "memory_id": "mem_123",
    "signal_type": "negative_explicit",
    "created_at": "2026-08-19T11:00:00Z"
  }
}

L2 源文本

GET /v1/memories/{id}/source-texts(溯源能力)

返回产生该 L1 事实的原始对话消息(L2 层),用于审计或调试。

示例

curl "$HOST/v1/memories/mem_123/source-texts" -H "X-API-Key: $API_KEY"

响应示例

{
  "code": 0,
  "data": [
    {
      "session_id": "sess_789",
      "role": "user",
      "content": "项目偏好 TypeScript,ORM 选 Prisma",
      "created_at": "2026-07-15T10:00:00Z"
    }
  ]
}

V3 列出

POST /v3/memories

Mem0 v1.1 SDK 兼容,通过请求体进行实体过滤,支持分页信封响应。

示例

curl -X POST "$HOST/v3/memories?page=1&page_size=50" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"user_id": "user_001"}'

字段

位置

说明

user_id / agent_id / run_id

body

实体过滤;可放在顶层或 filters map 中

filters

body

实体过滤 map,接受 snake_case/camelCase 键,不识别的键报400错误

page

query

页码(1-indexed),默认 1

page_size

query

每页大小 [1,200],默认 100

响应示例(裸 JSON,无 Box 包装):

{"count": 156, "next": "/v3/memories/?page=2&page_size=50", "previous": null, "results": [{"id": "mem_1_2_abc123", "memory": "用户偏好使用 Vim 编辑器"}]}

L0 实体卡编辑

POST /v3/entity_cards/{id}/edit

对实体画像进行部分更新(仅传入的字段被覆写)。

示例

curl -X POST "$HOST/v3/entity_cards/card_1_2_alice/edit" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"role": "资深后端工程师", "preferences": ["Java", "Spring Boot"]}'

字段

说明

role

实体角色描述

preferences

偏好列表(字符串数组)

attributes

开放属性 map(键随卡类型而定:org / repo_url / version / domain 等)

自定义蒸馏规则

蒸馏规则(distill-prompt)控制“从对话中提取什么、怎么提取”,可按成员自行配置,无需 OWNER 权限。

说明

custom_prompt ≤ 8192 字符,只定义提取什么 / 怎么提,不改变输出的 JSON 结构。OWNER 可通过管理面 /ops/distill-prompt 设置 workspace 级默认规则或指定成员的规则。

  • 优先级链:

    ingest 请求的 custom_instructions > member 级规则 > workspace 默认规则 > 内置默认。

  • 设置成员级规则:

    curl -X PUT "$HOST/v1/memories/distill-prompt" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{
        "custom_prompt": "重点提取技术栈选型和架构决策,忽略闲聊内容",
        "enabled": true
      }'
  • 查询当前规则:

    curl "$HOST/v1/memories/distill-prompt" -H "X-API-Key: $API_KEY"
  • 删除规则(回退到 workspace 默认或内置):

    curl -X DELETE "$HOST/v1/memories/distill-prompt" -H "X-API-Key: $API_KEY"

知识库管理

知识库(Knowledge Base)支持上传文档,自动解析、分块、向量化、索引,并提供向量 + BM25 + rerank 融合的 RAG 检索。

创建知识库

响应返回知识库 id(数字类型),后续上传、检索都用它。

curl -X POST "$HOST/v1/knowledge/bases" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "name": "项目文档库",
    "description": "内部技术文档与制度",
    "visibility": "workspace"
  }'

字段

必填

说明

name

是

名称,≤128 字符。

description

否

描述,≤1024 字符。

visibility

否

workspace(工作区可见,默认)/ private(仅创建者)。USER Key 强制 private。

graph_enabled

否

是否启用知识图谱索引,默认 false。

管理知识库

  • 列出知识库:

    curl "$HOST/v1/knowledge/bases?page=0&page_size=20" -H "X-API-Key: $API_KEY"
  • 获取单个知识库详情:

    curl "$HOST/v1/knowledge/bases/1" -H "X-API-Key: $API_KEY"

    响应:

    {
      "code": 0,
      "data": {
        "id": 1,
        "name": "项目文档库",
        "description": "内部技术文档与制度",
        "visibility": "workspace",
        "document_count": 42,
        "graph_enabled": false,
        "created_at": "2026-07-01T00:00:00Z",
        "updated_at": "2026-08-15T12:00:00Z"
      }
    }
  • 删除知识库:

    curl -X DELETE "$HOST/v1/knowledge/bases/1" -H "X-API-Key: $API_KEY"
    说明

    OWNER 可删任意知识库。USER 只能删自己创建的私有知识库。删除会级联删除其下所有文档与索引。

上传文档(格式 + 限制 + 三种方式)

支持的文件格式

  • 文档:PDF、Markdown、Word、Excel、PPT、RTF、EPUB。

  • 图片:PNG、JPG 等(Vision 模型自动生成描述)。

  • 音频:常见音频格式(自动转写)。

限制与机制

  • 上传后异步处理,接口同步返回文档 ID 与 ingest_status,状态流转 pending → indexed(失败为 failed + last_error)。

  • 幂等去重:同字节流二次上传返回既有文档 ID,不重复入库。

  • 处理完成后 chunk_count 更新为实际分块数。

上传方式

multipart上传文件

知识库 id在请求路径中。

curl -X POST "$HOST/v1/knowledge/bases/1/documents/upload" \
  -H "X-API-Key: $API_KEY" \
  -F "file=@/path/to/runbook.pdf" \
  -F "title=部署手册" \
  -F "external_id=runbook-v2" \
  -F "folder_path=/ops"

Markdown 带图片时,通过 images 字段一并上传:

curl -X POST "$HOST/v1/knowledge/bases/1/documents/upload" \
  -H "X-API-Key: $API_KEY" \
  -F "file=@/path/to/guide.md" \
  -F "title=操作指南" \
  -F "images=@/path/to/screenshot1.png" \
  -F "images=@/path/to/diagram.jpg"

JSON 提交文本内容

适合程序化同步,支持按 external_id upsert。

curl -X POST "$HOST/v1/knowledge/documents" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "knowledge_base_id": 1,
    "title": "同步文档",
    "external_id": "feishu-doc-001",
    "content": "# 文档内容\n..."
  }'

控制台上传

在控制台的知识库页选择目标知识库,拖拽或选择文件上传,可视化查看摄入进度。

管理文档

  • 查看文档列表:

    curl "$HOST/v1/knowledge/bases/1/documents?page=0&size=20" -H "X-API-Key: $API_KEY"
  • 获取单篇文档详情(含处理状态):

    curl "$HOST/v1/knowledge/documents/101" -H "X-API-Key: $API_KEY"

    响应:

    {
      "code": 0,
      "data": {
        "id": 101,
        "knowledge_base_id": 1,
        "title": "部署手册",
        "external_id": "runbook-v2",
        "ingest_status": "indexed",
        "chunk_count": 24,
        "source_type": "upload",
        "created_at": "2026-08-01T00:00:00Z",
        "updated_at": "2026-08-01T00:05:00Z"
      }
    }
    说明

    ingest_status 取值:pending → indexed(成功)/ failed(失败,附带 last_error)。

  • 删除文档:

    curl -X DELETE "$HOST/v1/knowledge/documents/101" -H "X-API-Key: $API_KEY"
    说明

    删除需 editor 及以上权限,会同步清理对应的分块索引。

知识召回

RAG 检索:向量 + BM25 融合召回,rerank 后返回命中片段。

示例

参数说明

响应示例(部分展示)

{
  "code": 0,
  "data": [
    {
      "chunk_id": "chunk_42",
      "document_id": "101",
      "title": "部署手册",
      "snippet": "部署流程:1. 准备 .env ... 2. 执行 ./deploy.sh ...",
      "score": 0.91,
      "rerank_score": 0.88
    }
  ]
}

知识评审

开启质量评审后,新入库的文档分块经自动评分,低分块进入人工审核队列。

  • 开启评审:

    curl -X PUT "$HOST/v1/knowledge/bases/1/settings" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{"review_enabled": true}'
  • 查看评审队列:

    curl "$HOST/v1/knowledge/bases/1/reviews?status=pending_human&page=0&size=20" \
      -H "X-API-Key: $API_KEY"
  • 提交评审决策(ACCEPT_ORIGINAL / REJECT / RETRY):

    curl -X POST "$HOST/v1/knowledge/reviews/decision" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{"review_id": 42, "decision": "ACCEPT_ORIGINAL"}'

    决策

    说明

    ACCEPT_ORIGINAL

    通过并激活分块

    REJECT

    拒绝,分块保持不可检索

    RETRY

    重新评分

    说明

    评审需部署级worker已启用且workspace特性开关已打开,否则返回 FEATURE_DISABLED。

Wiki 知识蒸馏

Wiki 蒸馏将知识库文档通过 LLM 提炼为结构化 Wiki 页面(实体 / 概念 / 摘要),与 RAG 互补—RAG 返回 chunk 级片段,Wiki 返回 page 级结构化知识。

  • 开启 Wiki 蒸馏(Owner Key,管理面):

    说明

    开启后,新上传的文档会自动触发蒸馏。已有文档不追溯,可通过重新蒸馏手动触发。

    curl -X PUT "$HOST/ops/knowledge/wiki/config?kb_id=1" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{
        "wiki_enabled": true,
        "wiki_config": "{\"synthesis_model\":\"qwen-max\",\"extraction_granularity\":\"standard\"}"
      }'
  • 读取页面全文:

    curl "$HOST/v1/knowledge/wiki/pages/42" -H "X-API-Key: $API_KEY"

    Wiki 页面类型:

    类型

    说明

    summary

    文档级摘要(每个文档 1 个)

    entity

    实体(人物 / 技术 / 产品等),多文档可贡献同一实体

    concept

    概念(方法 / 原理 / 模式等)

    index

    Wiki 首页,系统自动维护

技能目录(Skill Catalog)

技能目录允许 Agent 在运行时动态发现可用 Skill,并通过 assemble 装配进上下文。Skill 支持 L0/L1/L2 渐进披露:L0 元信息 → L1 摘要 → L2 完整正文。

说明

Agent 典型流程:通过 search 发现相关 Skill → 获取 content → 拼装进上下文执行。assemble 接口也可自动包含匹配的 Skill 内容。

  • 列出技能:

    说明

    page起始为0,page_size 范围 [1,100],默认 20。

    curl "$HOST/v1/skills?page=0&page_size=20" -H "X-API-Key: $API_KEY"

    响应示例:

    {
      "code": 0,
      "data": {
        "content": [
          {
            "id": 1,
            "name": "deploy-helper",
            "description": "自动化部署流程指导",
            "tags": ["devops", "docker"],
            "updated_at": "2026-08-10T00:00:00Z"
          }
        ],
        "totalElements": 5,
        "totalPages": 1
      }
    }
  • 参数说明:

    字段

    必填

    说明

    query

    是

    查询文本

    top_k

    否

    返回条数,默认 10。

    tags

    否

    按标签过滤

    响应示例:

    {
      "code": 0,
      "data": [
        {"id": 1, "name": "deploy-helper", "score": 0.92, "description": "自动化部署流程指导"}
      ]
    }
  • 获取技能完整内容(L2):

    curl "$HOST/v1/skills/1/content" -H "X-API-Key: $API_KEY"

    响应示例:

    {
      "code": 0,
      "data": {
        "id": 1,
        "name": "deploy-helper",
        "content": "# Deploy Helper\n\n## 何时使用\n...\n## 操作步骤\n..."
      }
    }

会话管理

会话(Session)是短期上下文的容器。Agent 完整链路 = 创建会话 → 追加消息 → assemble 装配 → 结束会话。每条消息按 seq 自增编号,支持增量拉取与倒序分页。

会话操作速查

操作

方法与路径

创建

POST /v1/sessions

列表

GET /v1/sessions?page=0&page_size=20&status=open

详情

GET /v1/sessions/{id}

更新

PATCH /v1/sessions/{id}

追加消息

POST /v1/sessions/{id}/messages

消息列表

GET /v1/sessions/{id}/messages?since_seq=0&limit=50

关闭

PUT /v1/sessions/{id}/close

删除

DELETE /v1/sessions/{id}

统计

GET /v1/sessions/stats

继承链

GET /v1/sessions/{id}/inheritance

创建会话

以 external_id 作为业务侧会话标识(幂等),同一 user_id 下重复调用同一 external_id 返回已有会话。

curl -X POST "$HOST/v1/sessions" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"external_id": "sess-2026-08-19-001", "agent_id": "coding-agent", "title": "部署讨论", "user_id": "user_001"}'

请求参数

字段

必填

说明

external_id

是

外部会话标识,≤128 字符,同一 user 下幂等。

agent_id

否

Agent 标识,用于按 Agent 过滤会话。

title

否

标题,≤256 字符。

user_id

否

终端用户标识;USER Key 自动绑定。

session_key

否

线程键,用于跨会话继承上下文。

parent_session_id

否

父会话 external_id,显式指定继承关系。

响应示例

说明

created=true 表示新建。同一 external_id 重复调用返回已有会话且 created=false(幂等)。

{
  "code": 0,
  "data": {
    "session": {
      "id": 42,
      "external_id": "sess-2026-08-19-001",
      "agent_id": "coding-agent",
      "title": "部署讨论",
      "status": "open",
      "user_id": "user_001",
      "message_count": 0,
      "total_tokens": 0,
      "created_at": "2026-08-19T10:00:00Z",
      "updated_at": "2026-08-19T10:00:00Z"
    },
    "created": true
  }
}

列出会话

curl "$HOST/v1/sessions?page=0&page_size=20&status=open" \
  -H "X-API-Key: $API_KEY"

请求参数

参数

说明

page

页码(0-indexed),默认 0。

page_size

每页大小 [1,200],默认 20。

agent_id

按 Agent 过滤。

status

按状态过滤:open / closed / flushed。

分页元信息通过响应头返回:X-Total-Count / X-Page / X-Page-Size / X-Has-More。

获取会话详情

curl "$HOST/v1/sessions/sess-2026-08-19-001" -H "X-API-Key: $API_KEY"

路径参数 {id} 为会话的 external_id 或数据库 id。响应同创建接口的 session 对象。

向会话追加消息

curl -X POST "$HOST/v1/sessions/sess-2026-08-19-001/messages" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"messages": [{"role": "user", "content": "如何用 Docker 部署?"}, {"role": "assistant", "content": "推荐使用 docker compose ..."}]}'

响应示例

{
  "code": 0,
  "data": [
    {"id": 101, "role": "user", "content": "如何用 Docker 部署?", "seq": 1, "token_count": 12},
    {"id": 102, "role": "assistant", "content": "推荐使用 docker compose ...", "seq": 2, "token_count": 45}
  ]
}
说明

role 支持 user / assistant / system / tool,其中 tool 必须附带 tool_name。

获取会话消息列表

curl "$HOST/v1/sessions/sess-2026-08-19-001/messages?since_seq=0&limit=50" \
  -H "X-API-Key: $API_KEY"

请求参数

参数

说明

since_seq

增量拉取:返回 seq > since_seq 的消息。

before_seq

倒序拉取:返回 seq < before_seq 的消息。

order

排序方向:asc(默认)/ desc。

limit

返回条数 [1,200],默认 50。

响应示例

{
  "code": 0,
  "msg": "ok",
  "data": {
    "items": [
      {"id": 101, "role": "user", "content": "如何用 Docker 部署?", "seq": 1, "token_count": 12},
      {"id": 102, "role": "assistant", "content": "推荐使用 docker compose ...", "seq": 2, "token_count": 45}
    ],
    "total": 2
  },
  "trace_id": "550e8400-e29b-41d4-a716-446655440000"
}

关闭会话

curl -X PUT "$HOST/v1/sessions/sess-2026-08-19-001/close" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"generate_summary": true}'

响应示例

{
  "code": 0,
  "data": {
    "id": 42,
    "external_id": "sess-2026-08-19-001",
    "status": "closed",
    "closed_at": "2026-08-19T10:30:00Z"
  }
}
说明

generate_summary=true(默认)时自动生成交接摘要(handoff),供后续会话继承。关闭后消息不可追加,但仍可读取。

上下文装配(Assemble)

上下文装配是 Agent 调用最频繁的接口:按 query 召回相关记忆 + 知识,在 token 预算内精选,输出结构化 prompt_blocks,直接拼进system prompt。

基本用法

curl -X POST "$HOST/v1/context/assemble" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "session_id": "sess_789",
    "user_id": "user_001",
    "query": "如何部署应用?",
    "token_budget": 4000,
    "recall": {"top_k": 8}
  }'
说明

session_id 与 user_id 至少填一项(否则禁止 workspace 全域召回)。query 为空时触发零查询冷启动。

召回配置

字段

说明

token_budget

输出 token 预算 [1,32000],默认 32000,永不超预算。

recall.top_k

召回条数 [1,50]。

recall.cosine_threshold

相似度下限 [0,1],默认 0.3。

context_scope

装配范围:full(默认)/ minimal / memory_only / knowledge_only。

include_memories / include_knowledge

布尔,强制开关单个维度(在 scope 之后生效)。

knowledge_base_ids

指定召回的知识库 ID 列表。

budget_allocator

预算分配比例:memory_ratio / knowledge_ratio / history_ratio / system_ratio。

context_scope 预设:

值

包含维度

典型场景

full

系统指令 + 近期消息 + 记忆 + 知识库。

通用对话

minimal

系统指令 + 近期消息。

补全 / 格式化等轻量调用

memory_only

系统指令 + 近期消息 + 记忆。

无知识库场景

knowledge_only

系统指令 + 近期消息 + 知识库。

RAG 问答

返回结构

把 prompt_blocks 的 content 按顺序拼进 system prompt 即可。后端按重要性在预算内精选,永远不超 token_budget。

{
  "code": 0,
  "data": {
    "prompt_blocks": [
      {"role": "system", "tag": "user_profile", "content": "用户偏好 TypeScript + Prisma", "tokens": 30, "sources": []},
      {"role": "system", "tag": "knowledge", "content": "部署流程:1. 准备 .env ...", "tokens": 120, "sources": ["runbook.pdf"]},
      {"role": "user", "tag": "recent_messages", "content": "用户:我想用 Docker 部署 ...", "tokens": 80, "sources": []}
    ],
    "token_used": 255,
    "token_budget": 4000,
    "trace_id": "550e8400-...",
    "stats": {"recall_total": 12, "recall_kept": 8, "took_ms": 142}
  }
}

压缩上下文(Compact)

主动触发长会话的增量摘要压缩,将最早的活跃消息折叠为叶子摘要,减少消息总量但保留语义。

curl -X POST "$HOST/v1/context/compact" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "session_id": "sess-2026-08-19-001",
    "keep_recent_n": 50,
    "chunk_size": 20
  }'

参数说明

字段

必填

说明

session_id

是

会话的 external_id

keep_recent_n

否

保留的最近活跃消息数,默认 50,范围 [1,500]

chunk_size

否

单次折叠的消息数,默认 20,范围 [5,200]

响应示例

{
  "code": 0,
  "data": {
    "session_id": "sess-2026-08-19-001",
    "compacted_message_count": 20,
    "summary_token_count": 180,
    "active_message_count": 50
  }
}
说明

多次调用实现多叶子增量压缩,而非一次性将所有旧消息压缩为单行摘要。keep_recent_n 默认 50 [1,500],chunk_size 默认 20 [5,200]。

落盘上下文(Flush)

会话结束后将短期上下文持久化为长期记忆。flush 会先执行一次 compact,再将会话状态设为 flushed,并触发记忆蒸馏事件。

curl -X POST "$HOST/v1/context/flush" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "session_id": "sess-2026-08-19-001",
    "compact_first": true,
    "keep_recent_n": 20
  }'

参数说明

字段

必填

说明

session_id

是

会话的 external_id

compact_first

否

落盘前是否先 compact,默认 true

keep_recent_n

否

compact 时保留近 N 条,默认 20

响应示例

{
  "code": 0,
  "data": {
    "session_id": "sess-2026-08-19-001",
    "status": "flushed",
    "flushed_at": "2026-08-19T10:35:00Z",
    "evolve_event_id": 1001
  }
}
说明
  • compact + flush + assemble 是上下文生命周期的三大操作:assemble 读取、compact 压缩、flush 持久化。

  • 幂等性:对已 flushed 的会话再次 flush 会返回既有状态而非报错。

上下文生命周期(Lifecycle)

POST /v1/context/lifecycle 按 action 驱动会话状态机:

  • action=start:创建/打开会话并返回首屏装配的 PromptBlock(等效于 POST /v1/sessions + POST /v1/context/assemble 合并调用)。

    -- start —— 创建会话 + 首屏装配
    curl -X POST "$HOST/v1/context/lifecycle" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{
        "action": "start",
        "session": {"external_id": "sess-2026-08-20-001", "user_id": "user_001", "agent_id": "coding-agent"},
        "query": "继续上次的讨论",
        "token_budget": 4096
      }'
  • action=end:关闭会话并返回收尾统计(等效于 PUT /v1/sessions/{id}/close + POST /v1/context/flush 合并调用)。

    -- end —— 关闭会话 + 落盘
    curl -X POST "$HOST/v1/context/lifecycle" \
      -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
      -d '{"action": "end", "session_id": "sess-2026-08-20-001", "user_id": "user_001"}'

参数说明

字段

必填

说明

action

是

start / end

session

start 时必填

新会话元信息(external_id 必填,user_id / agent_id / title / metadata 可选)

session_id

end 时必填

会话 ID

user_id

否

end 时可选,OWNER Key 关闭指定终端用户会话时使用

query

否

start 可选,配合 token_budget 驱动首屏装配

token_budget

否

start 可选 Token 预算 [1, 32000]

说明

action=start 响应结构同 assemble,包含 prompt_blocks / token_used / stats;action=end 返回 message_count / total_tokens / event_id。

辩证分析(Dialectic)

POST /v1/context/dialectic 在上下文召回结果上进行多视角辩证分析,输出结构化证据与判断。需提供 session_id 或 user_id 至少一项。

示例

curl -X POST "$HOST/v1/context/dialectic" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "query": "Rust 的所有权模型有什么优缺点?",
    "user_id": "user_001",
    "depth": "standard",
    "top_k": 5
  }'

参数说明

字段

必填

说明

query

是

查询文本

session_id

条件

与 user_id 至少一项必填

user_id

条件

与 session_id 至少一项必填

depth

否

分析深度:fast / standard(默认)/ deep / highest

top_k

否

返回 top-k [1,20],默认 5

说明

响应中 prompt_blocks 结构同 assemble,附带 hits_count(召回命中数)和 latency_ms(耗时)。

记忆晋升

记忆晋升(Memory Promotion)把记忆体系和知识库体系打通:自动发现高价值记忆簇 → Agent 合成 Markdown 知识文档 → 人工审核 → 入库为知识库文档,形成"记忆 → 知识"的进化闭环。

功能说明

晋升单(Promotion)的状态流转:

generate(手动)/ 自动提名
        │
        ▼
   generating ──合成成功──► pending_review ──approve──► approved(入库)
        │                        │
   合成失败                    reject
        ▼                        ▼
 generation_failed            rejected

状态

含义

generating

已入队,Agent 正在检索证据 + 合成文档。

pending_review

合成完成,等待人工审核。

approved

入库成功,已生成知识库文档。

rejected

审核拒绝。

generation_failed

合成失败。

说明

需部署侧开启 context.promotion.enabled=true(默认关闭)。开启后系统会周期性自动发现热点记忆簇并创建晋升单;也可手动发起。

操作流程

以下示例使用Owner Key。数据面(发起 / 查询)也支持 USER Key(仅操作自身成员)。

  1. 手动发起晋升(异步入队):

    curl -X POST "$HOST/ops/promotion/generate" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{"topic": "项目部署流程", "target_member_id": 10}'
  2. 轮询列表,等状态变 pending_review:

    curl "$HOST/ops/promotion/list?status=pending_review&page=0&pageSize=20" \
      -H "X-API-Key: $OWNER_KEY"
  3. 查看详情,确认正文与疑点:

    curl "$HOST/ops/promotion/detail?promotionId=101" -H "X-API-Key: $OWNER_KEY"
  4. (可选)解答疑点:若 Agent 合成时遇证据冲突,会在 doubts 字段列出待裁决疑点。带 resolutions 会触发重新合成:

    curl -X POST "$HOST/ops/promotion/resolve-doubts" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{
        "promotion_id": 101,
        "resolutions": [{"doubt_title": "部署环境", "chosen_value": "prod"}]
      }'
  5. 审核通过并写入知识库:

    curl -X POST "$HOST/ops/promotion/approve" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{"promotion_id": 101, "knowledge_base_id": 5}'

    或拒绝:

    curl -X POST "$HOST/ops/promotion/reject" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{"promotion_id": 101, "reason": "内容与现有知识库重复"}'
说明

通过后会在目标知识库创建一篇 Markdown 文档(source=memory_promotion)。以上审核操作也可在控制台的"记忆晋升"页可视化完成。

工作空间管理

工作空间管理操作使用Owner Key,可在控制台可视化完成,也可通过 API 调用。

说明

Owner Key vs Admin Key的管理面分工:

  • Owner Key负责单一 Workspace 级管理(成员管理、Key 管理、Wiki 配置、晋升审核等 /ops/... 接口)

  • Admin Key负责平台级全局管理(创建 Workspace、签发/吊销Owner Key等全局接口)。请勿混用。

成员与权限

  • 列出成员:

    curl "$HOST/ops/workspaces/members?workspaceId=1" -H "X-API-Key: $OWNER_KEY"
  • 创建成员:

    curl -X POST "$HOST/ops/workspaces/members" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{"workspace_id": 1, "user_id": "agent_tech", "name": "技术Agent", "role": "member"}'
    说明

    角色枚举值(小写):owner、admin、viewer、member。owner 拥有工作空间全权限,member 仅访问自身记忆。

  • 其他API:

    • 更新:PATCH /ops/workspaces/members

    • 删除:DELETE /ops/workspaces/members

API Key 管理

  • 为成员签发 USER Key:

    curl -X POST "$HOST/ops/workspaces/members/keys" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{"workspace_id": 1, "member_id": 10, "key_type": "USER"}'

    响应示例:

    警告

    plain_key 仅返回一次,请立即保存。发现异常可随时吊销,被盗 Key 立即失效。

    {"id": 42, "key_prefix": "ctx_9f3a", "key_type": "USER", "plain_key": "ctx_user_xxx..."}
  • 列出 Key(不含明文):

    curl "$HOST/ops/workspaces/members/keys?workspaceId=1" -H "X-API-Key: $OWNER_KEY"
  • 吊销 Key(吊销后全集群 30 秒内失效):

    curl -X POST "$HOST/ops/workspaces/members/keys/revoke" \
      -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \
      -d '{"workspace_id": 1, "id": 42}'

用量查看

  • 记忆统计:

      curl "$HOST/v1/memories/stats?user_id=user_001" -H "X-API-Key: $API_KEY"
  • 工作空间总览(Owner Key):

    curl "$HOST/ops/overview/summary" -H "X-API-Key: $OWNER_KEY"

    响应示例

    {
      "memory_total": 12800,
      "active_sessions": 42,
      "queue_depth": 3,
      "token_saved_estimate": 1250000
    }
  • Token 用量与配额:

    # 月度用量快照
    curl "$HOST/ops/quota/usage" -H "X-API-Key: $OWNER_KEY"
    
    # 当前配额(dimension: workspace / member)
    curl "$HOST/ops/quota/current?dimension=workspace" -H "X-API-Key: $OWNER_KEY"
    说明

    用量、Token 经济、API 调用趋势也可在控制台用量页以图表查看。

审计日志

每条 API 调用都记录 workspace_id + member_id + action + path + 结果,默认保留 30 天。

  • 检索审计日志:

    curl "$HOST/v1/audit/logs?action=MEMORY_ADD&result=success&from=2026-07-01T00:00:00Z&size=20" \
      -H "X-API-Key: $OWNER_KEY"

    响应示例(部分展示):

    {
      "id": 9001,
      "workspace_id": 1,
      "action": "MEMORY_ADD",
      "subject_type": "user",
      "subject_id": "10",
      "result": "success",
      "path": "/v1/memories",
      "created_at": "2026-07-01T10:01:00Z"
    }
  • 按维度统计:

    curl "$HOST/v1/audit/stats?group_by=action" -H "X-API-Key: $OWNER_KEY"
    说明

    单条详情用 GET /v1/audit/logs/{id}。审计日志同样可在控制台审计页按 action / result / 时间范围检索。

相关文档