.agents/design/code-sandbox/queue-id-concurrency.md
在代码沙盒运行接口中新增可选 queueId,并通过环境变量控制同一个 queueId 同时可进入执行流程的请求数。
目标行为:
queueId 的请求生效;queueId 超出并发上限时 FIFO 等待;POST /sandbox/js 和 POST /sandbox/python 增加字段:
{
"code": "async function main() { return {} }",
"variables": {},
"queueId": "team-xxx"
}
字段约束:
queueId 可选;新增:
| 变量 | 说明 | 默认值 |
|---|---|---|
SANDBOX_QUEUE_ID_CONCURRENCY | 同一 queueId 同时可进入执行流程的请求数;为空时不启用 queueId 排队 | 空 |
新增 QueueIdLimiter:
Map<string, QueueState>;queueId 有独立 FIFO 等待队列、运行计数和上限;run(queueId, task) 在未启用或无 queueId 时直接执行 task;与进程池组合:
await queueIdLimiter.run(queueId, () => pool.execute(options));
这形成两层队列:
QueueIdLimiter:
queueId 并正常执行;queueId 非字符串返回 400。fetch 并发请求 /sandbox/js;queueId 串行、不同 queueId 并行、未传 queueId 不受限。SANDBOX_QUEUE_ID_CONCURRENCY 环境变量。QueueIdLimiter 并补单元测试。ExecuteOptions、CodeSandbox.runCode() 类型和 README。