Skip to content

feat(kb-open): P1.5 Deep Research 开放(独立设计) #443

Description

@ncw1992120

Part of #440

背景

/research(Deep Research)在 #440 规划中移出 P0(A3 决策)。它是唯一一个异步 / SSE / 多步 LLM / 有成本 / 需 job 生命周期的端点,与其余 9 个同步只读端点本质不同。硬塞进同一套 key/scope/SSE 鉴权是凑合,因此作为独立议题单独设计。

底层能力已存在:WikiResearchService.research()(3 阶段流水线:规划→检索+起草→组合),通过 SSE 广播事件。

需要单独设计的内容

限流 + 计费

  • Deep Research 每次调用消耗大量 LLM token(多轮规划+起草+组合),比 search 成本高一个量级
  • 需要独立的限流策略(不能和 search 共用同一个 rate_limit_per_min)
  • 接入 TokenUsageService 记录完整 token 消耗

Job 生命周期管理

  • 当前 WikiResearchService 的 session 查询/取消机制需要在开放 API 中暴露
  • 设计 job 状态查询接口(GET /research/{sessionId}/status
  • 设计 job 取消接口(POST /research/{sessionId}/cancel

SSE 鉴权(R7)

  • 浏览器 EventSource 不支持自定义 Header(不能设 Authorization: Bearer
  • 方案 A:仅服务端 client(文档明确限制)
  • 方案 B:query 参数传递 token(?token=mck_xxx,参照现有 JwtAuthFilter 的 SSE query param 模式)

接口草案

POST   /api/v1/open/kb/{kbId}/research              启动(返回 sessionId)
GET    /api/v1/open/kb/{kbId}/research/{id}/stream   SSE 事件流
GET    /api/v1/open/kb/{kbId}/research/{id}/status   状态查询
POST   /api/v1/open/kb/{kbId}/research/{id}/cancel   取消

优先级

P1.5——在 P0(#441 + #442)完成并验证后推进。不阻塞 P0 上线。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions