dsh-lot2-metrics:lot2 后端指标快照的只读呈现与 agent 查询

前言

在 DSH 里做 lot2 相关开发或运维时,运行期 gauge、阈值结论和数据库查询画像往往散落在采集脚本落盘的 JSON 与 Prometheus 侧;智能体若要回答「现在慢在哪」「阈值是否越界」,要么读本地文件、要么再拼一遍查询逻辑。重复实现评分或展示规则,还容易和采集器结论不一致。dsh-lot2-metrics 由 LosEcher 维护,归类为联网工具,只做一件事:只读呈现 lot2 后端指标快照,并在 host 侧注册两个只读 agent 工具与会话视图,不抓取 /metrics、不写盘。

这是什么

插件把 lot2 后端数据库指标 的采集快照变成 DSH 里「agent 可查 + 可观测」的只读层。数据契约见 dsfolder/CROSS-PROJECT-INTEGRATION-MECHANISM-2026-10-07.md §9(「项目快照信封 v1」):取数与契约属 lot2(lot2extension/scripts/metrics-report.mjs);触发与落盘属 DSH 采集(dsfolder/scripts/lot2-metrics-collect.sh 与 launchd com.echerlos.lot2-metrics);呈现与查询属本插件——只读快照文件,绝不抓取、不写盘。

两半分工如下:

面 内容
host 2 个只读 agent 工具 + GET /plugins/dsh-lot2-metrics/status、GET /plugins/dsh-lot2-metrics/snapshot
client 会话 tab「lot2 指标」(conversation.view,order 92)

社区目录页:https://www.skillhub.cn/plugins/LosEcher/dsh-lot2-metrics;源码:https://github.com/LosEcher/dsh-lot2-metrics。目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

Agent 工具(只读)

  1. lot2_metrics_overview:概览,含新鲜度、Top-N 调用量、放大倍数,以及采集器状态、阈值结论、运行期 gauge。
  2. lot2_metrics_query:按 operation / 关键字过滤,按 count、p95、deltaCount、amplification 排序并取 Top-N。

回答必带 capturedAt 与快照路径,便于追溯;p95 在展示与工具输出中均标注为直方图插值近似值。

HTTP 端点

  • GET /plugins/dsh-lot2-metrics/status:约定形状的插件状态。
  • GET /plugins/dsh-lot2-metrics/snapshot:面板数据源,cache-control: no-store。

会话 tab「lot2 指标」

在 DSH shell 的会话视图中展示:阈值 → 运行期 → 调用量 Top → 放大倍数 Top;60 秒轮询,支持手动刷新。

配置项

插件可读配置包括:snapshotPath、statePath、staleSeconds(默认 1500)、topN(默认 5)。

运行期与阈值(快照 runtime{})

快照在兼容变更下增加 runtime{}(信封 v 仍为 1):声明式 gauge 清单,以及 http(如 5xx)、cache、counterDelta 等。本插件对显示有三条纪律:

  1. value=null 且带 reason 时显示为 — 并给出原因,避免「分母为 0 算不出命中率」被误读成「没有这一项」;面板与工具一致。
  2. unknown(采集器声明了但 /metrics 未上报的名称)单独列出,标注「缺失≠0」;例如 snapshot_queue_depth、unified_queue_depth 可能长期处于该状态(按需注册)。
  3. 阈值不由本插件判定:采集器在 dsfolder/scripts/lot2-metrics-collect.sh 中判定一次并写入 collector-state.json 的 thresholds[],插件只读结论,避免同一份事实两处评分。面板上可区分:越界 / 正常 / 无数据。

四条语义(有测试覆盖)

  1. 未知信封版本 v ⇒ 报契约不兼容,绝不渲染数字(不猜字段)。
  2. ok=false ⇒ 不给任何数字,不把上一次数值当成本次结果。
  3. 缺字段、坏 JSON、文件不存在 ⇒ 不抛异常,降级为该块留空并附 reason;插件不向 cordis 抛异常。
  4. 回答必带 capturedAt 与快照路径;p95 标注为直方图插值近似值。

derived.note 仅作人读提示,不参与判断(lot2 契约 §10:固定字段名与固定句子,不承载数据)。

安装与启用

在对应 profile 下执行官方安装方式之一。首次挂载仅改配置时可热生效;改 host 半代码后须重启对应 DSH 宿主(Node ESM 按 URL 缓存)。只改 client 半(src/client/* 且 npm run build)则刷新页面即可。

本地开发(link 工作副本):

cd ~/.dsh/profiles/web
dsh plugin --profile web add link:<这个仓的本机路径>

使用发布版:

cd ~/.dsh/profiles/web
dsh plugin --profile web add github:LosEcher/dsh-lot2-metrics#main

desktop profile 需要同样工具时,将命令中的 web 换成 desktop(会重启桌面宿主,正在跑的会话可能被打断,请择时操作)。

安装前请自行查看仓库源码与许可证(README 标明 MIT);插件以当前 dsh 进程权限运行,只读本地快照路径,仍应确认路径与数据敏感度是否符合你的环境。

典型用法

验收与本地检查

node --test test/*.test.mjs
node test/preflight.mjs
curl -s localhost:3080/plugins/dsh-lot2-metrics/status | python3 -m json.tool

在已挂载插件且宿主运行的前提下,智能体可调用 lot2_metrics_overview、lot2_metrics_query 做只读查询;人在会话中打开「lot2 指标」tab 查看同一快照源的图形化分区。

看不到「lot2 指标」tab 时

该 tab 属于 DSH shell 会话视图;桌面 App 与浏览器共用同一 shell,未通过 DSH 浏览器认证时可能什么都看不到。

本机 dsh web 需使用带 launch token 的 URL(非普通 http://127.0.0.1:3080/),daemon 以 --no-open 启动时 URL 写在 ~/.dsh/logs/dsh-web.log:

dsh-web-url
dsh-web-url --open

远程经 Tailscale serve 时:

dsh-web-url --remote

进入后,tab 仍会按契约不兼容、采集失败、过期、新鲜等状态独立展示。

适用场景与边界

适合:已在 lot2 + DSH 采集链路上落盘指标快照,希望在 DSH 内用 agent 工具与会话 tab 统一只读查看,且不希望插件侧再实现一套阈值或抓取逻辑。

不适合或不做的事(README 明确边界):

  • 不抓取 /metrics、不写任何文件、不改 lot2 库。
  • 不往 dsh-dashboards 塞 widget;本插件走自有状态端点与 agent 工具。

依赖方面,package.json 要求 @deepseek-ai/cordis 为 >=4.0.0 <5.0.0;当前资料中插件版本为 0.1.0。

结尾

dsh-lot2-metrics 把 lot2 后端指标快照固定在「只读呈现 + 两个 agent 工具 + 会话 tab」一层,阈值与采集仍归采集器,避免双源评分。需要安装说明与排障细节时,以 GitHub README 为准;社区索引见 SkillHub 目录页,源码见 LosEcher/dsh-lot2-metrics。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜