Skip to content

[Feature]: 优化 Web Studio Usage/Audit 不可用时的连接权限提示 #2913

Description

@lyfmt

Problem Statement

Web Studio 在 Usage/Audit 不可用时,目前会把不同原因统一呈现为「Usage/Audit is not initialized, so live usage stats are unavailable.」。

这个提示在以下场景里容易让用户误判:后端 Usage/Audit 已经初始化,审计库也有数据,但当前 WebUI 连接没有配置 API Key,导致 /health 无法返回 role,前端把 connectionRole 判断为 unknown,于是不会请求 Console Usage/Audit 接口。

实际观察到的链路是:

  • OpenViking Server 正常运行,/health 返回 auth_mode: dev
  • 不带 X-API-Key 请求 /health 时,不返回 role
  • X-API-Key: dev 请求 /health 时,返回 role: root
  • WebUI localStorage 中 ov_console_connection.apiKey 为空时:
    • Home 页不请求 /api/v1/console/dashboard/summary
    • Home 页 Usage/Audit 面板全部显示 0
    • 面板显示「Usage/Audit is not initialized...」
    • 访问 Request Logs 会回到 Home,无法看到请求日志
  • 给 WebUI 连接补上 API Key: dev 后:
    • Home 页开始请求 /api/v1/console/dashboard/summary
    • Request Logs 正常请求 /api/v1/console/audit
    • 页面可以看到已有审计记录

从用户视角看,这不是 Usage/Audit 没有初始化,而是当前连接没有被识别为可访问 Console Usage/Audit 的角色。

Proposed Solution

建议 Web Studio 区分「Usage/Audit 未初始化」和「当前连接角色未知 / 无管理权限」两类状态。

例如:

  • 当后端明确返回 enabled: false 时,继续显示 Usage/Audit 未初始化或未启用
  • connectionRole === "unknown" 时,显示更准确的提示:
当前连接未获取到 admin/root 权限,无法显示 Usage/Audit 数据。
请在 Connection & Identity 中配置具备权限的 API Key。

Request Logs 页面也可以避免静默跳回 Home,改为展示一个轻量提示页,说明当前连接无法访问请求日志,并引导用户去 Connection & Identity 配置 API Key。

Alternatives Considered

不建议放宽后端 Console Usage/Audit 的访问控制。Usage/Audit 和请求日志属于管理视图,继续要求 root/admin 角色是合理的。

也不建议在所有 dev 模式下自动注入 dev API Key,因为这可能和已有部署或用户显式配置冲突。

更稳妥的改进是只调整 WebUI 的状态判断和提示文案,让用户知道当前是连接身份问题,而不是后端审计能力未初始化。

Feature Area

Other / Web Studio / Console Usage-Audit

Use Case

本地开发或 dev auth mode 下,用户打开 Web Studio 后看到 Usage/Audit 面板全是 0,并且显示 Usage/Audit 未初始化。

如果用户同时能在后端或数据库里看到审计记录,就会误以为 Usage/Audit 初始化、审计写入或 account 隔离有问题。更准确的提示可以减少排查成本,并让用户直接去 Connection & Identity 配置 API Key。

Additional Context

验证环境:

  • OpenViking version: 0.4.6
  • Auth mode: dev
  • OS: Linux / WSL2
  • Python: 3.14.3

直接接口验证:

curl -sS http://127.0.0.1:1933/api/v1/console/dashboard/summary

返回了非 0 数据,例如:

{
  "status": "ok",
  "result": {
    "context_counts": {
      "files": 2,
      "skills": 2,
      "memories": 2,
      "total": 6
    },
    "today_tokens": {
      "vlm_input": 169339,
      "vlm_output": 156766,
      "embedding_input": 1199,
      "total": 327304
    },
    "today_retrievals": {
      "find": 0,
      "search": 0,
      "total": 0
    }
  }
}

审计接口在配置 API Key 后也正常返回数据:

GET /api/v1/console/audit?page=1&page_size=10 => 200

WebUI 请求头对比:

# 未配置 API Key
GET /health
# 请求头没有 X-API-Key,响应没有 role

# 配置 API Key: dev 后
GET /health
x-api-key: dev
# 响应包含 role: root

因此建议将当前提示从「Usage/Audit 未初始化」细分为更明确的连接权限状态。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions