Skip to content
FunCoding

Search

Search docs, Skills and MCP

共享会话、SSE 与审批

订阅事件封套、处理先到审批与慢客户端,并配置有限的 Todo 延续。

This page has not been translated into English yet. The original Chinese version is shown below.

默认同一工作区共享一个 agent 会话,不同注册工作区各有运行时。同一工作区中的多个并行会话仍共享一个 ACP 子进程;一个子进程崩溃可能影响其全部会话。

事件封套

SSE 的 data 行包含完整 JSON 封套,而不是直接放 ACP payload:

{
  "id": 1,
  "v": 1,
  "type": "session_update",
  "data": {
    "sessionUpdate": "agent_message_chunk",
    "content": { "type": "text", "text": "Hello" }
  }
}

封套还可能带 originatorClientId。SSE 的 id/event 行只是同一信息的便捷表示。订阅应先于 prompt;常见事件包括 session_update、permission_request、permission_resolved、model_switched、model_switch_failed,以及关闭流的 session_died 和 client_evicted。

同一 session 重新附着时若指定 modelServiceId,切换模型失败不一定让 POST /session 返回 HTTP 错误;会话继续使用原模型,失败通过 SSE 的 model_switch_failed 表达。应先订阅已知会话,或订阅时用 Last-Event-ID: 0 回放可用窗口。

共享审批

工具权限请求发给所有附着客户端,默认第一个答复生效。新集成使用 POST /session/:id/permission/:requestId,并检查 session_permission_vote capability。

旧 POST /permission/:requestId 只路由 primary,其他工作区的请求会返回 404;这个 404 不证明有人抢先答复。所有 bearer 持有者属于同一安全主体,不能把不同 client ID 当互相保密的权限域。

排队与重连

每会话默认最多 5 个已接纳但未完成的 prompt,包含运行中的一条。超限同步返回 503 prompt_queue_full 与 Retry-After: 5,不会先给出 promptId。branchSession 使用同一 FIFO,但不计入此 prompt 上限。

SSE 默认保存最近 8000 个事件。Last-Event-ID 在窗口内可继续,过旧会触发 state_resync_required。订阅者队列默认 256 帧,可用 maxQueued 查询参数在 16–2048 间指定;支持 slow_client_warning 时,75% 队列占用会先告警,超限发送 client_evicted 并关闭。

每会话默认最多 64 个 SSE 订阅者,第 65 个收到终止 stream_error。完整历史不能依靠无限扩大 SSE,应该使用持久 transcript。

Todo Stop Guard

需要尚未完成的顶层 Todo 驱动有限延续时,启用以下设置并重启:

{
  "experimental": { "todoStopGuard": true },
  "tools": { "todoWrite": { "enabled": true } }
}

默认关闭,safe mode、bare mode 和 plan 审批模式强制关闭。只有新普通 prompt 成功执行自己的顶层 todo_write 才会启用这条内存工作链;从磁盘读到 Todo 或 daemon 重启不会自动启用。

没有新用户输入时,最多连续增加两次主模型调用。中途用户消息先执行并开始新的两次额度;retry/continue 和相关后台结果继续使用当前额度。排队完整 prompt 也优先,等待关联后台工作时,无关 cron/loop 和旧任务通知延后,并按任务合并。

延续和最终耗尽状态以可回放 session_update 记录,_meta.source 为 todo_stop_guard,含次数与未完成数量,不含 Todo 文本。原有审批和取消规则不变。成功改变会话目录会清除此状态,避免旧 Todo 在新工作区继续运行。

完整的Prompt 终态、SSE 重同步和字节背压见运行时专题。