← 返回官网官网MemoraX API · v0.1.0
开发者文档

Memorax API 开发者文档

文档版本 0.1.0 · 发布日期 2026-11-06

通过 Add 保存用户消息,通过 Search 检索相关记忆,为应用提供持续的用户上下文。

快速开始

准备接入配置

准备具有 read 和 write 权限的 API Key,并使用官方 API 根地址 https://platform.memoraxai.com。

export MEMORAX_BASE_URL='https://platform.memoraxai.com'
export MEMORAX_API_KEY='YOUR_API_KEY'

示例可选择 cURL、Python 或 JavaScript。Python 使用 requests(pip install requests),JavaScript 使用 Node.js 18+ 并保存为 .mjs 文件。

添加记忆

POST /v1/memories/add

将开发约束写入代码记忆。提供 content_type=code、session_id 和 metadata.source=memorax-code。任务 ID 由服务端自动生成,无需传入;保存响应中的 data.task_id 以查询写入状态。

cURL
# metadata.source:当前代码场景必填,必须为 memorax-code;即将取消此必填要求。
# content_type:混合场景选 auto,办公类场景选 work。
curl --request POST "$MEMORAX_BASE_URL/v1/memories/add" \
  --header "Authorization: Token $MEMORAX_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "user_id": "quickstart-user",
  "async_mode": true,
  "content_type": "code",
  "mode": "default",
  "session_id": "cedar-coding-session",
  "metadata": {
    "source": "memorax-code"
  },
  "messages": [
    {
      "role": "user",
      "content": "Cedar 项目的回调模块已确定以下约束:自动投递总次数最多 3 次;重试复用同一个 event_id;使用唯一约束避免重复产生业务效果。",
      "timestamp": -1
    }
  ]
}'

响应示例 · HTTP 202

{
  "success": true,
  "data": {
    "task_id": "22222222-2222-4222-8222-222222222222",
    "status": "accepted",
    "data": null,
    "balances": []
  },
  "meta": {
    "request_id": "request-demo",
    "timestamp": "2026-11-06T00:00:00Z"
  }
}

status=accepted 表示写入任务已受理,下一步查询该任务的处理结果。

查询写入状态

GET /v1/memories/add/status/{task_id}

将示例中的 TASK_ID 替换为上一步返回的 data.task_id,执行一次状态查询。

cURL
curl --request GET "$MEMORAX_BASE_URL/v1/memories/add/status/TASK_ID" \
  --header "Authorization: Token $MEMORAX_API_KEY"

响应示例 · HTTP 200

{
  "task_id": "22222222-2222-4222-8222-222222222222",
  "status": "success",
  "phase": "done",
  "memory": {
    "total": 1
  },
  "error": null
}
status 含义 下一步
processing 正在处理 稍后手动再次查询。
success 写入成功 执行 Search。
failed 写入失败 查看 error,保留 task_id 排查。

检索记忆

POST /v1/memories/search

确认任务 success 后,使用与 Add 相同的 user_id,查询开发约束。

cURL
curl --request POST "$MEMORAX_BASE_URL/v1/memories/search" \
  --header "Authorization: Token $MEMORAX_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "user_id": "quickstart-user",
  "query": "实现 Cedar 回调模块时,重试次数和幂等处理需要遵守哪些约束?",
  "mode": "fast",
  "output_mode": "summary",
  "top_k": 5
}'

响应示例 · HTTP 200

{
  "success": true,
  "data": {
    "task_id": "33333333-3333-4333-8333-333333333333",
    "status": "completed",
    "data": [
      {
        "id": "memory-demo",
        "memory": "Cedar 回调自动投递总次数最多 3 次,重试复用 event_id,并通过唯一约束保证幂等。",
        "content_type": "code",
        "user_id": "quickstart-user",
        "created_at": "2026-11-06T00:00:00Z",
        "updated_at": "2026-11-06T00:00:00Z"
      }
    ],
    "balances": []
  },
  "meta": {
    "request_id": "request-demo",
    "timestamp": "2026-11-06T00:00:00Z"
  }
}

读取 data.data 中各项的 memory,即可将检索到的开发约束加入 Coding Agent 的上下文。空结果时检查 user_id、任务完成状态和查询条件。

以上响应为结构示例,任务 ID 和记忆内容以实际服务响应为准。详细字段见 Add 请求体、异步任务状态 和 Search 请求体。

地址与鉴权

MEMORAX_BASE_URL 使用官方地址 https://platform.memoraxai.com/,配置时不含末尾斜杠或 /v1。API Key 决定账户、项目与权限。user_id 可由调用方自定义,用于指定项目内的记忆主体;Add 与 Search 应使用相同的值。

export MEMORAX_BASE_URL='https://platform.memoraxai.com'
export MEMORAX_API_KEY='YOUR_API_KEY'
Authorization: Token YOUR_API_KEY
Content-Type: application/json

鉴权格式为 Authorization: Token YOUR_API_KEY。API Key 应保存在环境变量或服务端配置中。

请求和响应中的示例值均为合成数据。调用前替换示例密钥与业务数据。Add 需要 write 权限,Search 与任务状态查询需要 read 权限。

Add

POST /v1/memories/add

提交对话、代码内容或文档,生成用户可检索的记忆。默认异步返回任务 ID。请求体使用 application/json。

Add 调用示例

以下示例演示回调规则的写入与检索。Python 使用 requests,JavaScript 使用 Node.js 18+。

cURL
curl --request POST "$MEMORAX_BASE_URL/v1/memories/add" \
  --header "Authorization: Token $MEMORAX_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "user_id": "demo-user",
  "async_mode": true,
  "messages": [
    {
      "role": "user",
      "content": "Cedar 回调最多重试三次。",
      "timestamp": -1
    },
    {
      "role": "assistant",
      "content": "已确认,会按此约束实现。",
      "timestamp": -1
    }
  ]
}'
查看请求 JSON
{
  "user_id": "demo-user",
  "async_mode": true,
  "messages": [
    {
      "role": "user",
      "content": "Cedar 回调最多重试三次。",
      "timestamp": -1
    },
    {
      "role": "assistant",
      "content": "已确认,会按此约束实现。",
      "timestamp": -1
    }
  ]
}

响应示例 · HTTP 202,任务已受理

以下为响应结构示例。

{
  "success": true,
  "data": {"task_id": "22222222-2222-4222-8222-222222222222", "status": "accepted", "data": null, "balances": []},
  "meta": {"request_id": "request-demo", "timestamp": "2026-11-03T00:00:00Z"}
}

task_id 由服务端自动生成,无需在 Add 请求中传入。保存响应中的 data.task_id,查询任务 status=success 后再执行 Search。

Add 请求体

application/json。点击复合字段下的“展示属性”查看子字段。数组展开的是单个元素的结构。

user_id

string · 必填 · 至少 1 个字符

user_id 可由调用方自定义,用于指定这批记忆归属于哪个用户。建议使用业务系统内稳定的用户 ID,例如 demo-user。后续 Search 使用相同的值。账户与项目权限由 API Key 确定。

messages

Message[] · 普通消息写入时必填 · 模型默认 []

待处理的消息,按对话顺序排列。可以提交一条用户消息,也可以提交用户与助手的多轮对话。每项含 role、content 和 timestamp。具体结构可在下方展开。普通消息写入必须至少一项。

展示属性

字段值示例 · add.messages

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

[
  {
    "role": "user",
    "content": "回调失败后最多重试 3 次。",
    "timestamp": -1
  }
]
role

string · 必填 · user / assistant

消息由用户还是助手发出。不接受 system/tool。

content

string / object[] · 必填

实际消息正文。纯文本须包含非空白字符。部件数组至少一项。下面展开文本、图片和文件部件。

展示属性

字段值示例 · add.messages[].content

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

[
  {
    "type": "input_text",
    "text": "回调失败后最多重试 3 次。"
  }
]
text / input_text · 文本部件

字段值示例 · add.messages[].content.text

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "type": "input_text",
  "text": "回调失败后最多重试 3 次。"
}
type

string · 必填

使用 text。公开入口也接受 input_text 并归一化为 text。

text

string · 必填

实际文本,须包含非空白字符。

input_image · 视觉图片

图片 Base64 示例 · add.messages[].content.input_image

使用 image_url 传入带 MIME 类型前缀的 Base64 Data URL。下例为一张 1×1 像素的 PNG 图片,仅展示编码格式;使用时替换为实际图片的编码,并调整 caption。仅支持 Base64 Data URL,不支持 HTTP(S) 图片地址。

{
  "type": "input_image",
  "image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC",
  "detail": "auto",
  "caption": "示例像素图片"
}
type

string · 必填

固定为 input_image。

image_url

string · 必填

仅接受带 MIME 类型前缀的 PNG/JPEG/WebP/GIF Base64 Data URL,例如 data:image/png;base64,...。字段名仍为 image_url,但不支持 HTTP(S) 图片地址;请勿传入不带 Data URL 前缀的纯 Base64 字符串。

detail

string · 可选 · 默认 auto

auto / low / high / original,传给视觉处理的细节提示,效果依模型能力。

caption

string · 可选 · 最多 4,000 字符

调用方提供的非空白图片描述。提供后跳过视觉描述生成。

file · 文件

上传新文件示例 · add.messages[].content.file

使用 file_data 传入带 MIME 类型前缀的 Base64 Data URL,并用 filename 提供带扩展名的文件名。下例编码对应文本 Retry up to 3 times.(末尾含换行)。请替换为实际文件的编码和文件名;本次上传不传 file_id。

{
  "type": "file",
  "file": {
    "file_data": "data:text/plain;base64,UmV0cnkgdXAgdG8gMyB0aW1lcy4K",
    "filename": "retry-rules.txt"
  }
}
type

string · 必填

固定为 file。

file

object · 必填

提供已有文件引用或新文件数据。

展示属性

上传新文件示例 · add.messages[].content.file

使用 file_data 传入带 MIME 类型前缀的 Base64 Data URL,并用 filename 提供带扩展名的文件名。下例编码对应文本 Retry up to 3 times.(末尾含换行)。请替换为实际文件的编码和文件名;本次上传不传 file_id。

{
  "file_data": "data:text/plain;base64,UmV0cnkgdXAgdG8gMyB0aW1lcy4K",
  "filename": "retry-rules.txt"
}
file_id

UUID string · 与 file_data 二选一

引用已有文件。必须属于当前项目与 user_id。

file_data

string · 与 file_id 二选一

新文件 Base64 数据,可带 Data URL 前缀。提供此字段时必须给 filename。

filename

string · 新文件必填

包含扩展名的文件名,不含目录及控制字符,最多 255 字符。实际类型还受服务支持范围限制。

提交文件后,保存 Add 受理响应中的 data.task_id,使用 GET /v1/memories/add/status/{task_id} 查询处理状态。后续步骤见异步任务状态。

timestamp

integer · 必填

该消息发生的 13 位 Unix 毫秒时间,或 -1 表示未提供。每条消息均须包含该字段。

sender_id

string / null · 可选

发送者标识,补充 role。文件部件入口不支持此字段。

普通消息每条默认最多 12,000 字符。code/default 默认 128,000,以部署配置为准。图片、文件有独立限制,见本接口的附件说明。

async_mode

boolean · 可选 · 默认 true

控制调用方是否等待写入处理完成。true 返回 HTTP 202 和任务 ID,随后通过状态接口确认任务结果。false 在请求内等待处理,成功返回 HTTP 200。生产环境只允许 true。同步方式仅供允许它的非生产环境使用。

mode

string · 可选 · 默认 default

选择输入的处理方式。

值 作用 适用条件
default 从输入中抽取并组织记忆。 普通对话、代码输入以及文档入口的默认方式。
raw 按原始内容写入记忆。 适用于原始文本写入。
pre_summarized 接收已经整理好的代码摘要。 仅 content_type=code。仍需代码会话与来源字段。

content_type

string · 可选 · 默认 auto · 枚举 code / work / auto / document

标明输入属于哪类内容,从而选择对应校验与处理流程。编码对话使用 code,当前还需 session_id 与 metadata.source="memorax-code"。metadata.source 的必填要求计划近期取消,取消前仍需传入。文档通过受支持的 Responses 风格文件内容部件传入,由入口确定类型。文档写入须同时提供相应文档内容。

work:用于工作效率类场景。

auto:用于场景混合或不确定具体场景的输入,由服务端自动判断内容类型。

memory_output_language

string · 可选 · 默认 zh · 枚举 zh / en

指定生成记忆的语言,zh 为中文,en 为英文。

agent_id

string / null · 可选 · 默认 null · 最多 255 字符

记录消息来自哪个 Agent,例如 coding-assistant。需要按 Agent 隔离检索结果时,在 Search 的 filters 中对同一值使用 eq。不填表示不指定这个来源标识。

app_id

string / null · 可选 · 默认 null · 最多 255 字符

记录产生消息的应用,例如 desktop-client。同一用户可能使用多个应用。调用方可以通过 Search 的 filters.app_id 条件限定其中一个应用的记忆。

session_id

string / null · 可选。代码写入必填 · 默认 null · 最多 255 字符

关联一次对话或编码会话。同一会话的多批写入应使用同一个 ID,之后可通过 Search 过滤该会话。同一会话可关联多次 Add。

metadata

object / null · 可选 · 默认 null

附带来源等扩展元数据。当前代码场景必须包含 {"source":"memorax-code"}。metadata.source 的必填要求计划近期取消,取消前仍需传入。其他业务属性应按部署约定使用。Search 可使用的过滤字段见 filters 的属性说明。

展示属性

字段值示例 · add.metadata

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "source": "memorax-code"
}
source

string · code 写入必填

当前代码场景必填,值必须为 memorax-code;此必填要求计划近期取消,取消前仍需传入。其余属性是部署约定的扩展元数据,不承诺任意键可搜索。

timestamp

integer / null · 可选 · 默认 null · 13 位 Unix 毫秒值或 -1

提供这次写入的请求级事件时间,合法时间会用于写入的 event_created_at 元数据。适合批量导入时标记事件发生时间,。-1 表示不提供该事件时间。每条 messages[] 的时间戳仍必须单独填写。

add_only

boolean / null · 可选 · 默认 null

控制常规记忆写入中抽取后的操作决策。true 跳过摘要与 Fact 的新增/更新/删除决策,仅按新增处理;false、省略或传 null 时执行操作决策。此参数不跳过内容抽取、向量计算等处理,不控制 Bucket(主题分组)更新,也不适用于 raw 写入。

code_extraction_instructions

string / null · 可选 · 最多 12,000 字符 · 仅用于 code + default

为代码记忆抽取提供额外指导,例如“优先保留已确认的兼容性约束与决策理由”。该字段用于指导抽取,消息正文通过 messages 提交。空白字符串归一化为 null。仅适用于 code/default 组合。

chunk

object / null · 可选 · 默认 null · 仅用于 code + default

说明本次提交属于客户端拆分后的哪一块,帮助保留分块来源关系。客户端须先自行分块。各分块由客户端分别提交。属性可在下方展开。

展示属性
代码分块属性

字段值示例 · add.chunk

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "group_id": "callback-session-001",
  "index": 0,
  "count": 2
}
group_id

string · 必填 · 最短字符数 1 · 最长字符数 512

标识同一批分块。同组各请求使用相同值。去除首尾空白后长度 1~512。

index

integer · 必填 · 最小值 0

当前块的位置,从 0 开始,必须小于 count。要求严格整数。

count

integer · 必填 · 最小值 2

这组分块的总数,至少 2。要求严格整数。

window_context

object[] · 可选 · 默认 []

为 Bucket 主题路由提供近期对话背景,帮助判断本次内容归到哪个主题。例如传入近期的 {"role":"user","content":"继续讨论回调重试"}。待写入内容应放在 messages。服务端保留末尾最多 50 项,再按 content 总字符预算 10,000 丢弃旧项。若只剩一个超长项,该项仍保留。

展示属性

字段值示例 · add.window_context

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

[
  {
    "role": "user",
    "content": "我们刚才讨论了回调重试。"
  }
]

自由对象数组,没有与 Message 相同的固定必填结构。常见约定为 role(发言方)和 content(文本)。这些属性用于提供近期对话背景。

Add 输入组合与附件限制

图片、文件与消息长度限制

图片通过 input_image 提交,仅支持 Base64 Data URL,不支持 HTTP(S) 图片地址。默认限制为每消息 4 张、每请求 8 张、单图 8 MiB、2,000 万像素、16 帧,以实际配置为准。input_image 支持 content_type="work" 或 "code",要求 mode="default"。代码场景仍需满足当前的 session_id 与 metadata.source 要求。结构化代码证据输入须单独提交。

file 每请求最多 10 个,只能在 user 消息中出现。文件输入支持 content_type="work" 或 "auto",要求 async_mode=true、mode="default",不支持 content_type="code",不支持 sender_id。同一请求的文件 ID 须唯一,已有 ID 必须属于当前项目与 user_id。图片输入使用 input_image 的 Base64 Data URL;此处 file 的限制适用于文档附件。

文件默认原始字节上限 20 MiB,可配置。filename 必须含支持的扩展名为pdf、doc、docx、ppt、pptx、xls、xlsx、xlsm、jpg、jpeg、png、bmp、gif、md、markdown、html、epub、mobi、rtf、txt。使用前须开通文件解析能力。解析结果通过任务状态接口查询。

代码写入示例
{
  "user_id": "demo-user",
  "content_type": "code",
  "mode": "default",
  "session_id": "coding-session-demo",
  "metadata": {"source": "memorax-code"},
  "messages": [{"role": "user", "timestamp": -1, "content": "重试必须复用 event_id;唯一约束负责避免重复扣款。"}]
}

pre_summarized 只能和 code 配合,仍需 session_id 与上述 metadata。该模式同时检查单条消息和归一化摘要总长度。

文件写入示例
{
  "user_id": "demo-user",
  "messages": [{"role": "user", "timestamp": -1, "content": [
    {"type": "text", "text": "请读取这个示例文档。"},
    {"type": "file", "file": {"filename": "cedar.txt", "file_data": "SGVsbG8gQ2VkYXI="}}
  ]}]
}

Add 响应 · 异步受理(202)

success

boolean · 可选 · 默认 true

接口成功标志。Add 的异步处理结果通过任务状态接口查询。

data

object · 必填

业务结果对象。展开查看本响应的具体结构。

展示属性

响应值示例 · add.response.accepted.data

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "task_id": "22222222-2222-4222-8222-222222222222",
  "status": "accepted",
  "data": null,
  "balances": []
}
task_id

string · 必填

由服务端自动生成的任务 ID,调用方无需在 Add 请求中传入。例如 22222222-2222-4222-8222-222222222222。异步 Add 返回的 data.task_id 用于查询写入状态。

status

"accepted" · 必填

本响应的处理状态,允许值见类型说明。

data

null · 可选 · 默认 null

异步受理时没有完成结果,返回 null。请用 task_id 查询任务状态。

balances

object[] · 可选 · 默认 []

本次操作返回的配额/余额信息,可能为空。不表示记忆结果。

展示属性

响应值示例 · add.response.accepted.data.balances

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

[
  {
    "product_code": "memory_api",
    "feature_code": "memory_write",
    "spec_key": "count",
    "quota_unit": "count",
    "quota_limit": 1000,
    "reserved": 1,
    "consumed": 20,
    "remaining": 979
  }
]
product_code

memory_api / chat_api / knowledge_base · 必填

余额所属产品,例如 memory_api。

feature_code

memory_write / memory_search / chat_completion / knowledge_base · 必填

余额所属功能,如 memory_write 或 memory_search。

spec_key

count / storage / calls / tokens · 必填

配额维度,例如次数、存储、调用数或 token 数。与 quota_unit 一起理解。

quota_unit

string · 必填

配额计量单位,说明数值应按什么单位解读。

quota_limit

integer / null · 可选 · 默认 null

该维度的配额上限,可为空,null 表示该值未提供。

reserved

integer · 必填 · 最小值 0

已预占的额度,为非负值,单位由 quota_unit 指定。

consumed

integer · 必填 · 最小值 0

已经消耗的额度,非负。按 quota_unit 解读。

remaining

integer / null · 可选 · 默认 null

返回的剩余额度,可为空,null 表示该值未提供。

meta

object · 必填

请求追踪信息,用于排查本次接口调用。

展示属性

响应值示例 · add.response.accepted.meta

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "request_id": "66666666-6666-4666-8666-666666666666",
  "timestamp": "2026-11-11T08:00:00Z"
}
request_id

string · 必填

本次 HTTP 请求的追踪标识,可关联服务端日志。

timestamp

string(date-time / ISO 8601 日期时间) · 必填

服务端生成响应的时间。

Add 响应 · 同步完成(200)

success

boolean · 可选 · 默认 true

接口成功标志。Add 的异步处理结果通过任务状态接口查询。

data

object · 必填

业务结果对象。展开查看本响应的具体结构。

展示属性

响应值示例 · add.response.completed.data

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "task_id": "22222222-2222-4222-8222-222222222222",
  "status": "completed",
  "data": [
    {
      "id": "55555555-5555-4555-8555-555555555555",
      "event": "ADD",
      "data": {
        "memory": "回调失败后最多重试 3 次。"
      }
    }
  ],
  "balances": []
}
task_id

string · 必填

由服务端自动生成的任务 ID,调用方无需在 Add 请求中传入。例如 22222222-2222-4222-8222-222222222222。异步 Add 返回的 data.task_id 用于查询写入状态。

status

"completed" · 必填

本响应的处理状态,允许值见类型说明。

data

object[] · 必填

本次同步写入产生的记忆变更事件数组。

展示属性

响应值示例 · add.response.completed.data.data

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

[
  {
    "id": "55555555-5555-4555-8555-555555555555",
    "event": "ADD",
    "data": {
      "memory": "回调失败后最多重试 3 次。"
    }
  }
]
id

string · 必填

发生变更的记忆记录标识。

event

ADD / UPDATE / DELETE · 必填

变更动作包含 ADD 新增、UPDATE 更新、DELETE 删除。

data

object · 必填

该变更事件关联的记忆内容。

展示属性

响应值示例 · add.response.completed.data.data[].data

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "memory": "回调失败后最多重试 3 次。"
}
memory

string · 必填

可供调用方使用的记忆正文。

document_id

string / null · 可选 · 默认 null

文档事件对应的稳定文档 ID,普通记忆可不提供。

revision

integer / null · 可选 · 默认 null

文档事件对应的版本,供后续文档更新核对。

balances

object[] · 可选 · 默认 []

本次操作返回的配额/余额信息,可能为空。不表示记忆结果。

展示属性

响应值示例 · add.response.completed.data.balances

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

[
  {
    "product_code": "memory_api",
    "feature_code": "memory_write",
    "spec_key": "count",
    "quota_unit": "count",
    "quota_limit": 1000,
    "reserved": 1,
    "consumed": 20,
    "remaining": 979
  }
]
product_code

memory_api / chat_api / knowledge_base · 必填

余额所属产品,例如 memory_api。

feature_code

memory_write / memory_search / chat_completion / knowledge_base · 必填

余额所属功能,如 memory_write 或 memory_search。

spec_key

count / storage / calls / tokens · 必填

配额维度,例如次数、存储、调用数或 token 数。与 quota_unit 一起理解。

quota_unit

string · 必填

配额计量单位,说明数值应按什么单位解读。

quota_limit

integer / null · 可选 · 默认 null

该维度的配额上限,可为空,null 表示该值未提供。

reserved

integer · 必填 · 最小值 0

已预占的额度,为非负值,单位由 quota_unit 指定。

consumed

integer · 必填 · 最小值 0

已经消耗的额度,非负。按 quota_unit 解读。

remaining

integer / null · 可选 · 默认 null

返回的剩余额度,可为空,null 表示该值未提供。

meta

object · 必填

请求追踪信息,用于排查本次接口调用。

展示属性

响应值示例 · add.response.completed.meta

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "request_id": "66666666-6666-4666-8666-666666666666",
  "timestamp": "2026-11-11T08:00:00Z"
}
request_id

string · 必填

本次 HTTP 请求的追踪标识,可关联服务端日志。

timestamp

string(date-time / ISO 8601 日期时间) · 必填

服务端生成响应的时间。

同步响应 JSON 示例
{
  "success": true,
  "data": {"task_id": "22222222-2222-4222-8222-222222222222", "status": "completed", "data": [{"id": "fact-demo", "event": "ADD", "data": {"memory": "Cedar 回调最多重试三次。"}}], "balances": []},
  "meta": {"request_id": "request-demo", "timestamp": "2026-11-03T00:00:00Z"}
}

异步任务状态

GET /v1/memories/add/status/{task_id}

curl "$MEMORAX_BASE_URL/v1/memories/add/status/TASK_ID" \
  --header "Authorization: Token $MEMORAX_API_KEY"

GET 成功响应直接返回任务对象。顶层 status 为 processing、success 或 failed,分别表示处理中、成功和失败。

{"task_id":"22222222-2222-4222-8222-222222222222","status":"success","phase":"done","memory":{"total":1},"error":null}

上方展示普通任务成功时的字段。处理中可包含 kind。文档处理任务还可提供 kind、parser_record_id、parser_task_id、document_type、attempts、files、received_at、created_at、updated_at、completed_at。files 逐文件给出解析状态等信息。多文件任务须检查所有文件的处理结果。普通任务状态默认保留 24 小时,可能根据服务容量提前清理。收到 404 时,应保存 task_id 并核查任务可见性和保留期限。

files[].status 表示单个文件的解析状态;文件解析成功不代表整个写入任务已完成。任务顶层 status=processing 时继续查询,status=failed 时查看错误;等待顶层 status=success 后再检索,并检查各文件的处理结果。保存目标文件的 files[].parser_id,用于 Search 的 document_ids。

文件状态示例 · files[] 中的一项

{
  "parser_id": "22222222-2222-4222-8222-222222222222",
  "file_index": 0,
  "status": "success"
}
字段 作用
task_id 查询的写入任务 ID,与 Add 返回值对应。
status processing 处理中、success 成功、failed 失败。以此判断是否到达终态。
phase 当前处理阶段,成功示例为 done。用于区分正在解析还是其他阶段,不代替 status。
kind 任务种类,具体是否返回取决于任务处理路径。
memory 写入结果摘要。普通成功任务的 total 表示写入结果数量。
error 失败说明。没有错误时通常为 null。
parser_record_id 文档解析记录标识,用于关联解析侧记录。
parser_task_id 解析服务任务标识,用于追踪外部解析处理。
document_type 文档处理类型信息。
attempts 任务记录中的处理尝试次数。
files 逐文件的解析结果。file_index 标识对应文件,status 表示文件解析状态,parser_id 用于限定该文件的文档检索范围。
received_at 任务接收时间。
created_at 任务记录创建时间。
updated_at 任务状态最近更新时间。
completed_at 任务完成时间,未完成时可能为空。

POST /v1/memories/search

按用户范围检索已写入的记忆,使用 fast 直接检索。输出模式决定返回摘要、事实或原文。

Search 调用示例

以下示例演示回调规则的写入与检索。Python 使用 requests,JavaScript 使用 Node.js 18+。

cURL
curl --request POST "$MEMORAX_BASE_URL/v1/memories/search" \
  --header "Authorization: Token $MEMORAX_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "user_id": "demo-user",
  "query": "Cedar 回调如何重试?",
  "mode": "fast",
  "output_mode": "summary",
  "top_k": 5
}'
查看请求 JSON
{
  "user_id": "demo-user",
  "query": "Cedar 回调如何重试?",
  "mode": "fast",
  "output_mode": "summary",
  "top_k": 5
}

响应示例 · HTTP 200,查询完成

以下为响应结构示例。

{
  "success": true,
  "data": {
    "task_id": "33333333-3333-4333-8333-333333333333",
    "status": "completed",
    "data": [{
      "id": "summary-demo", "memory": "Cedar 回调最多重试三次。",
      "score": 0.82,
      "score_details": {"rank_method": "semantic_similarity", "rank_score": 0.82, "semantic_similarity": 0.82},
      "user_id": "demo-user", "content_type": "dialogue",
      "created_at": "2026-11-03T00:00:00Z", "updated_at": "2026-11-03T00:00:00Z",
      "metadata": {}, "categories": [], "immutable": false
    }],
    "balances": [], "buckets": null,
    "meta_info": {"mode": "fast", "pipeline_status": "fast_search", "recall_decision": null}
  },
  "meta": {"request_id": "request-demo", "timestamp": "2026-11-03T00:00:00Z"}
}

Search 请求体

application/json。点击复合字段下的“展示属性”查看子字段。数组展开的是单个元素的结构。

user_id

string · 必填

指定要检索的记忆所属用户。user_id 可自定义,应与 Add 时使用的值一致。API Key 决定账户与项目,此字段在该鉴权范围内选择记忆主体。

query

string / null · 普通检索必填 · 最多 1,024 字符

使用自然语言描述要查找的信息,例如“回调失败后如何重试?”。query 须包含非空白字符。

mode

string · 可选 · 默认 fast · 枚举 fast

fast 直接检索已写入的记忆。召回结果取决于查询内容和可用记忆。

output_mode

string · 可选 · 默认由服务配置决定,默认 summary

选择响应的内容粒度。summary 返回摘要,facts 返回细粒度事实,raw 请求原文投影。仅检索文档(sources=["document"])且省略本字段时使用 facts。各模式的响应布局见输出模式与响应说明。

return_raw_text

boolean · 可选 · 默认 false

仅在 output_mode=summary 时生效,facts 输出忽略此参数。设为 true 后,优先展示原文;原文缺失时尝试从原始输入补取,仍不可用则回退摘要,并标记 raw_text_missing。返回内容受服务端大小上限约束,默认上限为 32 MiB,超限会报错。

sources

string[] / null · 可选 · 默认 null · 提供时 1~2 项且不重复

按来源限定检索范围,可选 dialogue、document。例如只搜上传文档时传 ["document"]。省略沿用服务端既有来源范围。

检索上传的文档:检索文件上传后生成的文档内容时,请显式设置 sources: ["document"]。文档检索以匹配片段为单位:output_mode: "facts" 返回文档原始片段,而非从文档中抽取的事实;使用 summary、raw 或开启 return_raw_text,也不保证返回整篇文档的完整正文。

document_ids

string[] / null · 可选 · 提供时 1~100 项

在文档来源中进一步限定具体文档,必须同时使用 sources: ["document"]。通过文件上传写入的文档,使用任务状态返回的目标文件 files[].parser_id 作为文档 ID;它不是 Add 返回的 task_id。检索时使用与上传一致的项目和 user_id。

文档筛选示例 · Search 请求中的相关字段

{
  "sources": [
    "document"
  ],
  "document_ids": [
    "22222222-2222-4222-8222-222222222222"
  ]
}

filters

object / null · 可选 · 默认 null

根据来源 Agent、应用、会话、记忆类型或创建时间缩小检索范围,避免只依靠自然语言表达这些限制。条件由 and、or 数组组织,使用支持的操作符。条件属性可在下方展开。不支持任意 metadata 键或数据库列。

展示属性

字段值示例 · search.filters

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "and": [
    {
      "session_id": {
        "eq": "callback-session-001"
      }
    },
    {
      "created_at": {
        "gte": "2026-11-01T00:00:00Z",
        "lt": "2026-12-01T00:00:00Z"
      }
    }
  ]
}
and

object[] / null · 可选

数组中的条件需要同时满足。重复身份条件值冲突会拒绝,重复时间边界取更严格范围。

展示属性

字段值示例 · search.filters.and

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

[
  {
    "session_id": {
      "eq": "callback-session-001"
    }
  },
  {
    "created_at": {
      "gte": "2026-11-01T00:00:00Z"
    }
  }
]
agent_id

object / null · 可选

限定Agent来源。

展示属性

字段值示例 · search.filters.condition.agent_id

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "eq": "agent-a"
}
eq

string · 提供该条件时必填

完全匹配来源 ID,非空且最多 255 字符。

app_id

object / null · 可选

限定应用来源。

展示属性

字段值示例 · search.filters.condition.app_id

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "eq": "demo-app"
}
eq

string · 提供该条件时必填

完全匹配来源 ID,非空且最多 255 字符。

session_id

object / null · 可选

限定会话来源。

展示属性

字段值示例 · search.filters.condition.session_id

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "eq": "callback-session-001"
}
eq

string · 提供该条件时必填

完全匹配来源 ID,非空且最多 255 字符。

mem_type

object / null · 可选

限定记忆分类,eq 与 in 二选一。同一 and 数组最多一个 mem_type 条件。

展示属性

字段值示例 · search.filters.condition.mem_type

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。 分类名仅为示例,请使用实际已有的记忆分类。

{
  "in": [
    "preference",
    "constraint"
  ]
}
eq

string · 与 in 二选一

指定一个非空记忆分类。

in

string[] · 与 eq 二选一

允许的分类集合,数组及各值非空。会去除首尾空白和重复项。

created_at

object / null · 可选

按创建时间过滤。取值为日期字符串。

展示属性

字段值示例 · search.filters.condition.created_at

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "gte": "2026-11-01T00:00:00Z",
  "lt": "2026-12-01T00:00:00Z"
}
eq

string · 可选

等于。建议 ISO 日期或带时区的日期时间。

gt

string · 可选

晚于。建议 ISO 日期或带时区的日期时间。

gte

string · 可选

不早于。建议 ISO 日期或带时区的日期时间。

lt

string · 可选

早于。建议 ISO 日期或带时区的日期时间。

lte

string · 可选

不晚于。建议 ISO 日期或带时区的日期时间。

or

object[] / null · 可选

数组中至少满足一个条件。同时给 and 时两组都约束检索。

展示属性

字段值示例 · search.filters.or

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

[
  {
    "agent_id": {
      "eq": "agent-a"
    }
  },
  {
    "agent_id": {
      "eq": "agent-b"
    }
  }
]
agent_id

object / null · 可选

限定Agent来源。

展示属性

字段值示例 · search.filters.condition.agent_id

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "eq": "agent-a"
}
eq

string · 提供该条件时必填

完全匹配来源 ID,非空且最多 255 字符。

app_id

object / null · 可选

限定应用来源。

展示属性

字段值示例 · search.filters.condition.app_id

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "eq": "demo-app"
}
eq

string · 提供该条件时必填

完全匹配来源 ID,非空且最多 255 字符。

session_id

object / null · 可选

限定会话来源。

展示属性

字段值示例 · search.filters.condition.session_id

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "eq": "callback-session-001"
}
eq

string · 提供该条件时必填

完全匹配来源 ID,非空且最多 255 字符。

mem_type

object / null · 可选

限定记忆分类,eq 与 in 二选一。同一 and 数组最多一个 mem_type 条件。

展示属性

字段值示例 · search.filters.condition.mem_type

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。 分类名仅为示例,请使用实际已有的记忆分类。

{
  "in": [
    "preference",
    "constraint"
  ]
}
eq

string · 与 in 二选一

指定一个非空记忆分类。

in

string[] · 与 eq 二选一

允许的分类集合,数组及各值非空。会去除首尾空白和重复项。

created_at

object / null · 可选

按创建时间过滤。取值为日期字符串。

展示属性

字段值示例 · search.filters.condition.created_at

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

{
  "gte": "2026-11-01T00:00:00Z",
  "lt": "2026-12-01T00:00:00Z"
}
eq

string · 可选

等于。建议 ISO 日期或带时区的日期时间。

gt

string · 可选

晚于。建议 ISO 日期或带时区的日期时间。

gte

string · 可选

不早于。建议 ISO 日期或带时区的日期时间。

lt

string · 可选

早于。建议 ISO 日期或带时区的日期时间。

lte

string · 可选

不晚于。建议 ISO 日期或带时区的日期时间。

top_k

integer · 可选 · 默认 10 · 1~50

为向量召回和稀疏召回提供默认数量。未单独传入 k_dense、k_sparse 时,两者均取 top_k,因此两路召回合计最多 2 × top_k 条,而不是将最终结果限制为 top_k 条。例如只传 top_k=5,两路各取 5 条,合计可达 10 条。

显式传入 k_dense 或 k_sparse 时,只覆盖对应通道的数量,未指定的通道仍使用 top_k。两路候选数量上限为有效的 k_dense + k_sparse;实际返回数量可能因去重、过滤、可用候选和后续结果处理而减少,不保证每次返回满额。

传参示例向量召回稀疏召回两路候选合计上限
{"top_k": 5}5510
{"top_k": 5, "k_dense": 3}358
{"k_dense": 3, "k_sparse": 2}325
{"top_k": 5, "k_sparse": 0}50(关闭)5

k_dense

integer / null · 可选 · 0~50 · 省略时跟随 top_k

控制向量召回通道的候选数量,用于匹配语义相近但用词不同的内容。省略时使用 top_k;显式传值仅覆盖向量通道,不改变 k_sparse。设为 0 关闭向量召回。与稀疏通道的数量关系及示例见上方 top_k 说明。

k_sparse

integer / null · 可选 · 0~50 · 省略时跟随 top_k

控制稀疏召回通道的候选数量,用于匹配关键词、术语等词面信号。省略时使用 top_k;显式传值仅覆盖稀疏通道,不改变 k_dense。设为 0 关闭稀疏召回;仅使用向量召回时,将 k_sparse 设为 0 并保留向量通道。数量关系及示例见上方 top_k 说明。

min_semantic_similarity

number / null · 可选 · 0~1 · 省略沿用服务端阈值

为向量召回设置最低语义相似度,在候选融合前过滤低相似度结果。提高它可能减少无关结果,也可能漏掉有用记忆。该阈值应用于向量召回阶段的语义相似度。

window_context

object[] · 可选 · 默认 []

提供近期对话上下文,例如“刚才那个方案”所指的对话内容。

展示属性

字段值示例 · search.window_context

以下仅展示此处的 JSON 值,请按实际数据替换 ID、地址和内容。

[
  {
    "role": "user",
    "content": "我们刚才讨论了回调重试。"
  }
]

近期对话的自由对象数组,例如 role 与 content。用于本次召回判断/查询改写。

输出模式与组合示例

模式 结果内容 注意事项
summary Summary 级正文 结果位于 data.data,按摘要粒度返回。
facts Fact 级内容 适用于细粒度结果。仅搜文档且未传 output_mode 时自动采用 facts。
raw 原文投影 依赖原文可用性,遵守服务端大小限制,按服务响应大小上限返回。

return_raw_text=true 适用于 summary 输出。仅检索文档且省略 mode 时,默认使用 fast。

文档检索示例
{
  "user_id": "demo-user",
  "query": "回调重试规则",
  "sources": ["document"],
  "document_ids": ["cedar-design"],
  "mode": "fast",
  "output_mode": "facts"
}
过滤条件示例
{
  "user_id": "demo-user", "query": "回调重试规则",
  "filters": {"and": [
    {"session_id": {"eq": "coding-session-demo"}},
    {"created_at": {"gte": "2026-11-01T00:00:00Z"}}
  ]}
}

Search 响应 · 普通结果(200)

success

boolean · 可选 · 默认 true

本次检索请求的处理结果,成功响应为 true。

data

object · 必填

业务结果对象。展开查看本响应的具体结构。

展示属性

响应值示例 · search.response.data

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "task_id": "33333333-3333-4333-8333-333333333333",
  "status": "completed",
  "data": [
    {
      "id": "55555555-5555-4555-8555-555555555555",
      "memory": "回调失败后最多重试 3 次。",
      "score": 0.86,
      "score_details": {
        "rank_method": "semantic_similarity",
        "rank_score": 0.86,
        "semantic_similarity": 0.86
      },
      "user_id": "demo-user",
      "content_type": "dialogue",
      "created_at": "2026-11-11T08:00:00Z",
      "updated_at": "2026-11-11T08:00:00Z"
    }
  ],
  "balances": [],
  "meta_info": {
    "mode": "fast",
    "pipeline_status": "fast_search",
    "recall_decision": null
  }
}
task_id

string · 必填

本次检索的请求标识,用于追踪该次查询。

status

"completed" · 必填

本响应的处理状态,允许值见类型说明。

data

object[] · 必填

检索结果数组。空数组表示本次查询未返回匹配结果。

展示属性

响应值示例 · search.response.data.data

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

[
  {
    "id": "55555555-5555-4555-8555-555555555555",
    "memory": "回调失败后最多重试 3 次。",
    "score": 0.86,
    "score_details": {
      "rank_method": "semantic_similarity",
      "rank_score": 0.86,
      "semantic_similarity": 0.86
    },
    "user_id": "demo-user",
    "content_type": "dialogue",
    "created_at": "2026-11-11T08:00:00Z",
    "updated_at": "2026-11-11T08:00:00Z"
  }
]
id

string · 必填

该结果的标识,粒度随输出模式变化。

memory

string · 必填

可供调用方使用的记忆正文。

score

number / null · 可选 · 默认 null

该结果返回的排序分数。分数含义由 score_details 指定。

score_details

object / null · 可选 · 默认 null

各召回/融合阶段的分数说明,可展开查看。

展示属性
分数明细

响应值示例 · search.response.data.data[].score_details

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "rank_method": "semantic_similarity",
  "rank_score": 0.86,
  "semantic_similarity": 0.86
}
rank_method

semantic_similarity / sparse_score / channel_rrf / query_rrf / null · 可选 · 默认 null

标明采用 semantic_similarity、sparse_score、channel_rrf 或 query_rrf 哪种排序分数。

rank_score

number / null · 可选 · 默认 null

当前排序方法产生的分值。

semantic_similarity

number / null · 可选 · 默认 null

向量检索得到的语义相似度。

sparse_score

number / null · 可选 · 默认 null

稀疏检索得到的匹配分值。

channel_rrf

number / null · 可选 · 默认 null

多召回通道按排名融合产生的分值。

query_rrf

number / null · 可选 · 默认 null

多查询结果按排名融合产生的分值。

user_id

string · 必填

记忆所属用户。

agent_id

string / null · 可选 · 默认 null

来源 Agent 标识。

app_id

string / null · 可选 · 默认 null

来源应用标识。

session_id

string / null · 可选 · 默认 null

来源会话标识。

project_id

string / null · 可选 · 默认 null

结果所属项目的标识。

api_key_uuid

string / null · 可选 · 默认 null

来源 API Key 的标识。

content_type

dialogue / document / code / webpage · 可选 · 默认 "dialogue"

内容类别包括 dialogue、document、code 或 webpage。

created_at

string(date-time / ISO 8601 日期时间) · 必填

记录创建时间。

updated_at

string(date-time / ISO 8601 日期时间) · 必填

记录最近更新时间。

metadata

object · 可选 · 默认 {}

来源及其他扩展属性。可用过滤条件见 filters 字段。

categories

string[] · 可选 · 默认 []

记忆分类标签,可能为空。

immutable

boolean · 可选 · 默认 false

不可变标记,默认 false。

balances

object[] · 可选 · 默认 []

本次操作返回的配额/余额信息,可能为空。不表示记忆结果。

展示属性

响应值示例 · search.response.data.balances

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

[
  {
    "product_code": "memory_api",
    "feature_code": "memory_search",
    "spec_key": "count",
    "quota_unit": "count",
    "quota_limit": 1000,
    "reserved": 0,
    "consumed": 21,
    "remaining": 979
  }
]
product_code

memory_api / chat_api / knowledge_base · 必填

余额所属产品,例如 memory_api。

feature_code

memory_write / memory_search / chat_completion / knowledge_base · 必填

余额所属功能,如 memory_write 或 memory_search。

spec_key

count / storage / calls / tokens · 必填

配额维度,例如次数、存储、调用数或 token 数。与 quota_unit 一起理解。

quota_unit

string · 必填

配额计量单位,说明数值应按什么单位解读。

quota_limit

integer / null · 可选 · 默认 null

该维度的配额上限,可为空,null 表示该值未提供。

reserved

integer · 必填 · 最小值 0

已预占的额度,为非负值,单位由 quota_unit 指定。

consumed

integer · 必填 · 最小值 0

已经消耗的额度,非负。按 quota_unit 解读。

remaining

integer / null · 可选 · 默认 null

返回的剩余额度,可为空,null 表示该值未提供。

buckets

object / null · 可选 · 默认 null

可空的兼容 Bucket 聚合结果,按类型与规范化键组织。

meta_info

object / null · 可选 · 默认 null

本次检索使用的模式、流程状态和召回判断。

展示属性
检索过程信息

响应值示例 · search.response.data.meta_info

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "mode": "fast",
  "pipeline_status": "fast_search",
  "recall_decision": null
}
mode

fast · 必填

本次检索模式为 fast。

pipeline_status

stub / fast_search / query_rewrite_search / recall_bypassed · 必填

stub 为占位状态,fast_search 为快速检索,query_rewrite_search 为查询改写检索,recall_bypassed 为跳过召回。

recall_decision

object / null · 可选 · 默认 null

召回必要性判断结果。未执行或未返回时为空。

展示属性
召回判断

响应值示例 · search.response.data.meta_info.recall_decision

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "needs_recall": true,
  "reason": "问题涉及此前保存的回调约束。",
  "confidence": 0.9
}
needs_recall

boolean · 必填

模型是否认为当前问题需要检索记忆。

reason

string · 必填

模型给出的召回或跳过理由。

confidence

number · 必填 · 最小值 0 · 最大值 1

0~1 的判断置信度。

meta

object · 必填

请求追踪信息,用于排查本次接口调用。

展示属性

响应值示例 · search.response.meta

以下仅展示此处的 JSON 值,示例数据以实际响应为准。

{
  "request_id": "66666666-6666-4666-8666-666666666666",
  "timestamp": "2026-11-11T08:00:00Z"
}
request_id

string · 必填

本次 HTTP 请求的追踪标识,可关联服务端日志。

timestamp

string(date-time / ISO 8601 日期时间) · 必填

服务端生成响应的时间。

错误处理

HTTP 状态 含义 处理方式
401 / 403 鉴权失败或权限不足 检查 API Key、Token 前缀及 read/write 权限。
404 任务或资源不可见、已过期或不存在 核对 user_id、资源 ID 和任务保留期限,保存 task_id 排查。
413 输入超过大小限制 按对应字段的长度或文件大小上限调整输入。
415 请求媒体类型不受支持 使用 application/json。
422 参数格式或组合校验失败 检查必填项、时间戳、枚举值及字段组合条件。
429 限流或配额不足 检查额度与响应提示,按服务策略退避。
500 / 503 服务处理异常或依赖暂不可用 保存 request_id 和 task_id,联系服务提供方排查。

错误响应通常包含 success=false、error 和 meta。error 可提供 code、reason、message、details 或 hint,以实际响应为准。

Add 返回 HTTP 202 后,通过任务状态接口等待 status=success。status=failed 时保留 error 与 task_id。Search 返回空数组时,依次检查 user_id、任务完成状态、过滤条件和检索阈值。

版本记录

文档版本 发布日期 本版功能 接口路径
0.1.0 2026-11-06 对话与代码记忆写入、异步任务查询、Responses 风格的图片与文件输入、fast 检索、条件过滤,以及摘要、事实和原文输出。 /v1