DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Dock Host — DeepSeek Harness 插件(DSH Plugin)
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/9/20

版本

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
周下载
44
最近提交
2026/8/29
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Pet@linxin666/dsh-pet适用于 dsh Web GUI 的多宠物伴侣插件:由注册表驱动的浮动宠物,可响应模型活动,支持为每只宠物命名、抚摸/喂食互动以及亲密度评分

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).