DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-session-export

Session Export

为 DeepSeek Harness 生成确定性的会话证据报告:/transcript 根据规范会话日志写入带样式的单文件 HTML / Markdown / JSON 报告,/stats 输出终端统计卡片,/archive 写入每个会话的 ZIP 文件

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:kittimzhe/dsh-session-export#a0b0db29a1f3bb1827c1f9e432b53a5b47338bd1
README兼容性版本

兼容性与来源证明

Session Export 以 dsh-session-export 发布,当前版本为 1.9.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/11/4

版本

1.9.0stable
2026/11/4
1.8.6stable
2026/10/10
1.8.5stable
2026/10/3
查看其余 4 个版本收起版本
1.8.4stable
2026/10/3
1.8.3stable
2026/9/26
1.8.2stable
2026/9/21
0.1.0stable
2026/8/20

相关插件

正在加载相关插件…

最新版
1.9.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
395
最近提交
2026/11/4
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

dsh-session-export

English | 中文

Deterministic session evidence reports for DeepSeek Harness: /transcript writes a styled single-file HTML report or Markdown/JSON transcript, /stats prints a terminal stats card, and /archive writes raw session logs as per-session ZIPs — all to a host path, on any persistence backend (JSONL or SQLite).

Reads the session log itself through ctx.sessionQuery — no recorder, no resident memory, no drift. Sessions that existed before the plugin was installed export just as well as live ones.

Install

Requirements: Node.js 20 or 22 · a DeepSeek Harness profile that mounts the commands and sessionQuery services (the shipped web / agent profiles qualify).

dsh plugin --profile web add dsh-session-export

Try it once

Inside any session:

/transcript --html
Exported 23 messages (41 tool calls, 128450 tokens) → /path/to/cwd/dsh-transcripts/transcript-a1b2c3d4-20260929T101530.html

One self-contained HTML file — KPI cards, turn timeline, tool ranking, error highlighting, dark/light theme — opens offline, prints to PDF.

The session toolchain

PluginLayerAnswers
dsh-session-exportEvidence"What exactly happened in this session?"
dsh-session-recallMemory"What did I do before, and where is it?"
dsh-session-evalMeasurement"Was that session good? Is the trend improving?"

All three read through the same trusted ctx.sessionQuery seam.

Contributing

  • Local dev: npm ci && npm run doctor && npm run typecheck && npm test && npm run bundle (Node 20 or 22; npm run doctor fixes the unpublished peer dep — see CONTRIBUTING.md Step 0).
  • Start in the source: src/render/html.ts, src/render/markdown.ts, src/mask.ts — the full source map is in CONTRIBUTING.md.
  • Open gaps: #5, #6, #7 — or browse issues labeled good first issue.
  • Rules: behavior changes need tests; doc changes must update README.md and README.zh.md in sync; releases belong to the maintainer. Details: CONTRIBUTING.md.

Commands

InputResult
/transcriptExport the current session → <session cwd>/dsh-transcripts/transcript-<id8>-<timestamp>.md
/transcript --htmlSingle-file HTML report: KPI cards, turn timeline, tool ranking, error highlighting, dark/light theme, print-to-PDF
/transcript --json / --md / --htmlPick any combination of formats
/transcript <path> / --out <path>Write to the given path (spaces allowed after --out)
/transcript --id <sessionId>Export another session
/transcript --last 30mPartial export: entries from the last 30 minutes (7d/12h/30m/90s)
/transcript --errors-onlyDebug view: failed tool results with a two-entry context window
/transcript --maskRedact likely secrets (API keys, bearer tokens, private keys, emails, database URL credentials) from the output
/transcript --mask-hashDeterministic redaction: secrets become #xxxxxxxx digests — same secret → same marker, equality survives redaction
/transcript --manifestEvidence manifest: write a .manifest.json sidecar with byte size + SHA-256 for every artifact of this run
/transcript --fullAppend log-only events + Mermaid turn timeline
/statsTerminal stats card: messages, turns, duration, tool calls (with failures), tokens, cost, per-tool ranking, sparkline — no files written
/bundleReview ZIP: transcript report(s) + raw JSONL archive + sha256 evidence manifest — one command for audit/review workflows
/bundle --mask --manifestRedacted transcript + evidence manifest
/bundle --no-archive

Like every ctx.commands command, all five run on the human-command plane: results never enter model history and cost zero tokens.

Positioning

dsh-session-export is a session evidence layer, not a memory optimizer.

  • It focuses on auditability (what happened, in which order, with what failures).
  • It focuses on reproducibility (stable outputs, portable files, deterministic render).
  • It focuses on operations (batch archive, host-path artifacts, print-ready reports).

If your primary goal is context compression or long-term semantic memory, use a memory framework; if your primary goal is evidence, review, and postmortem quality, use this plugin.

Why

The shipped @deepseek-ai/dsh-session-log-export downloads a raw JSONL/zstd ZIP through the browser and supports the JSONL backend only. This plugin covers what it explicitly defers (see the competitive table below).

Transcript semantics follow @deepseek-ai/dsh-session/surface: the plugin renders append-origin surface events — everything the user actually saw — instead of the model-visible surface, whose compaction replacements would erase conversation the user already read.

Competitive context

Capability focusOfficial /exportRecorder-style exporterMemory frameworksdsh-session-export
Primary outcomeRaw artifact downloadHuman-readable transcriptContext/memory optimizationEvidence-grade replay report
Data sourceRaw log packageSide-channel listenerDerived memory structuresCanonical session log (sessionQuery)
Historical coverageBackend-limitedOften partial without backfillUsually selective recallFull history (incl. pre-install sessions)
Persistence backendsJSONL onlyWhat the listener sawFramework-specificAny backend (JSONL, SQLite, …)
Stats—In-panel countersFramework-specific/stats card + cost estimate + tool ranking
Lineage / diffs / timeline———Mermaid lineage, editor diffs, turn timeline
Batch———/archive --all --since
Operational artifactsBrowser ZIPUsually one-off exportsMemory state / indexesHTML/MD/JSON + /stats + /archive ZIPs

Official ecosystem note (2026-09): the official @deepseek-ai/dsh-session-log-export (browser download of raw JSONL/zstd ZIP, JSONL backend only) and @deepseek-ai/dsh-session-stats (base stats projection) are the raw-utility layer; this plugin is the evidence layer built on top — deterministic replay reports, SHA-256 manifests, redaction, policy packs, output contracts, /diff and /bundle.

Model-facing tool (v1.3)

Set exposeTool: true to register transcript_export — the same export kernel as a typed tool the model can call. The intended bridge: a dsh-session-recall hit returns a sessionId; the model hands it to transcript_export and the user gets a full evidence report on disk. One format per call (html default, md / json), optional mask / manifest / last; files always land in the standard dsh-transcripts directory (or defaultDir), with timestamped names that never overwrite. The tool is opt-in because it puts a host-file write in the model's hands.

The HTML report

HTML report (light theme) HTML report (dark theme)

/transcript --html writes one self-contained file — no external CSS/JS, opens offline:

  • KPI cards: messages, tool calls (failed highlighted), tokens in/out, duration, turns, cost
  • Turn timeline: one colored bar per turn, proportional to wall-clock share
  • Tool ranking: horizontal bars with per-tool failure counts
  • Token sparkline: inline SVG, output tokens per assistant message
  • Error focus: failed tool results get a red border, banner, and auto-open; a header link jumps straight to the first failure
  • JSON syntax highlighting: tool arguments and JSON results get token colors (keys blue, strings green, numbers amber) — no external highlighter
  • Bilingual labels: lang: zh renders the entire report in Chinese; default is English
  • Native tooltips: hover KPI cards, timeline bars, and sparkline bars for details
  • Native folding: tool arguments/results and reasoning in <details>
  • Per-turn folding: the transcript groups into collapsible turns (duration · entry count · ⚠ flag); the sticky toolbar gives TOC chips + live search (/ to focus) for long reports
  • Copy buttons: one click to copy any tool argument/result/diff/reasoning block
  • Dark/light theme: follows prefers-color-scheme, toggle button, remembered
  • Print → PDF: @media print rules; printing auto-expands all folds — archival copies in one Cmd+P

Markdown output gains a Mermaid lineage graph (GitHub/VSCode render it natively) and a Mermaid turn-timeline gantt with --full.

Cost estimation

Set a price table once and every export/stats run shows the estimated cost:

- id: session-export
  name: 'dsh-session-export'
  config:
    pricing:
      inputPerMillion: 0.27   # your per-1M-input-token price
      outputPerMillion: 1.10  # your per-1M-output-token price
      currency: '$'           # label rendered next to the estimate

Install (out-of-tree plugin)

From npm:

dsh plugin --profile web add dsh-session-export

Or from GitHub:

dsh plugin --profile web add github:kittimzhe/dsh-session-export

Then add to the profile's cordis.patch.yml (the row requires commands and sessionQuery services, which the shipped profiles already mount):

- id: session-export
  name: 'dsh-session-export'

Configuration

Plugin row config (all optional):

- id: session-export
  name: 'dsh-session-export'
  config:
    preset: compliance                 # one-line policy pack: 'baseline' (default), 'compliance', 'full'
    defaultDir: /absolute/output/dir   # default: session cwd + dsh-transcripts/
    argCharLimit: 512                  # rendered tool-argument cap
    resultCharLimit: 2048              # rendered tool-result cap
    lang: zh                           # HTML report labels: 'en' (default) or 'zh'
    mask: true                         # redact secrets by default (--mask per run)
    maskMode: hash                     # replacement mode: 'mask' (placeholders, default) or 'hash' (deterministic digests)
    maskPatterns: ['OPS-\d+']          # extra masking regexes
    manifest: true                     # write a .manifest.json sidecar by default (--manifest per run)
    exposeTool: true                   # register the model-facing transcript_export tool (default false)
    pricing: { inputPerMillion: 0.27, outputPerMillion: 1.10, currency: '$' }
    archiveDir: /absolute/output/dir   # default: session cwd + .dsh-archives/
    includeDescendants: true           # /archive --id default
    maxSessionsPerRun: 100             # safety cap on /archive --all

What the Markdown contains

  • Header table: session id, project, created, agent preset, message/tool-call counts (failures), token totals, duration, cost, generator
  • Lineage: Mermaid graph + ancestor chain and recursive subagent descendant tree
  • Transcript in log order: user messages, assistant messages (provider/model provenance, token usage, collapsible reasoning), tool calls (arguments truncated; str_replace_editor rendered as ```diff blocks), tool results (error-aware)
  • --full: Mermaid turn timeline + log-only events appendix

Current gaps

Shipped roadmap items live in the CHANGELOG. Open work is tracked in issues; the former top three (#5 diff-block widening, #6 connection-string redaction, #7 ranking anchors) all shipped.

Known limitations

  • Exports run through the trusted ctx.sessionQuery seam; a composition without it cannot mount this plugin.
  • Report bytes are not reproducible (embedded generation timestamps); --manifest provides integrity (SHA-256 per artifact), not reproducibility.
  • Token totals sum per-assistant-message usage records; steps whose adapter reported no usage contribute zero.
  • Cost is an estimate from list prices; cache-hit discounts are not modeled (cacheReadTokens is not priced separately).
  • Masking is pattern-based and best-effort: it redacts common credential shapes, not all possible secrets.
  • Markdown escapes only what can break a block: diff content lines starting with +/- are re-prefixed with a space, and bodies containing a ``` line get a four-backtick fence; other content passes through verbatim.
  • /archive is export-only: there is no restore/import because DSH exposes no write-side session seam, so the ZIP is a backup, not a round-trip.

Development

npm ci
npm run doctor      # peer-dep self-check — see CONTRIBUTING.md Step 0
npm run typecheck   # tsc --noEmit
npm test            # vitest run
npm run bundle      # tsdown -> lib/

License

MIT

Community

  • Contributing · Security policy · Code of Conduct
Transcript-only review pack
/archiveArchive the current session (incl. subagent descendants) → per-session ZIP
/archive --all --since 7dBatch-archive every session from the last 7 days
/diff <id1> <id2>Session diff: compare two sessions — common prefix, unique tails, stats delta (terminal or --html report)