DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Claude Code Theme — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
C

dsh-claude-code-theme

Claude Code Theme

适用于 DeepSeek Harness Web GUI 的 Claude Desktop 视觉主题——温暖的纸张配色、赤陶色强调色、易读的正文、安静的界面和连续式编辑器。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Klop233/dsh-claude-code-theme#d738f0c9beb6cb303678868c8cafd9e5995e55fe
README兼容性版本
The theme applied to a dark sessionThe theme applied to a light session

兼容性与来源证明

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

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

版本

0.1.0stable
2026/10/14

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包

README

dsh-claude-code-theme

Claude Desktop's visual language for the DeepSeek Harness Web GUI.

Warm paper neutrals, terracotta accent, readable prose, quiet layered surfaces and a continuous composer — applied through DSH's own theme extension point, not by patching its stylesheets.

Before and after

Stock DSH — right-aligned bubble on a blue-tinted canvas, soft 12–28px corners, a floating composer with a circular send button:

The stock DSH conversation view

With the theme — a deeper sidebar, a raised right-hand panel, prose set for reading, compact tool summaries, and a continuous composer:

The theme applied to a dark session

Light mode, on Claude's cream canvas with white raised sheets:

The theme applied to a light session

Install

dsh plugin install dsh-claude-code-theme

Or add the row to your profile's cordis.patch.yml and its package to the profile's dsh.profile.bundles:

- insert:
    - id: claude-code-theme
      name: dsh-claude-code-theme

Reload the Web GUI. There is nothing to switch on: the theme composes over whichever palette you already use, so light, dark and system all keep working.

What changes

Colour. DSH's design system has three token tiers, and the theme works on all three:

TierWhat it isWhat the theme does
--dsw-static-*The raw colour rampsRetints DSH's blue-tinted greys to Claude's warm paper greys, and DeepSeek blue to terracotta. The alias tier resolves through these, so this alone recolours most of the application.
--dsw-alias-*The semantic roles components consumePins the roles Claude treats differently: a cream canvas under raised sheets, a terracotta primary button and focus ring, warm hairlines, and text that stops short of pure white on dark.
--dsw-specific-*Named surfacesRetunes the sidebar, composer, bubbles, menus and code surfaces.

Surface hierarchy. Claude Desktop stacks depth rather than flattening it, so the theme gives each column its own level instead of one shared grey:

RegionDarkLight
Sidebar#111110 (deepest)#f5f3ec
Canvas#171716#faf9f5
Raised sheets — cards, composer, right panel#1d1d1b#ffffff

The right panel becomes a raised sheet separated by a hairline instead of floating as a detached card.

Geometry. DSH routes 280 border-radius declarations through six --dsw-radius-* tokens (measured across all 179 shipped UI bundles), so the theme re-points the scale itself:

TokenDSHTheme
--dsw-radius-xs4px4px
--dsw-radius-sm8px6px
--dsw-radius-md12px8px
--dsw-radius-lg16px12px
--dsw-radius-xl20px16px
--dsw-radius-panel28px20px

The corners that bypass the scale are reached through the stable data-slot and data-* hooks rather than a build hash.

Typography. This is the part that most decides whether the result reads as a product or as a costume. Claude Desktop is a reading surface, so the transcript is set in the UI sans at a comfortable line height, and monospace is kept for the things that are actually code:

Treatment
Assistant proseUI sans, 1.65 line height, normal heading letter-spacing
Inline code, code blocks, tool outputMonospace
Sidebar, header, composerUI sans
Code-block bannerSentence case, not shouted uppercase

Transcript. Your turn is a right-aligned bubble on a quiet surface; the assistant's is prose on the canvas; tool calls collapse into single-line summaries (Ran 2 commands ›) that expand in place, which is how Claude Desktop keeps a long working session scannable.

Composer. One continuous rounded surface: the editor and the controls share a single card with no divider between them, the submit control is a circle, and focus draws a soft terracotta ring rather than a hard outline.

Chrome. Quiet navigation rows instead of an elevated primary button, hover states limited to enabled controls, focus-visible rings for keyboard use, and thin warm scrollbars.

Customisation

Everything the component layer decides reads a --cct-* property declared once on body, so you can retune it from your own CSS without patching the package:

body {
  /* A serif reading face, the way long-form prose is often set. */
  --cct-prose: Georgia, "Songti SC", serif;

  /* Roomier or tighter surfaces. */
  --cct-composer-radius: 24px;
  --cct-control-radius: 6px;
  --cct-editor-inset: 20px;
}
KnobDefaultPurpose
--cct-sanssystem UI stackUI face, including the sidebar and composer
--cct-prosevar(--cct-sans)Face used for assistant prose only
--cct-monoDSH's code stackCode, tool output and paths
--cct-control-radius8pxButtons, rows, chips, code blocks
--cct-composer-radius18pxThe composer surface
--cct-editor-inset16pxComposer text inset from its edge
--cct-focusbrand primaryFocus ring colour

To retune colours instead, stack your own layer on top — later layers win per token:

ctx.theme.overrideTokens('my-tweaks', {
  '--dsw-alias-brand-primary': { light: '#c96442', dark: '#d97757' },
})

How it works

The plugin is a browser half plus an inert host row.

The browser half (lib/client.js) does exactly two things, both inside one Cordis effect, so unloading or HMR removes the theme completely:

  1. Calls ctx.theme.overrideTokens('dsh-claude-code-theme', …) with 174 tokens as { light, dark } pairs. This is DSH's documented third-party theme extension point. The service stacks the layer over the active palette and ui-layout writes it as inline custom properties on <body> — which is why the theme outranks the base palette sheets without !important, and why overriding the --dsw-static-* ramps propagates to every alias that resolves through them.
  2. Injects the component stylesheet as a <style data-plugin-css> tag, the same shape DSH's own plugins use.

The half has no runtime dependencies — no React, no schema library. It never imports another plugin's code, never registers a keyboard shortcut, and never touches conversation state.

How the component layer survives a DSH update

Two kinds of hook are used, in order of preference:

  1. data-* hooks and slot anchors — [data-slot="sidebar"], [data-slot="rightbar"], [data-conversation-region="chat"], [data-composer-card], [data-chat-flow-kind]. These are the components' published interfaces.
  2. The semantic half of a CSS-module local name — cJsG2q_bubble hashes the prefix but keeps bubble, so rules match [class*="_bubble"], scoped by the region hook above them. A build hash never appears in a selector.

renderSlot() emits a div[data-slot="…"] with an inline display:contents between every parent box and its occupant. That anchor is layout-transparent but it breaks parent > child chains, so selectors here are written against the anchors rather than around them.

When DSH renames a local or a hook, the worst case is one rule stops matching — the theme degrades, it does not break the app.

Development

npm install
npm test        # typecheck, build, CSS validation, behavioural smoke test

npm test is not decorative. It validates the stylesheet with lightningcss, checks every DSH token the sheet reads against an allowlist so a typo cannot silently disable a rule, refuses any selector containing a build hash, and executes the built bundle through window.__ModuleLoader__.load against a stub DOM to confirm it stacks one well-formed token layer and publishes exactly one stylesheet that disposal removes.

The visual result is checked against a replica built from DSH's own shipped component CSS, so changes are judged against the real cascade rather than against a hand-written approximation.

Compatibility

Built and verified against DSH 0.2.0-rc.2. The theme depends only on the public theme service and on DOM hooks the UI components publish, so it is expected to keep working across patch releases; a renamed local degrades one rule rather than breaking the app.

Releasing

npm test
npm version patch
npm publish
git push --follow-tags

prepublishOnly runs the full suite, so a broken build cannot reach the registry.

License

MIT