DeepSHPlugins
dsh-logtimeline 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-logtimeline

工具與整合PythonGPL-3.0

用中文自然語言時間描述查詢本地日誌(如「昨天下午」「3小時前」)——精確時間範圍、匹配行、級別統計,完全離線。

4 Starsanyuer678 更新時間 2026-09-10
訪問 GitHub 倉庫
dsh-logtimeline 專案預覽

專案介紹

中文

用中文自然語言時間描述查詢本地日誌(如「昨天下午」「3小時前」)——精確時間範圍、匹配行、級別統計,完全離線。

English

Query local log files with Chinese natural-language time expressions (e.g. "yesterday afternoon", "3 hours ago") — precise time range, matched lines, ERROR/WARN/INFO level stats, fully offline.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
anyuer678
倉庫
anyuer678/dsh-logtimeline
GitHub Stars
4
Forks
0
開發語言
Python
許可證
GPL-3.0
最近推送
2026-09-10
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

63/ 100
維護活躍
100
文件與實用資訊
100
生態關注度
20
安裝便捷訊號
80
專案宣告訊號
100

近 1 天仍在更新;README 含完整安裝與使用說明;關注度尚低(4)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:anyuer678/dsh-logtimeline

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

🐳 dsh-logtimeline

Query local log files with Chinese natural-language time expressions — LogTimeline for DeepSeek Harness.

简体中文 | English

License

Upstream

Awesome DSH Plugin

Tests

Offline


Ask 「昨天下午」「3小时前」「凌晨12点」「上周三 14:00-15:00」 — get the matching log lines, the resolved time range, and ERROR/WARN/INFO level stats. Fully offline. Logs never leave the machine.

Why

Coding agents constantly need to answer *"what happened around 3pm yesterday?"*. Generic log tools make you hand-write grep pipelines and timestamp math. log_query resolves the fuzzy Chinese time expression for you and returns structured, machine-readable matches the agent can reason over directly — no parsing prose out of terminal output.

Features

🕐 Chinese time parsingAbsolute dates (2026-07-03, 7月3日 09:15), relative (3小时前, 昨天, 上周三), fuzzy windows (下午, 凌晨), hour ranges (14:00-15:00) — each with a confidence score
📄 Multi-format logsAuto-detected timestamp formats, UTF-8/GBK encoding fallback, streaming filter (no full-file load, ~2.4s per 300k lines)
🔒 Offline by defaultZero third-party Python dependencies; log contents never leave the machine
🧩 Structured outputCanonical JSON (time_range, filter, lines, stats) rendered as readable text for the model, spill-safe under the harness's 50KB inline budget

Install

Prerequisites: a dsh profile (web or headless) + Python 3.9+ on the machine (on Windows, the py launcher is auto-detected when python is missing).

Local / development (from a checkout):

git clone https://github.com/anyuer678/dsh-logtimeline.git
dsh plugin --profile web add file:/path/to/dsh-logtimeline

Community install — once listed in awesome-dsh-plugin, install via the plugin market (GitHub-only plugins are supported):

dsh plugin --profile web add dshmarket
# then: Settings → Plugin Market → search "dsh-logtimeline" → one-click install

Compatibility: tested against @deepseek-ai/[email protected] (current harness release line, e.g. [email protected]).

Usage

Tell the agent to use the tool — no special syntax needed:

用 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": [ /* up to max_lines rows: {lineno, timestamp, raw} */ ]
  }
}

Parameters

ParameterTypeDescription
time_textstring (required)Chinese natural-language time, e.g. 「昨天下午」「3小时前」
filesstring[]Log file paths (absolute or workspace-relative)
dirstringDirectory to scan recursively
patternstringGlob when dir is set (default *.log)
max_linesnumberMax lines returned (default 500; 0 = stats only; capped at 5000)
sincestringRFC3339 absolute-time fallback when time_text fails to parse
timezonestringIANA timezone name, e.g. Asia/Shanghai

The tool runs in offline mode by default: it filters precisely (its unique value), and leaves root-cause reasoning to the agent itself.

Architecture

src/query.ts      Core logic: subprocess → vendored lq.py --json → parse (framework-free, testable)
src/runtime.ts    DSH assembly: registers log_query via defineTool (ctx.tools)
src/config.ts     Plugin config (pythonBin, timeoutMs)
python/           Vendored LogTimeline CLI (GPL-3.0, see python/VENDORED.md)
tests/            Vitest integration tests running the real vendored Python

The plugin shells out to a vendored copy of the LogTimeline Python CLI (python/lq.py --json --no-llm), so the battle-tested parsing/filtering logic stays untouched. Vendoring changes are minimal and documented in python/VENDORED.md.

Development

npm install --legacy-peer-deps   # peer deps are provided by the DSH host runtime
npm run typecheck
npm run test                     # integration tests: real vendored Python + host-assembly smoke
npm run build
python scripts/run-upstream-tests.py   # upstream LogTimeline pytest suite against the vendored code

tests/query.test.ts runs the real vendored Python CLI against fixture logs; tests/host.test.ts loads the built plugin (lib/) into a minimal Cordis container, applies it, and validates the canonical value against the output.schema contract. Peer packages (@deepseek-ai/dsh-*, pinned to the 0.1.0-rc.6 line) are installed as devDependencies so the runtime import chain resolves outside a DSH host.

Security & Privacy

  • No key handling: the plugin reads no API keys, stores no credentials, and makes no outbound calls — log analysis is 100% local
  • No log exfiltration: log lines are returned to the agent (the model) as tool results, never sent anywhere else
  • Path scoping: only the paths the model passes (via files/dir) are read; the tool is read-only, it never writes or deletes log files
  • Output hygiene: control characters / ANSI escapes in log lines are stripped from rendered output

Disclaimer

This is a community plugin for the DeepSeek Harness ecosystem and is not affiliated with DeepSeek. It is provided for learning and demonstration purposes and does not constitute any form of commercial service or technical commitment. The software is provided "as is", without warranty of any kind, express or implied, including but not limited to merchantability, fitness for a particular purpose, and non-infringement.

By using this project you acknowledge that you assume all risk. If you find defects or issues, please report them via GitHub Issues; however, the author shall not be liable for any direct or indirect losses arising from the use of this software (including but not limited to data loss, business interruption, or third-party claims).

This project has not been validated or hardened to production-grade standards (architecture, security baseline, fault tolerance, or performance) and is not suitable for production or critical environments. Deploying it to production systems, exposing it as a service, or integrating it into real business workflows is your own decision, and any resulting adverse outcomes (service interruption, data corruption or leakage, business loss, compliance risks, third-party disputes) are your sole responsibility. Log analysis results are for reference only — always verify against the original log files before acting on them. If you need production-grade usage, harden it yourself (security audit, load testing, code review) and bear the associated risk.

License

GPL-3.0 — derived from LogTimeline (GPL-3.0). Copyright (C) 2026 anyuer678.

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案