Agents API 参考
沙箱服务端在 agents 能力组打开之后提供的全部 HTTP 接口。组默认关闭。下面 70 条路由全部已实现,每条都有测试。有本地后端的运行时只有两个:Codex(二进制 codex)和 Qwen Code(二进制 qwen)。claude-code、cursor 和 command 是已声明、没有本地后端的适配器:GET /v1/agents/runtimes 对它们报告 implemented: false,选中它们的请求返回 404 agents.not_implemented_locally,响应体指向 GET /v1/agents/runtimes。
这不是 sb.agent.*。用法和案例见 Agents API。字段级拒绝的叙述见 托管代理。本页按路由列出参数和响应。
端点声明在 server-sdk/src/agent_sandbox/server/endpoints.py,处理函数挂在 routes_agents.py。
通用约定
打开这一组:
export ABX_SERVER_ENABLED_GROUPS=agents # 或 template.yaml 里 server.groups: [agents]
python -m agent_sandbox.server serve --port 9000
| 项 | 值 |
|---|---|
| 基址 | http://<host>:9000。OpenAI 风格客户端用 base_url=http://<host>:9000/v1 |
| 请求体 | Content-Type: application/json,对象。空 body 当成 {} |
| 令牌 | 设置了 ABX_SERVER_TOKEN 时,所有路由都接受 X-Access-Token 或 Authorization: Bearer |
| 本地标记 | 每个响应,包括错误,都有响应头 X-Agent-Sandbox-Local: 1。成功对象带 x_agent_sandbox。compute 是 local_process、local_state 或 none,不会是 openai_hosted |
| 所有者 | 调用方的身份 id(没有令牌时是 anonymous)。别人的 id 和不存在的 id 得到同样的应答 |
错误信封:
{
"error": {
"message": "说明",
"type": "invalid_request_error",
"param": "字段名或 null",
"code": "agents.not_implemented_locally"
}
}
type 在 404 时是 not_found_error。做不到的变体是 400,x-should-retry: false。没有本地能力的路由,以及选中了未实现的运行时,是 404,code 为 agents.not_implemented_locally,x-should-retry: false,x_agent_sandbox.runtimes 指向 /v1/agents/runtimes。端点关闭时是 404 endpoint_disabled,正文带 rule,说明是哪条规则关的。
列表信封(凡是下表写「列表」的):
| 查询参数 | 含义 |
|---|---|
limit |
整数 1–100,默认 20。超出是 400 invalid_request,param=limit |
order |
asc 或 desc,默认 desc。其他值 400 |
after |
上一页最后一条的 id。不在当前序列里是 404 agents.cursor_not_found |
{
"object": "list",
"data": [],
"first_id": null,
"last_id": null,
"has_more": false
}
会话对象 agent.session 的主要字段:id、object、agent(id、name、model、instructions、tools、multi_agent.enabled、reasoning、service_tier、text)、created_at、environment(type=self_hosted、id、workspace_directory)、status、metadata、usage、vault_ids、error、required_actions、last_active_at、x_agent_sandbox。
适配器选择顺序:请求头 X-ABX-Adapter,或正文 adapter / runtime,或 agent.model / model 恰好是 codex、openai-codex、qwen-code、qwen、qwen_code、qwencode。gpt-5 这种模型 id 会传给被选中的 CLI,不用于选择适配器。都没有时用产品顺序里的第一个:codex。ABX_AGENTS_DEFAULT 或 ABX_AGENTS_CONFIG 里的 default / agents.default 可以改这个默认。GET /v1/agents/runtimes?order=asc 按 codex、qwen-code 列出。列表默认 order=desc。default: true 标出当前默认,不看数组下标。已声明但未实现的适配器(claude-code、cursor、command)404 agents.not_implemented_locally;不认识的名字同样是 404。每个路由都可以单独放行,端点 id 的默认 scope 是 agents:use,见细粒度能力。
CLI 不在基础镜像里。要用时再装:
npm install -g @openai/codex
npm install -g @qwen-code/qwen-code
会话、事件、条目、回合
POST /v1/agents/sessions
创建会话。成功 200,body 是 agent.session。
| 字段 | 位置 | 说明 |
|---|---|---|
agent |
body | 对象。model 为适配器名或要传给 CLI 的模型 id。instructions 可选 |
agent_id |
body | 已保存定义的 id。给出时不再从 model 选适配器 |
adapter / runtime |
body 或 agent 内 |
显式适配器名 |
input |
body | 可选。字符串,或带 input_text 的消息。有内容则立刻排队一轮 |
metadata |
body | 字符串标量的对象。嵌套对象、数组、null 是 400 |
environment |
body | { "type": "self_hosted", "id": "env_..." } 可选 |
vault_ids |
body | 可选,字符串数组 |
X-ABX-Adapter |
header | 可选 |
environment.type 固定为 self_hosted。workspace_directory 默认 /workspace。
GET /v1/agents/sessions
列表。查询参数除分页外还有 agent_id(按定义 id 过滤)。成功 200,列表,元素是 agent.session。
GET /v1/agents/sessions/{id}
路径参数 id。成功 200,一个 agent.session。不存在 404 resource_not_found。
POST /v1/agents/sessions/{id}
只更新 metadata。body 里出现 agent、vault_ids、environment 或其他键是 400。成功 200,更新后的 agent.session。
DELETE /v1/agents/sessions/{id}
删除会话,并清掉产物快照。成功 200:
{ "id": "agsess_...", "object": "agent.session.deleted", "deleted": true, "x_agent_sandbox": {} }
POST /v1/agents/sessions/{id}/events
排队一轮。成功 202,空 body。
| 字段 | 说明 |
|---|---|
events |
非空数组。元素是对象 |
events[].type |
agent.session.input.message 或 input.message:取 input / content / text。agent.session.input.cancel 或 input.cancel:取消。tool_result 和 computer_use_approval_request_result 是 400 agents.tool_result_unsupported。其他 type 是 400 |
input |
没有 events 时,可直接给一条输入 |
Idempotency-Key |
可选头。相同键加相同 body 重放这个 202。相同键加不同 body 是 409 idempotency.mismatch |
input_image、input_file 是 400。进行中再送输入会排成新回合(queued_not_steered),不会写进正在跑的进程。
GET /v1/agents/sessions/{id}/events
SSE。Accept: text/event-stream。查询 after:不带则从现在开始跟踪,直到该回合结束;after=0 或 after=evt_<seq> 回放后关闭。帧的 id 是运行时序号。
GET /v1/agents/sessions/{id}/items
GET /v1/agents/sessions/{id}/turns
GET /v1/agents/sessions/{id}/turns/{turn_id}
GET /v1/agents/sessions/{id}/turns/{turn_id}/items
都是列表。条目 type=message 时 content[].type 为 output_text,content[].text 是 CLI 文本。本地案例里 Codex 的文本是 hello-from-fake-codex,Qwen Code 是 hello-from-fake-qwen。
GET /v1/agents/runtimes
成功 200,列表,包含每一个已声明的运行时。已实现的在前(codex、qwen-code),之后是只声明的适配器。每项:
| 字段 | 说明 |
|---|---|
id / name |
codex、qwen-code、claude-code、cursor 或 command |
implemented |
服务端是否有本地后端。只有 codex 和 qwen-code 为 true。false 的运行时不管 installed 是什么都会被拒绝 |
installed |
当前 PATH 上是否有该二进制 |
default |
请求没点名适配器时会不会用这一条。产品顺序是 codex 然后 qwen-code。order=asc 才按这个顺序排。默认 order=desc |
object |
agent.runtime |
aliases |
Codex:openai-codex。Qwen:qwen、qwen_code、qwencode |
binary |
该运行时的二进制名 |
path |
找到时的路径 |
install_steps |
[["npm","install","-g","@openai/codex"]] 或 Qwen 对应的包名 @qwen-code/qwen-code |
auth_env_present |
进程里是否已有该 CLI 的密钥环境变量 |
x_agent_sandbox |
compute: none,以及 installed、implemented |
产物、追踪、子代理
| 方法 | 路径 | 成功 | 响应 |
|---|---|---|---|
| GET | /v1/agents/sessions/{id}/artifacts |
200 列表 | CLI 报告过的文件快照。不扫描整个工作目录 |
| GET | /v1/agents/sessions/{id}/artifacts/{artifact_id} |
200 | 一条产物。path 形如 /workspace/<相对路径> |
| DELETE | 同上 | 200 | 只删快照。deleted_scope 为 snapshot,不动原文件 |
| GET | .../artifacts/{artifact_id}/content |
200 | 快照字节,X-Content-Type-Options: nosniff |
| GET | /v1/agents/sessions/{id}/traces |
200 列表 | 默认空。ABX_AGENTS_TRACES=1 时每个已结束回合一条 trace,只有时间和条目数,没有正文 |
| GET | .../subagents |
200 列表 | 只含 CLI 实际给出的 id |
| GET | .../subagents/{subagent_id} |
200 | 一个子代理。其他 id 与不存在的 id 同为 404 resource_not_found |
| GET | .../subagents/{subagent_id}/items |
200 列表 | |
| GET | .../subagents/{subagent_id}/turns |
200 列表 | |
| GET | .../turns/{turn_id} |
200 | |
| GET | .../turns/{turn_id}/items |
200 列表 |
multi_agent.enabled=true 仍是 400。
环境、文件、模板
POST /v1/agents/environments
body:type 必须能落到 self_hosted。空的 { "type": "openai_hosted" } 会被转成 self_hosted 并在 x_agent_sandbox.differences 里说明。带配置的 openai_hosted 是 400。
| 字段 | 说明 |
|---|---|
workspace_directory |
绝对路径,不能含 ..,不能是 /、/etc、/proc 等 |
env |
创建时应用,响应里不返回。拒绝 PATH、HOME、密钥、代理、CODEX_*、QWEN_*、GIT_*、ABX_* |
files |
内联文件,创建时写入工作目录之下 |
400:network、packages、setup_commands、plugins、skills、desktop、container_size、capability_directories。成功 200,环境对象。不会预置容器。
GET /v1/agents/environments
列表。200。
GET /v1/agents/environments/{environment_id}
200 一个环境,或 404。
POST /v1/agents/environments/{environment_id}/files
body:path、内容。路径相对工作目录。符号链接 400。已存在且内容不同是 400 agents.file_exists。写入 .git/、.codex/、.claude/、.cursor/、.qwen/、.qoder/、.ssh/,或 .mcp.json、AGENTS.md、QWEN.md、shell rc,是 400 agents.path_refused。大小上限 ABX_AGENTS_MAX_FILE_BYTES,默认 10 MiB。成功 200。
GET /v1/agents/environments/{environment_id}/files
200 列表。只含普通文件。查询 page 为不透明翻页令牌,下一页在 next。
环境模板
| 方法 | 路径 | body | 成功 |
|---|---|---|---|
| POST | /v1/agents/environments/templates |
{name, env, files}。被环境拒绝的字段在这里也是 400 |
200 |
| GET | /v1/agents/environments/templates |
无 | 200 列表。env 的值和文件内容不返回,只有 size_bytes |
| GET | .../templates/{environment_template_id} |
无 | 200 |
| POST | 同上 | 更新 {name, env, files} |
200 |
| DELETE | 同上 | 无 | 200 |
通过会话或环境上的 environment_template_id 应用到环境。
明确没有的执行器接口
| 方法 | 路径 | 响应 |
|---|---|---|
| POST | /v1/agents/environments/{environment_id}/register |
404 agents.not_implemented_locally |
| GET | /v1/agents/environments/{environment_id}/connect |
同上 |
Agent 定义
POST /v1/agents
| 字段 | 说明 |
|---|---|
model |
必填,除非该字符串本身就是适配器名。否则作为 -m 传给 CLI |
name |
可选 |
instructions |
可选 |
metadata |
字符串标量对象 |
tools |
只有 type=mcp 且传输为 http 的工具。stdio、allowed_tools、其他工具类型是 400 |
reasoning.effort |
Codex 可以。Qwen Code 上是 400 |
reasoning.summary |
400 |
multi_agent.enabled |
400 |
service_tier |
只允许 auto 或 default |
text.verbosity |
只允许 medium |
text.format |
只允许 text |
成功 200。id 形如 agent_...。MCP 请求头的值响应里是 "***"。
GET /v1/agents
200 列表。
GET /v1/agents/{agent_id}
200 或 404 resource_not_found,param=agent_id。
POST /v1/agents/{agent_id}
原地更新。省略的字段不变。body 里再给 adapter 或 runtime 是 400:定义不能换运行时。成功 200。正在跑的会话保留启动时的副本。
DELETE /v1/agents/{agent_id}
200:{ "id", "object": "agent.deleted", "deleted": true }。不停止已有会话。
Vault 与凭据
Vault 只在内存里。每个所有者默认最多 ABX_AGENTS_MAX_VAULTS(100)个。
| 方法 | 路径 | body | 成功 |
|---|---|---|---|
| POST | /v1/vaults |
只能有 name、metadata。其他键 400 |
200。对象只有 id、name、metadata、created_at |
| GET | /v1/vaults |
分页 | 200 列表 |
| GET | /v1/vaults/{vault_id} |
无 | 200 或 404 |
| POST | /v1/vaults/{vault_id} |
只能改 name、metadata |
200 |
| DELETE | /v1/vaults/{vault_id} |
无 | 200 |
凭据:
| 方法 | 路径 | body | 成功 |
|---|---|---|---|
| POST | .../credentials |
name 必填,metadata 可选,auth 必填 |
200。响应不含密钥的值、前缀、长度或哈希 |
| GET | .../credentials |
分页 | 200 列表 |
| GET | .../credentials/{credential_id} |
无 | 200 |
| POST | 同上 | 更新 auth 等允许字段 |
200。下一回合起生效 |
| DELETE | 同上 | 无 | 200 |
auth 允许 static_bearer,或带访问令牌的 mcp_oauth。400:environment_variable、mcp_oauth.refresh、networking.unrestricted、凭据主机以外的 limited 主机、不是 https 或指向私网的 mcp_server_url、含换行的令牌。
挂到会话的 vault_ids 上之后,凭据只注入到协议、主机、端口都相同的 MCP 工具,放在子进程环境的 Authorization 头里,不出现在 argv。两个凭据都匹配时必须给出 credential_id。凭据已删或 expires_at 已过,下一事件是 400 agents.credential_unavailable 或 agents.credential_expired。
Responses
POST /v1/responses 把一次 CLI 回合当成一个 response。成功对象的 object 是 response。
| 字段 | 说明 |
|---|---|
model |
已保存定义的 id,或透传给 CLI 的模型(如 gpt-5-codex)。qwen 这种运行时名表示用 CLI 默认模型,响应里 model_resolved: false |
input |
字符串,或 user / system / developer 消息,内容为 input_text |
instructions |
可选字符串 |
metadata |
字符串标量 |
store |
省略或 true 则保存。false 且 background 是 400。store: false 的 response 在回合结束后消失 |
background |
布尔。true 时不必等回合结束 |
stream |
true 时回合结束后用 SSE 回放(response.created、response.output_text.delta、response.completed) |
previous_response_id |
续接上一段。只能从该对话最新一条续,否则 400 agents.previous_response_not_latest |
tools |
仅 MCP:server_label、server_url,只写的 headers 和 authorization |
reasoning.effort |
仅 Codex |
400:tools 里非 MCP、conversation、prompt、非 text 的 text.format、任何 include、service_tier 不是 auto|default、tool_choice 不是 auto、input_image、input_file、助手历史、未知参数。temperature、top_p、max_output_tokens 被忽略,列在响应头 X-Agent-Sandbox-Ignored-Params。
输出条目只有 CLI 实际给出的:message、reasoning、command_execution、mcp_call、其他工具的 tool_call(带 tool_name)。不会出现 web_search_call、function_call、code_interpreter_call、local_shell_call。CLI 没报告用量时 usage 是 null。
| 方法 | 路径 | 成功 |
|---|---|---|
| POST | /v1/responses |
200,或 stream: true 时 SSE |
| GET | /v1/responses |
没有 WebSocket 升级时 400 agents.websocket_upgrade_required |
| POST | /v1/responses/input_tokens |
404 agents.not_implemented_locally。没有与 CLI 模型一致的分词器 |
| POST | /v1/responses/compact |
body 需要 previous_response_id。Qwen 跑本地 /compress。Codex 是 400 agents.compact_unsupported |
| GET | /v1/responses/{response_id} |
200。?stream=true&starting_after=N 再次回放 |
| DELETE | /v1/responses/{response_id} |
200 |
| POST | .../cancel |
200 终态对象。已结束是 400 agents.not_cancellable,不是 409 |
| GET | .../input_items |
200 列表。创建时接受的输入 |
Idempotency-Key 重放第一次的 response。body 不同是 409。
模型、文件、Webhook
| 方法 | 路径 | 参数 | 成功 |
|---|---|---|---|
| GET | /v1/models |
分页 | 200 列表。含调用者的定义和两个已实现的运行时。owned_by 为 agent-sandbox-local |
| GET | /v1/models/{model} |
路径 model |
200,或 404 model_not_found。没有副作用 |
| DELETE | /v1/models/{model} |
404 agents.not_implemented_locally。删除定义用 DELETE /v1/agents/{agent_id} |
|
| POST | /v1/files |
JSON:purpose 必须是 user_data,filename,data 为 base64。不解析 multipart |
200。file_id 在内存里。没签发过的 id 之后使用是 400 |
Webhook。签名密钥 whsec_... 只在创建和轮换时返回一次。
| 方法 | 路径 | body | 成功 |
|---|---|---|---|
| POST | /v1/webhook_endpoints |
只能有 url、event_types、name。url 必须是 https,无用户信息、无查询串、不是私网或回环。本地开发可设 ABX_AGENTS_WEBHOOK_ALLOW_HTTP=1 和 ABX_AGENTS_ALLOW_PRIVATE_URLS=1 |
200,含一次性 secret |
| GET | /v1/webhook_endpoints |
分页 | 200 列表。不含 secret |
| GET | .../{webhook_endpoint_id} |
无 | 200。不含 secret |
| POST | 同上 | url、event_types、name |
200 |
| DELETE | 同上 | 无 | 200 |
| POST | .../rotate_secret |
keep_old_secret_active_for_24_hours 是 400 |
200,新 secret 只出现这一次 |
| POST | .../test |
event_type |
200。服务端按 Standard Webhooks 签名投递 |
| GET | /v1/webhook_event_types |
无 | 200。接受 agent.session.created、in_progress、idle、failed。不接受 agent.session.action_required |
路由索引
70 条路由,端点 id 与 GET /capabilities 和策略里用的一致。标 拒绝 的四条存在的目的就是用类型化的 404 说明服务端没有这个能力(agents.not_implemented_locally),不是缺实现。
| 端点 id | 方法 | 路径 | 状态 |
|---|---|---|---|
agents_sessions_create |
POST | /v1/agents/sessions |
已实现 |
agents_sessions_list |
GET | /v1/agents/sessions |
已实现 |
agents_sessions_get |
GET | /v1/agents/sessions/{id} |
已实现 |
agents_sessions_update |
POST | /v1/agents/sessions/{id} |
已实现 |
agents_sessions_delete |
DELETE | /v1/agents/sessions/{id} |
已实现 |
agents_sessions_events_create |
POST | /v1/agents/sessions/{id}/events |
已实现 |
agents_sessions_events_stream |
GET | /v1/agents/sessions/{id}/events |
已实现 |
agents_sessions_items_list |
GET | /v1/agents/sessions/{id}/items |
已实现 |
agents_sessions_turns_list |
GET | /v1/agents/sessions/{id}/turns |
已实现 |
agents_sessions_turns_get |
GET | /v1/agents/sessions/{id}/turns/{turn_id} |
已实现 |
agents_sessions_turns_items_list |
GET | /v1/agents/sessions/{id}/turns/{turn_id}/items |
已实现 |
agents_artifacts_list |
GET | /v1/agents/sessions/{id}/artifacts |
已实现 |
agents_artifacts_get |
GET | /v1/agents/sessions/{id}/artifacts/{artifact_id} |
已实现 |
agents_artifacts_delete |
DELETE | /v1/agents/sessions/{id}/artifacts/{artifact_id} |
已实现 |
agents_artifacts_content |
GET | /v1/agents/sessions/{id}/artifacts/{artifact_id}/content |
已实现 |
agents_traces_list |
GET | /v1/agents/sessions/{id}/traces |
已实现 |
agents_subagents_list |
GET | /v1/agents/sessions/{id}/subagents |
已实现 |
agents_subagents_get |
GET | /v1/agents/sessions/{id}/subagents/{subagent_id} |
已实现 |
agents_subagents_items_list |
GET | /v1/agents/sessions/{id}/subagents/{subagent_id}/items |
已实现 |
agents_subagents_turns_list |
GET | /v1/agents/sessions/{id}/subagents/{subagent_id}/turns |
已实现 |
agents_subagents_turns_get |
GET | /v1/agents/sessions/{id}/subagents/{subagent_id}/turns/{turn_id} |
已实现 |
agents_subagents_turns_items_list |
GET | /v1/agents/sessions/{id}/subagents/{subagent_id}/turns/{turn_id}/items |
已实现 |
agents_runtimes_list |
GET | /v1/agents/runtimes |
已实现 |
agents_environments_create |
POST | /v1/agents/environments |
已实现 |
agents_environments_list |
GET | /v1/agents/environments |
已实现 |
agents_environment_templates_create |
POST | /v1/agents/environments/templates |
已实现 |
agents_environment_templates_list |
GET | /v1/agents/environments/templates |
已实现 |
agents_environment_templates_get |
GET | /v1/agents/environments/templates/{environment_template_id} |
已实现 |
agents_environment_templates_update |
POST | /v1/agents/environments/templates/{environment_template_id} |
已实现 |
agents_environment_templates_delete |
DELETE | /v1/agents/environments/templates/{environment_template_id} |
已实现 |
agents_environments_get |
GET | /v1/agents/environments/{environment_id} |
已实现 |
agents_environment_files_create |
POST | /v1/agents/environments/{environment_id}/files |
已实现 |
agents_environment_files_list |
GET | /v1/agents/environments/{environment_id}/files |
已实现 |
agents_cannot_executor_registration |
POST | /v1/agents/environments/{environment_id}/register |
拒绝 |
agents_cannot_executor_channel |
GET | /v1/agents/environments/{environment_id}/connect |
拒绝 |
agents_definitions_create |
POST | /v1/agents |
已实现 |
agents_definitions_list |
GET | /v1/agents |
已实现 |
agents_definitions_get |
GET | /v1/agents/{agent_id} |
已实现 |
agents_definitions_update |
POST | /v1/agents/{agent_id} |
已实现 |
agents_definitions_delete |
DELETE | /v1/agents/{agent_id} |
已实现 |
agents_vaults_create |
POST | /v1/vaults |
已实现 |
agents_vaults_list |
GET | /v1/vaults |
已实现 |
agents_vaults_get |
GET | /v1/vaults/{vault_id} |
已实现 |
agents_vaults_update |
POST | /v1/vaults/{vault_id} |
已实现 |
agents_vaults_delete |
DELETE | /v1/vaults/{vault_id} |
已实现 |
agents_vault_credentials_create |
POST | /v1/vaults/{vault_id}/credentials |
已实现 |
agents_vault_credentials_list |
GET | /v1/vaults/{vault_id}/credentials |
已实现 |
agents_vault_credentials_get |
GET | /v1/vaults/{vault_id}/credentials/{credential_id} |
已实现 |
agents_vault_credentials_update |
POST | /v1/vaults/{vault_id}/credentials/{credential_id} |
已实现 |
agents_vault_credentials_delete |
DELETE | /v1/vaults/{vault_id}/credentials/{credential_id} |
已实现 |
agents_responses_create |
POST | /v1/responses |
已实现 |
agents_responses_connect |
GET | /v1/responses |
已实现 |
agents_cannot_responses_input_tokens |
POST | /v1/responses/input_tokens |
拒绝 |
agents_responses_compact |
POST | /v1/responses/compact |
已实现 |
agents_responses_get |
GET | /v1/responses/{response_id} |
已实现 |
agents_responses_delete |
DELETE | /v1/responses/{response_id} |
已实现 |
agents_responses_cancel |
POST | /v1/responses/{response_id}/cancel |
已实现 |
agents_responses_input_items |
GET | /v1/responses/{response_id}/input_items |
已实现 |
agents_models_list |
GET | /v1/models |
已实现 |
agents_models_get |
GET | /v1/models/{model} |
已实现 |
agents_cannot_models_delete |
DELETE | /v1/models/{model} |
拒绝 |
agents_files_create |
POST | /v1/files |
已实现 |
agents_webhooks_create |
POST | /v1/webhook_endpoints |
已实现 |
agents_webhooks_list |
GET | /v1/webhook_endpoints |
已实现 |
agents_webhooks_get |
GET | /v1/webhook_endpoints/{webhook_endpoint_id} |
已实现 |
agents_webhooks_update |
POST | /v1/webhook_endpoints/{webhook_endpoint_id} |
已实现 |
agents_webhooks_delete |
DELETE | /v1/webhook_endpoints/{webhook_endpoint_id} |
已实现 |
agents_webhooks_rotate_secret |
POST | /v1/webhook_endpoints/{webhook_endpoint_id}/rotate_secret |
已实现 |
agents_webhooks_test |
POST | /v1/webhook_endpoints/{webhook_endpoint_id}/test |
已实现 |
agents_webhook_event_types |
GET | /v1/webhook_event_types |
已实现 |
端到端覆盖
| 案例 | 覆盖的接口 | 说明 |
|---|---|---|
examples/agents/complete_case.py |
POST /v1/agents/sessions、POST .../events、GET .../items、GET /v1/agents/runtimes。未点名适配器时 agent.id 为 codex。claude-code 为 404 |
事件响应是空 body 的 202。示例里的助手文本来自 PATH 上的本地程序,不读取模型密钥 |
examples/agents/hosted_codex.py、hosted_qwen.py |
同一组会话接口,对着已经启动的服务 | 与上面相同的 200 / 202 / 条目文本 |
examples/scenarios/agent_loop_local.py |
不是 Agents API。是沙箱命令:health、shell、读文件、SIGTERM | stdout '4\n',读回 answer=4,返回 -15 |
定义、环境、vault、responses、webhook 的参数和响应以上表为准。