dsh-logger-panel:DeepSeek Harness 的运行时日志面板

前言

DSH 通过插件扩展 Host 和客户端能力。排查运行时问题时,Host 侧 Cordis logger 的输出如果只存在于进程日志里,查看和回放都不够方便。dsh-logger-panel 把这部分输出接到 Settings > Logs 页面,通过 SSE 提供 live 视图,同时把记录写入有日期和大小限制的 JSONL 文件。

这是什么

dsh-logger-panel 是一个 DSH 插件:捕获 Host 的 Cordis logger 输出,在 Web profile 的设置页中实时查看,并持久化到轮转 JSONL 文件。仓库地址为 https://github.com/LingLambda/dsh-logger-panel,许可证为 MIT,package.json 中版本为 0.2.0packageManageryarn@4.15.0

它是一个 dsh bundlepackage.jsondsh.bundle 指向 cordis.patch.yml,并声明 dsh.client,让 Web profile 自动发现浏览器侧 bundle。

运行要求

先确认环境满足以下要求:

  • DSH 带 Web profile,包括 dsh-client-ui-settings 提供的 Settings shell、client module system 和 dsh-host-webserver;版本为 0.1.0-rc.6 或更新。
  • Node 版本为 ^22.19 || >=24

核心功能

下面介绍插件的主要能力:

  1. 捕获 Host 的 Cordis logger 输出,并通过 SSE 送到 Settings > Logs 页面。
  2. live 视图使用 snapshot,并按 100 ms 批量追加记录。
  3. 页面把记录渲染为纯文本;原始 logger 参数、Fiber 引用、ANSI escapes 和 executable markup 不会经过浏览器 wire。
  4. 底部 auto-follow 在向上滚动时暂停,点击 Latest 恢复。
  5. 点击 Load older 后,从轮转后的 JSONL 文件中读取历史记录,可跨轮转和日期。
  6. Host 为连接中的浏览器保留最近 2000 条记录。
  7. 持久化文件名为 YYYY-MM-DD-N.jsonl,按日期和大小轮转;单个文件上限为 5 MiB,超过 30 天的文件会被移除。
  8. 日志目录默认为 $DSH_HOME/logs/dsh-logger-panel,目录权限为 0700,文件权限为 0600
  9. 磁盘队列上限为 1000 条;持久化失败时,面板会报告失败,live stream 继续工作,被省略的记录会被计数。
  10. 初次创建目录或打开文件失败会拒绝插件激活;后续写入失败会停止持久化,并在面板中报告,同时保留 in-memory/SSE 路径。

安装与启用

安装前先确认上面的运行要求。示例使用 demo profile;实际 profile 名称需要按环境调整。

按 npm 安装示例:

dsh plugin --profile demo add dsh-logger-panel
dsh --profile demo

第一条命令把插件加入 profile,第二条命令启动 DSH。经过上面的步骤,可以在 Settings > Logs 中查看日志。

按 git 安装:

dsh plugin --profile demo add github:LingLambda/dsh-logger-panel#<sha>

这里的 <sha> 是 README 示例中的占位符,需要按实际提交填写。安装前还需要在 profile 的 pnpm-workspace.yaml 中授权构建。

本地开发时,可以针对 Harness checkout 使用 overlay:

pnpm dsh web --patch ./cordis.patch.yml --patch /absolute/path/to/dsh-logger-panel/overlay.yml

overlay 示例:

- insert:
    - id: logger-panel
      name: /absolute/path/to/dsh-logger-panel/src/index.ts

这个 overlay 会插入 logger-panel,并指向本地源码入口。

典型用法

打开 Settings > Logs 后,可以直接查看 live 日志。

常用操作:

  • 点击 Load older:读取更早的轮转 JSONL 记录。
  • 向上滚动:auto-follow 暂停,便于查看当前窗口。
  • 点击 Latest:恢复跟随最新日志。

如果需要覆盖默认行为,可以在 profile patch 中修改 logger-panelconfig。已给出的配置项包括:

root、maxRecords、maxRecordChars、batchMs、maxFileBytes、maxAgeDays、maxPendingRecords、historyPageSize

其中明确给出的默认或限额为:root 默认指向 $DSH_HOME/logs/dsh-logger-panelmaxRecords2000batchMs100maxAgeDays30maxPendingRecords1000,单个 JSONL 文件上限为 5 MiB

适用场景与注意

这个插件适合需要实时查看 DSH Host 日志,并保留一段可回查历史的场景。live 窗口有内存限制,历史分页则从轮转文件读取。

使用前注意:

  • 插件以当前 dsh 进程权限运行;安装前应检查源码、构建方式和许可证。
  • 日志会写入 $DSH_HOME/logs/dsh-logger-panel;目录权限为 0700,文件权限为 0600
  • 如果磁盘写入失败,live 查看仍可继续,但历史持久化会停止,面板中会显示失败状态,并且被省略的记录会被计数。

链接

DSH 社区目录是独立站点,本文不把它描述为官方应用商店。

  • 仓库:https://github.com/LingLambda/dsh-logger-panel
  • 目录页:未随文提供固定 URL;可在 DSH 社区目录中按 dsh-logger-panel 检索。
羽毛球分组比赛记分
小程序二维码

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

Xiaoye