Skip to content
PerryLinkPublic

About

Read-only performance diagnostics for DeepSeek Harness: session load/restore timing, spill-hit counts, compaction count and trigger, context-injection volume (AGENTS.md/skills/tool-schema token share), and LLM cache hit rate — surfaced via /fast, persisted as reconstructable session events with async sampling off the model path.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

0 watching

Forks

Latest commit

 

History

185 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

⚡ dsh-fast

  • 1024 store channel: npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-fast (counts toward the deepseek1024.com install ranking). Gitee dshfind OpenSSF Scorecard

Read-only performance diagnostics for DeepSeek Harness.

Observes the session event stream — never the model hot path — and reports where latency and context budget actually go.

Official repository. This is the only official repository of dsh-fast, maintained by PerryLink. Same-name repositories under other accounts are not affiliated.

License DSH plugin dsh-doctor DSH Market Node CI Version npm version npm downloads

English · 简体中文 · Español · Português · हिन्दी

dsh plugin --profile <name> add dsh-fast

📖 Ecosystem knowledge base — measured data, not marketing: plugin development guide · plugin-selection data · maintenance criteria.

Install & uninstall

dsh plugin --profile demo add dsh-fast       # install
dsh plugin --profile demo remove dsh-fast    # uninstall

Verify the row mounts: dsh --profile demo --dump-config | grep dsh-fast.

⭐ 如果它帮到了你

这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。

English: part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.

What is dsh-fast?

Read-only performance diagnostics for DeepSeek Harness.

Observes the session event stream — never the model hot path — and reports where latency and context budget actually go.

Workflow diagram for dsh-fast: request → policy / review → verdict.

Workflow overview: request → policy / review → verdict. The examples below use the real command surface.

Compatibility

  • DeepSeek Harness dsh-v0.2.1-alpha.1 (adapted 2026-09-18): the session surface is read through the optional sessionQuery service — the deprecated synchronous Session.eventAt(seq) accessor is gone, with an equivalent synchronous read as the fallback — and every registration now lives in one lifecycle effect that releases them in reverse order. Internal implementation change: the reported metrics are identical for the same log. Verified 2026-10-04 against the local gate chain (three typecheck rulers + 71 tests); the compat workflow re-runs the profile install smoke against the published pins.
  • Node ^22.19.0 || >=24.0.0, ESM only ("type": "module").
  • Peer dependencies: @deepseek-ai/cordis ^4.0.2, @deepseek-ai/schemastery ^3.18.4, and @deepseek-ai/dsh-session, @deepseek-ai/dsh-tools, @deepseek-ai/dsh-commands, @deepseek-ai/dsh-compaction, @deepseek-ai/dsh-session-query, @deepseek-ai/dsh-storage-domain at >=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0 (devDependencies pin 0.2.0-rc.2); the 0.1.2-rc.1 line stays supported at runtime through a structural fallback to the pre-0.1.5 header.system.

What you get

  • Session load timing — publication-to-first-request latency, classified open (fresh) vs restore (seeded/resumed), plus the restored seed-event count.
  • Spill-hit statistics — how many tool results were spilled to a session-scoped artifact (detected from the durable spill notice).
  • Compaction count and trigger — total compactions, split manual (slash command) vs automatic (pressure), and total shadowed tokens.
  • Context-injection volume — system-prompt (AGENTS.md + skills + persona), tool-schema, and surface tokens with their shares of the total; the surface bucket is conversation history only (the meter's surface includes the system node on 0.1.5-alpha.1, which dsh-fast subtracts).
  • LLM cache hit rate — input / cache-read / cache-write / output tokens aggregated from provider usage, plus the derived hit rate.
  • Optimization suggestions — threshold-driven notes (trim skills, tighten tool schemas, compact earlier, enable prompt caching, enable spill-policy, …).
  • Async sampling — metrics are folded O(1) per event and snapshotted on a timer, never on the append path.

Quick start

dsh plugin --profile web add github:PerryLink/dsh-fast

git channel

# From a scratch profile (pins the commit; runs the self-contained `prepare` build)
dsh plugin --profile demo add "github:YOUR_ORG/dsh-fast#<sha>"
# The profile's pnpm-workspace.yaml gains an allowBuilds entry for dsh-fast on first add.

npm channel

dsh plugin --profile demo add dsh-fast

Both channels install the bundle row (see cordis.patch.yml) into the profile's dsh.profile.bundles stack and take effect on restart.

/fast namespace collision

/fast is a host command. If another plugin registers a client commandUi contribution also named fast, the host command menu can drop the whole / source. That collision is in the host's client command namespace, not something this plugin can rename at runtime. Workaround: disable/rename the other plugin’s fast client command, or remove one of the plugins. /fast itself and fast_report still work when no duplicate client contribution exists.

Examples

These are the plugin's real entry points; install once, then call one.

Detailed example

Command

/fast

Output

dsh-fast 0.1.0 — performance report
session: abc

## Session load
kind: open
seed events: 0
time to first request: 150 ms

## Spill
detected spilled results: 0 (heuristic)

## Compaction
count: 0 (manual: 0, automatic: 0)
shadowed tokens: 0

## Context volume
total: 1000 tokens
system (AGENTS.md/skills/persona): 400 (40%)
tool schema: 200 (20%)
surface: 400 (40%)

## System prompt breakdown
persona: 100 tokens / 400 chars (25%)
skills: 0 tokens / 0 chars (0%)
AGENTS.md: 0 tokens / 0 chars (0%)
other (harness identity + tool guidance): 300 tokens / 1200 chars (75%)

## LLM cache
input: 800, cache read: 200, cache write: 50, output: 100
hit rate: 20%

## Suggestions
- none

Observed from plugins/dsh-fast/src/analyze.ts:88-131; baseline fixture at test/analyze.spec.ts:12-35, 82-100

Failure branch

Input

/fast --history nope

Output

Usage: /fast [--history [n]]

Observed from plugins/dsh-fast/src/index.ts:241-245

Brief examples

  • fast_report

Configuration

All tunables are Schemastery Config fields; invalid values fail the profile load loudly.

Key Default Description
enabled true Master switch; false mounts nothing.
privacy.includeCwd false Include the sanitized session working directory in reports.
sampling.snapshotIntervalMs 60000 How often active sessions are sampled (ms).
sampling.maxHistorySamples 20 Samples retained per session in the durable history.
thresholds.systemPromptTokens 20000 Warn when the system prompt exceeds this many tokens.
thresholds.toolSchemaTokens 8000 Warn when the tool schema exceeds this many tokens.
thresholds.surfaceTokens 60000 Warn when the conversation surface exceeds this many tokens.
thresholds.cacheHitRateFloor 0.1 Warn when the cache hit rate falls below this (0..1).
thresholds.compactionCountWarn 10 Warn once this many compactions have triggered.
thresholds.compactionShadowTokens 40000 Warn when the average shadowed token count per summary exceeds this.
spill.detectSpilledResults true Detect spilled tool results from the durable notice marker.

Tools & surfaces

  • /fast — a human slash command that prints the current session's health report: load timing, spill, compaction, context-volume ranking, cache hit rate, and suggestions.
  • fast_report — a model tool returning the same report as structured JSON (so the model can reason over it), with a human-readable text render.

Permissions & data

dsh-fast consumes only public seams: session/* and agent/* events, the optional ctx.tokenMeter, ctx.storageDomain, ctx.commands, and ctx.tools. It is strictly read-only over the session log — it never mutates the model request, tool results, or the session surface. Metrics are persisted to the dsh_fast storage domain (one bounded history per session), not to the session log. Report identity and the optional working directory are sanitized before any display or durable write.

Security boundaries

  • Read-only, zero model-path overhead — folding is O(1) per event; sampling runs on a timer.
  • No network, no credential handling — the plugin makes no outbound requests and stores nothing sensitive.
  • Fail-loud configuration — every tunable is validated at mount; invalid bounds throw.
  • Sanitized display/durable data — control characters are stripped and strings are budgeted; cwd is off by default and path-truncated when enabled.
  • Reversible registrations — every contribution goes through ctx.effect() / ctx.on() / register(), so uninstall and hot reload are clean.

Known limitations

  • Storage domain, not session events — rc.2 Session.append offers no ignorable marker and no external event-registration surface, so a custom fast/* session event would make the persistence coordinator refuse the log on restore. Metrics are therefore persisted to the storage domain; the raw events remain the reconstructable source of truth.
  • Spill detection is heuristic — it reads the durable spill notice (Full … stored at:); no dedicated session event exists.
  • System prompt is one bucket — AGENTS.md, skill directory, and persona are all part of the assembled system prompt; since 0.1.5-alpha.1 it is surface node 0 (a system/message) and carries no per-section token accounting, so they are reported together.
  • Load timing starts at publication — the disk-read portion of a restore happens before session/created (owned by sessionPersistence) and is not observable from this plugin's allowed events; the reported duration is publication-to-first-request.
  • Degradations are announced once — a host without tokenMeter falls back to heuristic token pricing, a host without systemPrompt attributes the whole prompt to one bucket, and a failing inspector outlet is ignored; each of these now says so once per process instead of changing what the numbers mean in silence.

Development

pnpm install
pnpm run typecheck && pnpm run typecheck:ci && pnpm run typecheck:checkout
pnpm test
pnpm run build
pnpm run verify:self-contained && pnpm run verify:artifacts
node scripts/check-readme-sync.mjs
pnpm pack

Topics

dsh, dsh-plugin, deepseek-harness, deepseek, cordis, performance, diagnostics, profiling, context-engineering, llm-cache

Contributors

Thanks to everyone who has contributed to dsh-fast:

  • PerryLink — author and maintainer: designed and built the read-only diagnostics (session-load timing, spill-hit counts, compaction metrics, context-injection volume, LLM cache hit rate), the /fast command and fast_report tool, the dsh_fast storage domain, and the five-language documentation.

PerryLink DSH Plugin Family

This project is part of the DeepSeek Harness plugin family from PerryLink. The roster stays collapsed below so every README keeps a short first screen; expand it to see every row and its status.

Expand all plugins
Plugin Status
dsh-aqua-input-check
dsh-archive-check
dsh-auto-review
dsh-autotier
dsh-bid-ca-precheck
dsh-bid-qual-check
dsh-cert-mcp
dsh-checkpoint-rewind
dsh-click
dsh-composer-history
dsh-contract-stance
dsh-customs-doc-check
dsh-data-quality
dsh-demurrage-ledger
dsh-doublecheck
dsh-drill-script-check
dsh-eia-guide-check
dsh-emergency-plan
dsh-essay-rubric-check
dsh-evidence-check
dsh-export-ctl-check
dsh-fast
dsh-fmea-table-check
dsh-forecast-penalty
dsh-fund-research
dsh-github
dsh-gongwen-flow-check
dsh-gongwen-word-check
dsh-guard-plan-qc
dsh-hazchem-check
dsh-hazplan-check
dsh-hidden-risk-map
dsh-hs-classify
dsh-icd-rule-check
dsh-industry-research
dsh-lawcite-adapter
dsh-laya
dsh-lc-doc-check
dsh-learning-gap-check
dsh-library
dsh-local-ai
dsh-lsp-actions
dsh-mask
dsh-mcp-panel
dsh-medrec-qc
dsh-memento
dsh-nsfc-form-check
dsh-nurse-record-check
dsh-observe
dsh-origin-rvc-check
dsh-ota-review-check
dsh-output-styles
dsh-paper-doc-adapter
dsh-permission-rules
dsh-permit-report-check
dsh-pipeline-check
dsh-pleading-draft
dsh-plugin-doctor
dsh-plugin-guide
dsh-plugin-kit
dsh-plugin-upgrade
dsh-policy-brief-draft
dsh-power-loss-split
dsh-power-ticket-check
dsh-ppap-check
dsh-protest-deadline
dsh-railway-window
dsh-repair-order-qc
dsh-research-report
dsh-review-reply-check
dsh-rulefile-check
dsh-safety-brief-check
dsh-score
dsh-session-sync
dsh-site-log-check
dsh-skill-pack-security
dsh-soe-decision-check
dsh-soilwater-check
dsh-sop-sync-check
dsh-spc-gbt-adapter
dsh-talk
dsh-tender-extract
dsh-tender-matrix
dsh-test-drive
dsh-ticktick
dsh-translate
dsh-warranty-calc
dsh-budget 🧊 FROZEN — see the repo README
dsh-claude-move 🧊 FROZEN — see the repo README
dsh-defend 🧊 FROZEN — see the repo README
dsh-draw 🧊 FROZEN — see the repo README
dsh-reach 🧊 FROZEN — see the repo README
dsh-background-agents 🚫 RETIRED — see the repo README
dsh-session-pin 🚫 RETIRED — see the repo README
dsh-team-rooms 🚫 RETIRED — see the repo README

License

Apache-2.0 — see LICENSE.

About

Read-only performance diagnostics for DeepSeek Harness: session load/restore timing, spill-hit counts, compaction count and trigger, context-injection volume (AGENTS.md/skills/tool-schema token share), and LLM cache hit rate — surfaced via /fast, persisted as reconstructable session events with async sampling off the model path.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages