Skip to main content
Sessions

更新 Session

更新 Session 属性或已有 Session 的运行配置。

POST /api/v1/cloud/sessions/{session_id} 本接口用于更新一个已经创建的 Session。它既可以修改 titlemetadataenvironment_variables 等 Session 顶层属性,也可以通过 agent 对象动态修改该 Session 使用的模型、系统提示词、Tools、MCP servers、Skill bindings 等运行配置。省略的字段保持不变。
更新 Agent 或发布新的 Agent version,不会自动改变已经创建的 Session。Session 在创建时会固定一份运行配置快照。Skill binding 如果钉住了具体数字版本,发布新的 Skill version 后也会继续使用原版本。如需让已有 Session 应用这些变更,必须对该 Session 显式调用本接口并提交相应的 agent 字段。

路径参数

参数类型说明
session_idstringsess_ 为前缀的 Session ID

请求头

请求头必填说明
AuthorizationBearer <PAT 或 SAT>
Content-Typeapplication/json
x-qoder-beta更新 Beta Agent 字段时更新 agent.modelagent.systemagent.skillsagent.nameagent.description 时,必须包含 session-agent-patch-2026-07-21
x-qoder-beta使用 Browser Use 时agent.tools 中配置了 browser_toolset_20260714 时,必须包含 browser-use-2026-07-14。详见 Browser Use(Beta)
同时需要两个 Beta ID 时,通过同一个请求头以逗号分隔:
x-qoder-beta: session-agent-patch-2026-07-21, browser-use-2026-07-14

请求体

普通 Session 属性与 agent 运行配置可以在同一个请求中提交;组合更新会在同一笔加锁事务中整体成功或整体失败。
字段类型必填说明
titlestring | null新标题;传 null 表示清空
metadataobject | nullMetadata patch。对象中值为 null 的 key 会被删除;顶层 null 为 no-op
environment_variablesobject | null整体替换 Session 显式配置的环境变量。未提交的 key 会被移除;{}null 清空 Session 显式值。已有 Vault 中的环境变量凭证会重新合并,显式提交的 Session 值优先。校验规则与创建 Session相同
agentobject动态更新当前 Session 内嵌的运行配置快照;对象中至少包含一个下文支持的字段

更新普通 Session 属性

Session 更新不使用 version 字段。并发 Metadata patch 基于加锁后的最新值合并;并发更新 titleenvironment_variables 时采用 last-write-wins 语义。
curl -X POST "https://api.qoder.com.cn/api/v1/cloud/sessions/sess_019e3bb1e8c171fd9abbb1477ffb84cc" \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "New title",
    "metadata": {
      "priority": "high",
      "old_key": null
    },
    "environment_variables": {
      "LOG_LEVEL": "debug"
    }
  }'

动态更新运行配置

虽然请求体使用 agent 对象,但操作范围包括该快照内所有受支持的 Session 运行配置,例如 skills。本接口更新的是当前 Session 的具体配置字段,不是把 Session 切换到某个 Agent ID 或 version。请勿提交 agent.idagent.version
更新 Agent/配置 ──> Agent version N+1 ──╳──> 已有 Session 快照 N
发布 Skill S+1 ─────────────────────────╳──> 钉住 Skill S 的 binding

POST /sessions/{session_id},提交 agent 字段 ──────┘

      └──> 更新运行配置快照,供后续 turn 使用

应用新发布的 Agent 配置

  1. 更新源 Agent,发布新的 Agent version。
  2. 获取目标 Agent version,读取该 version 的配置。
  3. 只把下文支持的字段复制到 agent patch 对象中。不要直接复制完整 Agent 响应,因为其中的 idtypeversionmetadatamultiagent 在本接口中不可用。
  4. 对每个需要使用新配置的已有 Session,分别调用一次本接口。
  5. 确认响应中内嵌的 agent 已更新,再开始下一个 turn。
使用更新后 Agent 新建的 Session 会正常固定新的 Agent version;只有更新前已经存在的 Session 需要显式动态更新。

Skill version 的生效规则

  • skills[].version 为数字时,会钉住该 Skill version。发布更新的 Skill version 不会影响已有 Session;需要通过 agent.skills 提交新的数字版本,才能让 Session 前移。
  • 省略 version 或传 "latest" 时,sandbox preparation 会动态解析最新 Skill version。仅仅为了更新 Skill 内容时,这种 binding 不需要更新 Session。
  • 修改 Skill binding 列表本身,例如新增、移除或替换 Skill,始终需要对已有 Session 显式提交 agent.skills
动态更新会形成一份可能不同于已发布 Agent 和 Skill version 的 Session 局部运行快照,但不会推进内嵌的 agent.version。判断更新是否生效时,请检查 Session 响应中的具体配置字段,不要依赖该值。

agent 中可更新的字段

字段类型Beta 请求头语义
modelstring | Agent modelsession-agent-patch-2026-07-21在调用方可用模型目录中完成校验后,替换模型配置
systemstringsession-agent-patch-2026-07-21替换系统提示词
toolsAgent tool 数组不需要;Browser Use 除外整体替换工具配置,最多 128 项
mcp_serversMCP server 数组不需要整体替换 MCP server 列表,最多 20 项
skillsSkill binding 数组session-agent-patch-2026-07-21整体替换 Skill 绑定列表,最多 20 项
namestringsession-agent-patch-2026-07-21替换内嵌 Agent 快照中的名称
descriptionstringsession-agent-patch-2026-07-21替换内嵌 Agent 快照中的描述
以下 Agent 字段不能通过本接口更新:
字段行为
idversiontype作为未知字段被拒绝;本接口不会通过 Agent 引用重新固定 Session
multiagent被拒绝;coordinator roster 不能动态修改
Agent metadata被拒绝;如需修改 Session 级 metadata,请使用请求体顶层的 metadata 字段
其他 Agent 字段直接拒绝,不会静默忽略

动态运行配置的更新语义

  • 省略的 agent 字段保持原值。
  • toolsmcp_serversskills 是整体替换。需要保留的条目必须全部提交;传 [] 可清空对应字段。
  • 同时修改 toolsmcp_servers 时,应在同一请求中提交两个完整数组。每个 mcp_toolset 都必须引用最终 mcp_servers 列表中的名称。
  • 修改 mcp_servers,或者在 Session 已有 MCP server 时修改 tools,都会重新执行 MCP discovery,并刷新冻结在 Session 快照中的工具。
  • 单个 MCP server discovery 失败不会导致更新失败:接口仍返回 200 并发出 session.error 事件。请求配置不合法或快照/冻结过程发生内部错误时,更新会失败。
  • 动态运行配置更新不使用乐观并发控制;并发成功的更新采用 last-write-wins 语义。
  • 已归档或已终止的 Session 不能动态更新运行配置。

生效时机

更新后的 Agent 快照会写入 Session 及其 coordinator thread,后续 turn 使用新快照。更新前已经派发的 turn 可能继续使用旧配置;如果需要清晰的 turn 边界,请等待 Session 进入 idle 后再更新。

示例:应用新的模型、提示词和 Skill 配置

由于 skills 是整体替换,必须提交该 Session 需要保留的全部 Skill bindings。
curl -X POST "https://api.qoder.com.cn/api/v1/cloud/sessions/sess_019e3bb1e8c171fd9abbb1477ffb84cc" \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-qoder-beta: session-agent-patch-2026-07-21" \
  -d '{
    "agent": {
      "model": {
        "id": "ultimate",
        "effort": "high",
        "context_window": 200000
      },
      "system": "Use the latest review policy and cite evidence for every conclusion.",
      "skills": [
        {
          "type": "custom",
          "skill_id": "skill_019e3bba474b73cfaf19eae9b5f5e66d",
          "version": "1759264410332875"
        }
      ]
    }
  }'

示例:替换 Tools 和 MCP servers

toolsmcp_servers 不需要 Session Agent Patch Beta ID。两个数组都是完整替换。
curl -X POST "https://api.qoder.com.cn/api/v1/cloud/sessions/sess_019e3bb1e8c171fd9abbb1477ffb84cc" \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": {
      "tools": [
        {
          "type": "mcp_toolset",
          "mcp_server_name": "docs"
        }
      ],
      "mcp_servers": [
        {
          "name": "docs",
          "type": "url",
          "url": "https://mcp.example.com/mcp"
        }
      ]
    }
  }'

响应与事件

HTTP 200 OK 返回更新后的 Session 对象。动态运行配置更新既不会改变源 Agent 的 version,也不会推进 Session 快照内嵌的 agent.version 更新成功后会发出 session.updated:事件固定包含 idtypeprocessed_at,并根据更新内容选择性包含 titlemetadata 或更新后的完整 agent 快照。事件不会包含环境变量值;如果请求只修改 environment_variables,事件只包含固定字段。完整事件结构参见 Session 数据结构 如果单个 MCP server discovery 失败,服务端还会发出 session.error,但会保留本次成功更新。

错误码

HTTP类型触发条件
400invalid_request_error请求体格式错误、包含未知字段或属性值不合法
400invalid_request_erroragent 包含不支持的字段,或模型、工具、MCP server、Skill、跨字段配置不合法
400invalid_request_error提交 Beta Agent 字段时未携带 session-agent-patch-2026-07-21
400invalid_request_error提交的 agent.tools 包含 browser_toolset_20260714,但未携带 Browser Use Beta ID
400invalid_request_errorSession 已归档或终止,且请求动态更新运行配置
401authentication_errorPAT 或 SAT 无效或过期
404not_found_errorSession 不存在,或普通属性更新的目标 Session 已归档
409invalid_request_error更新提交时 Session 被并发归档
500api_error无法安全解析已有 Vault 中的环境变量凭证
503feature_not_availableBrowser Use 暂时不可用
503api_error模型目录或其他必要依赖暂时不可用
完整错误信封格式参见 错误处理

相关