Skip to content

提供 WebSocket/SSE 实时事件接口供第三方客户端同步 usage logs #1258

Description

@xt1990xt1990

背景

我在维护一个非官方的 macOS 菜单栏客户端:CCH Bar,用于轻量查看 Claude Code Hub 的运行中请求、最近请求、排行和渠道状态。

项目地址:
https://github.com/xt1990xt1990/Claude-Code-Hub-Bar

目前 CCH Bar 只能通过轮询 /api/v1/usage-logs 来同步“请求中 / 已完成”的状态。实际体验中,CCH Web 页面已经显示请求中后,CCH Bar 由于轮询间隔通常会有约 1-3 秒延迟;如果把轮询间隔压到 1 秒,又会增加不必要的请求量。

需求

希望 Claude Code Hub 提供一个轻量的实时事件接口,供第三方客户端订阅使用日志/运行中请求变化,实现接近无延迟同步。

建议支持 WebSocket 或 SSE 均可,例如:

  • GET /api/v1/events,SSE
  • GET /api/v1/ws,WebSocket
  • 或专门的 GET /api/v1/usage-logs/events

期望事件

至少希望包含这些事件类型:

  • usage_log.created:新请求创建,通常对应 statusCode == null
  • usage_log.updated:请求状态更新,例如 statusCodenull 变成 200/499/5xx
  • usage_log.completed:请求完成,可选,如果 updated 已能表达则不必单独提供
  • usage_log.deletedusage_log.hidden:可选,用于日志清理或权限变化

建议 payload

payload 可以复用 /api/v1/usage-logs 的单条 log 结构,至少包含:

{
  "type": "usage_log.updated",
  "data": {
    "id": 123,
    "createdAt": "2026-06-09T03:45:24.511Z",
    "sessionId": "...",
    "providerName": "...",
    "model": "...",
    "statusCode": null,
    "costMultiplier": "0.0050",
    "specialSettings": []
  }
}

权限和兼容性

  • 复用现有 API token 鉴权即可。
  • 事件可按当前 token 的可见权限过滤,和 /api/v1/usage-logs 一致。
  • 建议支持断线重连:SSE 可使用 Last-Event-ID,WebSocket 可支持客户端传 cursor 或最近 log id。
  • 如果实时接口不可用,第三方客户端仍可 fallback 到现有 /api/v1/usage-logs 轮询。

价值

  • 第三方轻量客户端可以做到与 CCH Web 页面接近同步。
  • 避免为了低延迟而高频轮询 /api/v1/usage-logs
  • 对菜单栏、移动端、小组件、通知类客户端都比较有用。

谢谢。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions