DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Plugin Toolkit — DeepSeek Harness 插件(DSH Plugin)
← Plugins
P

dsh-plugin-toolkit

Plugin Toolkit

DeepSeek Harness 个人工具包:一些可在运行时切换的小型易用性优化,每项优化在 Toolkit 设置页面中以一张卡片的形式提供。优化包括:无工作区聊天、编辑并重新发送上一条消息、侧边栏中的活动分组、中文斜杠菜单描述,以及每轮更改报告。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:kolawong/dsh-plugin-toolkit#64cb3bc7342d262a52049f2d186e1ad5147ca87a
README兼容性版本

兼容性与来源证明

Plugin Toolkit 以 dsh-plugin-toolkit 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/3

版本

0.1.0stable
2026/9/3

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/20
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航Dafeiyudsh-dafeiyu由 DeepSeek Harness 会话事件驱动的原生桌面端 BigFish companion。Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Usage Stats@ychris12138/dsh-usage-statsdsh Web GUI 的令牌使用热力图、提供商余额和订阅配额

README

dsh-plugin-toolkit

Personal quality-of-life toolkit for DeepSeek Harness. Each optimization is small enough that it does not deserve its own vertical plugin, and ships as one entry inside the Toolkit settings card: Web settings → Plugins → click the DSH-Toolkit card to expand a half-width sub-card grid (each with an icon, title, short subtitle, and on/off badge), then click one sub-card to open that optimization's settings dialog. The plugins page stays a compact launcher as the list grows.

Graduation rules

An optimization graduates out of this package into its own dsh-plugin-* when any of these holds:

  • it grows its own settings GUI beyond one toggle row, a service route, a background job, or a client.js feature surface;
  • it needs to be enabled/disabled per composition row (Cordis toggles whole rows, not single tools);
  • its definition plus tests exceed roughly 200 lines;
  • it is worth publishing or sharing on its own.

Optimizations

workspacelessChat (default on)

Chat without picking a workspace first, like other agent harnesses' default-project behavior. dsh's composer requires a blank session to belong to a workspace, so the optimization keeps a dedicated no-project chat workspace (「通用对话」) around: it is idempotently created with its friendly title whenever the optimization is enabled, so the option always shows in the sidebar and workspace picker — open it to chat without a project. On top of that, when both baselines are ready, no session is selected, and the runtime's own startup policy has no recent workspace to connect (first run, no workspaces), the client also auto-connects a blank session in that workspace so the composer is live immediately.

The cold-start auto-connect failures retry at most 3 times (2 s apart) and then stay dormant until a list change re-triggers the check. The runtime's own recent-workspace auto-connect always wins; the auto-connect only fills the nothing-to-connect case, while the workspace itself exists unconditionally. The workspace is renamed to its friendly title only while it still carries the auto-derived basename (a title you set yourself is never overwritten).

ConfigDefaultMeaning
optimizations.workspacelessChattrueToggle the no-project chat workspace + auto-connect.
chatWorkspacePath""Host directory for the default chat workspace; empty resolves to <DSH_HOME>/chat. The server creates the directory (live on settings edits, too).
chatWorkspaceTitle通用对话Display title of the no-project chat workspace.

The card writes go through the toolkit settings namespace, so toggles and path edits apply live without a restart.

editLastMessage (default on)

Retry a failed answer without copy-pasting and without polluting the model's context: the last user message's hover actions gain an Edit button. Clicking it opens an inline editor prefilled with that message; Save & resend rewrites the session in place — the edited message and everything after it are replaced (the model context truly rewinds, so the next request contains only the edited content), and a new turn answers the edited message.

This needs host support for the session.rewrite RPC (a small addition to this repo's dsh checkout). On hosts without it, the button still shows but reports that rewriting is unsupported. The client transcript erases the old message and its failed turn; turn boundaries are kept so the failed turn collapses into an invisible empty turn. Requires an idle session (a running turn rejects with agent-busy); only the last human user message is editable, text-only.

ConfigDefaultMeaning
optimizations.editLastMessagetrueEdit-and-resend button on the last user message.

viewActivity (default on)

Adds an Activity icon (native clock glyph) to the workspace sidebar, right after the search (magnifier) control. Clicking it re-sorts the sidebar's conversation list in place: running conversations surface in a leading Priority group, then the remaining history grouped by Today / Yesterday / Weekday / Earlier (newest first within each group) — the familiar "recent conversations" pattern. Clicking again restores the previous grouping (workspace sections or the flat list); the icon highlights while the activity sort is on.

ConfigDefaultMeaning
optimizations.viewActivitytrueWorkspace-header activity icon + in-place running-first / by-day re-sort.

This one needs a dsh host extension: ui-workspace gains a sidebar.workspaces.actions slot in the workspace header action area plus a groupBy: 'activity' mode (deriveActivity), so the icon only renders when the host supports it. On hosts without it the setting toggle still works but nothing is drawn.

slashI18n (default on)

The / menu's shell copy (group titles, the user-only badge, skeleton rows) is already localized, but the entries' descriptions come straight from the host: built-in command descriptions, argument hints, and skill catalog descriptions all render verbatim in English, even under the Chinese UI. This optimization translates them client-side: the toolkit wraps the remote.commands.list and remote.skills.list namespace methods and rewrites each response's description / input.hint through an exact-match en→zh dictionary before any consumer reads it.

Scope and safety rails:

  • name fields are never translated — fuzzy matching, the draft-chip lexicon, and claim adjudication all read them; whenToUse / modelInvocable ride untouched too.
  • A dictionary miss falls back to the original string, so a dsh update that rewords a description degrades to English until the dictionary catches up (it never breaks the menu).
  • Translations apply only while the UI language is Chinese, and the settings toggle is re-read per RPC result, so switching takes effect at the very next menu opening.
  • Results are rebuilt into fresh objects, so no caller cache aliases the wire data; rejections and error results pass through untouched; re-applying the plugin cannot double-wrap a method.
  • Skills you authored yourself can simply carry a Chinese description in their SKILL.md frontmatter — no dictionary needed. The dictionary only covers what ships with dsh (6 built-in commands, 2 hints not already keyed by ui-conversation's own hint.* locale keys, and the 2 built-in skills).
  • No dsh source changes and no host extension are required; on a host without these namespaces the optimization simply stays dormant.
ConfigDefaultMeaning
optimizations.slashI18ntrueChinese descriptions for the / menu's commands and skills.

changeReport (default on)

A codex-style change report at the tail of every completed turn. When a turn changed files (edit / write / mutating str_replace_editor calls), the tail renders a compact card: "N files edited · +A -R", one row per file with its own +N -M (click a row to open the file in the viewer), a show more expander beyond four rows, and a Review button opening the turn's full diff. The card is a superset of dsh's built-in produced-files tail: it joins the same conversation.chat.turnTail chain ahead of it (lower priority) and declines on non-mutating turns, so the stock tail renders exactly as before.

How it works, and its bounds:

  • Data comes from the transcript, client-side: a conversation turn-data accumulator records one before/after hunk per successful mutation call — direct agent tool calls and run_code's nested sub-calls (which log as tool/code-dispatch events keyed by their root call). Line counts reuse the primitives' diffTotals, so the header numbers always match what the review DiffBlock renders.
  • bash-side file writes (sed, redirects, …) are invisible to the transcript and therefore not tracked — the report covers the dedicated file-mutation tools, like codex tracks its own.
  • Failed calls (tool error results) contribute nothing; settlements after the closing assistant seq are excluded; aggregated results are rebuilt per render (no aliasing with the wire data).
  • No undo: reverting files on disk would need a host-side capability the browser does not have. Declining is deliberate — V1 is display-only.
  • No dsh source changes: the slot, the turn-data definition registry, and the diff primitives are all public extension surfaces. Disabling the toggle restores the stock tail verbatim.
ConfigDefaultMeaning
optimizations.changeReporttruePer-turn change report card at the turn tail.

Install (web profile)

cd ~/.dsh/profiles/web
pnpm add file:/root/dsh-plugin-toolkit   # or link:/root/dsh-plugin-toolkit while developing
# add "dsh-plugin-toolkit" to the dsh.profile.bundles list in package.json
systemctl restart deepseek-harness.service  # or your profile's restart path

Server-side changes (this package) need a profile restart; the client bundle re-syncs with pnpm install inside the profile followed by a browser hard refresh.

Model experience

No tool is registered and no prompt surface changes; this package is pure UI/runtime ergonomics. The one exception is the editLastMessage rewrite, which by design changes what the model sees: after an edit, the erased tail is removed from the derived request history (via the surface replace), so subsequent turns read only the edited content.