Skip to content

网关概览与请求日志 ​

本页逐一说明网关概览和请求日志两个标签页里的卡片、列、标签和保存状态,以及哪些数值说明网关运行正常。在 Studio 中打开 OpenViking 网关,选择概览或请求日志标签页即可。客户端通过网关发出第一个请求之前,这两个标签页都没有数据,接入方法见接入客户端。

谁能看到哪些请求 ​

两个标签页读的都是网关的请求日志:每个经过网关的模型请求对应一条记录。普通用户只看到自己的请求,账号管理员和 root 看到整个账号的请求。概览里的数字也是从这些记录算出来的,所以统计范围和请求日志一致。

日志只记元数据,从不保存提示词、回复或记忆内容,详见请求日志记什么。记录默认保留 30 天,见保留期限。

概览 ​

概览标签页汇总请求日志中最新的 10,000 条请求。收到第一个请求之前,页面上还会显示快速开始清单,见快速开始清单和快速模式。

卡片显示什么正常时不正常时看
请求数模型请求的数量(不含后台保存事件,即日志中的记忆同步)、最近一次请求的时间,以及这些请求的输出 token随客户端发请求而增长检查接入是否生效
首次调用缓存命中率每条新用户消息的第一次模型调用中,命中服务商提示词缓存的输入 token 所占比例接近不经过网关时服务商能达到的水平。这是判断网关是否健康最重要的指标。首次调用缓存命中率下降
轮内缓存命中率同一轮里后续调用的同一比例,例如工具步骤和 OpenViking 工具的往返通常很高—
召回的记忆条数补充到新消息中的记忆条数,以及每次检索 OpenViking 的平均耗时(只统计实际检索了的消息)用户在 OpenViking 中有记忆后开始增长;全新账号为 0 属于正常没有补充记忆
OpenViking已连接、异常或启动中,OpenViking 的版本,以及异常时的原因。卡片中的保存对话一栏统计正在重试或已暂停保存的对话数。已连接,且最近的请求中没有保存失败的对话OpenViking 异常、OpenViking 中看不到对话
降级请求每种异常出现的次数,附说明和建议操作没有降级请求降级请求的异常
最近请求最新的几条请求,以及前往请求日志标签页的链接—请求日志

首次调用缓存命中率明显下降,通常说明网关发送的历史和上一次对不上了。OpenViking 连不上期间,请求照常发给模型,只是不带记忆;保存对话会一直重试,直到 OpenViking 恢复。保存对话一栏或降级请求卡片报告问题时,点在请求日志中查看会打开请求日志标签页,并筛选出异常。

长对话没有命中缓存 ​

某段对话最近连续 3 次模型调用的输入都不少于 32,000 token、相邻两次相隔不到 5 分钟,而服务商返回的缓存命中每次都是 0 时,顶部四张数字卡片(请求数、首次调用缓存命中率、轮内缓存命中率和召回的记忆条数)下方会出现“有 2 段长对话连续没有命中提示词缓存”这样的警告,并列出每段对话的模型、上游和连续未命中次数。如果这些都是 Anthropic 对话,而且上游也从没写入过缓存,警告会建议检查客户端是否设置了 cache_control。

下面这些变化之后缓存本来就无法命中,所以连续次数会从头算起:

  • 一次压缩,或者模型开启了新的上下文窗口
  • 切换到别的模型或上游
  • 网关工具在请求中时有时无

某个上游最近从没返回过缓存命中时,显示的是一条提示:经过它的长对话缓存命中率一直是 0%。原因和处理方法见首次调用缓存命中率下降。

请求日志 ​

请求日志标签页按时间倒序列出日志中最新的 1,000 条记录,停留在第一页时每 30 秒刷新一次。筛选和搜索也只覆盖这 1,000 条。

只有到达模型服务商的请求才会记录。被网关先行拒绝的请求不记录,例如密钥无效、模型不在密钥允许的范围内、没有匹配的上游、请求体超限,这些情况下客户端直接收到错误,见客户端收到网关返回的错误。

筛选显示
全部所有记录
新消息以一条新用户消息开启一轮的请求
工具步骤延续同一轮的请求,例如带着工具结果继续
异常降级请求、对话保存处于重试中或已暂停的请求,以及服务商返回 HTTP 400 及以上状态码的请求(见上游返回错误)
请求类型某一种请求类型

搜索范围包括模型、对话 ID、请求 ID、密钥名称或前缀,以及上游名称。日志只保存对话 ID 的哈希,所以 Studio 会先在浏览器里对粘贴的对话 ID 求哈希再匹配。这要求 Studio 通过 HTTPS 或 localhost 打开;用普通 HTTP 打开时,按对话 ID 搜索什么也找不到。

各列含义 ​

列显示
时间请求到达的时间
类型请求类型
模型客户端发送的模型名称
状态服务商返回的 HTTP 状态码
Token输入 token、其中命中缓存的比例,以及输出 token
记忆这次请求中召回做了什么(见下表)
保存所在对话的保存状态;鼠标悬停可以看到原因
异常降级请求的异常

记忆列的写法:

显示含义
+3这次检索补充了 3 条记忆,旁边附检索耗时。
↺ 4之前 4 条消息补充的记忆被原样放回。
召回失败这次请求的记忆检索没有完成,例如 OpenViking 连不上、拒绝了密钥,或者没有在上下文配置的超时时间内返回。鼠标悬停可以看到原因,另见没有补充记忆。

请求详情 ​

展开一行可以看到:

  • 对话 ID、上游、网关密钥和耗时
  • token 明细
  • 记忆检索结果
  • 上下文窗口用量,以及历史是否经过压缩、模型是否开启了新窗口
  • 保存状态和下次重试时间
  • OpenViking 工具详情,包括没有提供工具的原因

有异常的请求,展开后还会说明发生了什么、该怎么处理。

请求类型 ​

每条记录都属于一种类型。类型决定这次请求是否检索记忆、所在的轮次是否保存。

类型含义记忆
新消息最后一条是新用户消息的请求检索一次,并放回之前的记忆;这一轮会被保存
工具步骤同一轮的延续,例如带着工具结果继续放回之前的记忆;随所在轮次一起保存
辅助请求生成标题、摘要、压缩、建议和权限检查的请求;对话带过客户端工具后,同一对话里不带工具、也不带之前回复的单独请求,例如 Claude Code 汇总抓取的网页放回之前的记忆;从不保存
子 Agent客户端的子 Agent 发出的请求放回之前的记忆;从不保存
Token 计数token 计数请求(/gateway/v1/messages/count_tokens)放回之前的记忆,计数才和实际发送的内容一致
直接转发原样转发、不带记忆的请求:其他接口、依赖服务商端状态的 Responses 请求、压缩过或无法解析的请求体无
记忆同步后台保存事件,不是模型请求—

保存状态 ​

保存列显示网关是否在把一段对话中已完成的轮次保存到 OpenViking。正常情况下显示正常。

状态含义网关怎么做
正常保存正常进行。—
已关闭这段对话的上下文配置不保存对话。不保存任何内容。
重试中OpenViking 拒绝了保存或无法访问。在 10、20、40、80 秒后依次重试。
已暂停连续失败 5 次。之后每 5 分钟重试一次,直到成功;未保存的轮次一直保留,直到保存成功或对话过期。
已暂停,原因为 gateway_key_revoked这段对话的网关密钥已被吊销或删除。不再重试。用户之后用有效密钥在这段对话里发请求时,保存自动恢复。

展开的行和保存标记的悬停提示会显示最近一次变化的原因:

显示的原因代码含义
OpenViking 拒绝了这个密钥,它可能填错了或已被吊销。openviking_http_401用户的 OpenViking 密钥已失效。
OpenViking 无法访问或响应超时openviking_unavailableOpenViking 没有运行、连不上或响应太慢。
保存到 OpenViking 失败delivery_failed其他原因导致保存失败,网关按上表重试。
保存已恢复正常delivery_recovered失败之后又保存成功了。
对话历史有改动,后续内容改存到新的 OpenViking 会话history_changed正常现象:客户端编辑、重新生成或压缩了对话,网关用当前历史在新的 OpenViking 会话中继续保存。
保存过程中对话历史有改动,后续内容改存到新的 OpenViking 会话history_changed_during_delivery正常现象:同上,只是发生在保存进行中。
已保存的一轮对话在停顿后又继续了,后续内容改存到新的 OpenViking 会话continued_after_idle正常现象:已在最新回复等待时长之后保存的一轮又继续了。
管理员已手动重新同步manual_reset有人用了重新同步对话…(见下文)。

之前的轮次留在旧的 OpenViking 会话里。保存一直处于重试中或已暂停时,见OpenViking 中看不到对话。

重新同步对话 ​

重新同步会为一段对话新建一个 OpenViking 会话,用户下次发消息时,网关把完整历史写进去。原因已经修复、对话却仍然暂停,或者想要一份干净的对话副本时,可以用它。已经保存的内容留在旧会话里,所以 OpenViking 可能会把部分记忆提取两次。

  1. 在请求日志标签页展开这段对话的一条记录。重新同步需要记录上显示的那把密钥;它已被吊销时,请选同一段对话里更新的一条记录。
  2. 点击重新同步对话…,再点重新同步。页面会提示“这段对话会在下一条消息时重新保存。”
  3. 等用户在这段对话里发下一条消息。消息到达之前什么都不会发生;到达后,网关把完整历史保存到新会话,这段对话的记录会显示原因“管理员已手动重新同步”。

下一步 ​

Open source under the AGPL-3.0 License. Font licenses