本文介绍上下文服务(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”,带 |
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时为去重命中的已有记忆)createdtrue新建 /false去重命中已有记忆说明CLI 插件默认使用此端点写入记忆。
搜索记忆
按语义检索记忆,向量 kNN + BM25 词法两路召回,RRF 融合取 top-k。提供三个版本,功能逐级递增:
路径 | L1 事实 | L2 源文本 | 响应格式 |
| 是 | 否 | 裸 JSON 数组 |
| 是 | 是(默认开启) | 裸 JSON 数组 |
| 是 | 是 |
|
示例
curl -X POST "$HOST/v2/memories/search" \
-H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{
"query": "技术栈选型",
"user_id": "user_001",
"limit": 10
}'参数说明
字段 | 必填 | 说明 |
| 是 | 查询文本 |
| 否 | 限定用户。USER Key 自动绑定自身 |
| 否 | 返回条数 [1,200],默认 10(别名 |
| 否 | 附加过滤,支持时间范围: |
| 否 |
|
| 否 | 相似度下限 [0,1],缺省不过滤(别名 |
V3 搜索 filters map 传参(Mem0 v1.1 SDK 兼容):V3 端点
POST /v3/memories/search中,user_id/agent_id/run_id等实体参数应放在filtersmap 内传递,例如:{"query": "技术栈", "filters": {"user_id": "user_001"}, "limit": 10}。顶层同名参数(如 V1/V2 的
user_id)在 V3 路由中仍被接受,但推荐使用filters以与 Mem0 v1.1 SDK 对齐。
记忆操作(查看 / 更新 / 删除 / 置顶 / 失效)
操作 | 方法与路径 | |||||||||||||||
列表 |
示例:可选参数 | |||||||||||||||
详情 |
示例 | |||||||||||||||
更新 |
示例 | |||||||||||||||
删除 |
示例: | |||||||||||||||
置顶 / 取消 |
示例: | |||||||||||||||
失效 |
示例: | |||||||||||||||
历史 |
示例 | |||||||||||||||
统计 |
| |||||||||||||||
清空(不可逆) |
说明 重置场景,不可逆。query和body中都需要添加 示例 参数说明
响应示例 | |||||||||||||||
反馈 |
说明
示例 参数说明
响应示例 | |||||||||||||||
L2 源文本 |
返回产生该 L1 事实的原始对话消息(L2 层),用于审计或调试。 示例 响应示例 | |||||||||||||||
V3 列出 |
Mem0 v1.1 SDK 兼容,通过请求体进行实体过滤,支持分页信封响应。 示例
响应示例(裸 JSON,无 Box 包装): | |||||||||||||||
L0 实体卡编辑 |
对实体画像进行部分更新(仅传入的字段被覆写)。 示例
|
自定义蒸馏规则
蒸馏规则(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"
}'字段 | 必填 | 说明 |
| 是 | 名称,≤128 字符。 |
| 否 | 描述,≤1024 字符。 |
| 否 |
|
| 否 | 是否启用知识图谱索引,默认 |
管理知识库
列出知识库:
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 后返回命中片段。
示例
curl -X POST "$HOST/v1/knowledge/search" \
-H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{
"query": "Docker 部署流程",
"kb_ids": [1],
"top_k": 10
}'参数说明
字段 | 必填 | 说明 |
| 是 | 查询文本。 |
| USER Key 必填 | 检索的知识库 ID 数组(注意复数,单数 |
| 否 | 返回条数,默认 10,取值范围[1,100]。 |
| 否 | BM25 vs 向量混合权重 [0.0,1.0]。 |
| 否 | 是否启用 LLM 查询改写。 |
响应示例(部分展示)
{
"code": 0,
"data": [
{
"chunk_id": "chunk_42",
"document_id": "101",
"title": "部署手册",
"snippet": "部署流程:1. 准备 .env ... 2. 执行 ./deploy.sh ...",
"score": 0.91,
"rerank_score": 0.88
}
]
}命中正文在 snippet 字段(不是 content),文件名在 title。
知识评审
开启质量评审后,新入库的文档分块经自动评分,低分块进入人工审核队列。
开启评审:
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\"}" }'搜索 Wiki 页面(数据面,BM25 检索):
curl -X POST "$HOST/v1/knowledge/wiki/search" \ -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \ -d '{ "query": "Kubernetes 部署流程", "knowledge_base_ids": [1], "top_k": 5 }'读取页面全文:
curl "$HOST/v1/knowledge/wiki/pages/42" -H "X-API-Key: $API_KEY"Wiki 页面类型:
类型
说明
summary文档级摘要(每个文档 1 个)
entity实体(人物 / 技术 / 产品等),多文档可贡献同一实体
concept概念(方法 / 原理 / 模式等)
indexWiki 首页,系统自动维护
技能目录(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 } }搜索技能(语义检索):
curl -X POST "$HOST/v1/skills/search" \ -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \ -d '{ "query": "Docker 部署", "top_k": 5, "tags": ["devops"] }'参数说明:
字段
必填
说明
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 自增编号,支持增量拉取与倒序分页。
会话操作速查
操作 | 方法与路径 |
创建 |
|
列表 |
|
详情 |
|
更新 |
|
追加消息 |
|
消息列表 |
|
关闭 |
|
删除 |
|
统计 |
|
继承链 |
|
创建会话
以 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"}'请求参数
字段 | 必填 | 说明 |
| 是 | 外部会话标识,≤128 字符,同一 user 下幂等。 |
| 否 | Agent 标识,用于按 Agent 过滤会话。 |
| 否 | 标题,≤256 字符。 |
| 否 | 终端用户标识;USER Key 自动绑定。 |
| 否 | 线程键,用于跨会话继承上下文。 |
| 否 | 父会话 |
响应示例
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"请求参数
参数 | 说明 |
| 页码(0-indexed),默认 0。 |
| 每页大小 [1,200],默认 20。 |
| 按 Agent 过滤。 |
| 按状态过滤: |
分页元信息通过响应头返回: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"请求参数
参数 | 说明 |
| 增量拉取:返回 seq > since_seq 的消息。 |
| 倒序拉取:返回 seq < before_seq 的消息。 |
| 排序方向: |
| 返回条数 [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 预算 [1,32000],默认 32000,永不超预算。 |
| 召回条数 [1,50]。 |
| 相似度下限 [0,1],默认 0.3。 |
| 装配范围: |
| 布尔,强制开关单个维度(在 scope 之后生效)。 |
| 指定召回的知识库 ID 列表。 |
| 预算分配比例: |
context_scope 预设:
值 | 包含维度 | 典型场景 |
| 系统指令 + 近期消息 + 记忆 + 知识库。 | 通用对话 |
| 系统指令 + 近期消息。 | 补全 / 格式化等轻量调用 |
| 系统指令 + 近期消息 + 记忆。 | 无知识库场景 |
| 系统指令 + 近期消息 + 知识库。 | 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
}'参数说明
字段 | 必填 | 说明 |
| 是 | 会话的 external_id |
| 否 | 保留的最近活跃消息数,默认 50,范围 [1,500] |
| 否 | 单次折叠的消息数,默认 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
}'参数说明
字段 | 必填 | 说明 |
| 是 | 会话的 external_id |
| 否 | 落盘前是否先 compact,默认 |
| 否 | 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"}'
参数说明
字段 | 必填 | 说明 |
| 是 |
|
| start 时必填 | 新会话元信息( |
| end 时必填 | 会话 ID |
| 否 |
|
| 否 |
|
| 否 |
|
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
}'参数说明
字段 | 必填 | 说明 |
| 是 | 查询文本 |
| 条件 | 与 |
| 条件 | 与 |
| 否 | 分析深度: |
| 否 | 返回 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状态 | 含义 |
| 已入队,Agent 正在检索证据 + 合成文档。 |
| 合成完成,等待人工审核。 |
| 入库成功,已生成知识库文档。 |
| 审核拒绝。 |
| 合成失败。 |
需部署侧开启 context.promotion.enabled=true(默认关闭)。开启后系统会周期性自动发现热点记忆簇并创建晋升单;也可手动发起。
操作流程
以下示例使用Owner Key。数据面(发起 / 查询)也支持 USER Key(仅操作自身成员)。
手动发起晋升(异步入队):
curl -X POST "$HOST/ops/promotion/generate" \ -H "X-API-Key: $OWNER_KEY" -H "Content-Type: application/json" \ -d '{"topic": "项目部署流程", "target_member_id": 10}'轮询列表,等状态变
pending_review:curl "$HOST/ops/promotion/list?status=pending_review&page=0&pageSize=20" \ -H "X-API-Key: $OWNER_KEY"查看详情,确认正文与疑点:
curl "$HOST/ops/promotion/detail?promotionId=101" -H "X-API-Key: $OWNER_KEY"(可选)解答疑点:若 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"}] }'审核通过并写入知识库:
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 / 时间范围检索。