Skip to content

HTTP API

GolemBot 内置 HTTP 服务器,支持 SSE 流式传输,可通过 golembot servecreateGolemServer() 使用。

端点

POST /chat

发送消息并接收 Server-Sent Events (SSE) 流。

请求头:

Authorization: Bearer <token>
Content-Type: application/json

请求体:

json
{
  "message": "分析销售数据",
  "sessionKey": "user-123"
}

响应: text/event-stream

data: {"type":"text","content":"让我看看"}

data: {"type":"tool_call","name":"readFile","args":"{\"path\":\"sales.csv\"}"}

data: {"type":"done","sessionId":"abc-123","durationMs":8500}

SSE 中的错误事件

/chat 端点始终返回 200 OK — 错误通过流内的事件传递:

data: {"type":"error","message":"Server busy: too many concurrent requests (limit: 10). Try again later."}
data: {"type":"error","message":"Too many pending requests for this session (limit: 3). Try again later."}
data: {"type":"error","message":"Agent invocation timed out"}

请在 SSE 处理器中始终检查 type === "error"

POST /reset

清除会话。请求体:{ "sessionKey": "user-123" }。响应:{ "ok": true }

GET /health

健康检查(无需认证)。响应:{ "status": "ok", "timestamp": "..." }

认证

/health 外的所有端点需要 Bearer Token:

Authorization: Bearer <token>

Token 通过 --token CLI 参数、GOLEM_TOKEN 环境变量或 golem.yaml 中的 gateway.token 配置。

编程使用

typescript
import { createAssistant, createGolemServer, startServer } from 'golembot';

const assistant = createAssistant({ dir: './my-bot' });

// 方式 1:获取 server 实例
const server = createGolemServer(assistant, { port: 3000, token: 'my-secret' });

// 方式 2:直接启动
await startServer(assistant, { port: 3000, token: 'my-secret' });

基于 MIT 协议 发布。