Documentation Index
Fetch the complete documentation index at: https://tech.illasoft.com/llms.txt
Use this file to discover all available pages before exploring further.
路径
POST /agent/streaming
认证
Bearer JWT(Supabase)请求 Body
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
message | ResponseMessageSchema | 是 | 用户消息(v5 格式,parts[]) |
threadId | string | 是 | 线程 ID |
model | "lite" | "nova" | "crazy" | "ultra" | 否 | 默认 lite |
anchorMessageId | string | 否 | 传入则级联删除该消息之后所有消息/版本/异步任务(rewind) |
Plan 校验 + 降级
响应
Content-Type:text/event-stream
SSE 流通过 Vercel AI SDK createAgentUIStream() 生成。Chunks 包含 text delta、tool calls、tool results、finish reason 等。
工具调用在消息中使用特殊 marker 格式:
流式架构
agentRegistry.register(threadId, abortController, promise)- Redis
HSET agent:task:{threadId} { status: "running", userId, startedAt }TTL 600s ChunkWriter75ms 批量 flush →XADD agent:stream:{threadId}- 断线重连:
GET /agent/stream/:threadId用 XREAD BLOCK 3s 拉缓存 chunks onFinish:- INSERT
messages+thread_version publishVideoTask/publishMusicTask派发 Inngest eventsChunkWriter.close()→XADD sentinel { type: "done" }- Redis TTL 降到 120s
- INSERT
副作用
- DB:新增 messages、thread_version
- Redis:agent:task / agent:stream
- Inngest:派发视频/音乐 events(如 agent 调用对应工具)
- CSAM:用户 parts 里的图片会触发非阻塞
moderateImageUrl+threads.flag更新 - PostHog:
chat+chat_completion+sub_call(工具内 LLM 子调用)事件
错误码
| 状态 | 含义 |
|---|---|
| 400 | 请求体无效 / threadId 不存在 |
| 401 | JWT 无效 |
| 500 | 模型调用失败 |
源
src/hono/agent/index.ts:238src/hono/agent/index.ts:276-341(anchorMessageId 级联)src/lib/agentTask.ts(Redis streaming)