dsh-plugins

August 24, 2026 · View on GitHub

中文 | English

Community client-UI plugins for DeepSeek Harness (dsh) — 社区开发的 DeepSeek Harness 客户端 UI 插件。


中文

五个即装即用的 Web UI 插件。当前从 GitHub 源码安装(npm 包稍后发布):

git clone https://github.com/Horizon215/dsh-plugins.git
cd dsh-plugins
pnpm install && pnpm build
dsh plugin --profile web add file:./packages/prompt-templates file:./packages/token-stats file:./packages/quest-mascot file:./packages/previously-on file:./packages/mode-switcher

装完重启 dsh web 即可(插件声明了 dsh.bundle,会自动装配进 profile,无需手动改配置)。

🐳 dsh-quest-mascot —— 打工鲸伙伴

鲸鱼娘趴在输入框上

经典鲸 · 标准模式 极客鲸 · PTC 模式 素素鲸 · 极简模式 星光鲸 · 创造模式

  • 四套皮肤同一只鲸:标准=经典鲸 / PTC=极客鲸 / 极简=素素鲸 / 创造=星光鲸,跟随会话模式自动换装;右键可手动钉皮肤或恢复跟随
  • 摸头杀:单击脸红冒爱心,连击有彩蛋(7 连击放烟花庆祝),双击转圈,悬停歪头;键盘 Enter 也能摸
  • 跟着任务实时变脸:规划 📋 → 阅读 📖 → 思考 💭 → 打工 🔨 → 收工 🎉,卡住会晕圈,泡泡同步播报步骤+耗时
  • 闲置久了趴着打瞌睡(1/5/15 分钟可调),点一下唤醒;安静模式只留表情不要语音
  • 闲暇吐泡泡:上轮战报、今日统计(联动 token-stats 播报 ≈成本)、小贴士、四套性格俏皮话轮换
  • 设置页「打工伙伴」:逐模式皮肤、安静模式、打瞌睡延迟;44 帧 512px AI 贴纸无损 WebP 内联,中英双语、尊重 reduced-motion

摸头脸红 连击庆祝 打瞌睡

📊 dsh-token-stats —— Token 用量与成本统计

每轮用量条

  • 每轮用量条:每轮对话末尾显示 输入 · 输出 | 缓存命中率 | 耗时 | ≈成本
  • 本会话徽章:侧栏底部(设置按钮上方)实时显示当前会话 tokens + ≈成本 + 缓存命中率,附「今天 · 全部会话」全局一行
  • 汇总仪表盘(设置 → 用量与成本):后台扫描器覆盖全部会话(含从未打开过的),四格指标 + 缓存命中率 + 估算成本 + 总请求数,可一键重扫;清空统计不会被扫描复活
  • 一个时间范围管全部:今天 / 近 7 天 / 近 30 天 / 全部 同时驱动仪表盘、趋势图、模型表
  • 按天下钻:点击趋势图任意一天,看当天每个会话各烧了多少
  • 使用趋势图:累计用量面积图,随对话动态增长;切换范围有描绘动画
  • 按模型统计:分模型的 请求数 / tokens / ≈成本 / 单次均价,按事件真实时间归属
  • 价格预设:内置 DeepSeek V4-Flash / V4-Pro / Kimi K3(人民币与美元)刊例价,可选手动微调;改价后所有展示实时重算

设置页

按天下钻

侧栏本会话徽章

📝 dsh-prompt-templates —— 提示词模板库

模板管理

  • 输入框右侧新增模板按钮,保存常用提示词
  • 一键插入到草稿(自动空行拼接)或插入并发送
  • 模板增删改查,两步删除防误触;首次使用自带三条起步模板(可删)
  • 数据保存在浏览器 localStorage,不上传任何服务器

🎬 dsh-previously-on —— 前情提要 + 交接单

前情提要卡

  • 打开旧会话,输入框上方淡出美剧片头式回顾:目标 · 轮数/步数 · 最后活跃 · 未完成 TODO · 你上次说的话
  • 📋 复制交接单:把目标 / 进展 / 待办 / 最近发言 / 涉及文件(从工具调用参数折叠)生成零 LLM 的 Markdown 交接单,一键进剪贴板
  • 🚀 带去新会话:在同一工作区、以同一智能体模式新建会话并自动跳过去,交接单作为第一条消息排入队列——长任务轻装续跑
  • 约 14 秒自动淡出;按会话记忆已读轮数,有新进展或静默 2 小时后才再次播报
  • 零 LLM 消耗:全部由会话日志与官方投影确定性折叠;人类消息按来源过滤,不会把上下文注入当成你的发言

交接单带入新会话

🎛️ dsh-mode-switcher —— 模式切换器

模式胶囊条

  • 输入框上方一排模式胶囊Plan · 审查 · 快答,点一下切换、再点退出,激活常亮
  • 驱动官方 Plan 模式而非重造:Plan 胶囊走 /plan 命令通道,官方 Plan 芯片、输入框占位文案、exit_plan_mode 流程全部跟随
  • 审查模式:改编自 OpenAI Codex 的审查 rubric(Apache-2.0)——只读审查、发现按 [P0][P3] 分级、结尾一行总体结论
  • 快答模式:改编自 Codex 默认协作模式——先给答案、合理假设优于追问、最少工具调用
  • 状态只落日志modeswitch/mode 会话事件最后一条生效,刷新/恢复/分叉后模式都在;提示词段注入可在会话日志 request/header 里验证
  • 也支持斜杠命令:/mode review /mode quick /mode off

Plan 模式联动

审查模式实战

兼容性

  • 需要 dsh ≥ 0.1.0-rc.5(在 0.1.0-rc.5 / 0.1.0-rc.6 上验证通过)
  • 仅 Web UI(dsh web),TUI/headless 不受影响
  • 所有数据仅存浏览器本地;成本为估算值,以供应商账单为准

卸载

dsh plugin --profile web remove @your-scope/dsh-prompt-templates @your-scope/dsh-token-stats @your-scope/dsh-quest-mascot @your-scope/dsh-previously-on @your-scope/dsh-mode-switcher

本地开发

pnpm install
pnpm typecheck   # 类型检查(对齐官方 monorepo 的严格度)
pnpm build       # 产出 packages/*/lib/client.js

构建预设 build/client-bundle.mjs 提取自官方仓库的 packages/client/tsdown.client.ts(MIT), 包含模块表 externals、纯净性检查和 CSS Modules 内联,与官方插件的构建产物结构完全一致。


English

Five drop-in client-UI plugins for the DeepSeek Harness web UI. Install from source (npm packages coming soon):

git clone https://github.com/Horizon215/dsh-plugins.git
cd dsh-plugins
pnpm install && pnpm build
dsh plugin --profile web add file:./packages/prompt-templates file:./packages/token-stats file:./packages/quest-mascot file:./packages/previously-on file:./packages/mode-switcher

Restart dsh web afterwards — the packages declare dsh.bundle, so they join the profile automatically (no manual config edits).

dsh-quest-mascot — quest whale companion

  • A Q-version whale-hoodie girl perched on the composer — always in view, never in the way
  • Reacts live: thinking 💭 → working 🔨 → done fireworks 🎉 (or dizzy when stuck)
  • Blows slow spout bubbles after ~8s idle: quest report & today stats (≈cost via token-stats price config), tips, quips
  • Chinese & English follow the UI locale; in-memory only, nothing uploaded

dsh-token-stats — token usage & cost

  • Per-turn chip under each completed turn: input · output | cache hit | duration | ≈cost
  • This-session badge at the sidebar foot (above Settings): tokens + ≈cost + cache-hit detail, plus a "today · all sessions" line
  • Aggregate dashboard (Settings → Usage & Cost): a background scanner covers every session (even never-opened ones) via the same loopback RPC the UI uses — four-bucket cards, cache-hit bar, estimated cost + request count, one-click rescan; reset survives rescanning
  • One range scopes everything: Today / 7d / 30d / All drives dashboard, trend chart and model table together
  • Day drill-down: click any day in the trend chart for that day's per-session breakdown
  • Usage trend: cumulative area chart, growing live as turns complete
  • Price presets: DeepSeek V4-Flash / V4-Pro / Kimi K3 list prices (CNY & USD), freely editable; every display reprices live

dsh-prompt-templates — prompt template library

  • Composer toolbar button opens a manager modal: create / edit / delete templates
  • Insert appends to the draft (blank-line joined); Insert & send fires immediately
  • Three starter presets (zh) seed into an empty library once — deleting never resurrects them
  • Templates persist in browser localStorage — nothing leaves the machine

dsh-previously-on — "Previously on…" recap + handoff

  • Reopen an old session and a TV-style recap card fades in above the composer: goal · turns/steps · last active · pending TODOs · your last words
  • 📋 Copy handoff — folds goal / progress / TODOs / last words / files touched (from tool-call arguments) into a zero-LLM Markdown handoff doc, straight to your clipboard
  • 🚀 Carry to new session — creates a fresh session in the same workspace with the same agent preset, jumps over and queues the doc as its first message: long tasks continue light, without the old session's context bloat
  • Auto-fades after ~14s; per-session dismissal memory re-shows only on progress or after 2h quiet
  • Zero LLM cost — folded deterministically from the session log and official projections; human speech filtered by message-source kind

dsh-mode-switcher — collaboration-mode capsules

  • One-tap mode capsules above the composer: Plan · Review · Quick — click to switch, click again to leave
  • Drives the official plan mode, not a reimplementation: /plan /plan off through the commands channel, host projection read-back; the capsule hides on deployments without plan mode
  • Review mode — adapted from OpenAI Codex's review rubric (Apache-2.0): read-only reviewer stance, findings tagged [P0][P3], one-line verdict
  • Quick mode — adapted from Codex's default collaboration mode: answer first, assumptions over questions, minimal tools
  • Log-only state: last modeswitch/mode event wins — survives reload/resume/fork; the injected prompt section is verifiable in the session log's request/header
  • Slash command too: /mode review /mode quick /mode off

Compatibility & privacy

  • Requires dsh ≥ 0.1.0-rc.5 (verified on rc.5/rc.6), web UI only
  • All data stays in browser localStorage; costs are estimates — your provider invoice wins

Development

pnpm install && pnpm typecheck && pnpm build

The build preset (build/client-bundle.mjs) is extracted from the upstream repo's packages/client/tsdown.client.ts (MIT) — module-table externals, the bundle-purity gate, and CSS Modules inlining included, producing byte-structure-identical artifacts to first-party plugins.

License

MIT