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

@tecfancy/dsh-dock-host

Dock Host

适用于 dsh (DeepSeek Harness) Web 客户端的通用停靠按钮宿主:在输入框上方渲染一行按钮,并管理 dockButtons 注册表、溢出菜单、i18n 和动画。构建为 Feature-Sliced Design 静态 Cordis 插件。

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

npx -y @deepseek-ai/dsh plugin --profile web add @tecfancy/dsh-dock-host@0.2.1
README兼容性版本

兼容性与来源证明

Dock Host 以 @tecfancy/dsh-dock-host 发布,当前版本为 0.2.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/11/5

版本

0.2.1stable
2026/8/28
0.2.0stable
2026/8/27
0.1.3stable
2026/8/27
查看其余 2 个版本收起版本
0.1.2stable
2026/8/27
0.1.1stable
2026/8/27

相关插件

正在加载相关插件…

最新版
0.2.1
DSH
*
HMR
重启进程
Tree shaking
已声明 sideEffects: false
解包体积
57.7 kB
文件数
28
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
19
最近提交
2026/8/29
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Claude Designdsh-claude-designDeepSeek Harness 插件:来自 baoyu-design 的 claude-design 技能。智能体将画板画布写入文件,并在本地画布编辑器中打开它们。Claude Slidesdsh-claude-slidesDeepSeek Harness 插件:来自 baoyu-design 的 claude-slides 技能。代理会将可编辑的幻灯片演示文稿写入文件,并在本地幻灯片编辑器中打开。Claude Design Systemdsh-claude-design-systemDeepSeek Harness 插件:来自 baoyu-design 的 claude-design-system skill。代理将设计系统(令牌、字体、组件、资源)写入文件,并在本地 design-system 页面中打开。Claude Dashboarddsh-claude-dashboardDeepSeek Harness 插件:来自 baoyu-design 的 claude-dashboard 技能。该代理将基于数据的仪表板构建为文件,并在本地仪表板编辑器中打开。

README

dsh-dock-host

A generic dock-button host for the dsh web client, built as a Feature-Sliced Design static Cordis plugin. It renders one row of buttons above the composer/input box and owns everything about placement: the dockButtons registry, theme tokens, i18n (dockHost namespace, zh/en), overflow "更多" menu, and motion.

It is intentionally feature-agnostic — it knows nothing about what a specific button does. A concrete feature (terminal, files, ...) registers its own buttons into the registry; the host only places them.

Install

npm install @tecfancy/dsh-dock-host

Then mount it into a dsh profile (the CLI reconciles dsh.profile.bundles):

dsh plugin --profile web add @tecfancy/dsh-dock-host

Requires @deepseek-ai/cordis ^4.0.1 as a peer dependency.

Layering (client-only)

dsh-dock-host is a client-only plugin: the host half (src/index.ts) registers no tools and no RPC. The client half under src/client/ follows the framework's FSD layering:

src/
  index.ts                     host root: name only (no host capabilities)
  client/
    index.tsx                  client assembly root: provide registry, mount the
                               conversation.input.dock row slot, register i18n
    shared/
      config/context.ts        structural type contracts (slots, locale, logger)
      dock/registry.ts         the dockButtons registry (register/list/subscribe)
    features/
      dock-host/
        DockButtonsRow.tsx     the row + overflow menu (placement, tokens, i18n)
        DockButtonsRow.module.css  reduced-motion kill switch (build-time inline)

Host and client are physically isolated: host never uses JSX/React, client never touches window/document directly. There are no cross-boundary code imports. Because there is no host Remote RPC in this plugin, no Typert artifacts are generated and no harness.handle/host.call/styles.insert builtins are used (those are dynamic plugin evaluator builtins, not the static surface).

The DockButton contract

A feature registers a button with the shape:

{
  id: string,                        // unique, namespaced e.g. 'terminal:open'
  order?: number,                    // ascending placement, default 0
  label: string | (() => string),    // thunk for i18n
  icon?: string,                     // optional glyph prefix
  enabled?: boolean | ((ctx) => boolean),  // optional visibility predicate
  primary?: boolean,                 // always visible before the overflow
  run(ctx: { input, inputActions, sessionId }): void | Promise<void>,
}

The host fills the row up to DEFAULT_MAX_VISIBLE (4) primary-then-ordered buttons, and puts the rest in the overflow menu; primary buttons always stay visible.

Adding a feature (later)

A provider (terminal, files, ...) is added as another client/features/<name>/ slice. The client assembly root creates the registry once and hands it to each feature so they can registry.register(...). Because this is a single plugin, no cross-plugin service composition is required.

Commands

TaskCommand
Installnpm install
Type-checknpm run type-check
Lintnpm run lint / npm run lint:no-emdash
Formatnpm run format:check (fix with npm run format)
Testnpm run test / npm run test:coverage
Aliases driftnpm run aliases:check
Buildnpm run build (host tsc + tsdown client bundle)
Bundle verifynpm run bundle:check
Full gatenpm run verify (must stay green)
Smoke installnode scripts/install-to-profile.mjs --profile web [--copy]

Requirements

  • Node >= 22.19.0, npm 10.9+
  • A dsh web profile for smoke testing (optional for development)

License

MIT (c) 2026 TecFancy

This plugin is scaffolded from the dsh-plugin-framework template (feature-sliced design + host/client isolation + engineering gates).