dshbase

插件目录 / Developer / dsh-tool-call-stats

dsh-tool-call-stats

已验证 · 实测可装 disyli

✓ 持续维护 基于 1 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-16最近推送
跨平台平台

功能简介

DeepSeek Harness plugin: per-process tool-call statistics (not token usage) — tool_stats tool with call counts, error counts, avg durations

✅
我们的评价
可用 — 实测通过,早期项目

DeepSeek Harness plugin: per-process tool-call statistics (not token usage) — tool_stats tool with call counts, error counts, avg durations 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-tool-call-stats

awesome · DSH plugin

A tiny community plugin for DeepSeek Harness (dsh).

It records every committed tool call in the current harness process and exposes a tool_stats tool, so the model (or you) can ask at any point:

Which tools were used, how often did they fail, and where did the time go?

Not to be confused with the token/cost trackers in the ecosystem (dsh-token-stats, dsh-usage-report, ...) — this plugin counts tool-call dispatches, not tokens. Also unrelated to dsh-tool-stat (a descriptive-statistics math tool).

Status: built and verified end-to-end against the dsh v0.1 developer preview (headless profile, live DeepSeek session): both event listeners record real dispatches and tool_stats returns the table below. Upstream interfaces may still change during the preview.

Example output (from the verification run):

tool  calls  errors  avg_ms
----  -----  ------  ------
bash  1      0       23
read  1      0       8

How it works

Everything in dsh is a plugin, and this one is deliberately minimal — three seams, ~100 lines, no build step:

  • tools/execute (waterfall): wraps each dispatch to record its start time, then delegates via next().
  • tools/result (observer): counts each committed result per tool name and accumulates duration; result.isError drives the error counter.
  • ctx.tools.register(defineTool(...)): exposes tool_stats, which returns a canonical JSON array (output.schema) and renders a plain-text table for the model.

All state is in-memory and process-local. Nothing is persisted; restarting dsh resets the counters. When the plugin is unloaded, Cordis disposes both listeners and the tool automatically — no manual cleanup code.

Install

Into a profile (recommended)

dsh plugin --profile <name> add github:disyli/dsh-tool-call-stats

pnpm ≥ 10 will ask you to allow the package before running install scripts (this package has none, but the prompt may still gate the git install). Follow the hint dsh prints, then re-run add.

Verify the layer and start:

dsh --profile <name> --dump-config   # shows a "# == dsh-tool-call-stats" layer
dsh --profile <name>

As a local overlay (source checkout)

From a deepseek-harness checkout, point a patch at the local file:

# stats.cordis.yml
- insert:
    - id: tool-stats
      name: '/absolute/path/to/dsh-tool-call-stats/index.js'
pnpm dsh web --patch ./stats.cordis.yml

Use

Ask the agent things like:

  • "Use tool_stats to show tool usage so far."
  • "Which tool failed the most in this session?"

Limitations

  • Process-local only: counters reset on restart and are not shared across sessions.
  • Calls aborted before the registry commits a result are not counted (their timing entries are garbage-collected after 10 s).
  • Built against the dsh v0.1 developer preview; upstream interfaces may change ("THERE WILL BE COMPATIBILITY-BREAKING CHANGES").

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-tool-call-stats」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:disyli/dsh-tool-call-stats

Headless(CLI)profile:

dsh plugin --profile headless add github:disyli/dsh-tool-call-stats

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →