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_stats | text | { lines, byLevel: {debug, info, warn, error, fatal}, unclassified, firstTs?, lastTs? }——行数、各级别行数、无级别标记的行数,以及按文件顺序取到的首个/末个 ISO-8601 时间戳(无时间戳时该字段省略) |
log_search | text, pattern, limit? | { pattern, mode, matched, truncated, entries: [{lineNo, text}] }——pattern 为 /body/flags 时按 JavaScript 正则处理(默认补 i),否则按大小写不敏感的子串匹配;matched 是全量命中数,entries 返回最新的若干行 |
log_filter | text, minLevel, limit? | { minLevel, matched, truncated, entries: [{lineNo, text}] }——按严重度序 debug < info < warn < error < fatal 保留不低于阈值的行;不含级别标记的行一律排除 |
参数中的 limit 缺省时取配置的 defaultLimit,并被 maxLines 截断;截断时 truncated 为 true。
级别识别
按行匹配第一个级别标记(大小写不敏感,支持 [INFO]、ERROR:、WARNING 等写法),并折叠到五个级别:
fatal:FATAL、CRITICAL、CRIT、ALERT、EMERGerror:ERROR、ERRwarn:WARN、WARNINGinfo:INFO、NOTICEdebug:DEBUG、TRACE
时间戳识别形如 2026-02-01T10:00:03Z、2026-02-01 10:00:02、2026-02-01T10:00:04.123+08:00。
配置
cordis.patch.yml 中的默认值:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defaultLimit | number | 50 | log_search / log_filter 未显式传 limit 时返回的行数 |
maxLines | number | 500 | 单次调用返回行数的硬上限(保留最新的行) |
开发
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