Skip to main content
Sessions

Session 数据结构

Session、资源、事件和线程的共享结构。

Session 对象

创建、获取、列出、更新和归档接口都会返回该对象。
字段类型说明
idstringsess_ 前缀的 Session ID
typestring固定为 "session"
agentobject本 Session 使用的 Agent 快照,字段裁剪规则见 Session 嵌入 agent
environment_idstringSession 使用的 Environment ID
statusstring生命周期状态:reschedulingrunningidleterminated。Cancel 端点响应中的 canceling 是固定确认值,不是 Session 对象的持久化状态
titlestring | nullSession 标题
metadataobjectSession 元数据
environment_variablesobjectSession 级环境变量,以字符串 key 到字符串 value 的 map({"NAME":"value"})注入到 agent 运行时;无配置时返回 {}。详见 创建 Session
resourcesSession resource 数组挂载到 Session 的 file、GitHub、通用 Git 或 Memory Store 资源
vault_idsstring 数组挂载到 Session 的 Vault ID
deployment_idstring | null由 Deployment 创建时的 Deployment ID,否则为 null
outcome_evaluationsarrayOutcome 评估结果;新 Session 返回 []
statsSession statsSession 统计信息
usageSession usageSession 的模型、沙箱运行时与总 credits 累计快照;usage 数据不可用时省略该字段
archived_atstring | null归档时间,未归档时为 null
created_atstring创建时间
updated_atstring最近更新时间
Session 响应不再包含旧字段 agent_idturn_statusmemory_store_ids

Agent 引用

创建 Session 时的 agent 可以是 Agent ID 字符串,也可以是如下对象:
字段类型必填说明
idstringagent_ 前缀的 Agent ID
typestring是(仅对象形式)必须固定为 "agent",对象形式下缺失或为其他值返回 400。直接传字符串 Agent ID 时不校验该字段
versioninteger要固定的 Agent 版本;省略或传 0 表示使用最新活跃版本

Session 嵌入 agent

Session 对象 中返回的 agent 是该 Session 固定的 Agent 快照,与原始 Agent 相比有以下字段会被裁剪: 发布更新的源 Agent 配置不会替换这份快照。更新 Session时提交 agent 字段,可以只为当前 Session 修改受支持的运行配置,但不会推进内嵌的 agent.version;链接文档也说明了 Skill version 的生效规则。
  • created_atupdated_at:嵌入 Agent 中始终不返回。
  • archivedarchived_at:嵌入 Agent 中始终不返回;Session 不受 Agent 归档状态影响。
  • metadata:Agent 自身的 metadata 被裁剪;只暴露 Session 级别的 metadata
  • instructions:被替换为 system
agent.multiagent.agents[] 的返回结构见 Multiagent 阵列元素,单个线程的 Agent 结构见 Session Thread 对象

agent.model.effective_context_window

Session 响应在 agent.model 中额外返回只读字段 effective_context_window(int64,单位 token),表示当前 Session 实际生效的上下文窗口(已考虑 Environment 级 override)。值为非正或缺失时不返回;客户端将该字段视为参考即可。

Session resource

resources[] 通过 type 区分资源类型。

File resource

字段类型必填说明
idstring仅响应Resource ID
typestring"file"
file_idstringfile_ 前缀的 File ID,文件必须已 ready
mount_pathstring容器内挂载路径。省略时默认 /mnt/session/uploads/<file_id>
created_atstring仅响应资源创建时间
updated_atstring仅响应资源更新时间

GitHub repository resource

字段类型必填说明
idstring仅响应Resource ID
typestring"github_repository"
urlstring仓库 URL
authorization_tokenstring否(仅写入)访问私有仓库或 push 使用的 GitHub token;响应中不会返回
mount_pathstring容器内 clone 目标路径;省略时根据仓库名生成
checkoutobjectGit checkout 目标,例如 {"type":"branch","name":"main"}
created_atstring仅响应资源创建时间
updated_atstring仅响应资源更新时间

通用 Git repository resource

GitLab、Gitee、Bitbucket 以及其他 HTTP(S) Git 服务使用该资源类型。
字段类型必填说明
idstring仅响应Resource ID
typestring"git_repository"
urlstringHTTP(S) Clone URL。公开仓库无需用户名;需要鉴权时在 URL 中包含平台用户名,例如 https://username@gitlab.com/group/repo.git
passwordstring否(仅写入)私有仓库或需要推送时,与 URL 中的用户名同时提供;可填写账号密码或平台要求的 Access Token/PAT。响应中不会返回
mount_pathstring容器内 clone 目标路径;省略时根据仓库名生成
checkoutobjectGit checkout 目标,例如 {"type":"branch","name":"main"}
created_atstring仅响应资源创建时间
updated_atstring仅响应资源更新时间

Memory Store resource

字段类型必填说明
typestring"memory_store"
memory_store_idstringmemstore_ 前缀的 Memory Store ID
accessstring | null可选访问模式。允许值:"read_write""read_only"。空字符串或省略表示采用默认值(不覆盖)
instructionsstring | null可选指令,存在 Session resource 上。最大长度 4096 字符
namestring | null仅响应可查询到时返回当前 Memory Store 名称
descriptionstring仅响应可查询到时返回当前 Memory Store 描述
mount_pathstring | null仅响应当前实现除已有快照值外返回 null
Memory Store resource 不包含 idcreated_atupdated_at 字段。

Session stats

字段类型说明
active_secondsnumber活跃处理时长;新 Session 为 0
duration_secondsnumberSession 持续时长;新 Session 为 0

Session usage

usage 是 Session 级累计快照:
字段类型说明
model_creditsnumberSession 中已记录模型调用累计消耗的 credits
sandbox_runtime_creditsnumberSession 使用可计费云端沙箱运行时累计消耗的 credits
total_creditsnumberSession 各 usage 分项累计消耗的 credits 总和
没有 usage 数据的 Session 省略 usage 字段。三个 credits 数值都向下取整而不是四舍五入,最多保留 2 位小数;例如 7.6681 返回为 7.66。JSON number 不保证补齐末尾的 0,因此 1.20 可能返回为 1.2。这三个字段共同组成一次快照,重复查询时应按 Session ID 覆盖本地记录,不要再次累加。

Multiagent 阵列元素

Session 响应的 agent.multiagent.agents[] 中,普通 Agent 和 self 条目返回对应的 Agent 定义,字段如下;不包含条目自身的 multiagent 字段。 Advisor 仅返回 typemodel,例如 {"type":"advisor","model":"ultimate"},见 Advisor 对象
字段类型说明
typestring兄弟 Agent 取 "agent";表示协调器自身时取 "self"
idstringAgent ID。type = "agent" 时存在;type = "self" 时与协调器自身 ID 相同
versioninteger固定的 Agent 版本号;type = "agent" 时存在
namestring展开后的 Agent 名称
descriptionstring | null展开后的 Agent 描述
systemstring展开后的 Agent 系统提示词(替代 instructions
modelstring | object与嵌入 Agent 一致;包含 effective_context_window
其他 Agent 字段各异tools、MCP servers、skills 等字段,遵循与嵌入 Agent 相同的裁剪规则
无法读取被引用 Agent 的定义时(例如目标版本已删除),该条目保留原始引用。

Event 对象

send、list 和 stream 接口返回的事件是按事件类型变化的 JSON 对象。公开响应只暴露文档中定义的公开字段。
字段类型说明
idstringevt_ 为前缀的 Event ID
typestringEvent 类型
processed_atstring事件被处理后出现。许多 agent 生成的事件不包含此字段。
不同事件类型还可能包含 contentinputnametool_use_idmcp_tool_use_idcustom_tool_use_idresultdeny_messagerubricoutcome_idsession_thread_idstop_reasonerrorusagemodel_usage 等字段。

客户端可发送事件类型

POST /api/v1/cloud/sessions/{session_id}/events 只接受以下事件类型:
类型必填字段说明
user.messagecontentcontent 必须是非空 content block 数组
user.interruptsession_thread_id 可选;省略时响应回显 null
user.tool_confirmationtool_use_id, resultresultallowdenydeny_message 可选
user.tool_resulttool_use_idself-hosted worker 返回内置工具结果。content 可选;传入时必须是 content block 数组。is_error 可选
user.custom_tool_resultcustom_tool_use_id返回客户端自定义工具结果。content 可选;传入时必须是 content block 数组。is_error 可选
user.define_outcomedescription, rubricrubric 是对象,例如 {"type":"text","content":"..."}{"type":"file","file_id":"file_..."}max_iterations 可选

公开事件类型

list 和 stream 接口可能暴露以下事件类型: user.messageuser.interruptuser.tool_confirmationuser.custom_tool_resultuser.define_outcomeuser.tool_resultsystem.messageagent.custom_tool_useagent.mcp_tool_resultagent.mcp_tool_useagent.messageagent.thinkingagent.thread_context_compactedagent.thread_message_receivedagent.thread_message_sentagent.tool_resultagent.tool_usesession.deletedsession.errorsession.status_idlesession.status_rescheduledsession.status_runningsession.status_terminatedsession.thread_createdsession.thread_status_idlesession.thread_status_rescheduledsession.thread_status_runningsession.thread_status_terminatedsession.updatedspan.model_request_startspan.model_request_endspan.outcome_evaluation_startspan.outcome_evaluation_ongoingspan.outcome_evaluation_end

session.updated 事件

Session 更新成功后会发出 session.updated。事件固定包含 idtypeprocessed_at,并根据请求选择性包含以下字段:
字段类型说明
titlestring | null请求提交 title 时返回
metadataobject请求提交 metadata 且更新后的 Metadata 非空时返回
agentobject通过更新 Session动态更新运行配置后返回的内嵌运行配置快照
如果请求只修改 environment_variables,事件只包含固定字段。事件始终不会包含环境变量名称和值。

session.error 事件

session.error 表示 Session 执行过程中出现错误。事件包含 idtypeprocessed_aterror error 对象包含以下字段:
字段类型说明
typestring错误分类。客户端应兼容 unknown_error 和以后新增的类型
messagestring可读的错误说明
retry_statusobject重试状态;typeretryingexhaustedterminal
qoder_error_codestring可选诊断码。客户端不应据此判断是否重试
retry_status.type 的语义:
说明
retrying服务端正在自动重试,客户端继续等待
exhausted自动重试次数或恢复时限已用尽,或者错误不可重试而直接失败;本轮不再自动恢复。客户端等待后续状态事件,再决定是否发送新消息
terminal当前错误不可恢复,服务端不再自动重试;最终状态以后续 Session/Thread 状态事件为准

Advisor 事件

Advisor 的生命周期事件通过 agent_name: "qoder.advisor" 标识,session_thread_id 用于区分每次咨询。
事件获取位置关键字段
agent.thread_message_received主线程事件流from_session_thread_id 为咨询线程 ID,from_agent_nameqoder.advisorcontent 为建议内容
agent.thread_message_sentAdvisor Thread 事件流to_session_thread_idto_agent_name 标识主线程,content 为建议内容
session.errorAdvisor Thread 事件流error 包含错误原因和重试状态,见 session.error 事件
session.thread_status_idleSession 事件流stop_reason.typeend_turn 时咨询结束(含中断),为 retries_exhausted 时咨询失败,具体原因见该线程的 session.error
主线程接收建议的示例:
{
  "id": "evt_advisor_received",
  "type": "agent.thread_message_received",
  "processed_at": "2026-09-09T08:00:05Z",
  "from_session_thread_id": "sthr_advisor_call",
  "from_agent_name": "qoder.advisor",
  "content": [{"type": "text", "text": "先灰度迁移,并验证回滚步骤。"}]
}
咨询失败不会终止主 Agent 的任务,也不会产生建议消息;错误详情通过 Thread 事件接口 获取。

Event delta stream 帧

buffered 事件是内容生成完成后输出并写入 Session 事件历史的完整公开 Event 对象,也是客户端应采用的权威结果。 event_startevent_delta 是用于增量输出的 stream-only SSE payload,不属于公开 Event 对象,也不会出现在事件 list/history 响应中。它们的 JSON payload 不包含顶层 idprocessed_at;SSE id: 字段携带正在增量输出的事件 ID,并可用于 Last-Event-ID

Event start 帧

event_start 帧用于标识已经开始增量输出的公开事件。
字段类型说明
typestring固定为 "event_start"
eventobject增量事件引用
event 对象包含以下字段:
字段类型说明
idstringevt_ 为前缀的 Event ID;SSE id:、相关 delta 和 buffered 事件使用同一个 ID
typestring"agent.message""agent.thinking"
agent.message 的 start 之后会输出文本 event_deltaagent.thinking 只有 start,不会输出 delta;如果本轮产生 thinking,则使用相同 ID 的 buffered agent.thinking 事件表示该 thinking 阶段结束。
{
  "type": "event_start",
  "event": {
    "id": "evt_00jjujk9fbnr4wkj2gh8",
    "type": "agent.message"
  }
}

Event delta 帧

event_delta 帧用于向增量输出的 agent.message 追加文本。
字段类型说明
typestring固定为 "event_delta"
event_idstring与对应 event_start.event.id 和 SSE id: 相同的 Event ID
deltaobject内容增量
delta 对象包含以下字段:
字段类型说明
typestring固定为 "content_delta"
indexinteger被更新 content block 的从零开始的索引
contentobject文本片段,包含 type: "text" 和字符串字段 text
{
  "type": "event_delta",
  "event_id": "evt_00jjujk9fbnr4wkj2gh8",
  "delta": {
    "type": "content_delta",
    "index": 0,
    "content": {
      "type": "text",
      "text": "你好"
    }
  }
}

Model request span 事件

span.model_request_start 表示一次模型请求开始。
字段类型说明
idstringevt_ 为前缀的 Event ID
processed_atstringRFC 3339 时间戳
typestring固定为 "span.model_request_start"
span.model_request_end 表示该模型请求结束,本次调用有 credits 数据时包含 model_usagemodel_usage.credits 向下取整,最多保留 2 位小数。
字段类型说明
idstringevt_ 为前缀的 Event ID
is_errorboolean模型请求是否因错误或取消而结束
model_request_start_idstring对应 span.model_request_start 事件的 ID
model_usageobject可选。本次模型调用的 usage;credits 数据不可用时省略
processed_atstringRFC 3339 时间戳
typestring固定为 "span.model_request_end"
model_usage 只包含:
字段类型说明
creditsnumber本次模型调用消耗的 credits。值可以为 0;向下取整,最多保留 2 位小数

Session Thread 对象

Managed-agent 场景下,Session 内的每个线程使用如下结构。
字段类型说明
idstringsthr_ 前缀的 Thread ID
typestring固定为 "session_thread"
session_idstring所属 Session ID
parent_thread_idstring | null父线程 ID;协调器主线程为 null
agentobject普通线程使用的 Agent 快照,结构同 Session 嵌入 agent,并额外去掉 multiagent 字段;Advisor Thread 使用 {"type":"advisor","model":"..."}
statusstring生命周期状态:runningidlereschedulingterminated
statsobject | null线程统计信息;当前实现返回 null
archived_atstring | null归档时间,未归档时为 null
created_atstring创建时间
updated_atstring最近更新时间
Thread 响应不再包含旧字段 agent_idagent_versionnamerolestop_reasoncreated_by_tool_use_idusage