注册 /wrapped 命令,读取会话自身的统计数据,渲染成一张可分享的深色 SVG 总结卡:工具耗时与思考耗时对比、解码速度,以及工具/思考占比的评语。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:rand0wn/dsh-wrapped
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
该插件的 README 只有英文版本。
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 a
wrapped 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 the
sessionStats 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
链接
同类插件
yjh051108/dsh-routing-suite★ 7005
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3675
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 322
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 212
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
Fishquito7/dsh-skill-mcp-panel★ 179
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
lire1131/dsh-undo-savepoint★ 176
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。