Skip to content

Messages(消息)

消息就是对话里的每一条内容。用户说的、模型回的、系统提示,每条都是一条消息。

消息属于某个消息页,消息页属于某个楼层。

什么时候需要看这页

  • 你要查看某个楼层里的所有消息
  • 你要写入或修改消息内容
  • 你要批量切换消息的可见性

一个简单例子

查看某个消息页里的消息:

bash
curl "http://localhost:3000/messages?page_id=page_001"

先理解几个词

这里的意思
page消息页,一个楼层下的一组分页,例如重新生成产生的新页
role消息角色:system、user、assistant、narrator
hidden隐藏消息,不参与提示词组装

消息是对话的最小内容单位,属于某个消息页(Page)。

Message 对象

字段类型说明
idstring消息 ID
page_idstring所属消息页 ID
seqinteger消息在页内的序号
rolestring角色:system / user / assistant / narrator
contentstring消息内容
content_formatstring内容格式:text / markdown / json
token_countintegertoken 数量
is_hiddenboolean是否隐藏(不参与 Prompt 组装)
sourcestring | null来源标记
created_atinteger创建时间

创建消息

http
POST /messages

请求体

字段类型必填说明
page_idstring所属消息页 ID
seqinteger序号
rolestring角色
contentstring内容
content_formatstring内容格式(默认 text
token_countintegertoken 数
is_hiddenboolean是否隐藏(默认 false
sourcestring来源标记

响应 201

返回 { "data": Message }

错误

状态码code说明
400validation_error请求体校验失败
409message_conflict重复 (page_id, seq),消息序号在目标页内已存在
404not_found所属消息页不存在,或当前账号不可访问

列出消息

http
GET /messages

查询参数

参数类型说明
page_idstring按消息页过滤
rolestring按角色过滤:system / user / assistant / narrator
is_hiddenboolean按隐藏状态过滤
sort_bystringcreated_at(默认)/ seq
sort_orderstringasc / desc
limitinteger每页条数,默认 50
offsetinteger偏移量,默认 0

响应 200

返回 { "data": Message[], "meta": ListMeta }

获取消息详情

http
GET /messages/:id

错误

状态码说明
404消息不存在

更新消息

http
PATCH /messages/:id

至少提供一个字段。可更新:seqrolecontentcontent_formattoken_countis_hiddensource

错误

状态码code说明
400validation_error请求体校验失败
404not_found消息不存在
409message_conflict更新后的 seq 会与同页其他消息冲突

删除消息

http
DELETE /messages/:id

错误

状态码说明
404消息不存在

批量更新可见性

http
PATCH /messages/batch/visibility

批量设置消息的 is_hidden 状态。

请求体

字段类型必填说明
idsstring[]消息 ID 数组,1-100 条,不可重复
is_hiddenboolean目标可见性状态

去重校验

同一批次内 ID 不可重复,否则返回 400

请求示例

json
{
  "ids": ["msg_001", "msg_002"],
  "is_hidden": true
}

响应 200

字段类型说明
data.resultsarray每条的处理结果
data.results[].indexinteger对应请求数组中的下标
data.results[].idstring消息 ID
data.results[].actionstringupdated(成功)或 not_found(ID 不存在)
data.results[].dataMessage更新后的完整消息对象(仅 action=updated 时存在)
data.meta.totalinteger请求总条数
data.meta.updatedinteger成功更新条数
data.meta.not_foundinteger未找到条数
data.meta.is_hiddenboolean本次设置的目标状态
json
{
  "data": {
    "results": [
      {
        "index": 0,
        "id": "msg_001",
        "action": "updated",
        "data": {
          "id": "msg_001",
          "page_id": "page_12",
          "seq": 1,
          "role": "assistant",
          "content": "The moon is bright tonight.",
          "content_format": "text",
          "token_count": 6,
          "is_hidden": true,
          "source": null,
          "created_at": 1735689600000
        }
      },
      {
        "index": 1,
        "id": "msg_002",
        "action": "not_found"
      }
    ],
    "meta": { "total": 2, "updated": 1, "not_found": 1, "is_hidden": true }
  }
}

错误

状态码说明
400请求体校验失败、ids 为空或超过 100 条、存在重复 ID

批量删除消息

http
POST /messages/batch/delete

批量物理删除指定消息。

请求体

字段类型必填说明
idsstring[]消息 ID 数组,1-100 条,不可重复

请求示例

json
{
  "ids": ["msg_001", "msg_002"]
}

响应 200

字段类型说明
data.resultsarray每条的处理结果
data.results[].indexinteger对应请求数组中的下标
data.results[].idstring消息 ID
data.results[].actionstringdeleted(成功)或 not_found(ID 不存在)
data.meta.totalinteger请求总条数
data.meta.deletedinteger成功删除条数
data.meta.not_foundinteger未找到条数
json
{
  "data": {
    "results": [
      { "index": 0, "id": "msg_001", "action": "deleted" },
      { "index": 1, "id": "msg_002", "action": "not_found" }
    ],
    "meta": { "total": 2, "deleted": 1, "not_found": 1 }
  }
}

错误

状态码说明
400请求体校验失败、ids 为空或超过 100 条、存在重复 ID