跳转到主要内容
POST /v1/sessions 创建一个新的会话。Session 是 Agent 与用户之间的对话容器,创建后状态为 idle,可通过 Events API 发送消息触发 Agent 处理。

请求头

头部必选说明
AuthorizationBearer <PAT>
Content-Typeapplication/json

请求体

字段类型必选说明
agentstring 或 objectAgent 引用。传字符串 Agent ID 表示使用最新 active 版本;也可传对象,包含 id、可选 type、可选 version
environment_idstring条件必选已存在的 Environment ID(env_ 前缀)。未提供 environment 时必选;如果同时提供 environment_idenvironment,优先使用 environment_id
environmentstring 或 object条件必选已存在的 Environment ID 字符串,或内联 Environment 对象。未提供 environment_id 时必选。
titlestring会话标题
metadataobject自定义元数据键值对
delta_flush_interval_msinteger增量刷新间隔,范围 50-5000,默认 100
memory_store_idsarray唯一且非空的 Memory Store ID 数组,默认 []
resourcesarray文件或 GitHub 仓库资源列表,默认 []
vault_idsarray唯一且非空的 Vault ID 数组,默认 []
vaultsarrayvault_ids 的别名,仅当 vault_ids 为空或未提供时使用。
environment_variablesstringSession 级环境变量,格式为用分号或换行分隔的 KEY=VALUE 字符串;默认不注入自定义变量。self-hosted Environment 不支持该字段。

agent 对象

字段类型必选说明
idstringAgent ID(agent_ 前缀)
typestring可选类型标记,服务端不要求固定值。
versioninteger用于本 Session 的 Agent 版本。不传或传 0 表示使用最新 active Agent。

内联 environment 对象

字段类型必选说明
namestringEnvironment 名称。为空或省略时默认为 "Session Environment"
descriptionstringEnvironment 描述
configobjectEnvironment 配置,结构与创建 Environment一致。
metadataobject内联 Environment 的自定义元数据

environment_variables 格式

environment_variables 必须是一个字符串,不支持 JSON object。多个变量可用分号或换行分隔:
{
  "environment_variables": "NODE_ENV=production; FEATURE_FLAG=1\nEMPTY_VALUE="
}
每一项必须使用 KEY=VALUE 格式。变量名必须匹配 [A-Za-z_][A-Za-z0-9_]*;重复变量名会被拒绝;允许空值。服务端最多接受 64 个变量、单个值最大 8 KiB、所有变量名和值合计最大 64 KiB。SERVER_ENDPOINTUSER_IDWORK_DIR 以及 CAW_QODER_ 前缀为保留名称。

resources 数组元素

resources 数组中的每个元素通过 type 字段区分类型: 文件资源 (type: "file"):
字段类型必填说明
typestring"file";省略时默认 "file"
file_idstring文件 ID(通过 Files API 上传后获得)。文件状态必须为 ready
pathstring挂载路径,默认 /data/{file_id}。相对路径会自动加上 /data/ 前缀;归一化后必须位于 /data/ 下,最长 512 字符。
mount_pathstringpath 的别名。若同时提供 pathmount_path,两者必须一致;响应中统一返回归一化后的 path
GitHub 仓库资源 (type: "github_repository"):
字段类型必填说明
typestring"github_repository"
urlstring仓库 URL
mount_pathstring克隆到容器中的路径
authorization_tokenstring访问私有仓库时使用的授权 token。提供后会保存在 Session resource 对象中。

示例请求

curl -X POST "https://api.qoder.com/api/v1/cloud/sessions" \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": {"id": "agent_019e390add9f7bac9b6cc806db46fcbd", "version": 2},
    "environment_id": "env_019e2590d33f711fabf42f2857cecd8a",
    "title": "我的会话",
    "metadata": {"purpose": "customer-support"},
    "environment_variables": "NODE_ENV=production; FEATURE_FLAG=1",
    "delta_flush_interval_ms": 100
  }'

附带 GitHub 仓库的示例

curl -X POST "https://api.qoder.com/api/v1/cloud/sessions" \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": {"id": "agent_019e390add9f7bac9b6cc806db46fcbd", "version": 2},
    "environment_id": "env_019e2590d33f711fabf42f2857cecd8a",
    "title": "代码审查会话",
    "resources": [
      {
        "type": "github_repository",
        "url": "https://github.com/your-org/your-repo"
      }
    ]
  }'

示例响应

HTTP 201 Created
{
  "id": "sess_019e3bb1e8c171fd9abbb1477ffb84cc",
  "type": "session",
  "agent_id": "agent_019e390add9f7bac9b6cc806db46fcbd",
  "agent": {
    "id": "agent_019e390add9f7bac9b6cc806db46fcbd",
    "type": "agent",
    "name": "doc-test-agent",
    "description": "文档示例用 Agent",
    "model": "ultimate",
    "system": "你是一个测试助手",
    "tools": [
      {
        "type": "agent_toolset_20260401",
        "enabled_tools": ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch"]
      }
    ],
    "skills": [],
    "metadata": {},
    "mcp_servers": [
      {
        "type": "http",
        "name": "weather-service",
        "url": "https://mcp.example.com/mcp"
      }
    ],
    "version": 2,
    "archived_at": null,
    "created_at": "2026-05-18T03:04:33.952256Z",
    "updated_at": "2026-05-18T03:05:28.023697Z"
  },
  "environment_id": "env_019e2590d33f711fabf42f2857cecd8a",
  "title": "我的会话",
  "status": "idle",
  "turn_status": "idle",
  "metadata": {"purpose": "customer-support"},
  "resources": [],
  "vault_ids": [],
  "memory_store_ids": [],
  "environment_variables": {
    "NODE_ENV": "production",
    "FEATURE_FLAG": "1"
  },
  "stats": {
    "active_seconds": 0,
    "duration_seconds": 0
  },
  "archived_at": null,
  "created_at": "2026-05-18T15:26:15.747298Z",
  "updated_at": "2026-05-18T15:26:15.747298Z"
}

响应字段

字段类型说明
idstringSession 唯一标识(sess_ 前缀)
typestring固定值 "session"
agent_idstring关联的 Agent ID
agentobject本 Session 使用的 Agent 快照,字段包括 idtypenamedescriptionmodelsystemtoolsmcp_serversskillsmetadataversion、可为空的 archived_atcreated_atupdated_at。不会返回旧字段 instructionsdefault_environment
environment_idstring关联的 Environment ID
titlestring会话标题
statusstringSession 生命周期状态。新建时为 "idle";正在处理时通常为 "running"
turn_statusstring当前 turn 状态,例如 "idle""processing""cancelling"
metadataobjectSession 元数据
resourcesarray归一化后的资源对象。文件资源包含 typefile_idpath;GitHub 仓库资源包含 typeurl、可选 mount_path、可选 authorization_token
vault_idsarray关联的 Vault ID 列表
memory_store_idsarray关联的 Memory Store ID 列表
environment_variablesobject归一化后的 Session 级环境变量;未提供自定义变量时为空对象。
statsobjectSession 统计信息。新建 Session 包含 active_secondsduration_seconds,初始值均为 0。
archived_atstring 或 null归档时间;未归档时为 null
created_atstring创建时间(ISO 8601)
updated_atstring最后更新时间(ISO 8601)

错误码

HTTPtype触发条件
400invalid_request_error请求体格式错误、缺少必填字段,或 environment_variables 格式非法
401authentication_errorPAT 无效或过期
404not_found_errorAgent 或 Environment 不存在
409conflict_error引用的 Environment 已归档、文件资源未 ready,或资源路径/ID 冲突
完整错误信封说明详见 错误参考

相关

启动 Session

让 Agent 在环境中以有状态对话的方式运行。