跳转到主要内容

Session 对象

创建、获取、列出、更新和归档 Session 的接口都会返回该对象。
{
  "id": "sess_xxx",
  "type": "session",
  "identity_id": "idn_xxx",
  "template": {
    "id": "tmpl_support",
    "type": "template",
    "name": "客服助手",
    "model": "ultimate",
    "version": 3
  },
  "source_type": "api",
  "status": "idle",
  "title": "客户支持会话",
  "incremental_streaming_enabled": true,
  "metadata": {
    "source": "web",
    "biz_id": "ticket_123"
  },
  "config": {
    "environment_variables": {
      "API_KEY": "sk-xxx"
    }
  },
  "stats": {
    "active_seconds": 30,
    "duration_seconds": 3600
  },
  "usage": {
    "credits": 12.5
  },
  "archived_at": null,
  "created_at": "2026-06-22T10:00:00Z",
  "updated_at": "2026-06-22T11:00:00Z"
}
字段类型必返说明
idstringsess_\ 前缀的 Session ID。
typestring固定为\ "session"
identity_idstringForward Identity ID,表示该 Session 归属的终端用户身份。
templateobjectForward Template 摘要,字段见 Template 摘要
source_typestringSession 来源:apiim\ 或\ schedule
statusstringSession 运行状态:idlerunningreschedulingcanceling\ 或\ terminated。归档状态通过\ archived_at\ 表达。
titlestringSession 标题。
incremental_streaming_enabledboolean是否为该 Session 开启增量流式事件。创建时省略则为\ false,创建后不支持修改。
metadataobject调用方业务元数据。
configobjectSession 配置;未传入时可能省略。
config.environment_variablesobject会话级环境变量,key-value 形式。
statsobjectSession 统计信息,字段见 Session stats
usageobject用量信息;相关计费模块未启用时可能省略。
usage.creditsnumberCredit 消耗。
archived_atstring | null归档时间,未归档时为\ null
created_atstring创建时间,RFC 3339 格式。
updated_atstring最近更新时间,RFC 3339 格式。

Template 摘要

字段类型必返说明
idstringForward Template ID。
typestring固定为\ "template"
namestringTemplate 名称。
modelstringTemplate 使用的模型档位或模型标识。
versionintegerTemplate 版本号。

Session stats

字段类型必返说明
active_secondsinteger活跃处理时长,单位秒;新 Session 通常为\ 0
duration_secondsintegerSession 持续时长,单位秒;新 Session 通常为\ 0

Event 对象

接口返回的 Event 是按 type 变化的 JSON 对象。所有返回 Event 都包含通用字段,不同事件类型会携带不同的 payload 字段。
{
  "id": "evt_xxx",
  "type": "agent.message",
  "session_id": "sess_xxx",
  "content": [
    {
      "type": "text",
      "text": "这是分析结果。"
    }
  ],
  "processed_at": "2026-06-22T11:00:03Z"
}
字段类型必返说明
idstringevt_\ 前缀的 Event ID。
typestringEvent 类型。
session_idstringEvent 所属 Session ID。
processed_atstring事件被处理的时间,RFC 3339 格式。部分 agent 生成事件或增量事件可能不包含该字段。
按事件类型允许出现的 payload 字段如下。表中不重复列出通用字段 idtypesession_idprocessed_at
Event 类型允许字段
user.messagecontent
user.interrupt
user.tool_confirmationtool_use_idresultdeny_message
user.tool_resulttool_use_idcontentis_error
user.custom_tool_resultcustom_tool_use_idcontentis_error
user.define_outcomedescriptionrubricoutcome_idmax_iterations
system.messagecontent
agent.messagecontent
agent.thinking
agent.message_startmessage_idmessage
agent.content_block_startmessage_idindexcontent_block
agent.content_block_deltamessage_idindexdelta
agent.content_block_stopmessage_idindex
agent.message_deltamessage_iddeltausage
agent.message_stopmessage_id
agent.tool_usenameinputevaluated_permission
agent.tool_resulttool_use_idcontentis_error
agent.custom_tool_usenameinput
agent.mcp_tool_usemcp_server_namenameinputevaluated_permission
agent.mcp_tool_resultmcp_tool_use_idcontentis_error
agent.artifact_deliveredfile_idoriginal_filenamesizecontent_type
session.status_running
session.status_idlestop_reason
session.status_terminated
session.errorerror
session.updatedagentmetadatatitle

客户端可发送事件类型

POST /api/v1/forward/sessions/{session_id}/events 只接受以下事件类型。
类型必填字段说明
user.messagecontent用户消息。content\ 必须是非空 content block 数组,支持\ textimagedocument\ 等块类型。
user.interrupt请求中断当前处理。
user.tool_confirmationtool_use_idresult工具调用确认。result\ 为\ allow\ 或\ deny;拒绝时可传\ deny_message
user.tool_resulttool_use_id返回内置工具结果;content\ 和\ is_error\ 可选。
user.custom_tool_resultcustom_tool_use_id返回客户端自定义工具结果;content\ 和\ is_error\ 可选。
user.define_outcomedescriptionrubric定义期望结果和评判标准;max_iterations\ 可选。
system.message 是公开 Event 类型,但不作为 Forward 客户端写入事件开放。

公开事件类型

查询历史和订阅 SSE 事件流时,可能收到以下公开事件类型: user.messageuser.interruptuser.tool_confirmationuser.tool_resultuser.custom_tool_resultuser.define_outcomesystem.messageagent.messageagent.thinkingagent.message_startagent.content_block_startagent.content_block_deltaagent.content_block_stopagent.message_deltaagent.message_stopagent.tool_useagent.tool_resultagent.custom_tool_useagent.mcp_tool_useagent.mcp_tool_resultagent.artifact_deliveredsession.status_runningsession.status_idlesession.status_terminatedsession.errorsession.updated

增量流式事件

是否暴露增量流式事件由创建 Session 时的 incremental_streaming_enabled 字段控制,不通过查询历史或订阅 SSE 的请求参数控制:
  • true:事件流会在最终完整 agent.message 之前返回 assistant 输出片段;历史查询也会返回同一批增量事件。
  • false 或省略:保持普通模式,只返回完整公开事件,不返回增量事件。
开启增量流式后,最终完整的 agent.message 仍会返回。客户端可使用增量事件做即时展示,再以最终 agent.message 作为持久化或展示校准结果。 顶层增量事件类型只有以下 6 种:
事件类型关键字段说明
agent.message_startmessage_idmessage开始一条 assistant message。
agent.content_block_startmessage_idindexcontent_block开始一个 content block,例如 text、thinking 或 tool use。
agent.content_block_deltamessage_idindexdelta承载\ index\ 对应 content block 的增量片段。
agent.content_block_stopmessage_idindex结束\ index\ 对应 content block。
agent.message_deltamessage_iddeltausage承载 message 级增量,例如\ stop_reasonstop_sequence\ 或用量信息。
agent.message_stopmessage_id结束一条 assistant message。
text_deltathinking_deltasignature_deltainput_json_deltatool_output_delta 不是顶层 Event 类型,只会作为 agent.content_block_delta.delta.type 出现。
delta.type字段说明
text_deltatext文本输出片段,客户端可追加\ delta.text\ 重建文本。
thinking_deltathinking模型或 provider 输出 thinking 时的思考片段。
signature_deltasignaturethinking block 的签名片段,存在时透出。
input_json_deltapartial_json工具入参 JSON 片段。
tool_output_deltavaries预留给未来的工具输出流式;当前仍以完整\ agent.tool_result\ 为准。
agent.content_block_delta 示例:
1{2  "id": "evt_delta_xxx",3  "type": "agent.content_block_delta",4  "session_id": "sess_xxx",5  "message_id": "msg_xxx",6  "index": 0,7  "delta": {8    "type": "text_delta",9    "text": "这是"10  },11  "processed_at": "2026-06-22T11:00:01Z"12}
增量事件解析约定:
  • SSE event: 与 JSON data.type 都使用公开 Event 类型。
  • agent.content_block_delta.index 用于区分多个 content block。
  • processed_at 在增量事件上可能缺失,客户端应按可选字段处理。
  • 网络中断后可使用 Last-Event-ID 携带最后收到的 Event ID 重连。
  • include_thinking=false 时,会过滤 thinking_deltasignature_delta 及可识别的 thinking content block start/stop 事件。
  • include_tool_calls=false 时,会过滤 input_json_deltatool_output_delta 及可识别的 tool content block start/stop 事件。