用中文自然语言时间描述查询本地日志(如「昨天下午」「3小时前」)——精确时间范围、匹配行、级别统计,完全离线。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:anyuer678/dsh-logtimeline
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
输入「昨天下午」「3小时前」「凌晨12点」「上周三 14:00-15:00」——返回匹配的日志行、解析出的时间范围与 ERROR/WARN/INFO 级别统计。完全离线,日志不出本机。
为什么做这个
agent 排查问题时最常问的就是"昨天下午 3 点发生了什么"。通用日志工具要手写 grep 管道和时间戳换算;log_query 帮你把模糊中文时间表达解析成精确范围,返回结构化、机器可读的结果,agent 直接推理即可——不用再从终端输出里抠文字。
特性
| 🕐 中文时间解析 | 绝对日期(2026-07-03、7月3日 09:15)、相对(3小时前、昨天、上周三)、模糊时段(下午、凌晨)、区间(14:00-15:00),带置信度 |
| 📄 多格式日志 | 常见时间戳自动识别、UTF-8/GBK 编码回退、流式过滤不占内存(30 万行约 2.4 秒) |
| 🔒 默认离线 | 零第三方 Python 依赖,日志数据不出本机 |
| 🧩 结构化输出 | canonical JSON(time_range / filter / lines / stats),渲染为模型可读文本;超大结果由 harness 的 50KB spill 机制兜底 |
安装
前置条件:dsh profile(web 或 headless)+ 机器上有 Python 3.9+(Windows 无 python 命令时自动回退 py -3)。
本地/开发安装(checkout 后):
git clone https://github.com/anyuer678/dsh-logtimeline.git
dsh plugin --profile web add file:/path/to/dsh-logtimeline
社区安装——进入 awesome-dsh-plugin 列表后,通过插件市场一键装(market 支持 GitHub-only 插件):
dsh plugin --profile web add dshmarket
# 然后:Settings → Plugin Market → 搜索 dsh-logtimeline → 一键安装
兼容性:测试于 @deepseek-ai/dsh-tools@0.1.0-rc.6(当前发布线,如 dsh-base@0.1.0-rc.5)。
使用
直接让 agent 调用即可,无需特殊语法:
用 log_query 查一下 demo.log 里 2026-07-03 的 ERROR 情况
// log_query(time_text: "2026-07-03", files: ["demo.log"])
{
"time_range": { "start": "2026-07-03 00:00:00", "end": "2026-07-04 00:00:00", "confidence": 1.0 },
"filter": {
"total_matched": 25,
"stats": { "errors": 13, "warns": 5, "infos": 7, "debugs": 0 },
"lines": [ /* 最多 max_lines 行:{lineno, timestamp, raw} */ ]
}
}
参数
| 参数 | 类型 | 说明 |
|---|---|---|
time_text |
string(必填) | 中文自然语言时间,如「昨天下午」「3小时前」 |
files |
string[] | 日志文件路径(绝对或相对工作区) |
dir |
string | 递归扫描的目录 |
pattern |
string | dir 模式下的文件名 glob(默认 *.log) |
max_lines |
number | 最多返回行数(默认 500;0 = 只统计;上限 5000) |
since |
string | time_text 解析失败时的 RFC3339 绝对时间兜底 |
timezone |
string | IANA 时区名,如 Asia/Shanghai |
工具默认离线模式:它负责精确过滤(独有价值),归因推理交给 agent 自己。
架构
src/query.ts 核心逻辑:子进程 → vendored lq.py --json → 解析(无框架依赖,可独立测试)
src/runtime.ts DSH 装配层:defineTool 注册 log_query(ctx.tools)
src/config.ts 插件配置(pythonBin、timeoutMs)
python/ Vendored LogTimeline CLI(GPL-3.0,改动见 python/VENDORED.md)
tests/ 跑真实 vendored Python 的集成测试
插件通过子进程调用 vendored 的 LogTimeline Python CLI(python/lq.py --json --no-llm),沿用其久经测试的解析/过滤逻辑,仅做最小 vendoring 改动(详见 python/VENDORED.md)。
开发
npm install --legacy-peer-deps # peer 依赖由 DSH 宿主运行时提供
npm run typecheck
npm run test # 集成测试(真实 vendored Python + 宿主装配冒烟)
npm run build
python scripts/run-upstream-tests.py # 用 vendored 代码跑上游 124 例 pytest
tests/query.test.ts 用 fixture 日志跑真实 vendored Python;tests/host.test.ts 把编译产物(lib/)加载进最小 cordis 容器,验证 apply、execute 与 output.schema 契约。peer 包(@deepseek-ai/dsh-*,0.1.0-rc.6 线)装在 devDependencies,使独立环境下运行时 import 链可解析。
安全与隐私
- 不碰 key:插件不读取、不存储、不发送任何 API key,无出网请求——日志分析 100% 本地
- 日志不外泄:日志行只作为工具结果返回给 agent(模型),不发送到任何其他位置
- 路径受控:只读模型通过
files/dir传入的路径;工具只读,不写不删日志 - 输出卫生:日志行中的控制字符 / ANSI 转义在渲染时剥离
免责声明
本插件是 DeepSeek Harness 生态的社区插件,与 DeepSeek 无隶属关系。本项目仅供学习交流与演示用途,不构成任何形式的商业服务或技术承诺。软件按「现状」提供,不作任何明示或暗示的保证,包括但不限于适销性、特定用途适用性与非侵权性。
您理解并同意:使用本项目即表示您自行承担全部风险。如您在使用过程中发现缺陷或问题,欢迎通过 GitHub Issues 反馈,但作者不因使用本软件所直接或间接产生的任何损失(包括但不限于数据丢失、业务中断、第三方索赔)承担责任。
本项目以功能演示与学习交流为主要目的,其架构设计、安全基线、容错机制与性能表现均未按生产级标准进行验证与加固,不适用于实际生产环境或关键业务场景。任何将本项目部署于生产系统、对外提供服务、或将其接入真实业务工作流的做法,均属使用者的自主决策行为;由此产生的任何直接或间接不良后果,包括但不限于服务中断、数据损坏或泄露、业务损失、合规风险、以及因依赖本软件而引发的第三方纠纷,开发者均不承担任何责任。日志分析结论仅供参考,请结合原始日志人工复核后再做决策。若您确有生产级使用需求,请在充分评估与自行加固(包括但不限于安全审计、压力测试、代码审查)后,自行承担相应风险。
License
GPL-3.0 — 衍生自 LogTimeline(GPL-3.0)。Copyright (C) 2026 anyuer678。
Compatibility
- Host/OS/time matrix: COMPATIBILITY.md
- Time expression table: docs/time-expressions.md
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 31789
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4052
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1130
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 499
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 482
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 445
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。