dsh-log-viewer

September 13, 2026 · View on GitHub

解析由调用方提供的日志文本的 DeepSeek Harness 主机工具插件:统计级别与时间跨度、按关键词/正则检索、按最低级别过滤。

三个工具都是纯字符串运算——不读文件、不开子进程、不联网,因此任何主机上行为一致,测试结果完全确定。把日志内容(cat/Get-Content 的输出、粘贴的日志、捕获的子进程缓冲区)作为 text 参数传入即可。

安装

npx -y @deepseek-ai/dsh plugin --profile web add @qingshanjiluo/dsh-log-viewer

工具

工具名参数返回
log_statstext{ lines, byLevel: {debug, info, warn, error, fatal}, unclassified, firstTs?, lastTs? }——行数、各级别行数、无级别标记的行数,以及按文件顺序取到的首个/末个 ISO-8601 时间戳(无时间戳时该字段省略)
log_searchtext, pattern, limit?{ pattern, mode, matched, truncated, entries: [{lineNo, text}] }——pattern/body/flags 时按 JavaScript 正则处理(默认补 i),否则按大小写不敏感的子串匹配;matched 是全量命中数,entries 返回最新的若干行
log_filtertext, minLevel, limit?{ minLevel, matched, truncated, entries: [{lineNo, text}] }——按严重度序 debug < info < warn < error < fatal 保留不低于阈值的行;不含级别标记的行一律排除

参数中的 limit 缺省时取配置的 defaultLimit,并被 maxLines 截断;截断时 truncatedtrue

级别识别

按行匹配第一个级别标记(大小写不敏感,支持 [INFO]ERROR:WARNING 等写法),并折叠到五个级别:

  • fatal:FATAL、CRITICAL、CRIT、ALERT、EMERG
  • error:ERROR、ERR
  • warn:WARN、WARNING
  • info:INFO、NOTICE
  • debug:DEBUG、TRACE

时间戳识别形如 2026-02-01T10:00:03Z2026-02-01 10:00:022026-02-01T10:00:04.123+08:00

配置

cordis.patch.yml 中的默认值:

配置项类型默认值说明
defaultLimitnumber50log_search / log_filter 未显式传 limit 时返回的行数
maxLinesnumber500单次调用返回行数的硬上限(保留最新的行)

开发

npm install
npm run typecheck   # tsc --noEmit
npm run build       # tsc + tsdown -> lib/index.js, lib/index.d.ts
npx vitest run      # 导出面 + 三个工具的行为测试(纯内存,完全离线)
node scripts/load-smoke.mjs   # 加载构建产物并注册工具,再各跑一次调用

License

MIT