插件目录 / Developer / dsh-wrapped
dsh-wrapped
已验证 · 实测可装 rand0wn
功能简介
DeepSeek Harness (dsh) plugin: /wrapped generates a shareable SVG summary card for the current session
可用 — 实测通过,早期项目
DeepSeek Harness (dsh) plugin: /wrapped generates a shareable SVG summary card for the current session 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-wrapped
A DeepSeek Harness (dsh) plugin that turns a session into a shareable summary card — Spotify Wrapped, for your agent session.
Why
Every session already has real, interesting numbers behind it — how much time went to reasoning versus tool calls, how fast the model streamed, how many turns it took — but they only ever show up as a small stats strip you glance at and forget. dsh-wrapped turns those numbers into a dark, screenshot-shaped card built for actually posting somewhere.
Install
dsh plugin --profile <name> add dsh-wrapped
Add the package name to that profile's dsh.profile.bundles list (see
dsh-minimal-anchor's README
for why this second step is required — being a listed dependency alone
doesn't activate a plugin's dsh.bundle patch):
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-wrapped"
]
}
}
}
Confirm it composed with dsh --profile <name> --dump-config — look for awrapped entry.
Usage
Type /wrapped in any session. It writes an SVG card to.dsh-wrapped/wrapped-<sessionId>-<timestamp>.svg under the current working
directory and prints a plain-text summary alongside the file path. Open the
SVG in a browser and screenshot it, or convert it to PNG with any SVG tool.
Needs @deepseek-ai/dsh-session-stats mounted in the profile (it ships in
the dsh-web-app bundle by default) — without it, /wrapped returns a
clear error instead of a blank or wrong card.
What's on the card
- Turn and step counts
- Tool time vs. thinking (LLM) time
- Average time to first token
- Decode speed (tokens/sec), omitted below a 1-second sample floor to avoid
a noisy/misleading rate from too few tokens - A one-line "type" verdict derived from the tool-time/thinking-time ratio:
The Explorer, The Deep Thinker, or The Balanced Operator
Configuration
# profiles/<name>/cordis.patch.yml
- insert:
- id: wrapped
name: 'dsh-wrapped'
config:
minDecodeSampleMs: 1000
verdictRatioThreshold: 1.5
| Field | Default | Description |
|---|---|---|
minDecodeSampleMs |
1000 |
Below this much decode time, tokens/sec is shown as — instead of a number — too small a sample is noise, not a rate. |
verdictRatioThreshold |
1.5 |
How far tool-time and thinking-time must diverge (as a ratio) before the verdict picks Explorer/Deep Thinker rather than Balanced Operator. |
All of it comes from the session's own sessionStats projection — no
separate tracking, no extra token cost, nothing persisted beyond the SVG
file itself.
How it works
Registers a /wrapped command via @deepseek-ai/dsh-commands. The handler
reads ctx.sessionProjections.snapshot(invocation.agent.session) for thesessionStats key (turns, steps, llmMs, toolMs, ttftMs/ttftSteps,decodeMs/decodeTokens), transforms it through a pure buildCard()
function into display rows and a verdict, then renders that to a
self-contained SVG string and writes it with plain node:fs. Commands never
enter model history and cost no tokens — this doesn't touch a single
request.
buildCard and renderSvg are pure functions with no dependency on a
booted Context, so the interesting logic (verdict thresholds, decode-speed
sample floor, XML escaping) is unit tested directly — see
Development.
Verified against a real local dsh web boot, not just types: installed
into a scratch profile, drove a real browser session with Playwright, ran/wrapped after a real multi-tool-call turn, and confirmed the written SVG
file's numbers matched the session's own stats strip.
Troubleshooting
/wrapped returns "sessionStats projection is not available". Your
profile doesn't have @deepseek-ai/dsh-session-stats mounted. It ships by
default in the dsh-web-app bundle; a custom or headless profile may need
it added explicitly. Check with dsh --profile <name> --dump-config.
"This session has no completed steps yet." /wrapped needs at least
one closed step (step/end) to have something to summarize — it can't
report on a session where nothing has happened.
Can't find the SVG file. It's written relative to the harness process's
current working directory, not your project directory or the harness
checkout — check the exact path in the command's success text, or look
under .dsh-wrapped/ from wherever you launched dsh.
Development
npm install
npm run typecheck
npm test
buildCard/renderSvg are plain functions with no dsh runtime
dependency — examples/render-standalone.ts renders a card from
hand-written stats, useful for iterating on the design without a live
session:
npx tsx examples/render-standalone.ts > card.svg
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-wrapped」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:rand0wn/dsh-wrapped Headless(CLI)profile:
dsh plugin --profile headless add github:rand0wn/dsh-wrapped 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。