Skip to content

WebChat 网页聊天

WebChat 是 OpenPollen 内置的网页聊天渠道,提供即时对话界面,支持流式响应。

配置

openpollen.json 中启用 WebChat:

json5
{
  "channels": {
    "webchat": {
      "enabled": true,
      "port": 3001,
      "assistantName": "OpenPollen"
    }
  }
}
字段类型默认值说明
enabledbooleantrue是否启用
portnumber3001HTTP + WebSocket 服务端口
assistantNamestringOpenPollen界面显示的助手名称

架构

WebChat 基于 WebSocket 实现双向通信:

浏览器 UI  ←→  WebSocket  ←→  WebchatAdapter  ←→  MessageRouter  ←→  Agent

连接流程

  1. 客户端通过 HTTP 访问 WebChat 页面
  2. 页面加载后建立 WebSocket 连接
  3. 服务端进行协议握手(Protocol v3)
  4. 握手成功后返回 connId 和支持的方法列表
  5. 客户端发送 RPC 请求,服务端返回响应或事件

WebSocket 协议

OpenPollen WebChat 使用自定义 RPC 协议(v3),包含三种帧类型:

请求帧(Request)

json
{
  "type": "req",
  "id": "unique-id",
  "method": "chat.send",
  "params": { "text": "你好" }
}

响应帧(Response)

json
{
  "type": "res",
  "id": "unique-id",
  "ok": true,
  "payload": {}
}

事件帧(Event)

json
{
  "type": "event",
  "event": "chat.delta",
  "payload": {
    "runId": "...",
    "state": "delta",
    "message": {
      "role": "assistant",
      "content": [{ "type": "text", "text": "你好!" }]
    }
  }
}

聊天事件状态

状态说明
delta流式输出片段
final完整回复
error错误
aborted用户中断

错误码

错误码说明
INVALID_FRAME无效帧格式
METHOD_NOT_FOUND方法不存在
UNAVAILABLE服务不可用
INTERNAL内部错误
BAD_PARAMS参数错误
ABORT_FAILED中断失败
SESSION_NOT_FOUND会话不存在

功能特性

  • 流式响应:Agent 回复实时推送到浏览器
  • 会话管理:支持 /new/resume 命令
  • 连接心跳:每 30 秒发送 tick 事件保活
  • 中断支持:用户可中途取消 Agent 执行
  • 历史记录:基于 Memory 系统持久化聊天历史