为 DSH Web/Desktop 客户端换上 CodePilot 视觉皮肤的纯表现层主题包,不改交互逻辑与模型上下文。
ⓘ 此插件是大仓库 op7418/pilot-harness 的子包,星数与活跃度统计的是整个仓库。
- 语言
- TypeScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add github:op7418/pilot-harness/packages/client/ui-codepilot-theme在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 op7418/pilot-harness/packages/client/ui-codepilot-theme:先查看仓库 https://github.com/op7418/pilot-harness.git 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
为 DeepSeek Harness 客户端换上 CodePilot 视觉风格(浅色/深色配色、毛圆角、内嵌品牌图标),不改交互逻辑也不影响模型。桌面端会同步把原生标题栏外观切到同一个主题模式。
核心能力
- 注入 CodePilot 浅色与深色两套配色,覆盖 Pilot 颜色/平台表面 token 和 Harness 的语义、组件、阴影 alias token
- 在
html根元素上设置data-codepilot-theme="true"激活标记;卸载插件时还原该属性之前的状态 - 内置品牌图标(以 data URL 形式打包进 bundle),覆盖空会话页 hero 区、侧边栏展开/收起态以及 About 页品牌位
- 桌面端通过 Electron preload 桥把当前主题模式(system/light/dark)同步给原生窗口,更新窗口材质、背板与 Windows 标题栏按钮
- 订阅
theme/change事件跟随应用内主题切换,在桌面端保持原生外观与客户端一致 - 加载与卸载完全可逆:移除激活标记、释放 effect 订阅、依赖 CSS 模块作用域自动失效,回到默认主题
技术实现
- 语言: TypeScript(ESM,两个 tsconfig 产物:host 与 client)
- 关键依赖:
@deepseek-ai/cordis、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-theme、@deepseek-ai/dsh-invariants(均为 peerDependencies,以 workspace 形式解析) - 架构模式: DSH Client 端 Cordis 插件,
package.json#dsh.client声明platform: "web"、inject仅供预检显示;通过 CSS Modules + 根元素data-codepilot-theme属性作用域注入样式;ctx.effect()钩子负责激活标记的设置/还原和桌面端主题事件订阅的生命周期 - 入口文件:
src/client/index.ts(激活与同步逻辑)、src/index.ts(host marker 占位)、src/invariant.ts(声明包名、附带"无 runtime invariant"原因)、src/client/theme.module.css与src/client/brand-icon.module.css(样式)
适用场景
想让 DSH 客户端换成 CodePilot/Luma 视觉风格的普通用户。安装一次就生效,没有配置项,没有副作用;如果只想临时看一眼,也可以装上后随时卸载。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.7 | peerDependencies 使用 workspace:^,跟随宿主 DSH workspace |
| Node | >=22.19.0 | 根 package.json#engines.node: ^22.19.0 || >=24.0.0 |
| 平台 | macOS / Windows / Linux / Web | 浏览器端仅使用 CSS;桌面端额外依赖 Electron preload 桥 |
| 原生模块 | 无 | 纯样式 + Cordis effect 钩子,不引入 node-gyp 模块 |
安装方式
dsh plugin --profile web add github:op7418/pilot-harness/packages/client/ui-codepilot-theme
配置项
本插件无需额外配置。package.json 没有声明 Config schema,源码里也没有读取任何配置或环境变量;样式、激活标记、同步逻辑都是写死的。
常见问题
Q: 安装后怎么确认生效?
A: 重启 Web profile 后执行 dsh --profile web --dump-config,能看到 codepilot-theme 节点即加载成功;也可直接打开客户端看侧边栏与空会话页是否已换上 CodePilot 视觉。
Q: 怎么卸载回到原主题?
A: 执行 dsh plugin --profile web remove @deepseek-ai/dsh-client-ui-codepilot-theme,重启 profile 即可。卸载时 data-codepilot-theme 标记会被清除,之前若有别的取值也会一并还原。
Q: 装上之后会不会改变模型回答、对话内容或工具行为?
A: 不会。源码与 README 都声明它不注册任何面向模型的上下文、工具、事件或请求内容,纯客户端表现层替换。
Q: 桌面端和浏览器端都能用吗?
A: 都能。浏览器端只应用同一份 CSS;桌面端多走一步:把当前主题(system/light/dark)通过 Electron preload 桥同步给原生窗口,让标题栏、材质、窗口背板跟随切换。
Q: 装这个主题会让我之前的 KV 缓存失效吗?
A: 不会。README 明确写出 Model Experience 与 KV Cache 影响均为"无",加载或卸载只影响客户端显示,不动模型输入。
Q: 跟我已经装的别的样式/主题插件会冲突吗?
A: 浅色和深色两边都覆盖了同一组 Pilot 与 Harness 语义 token,加载顺序靠后的插件样式不会留下浅色文字、侧栏材质等错位值;卸载时干净还原,不互相污染。
Q: 如果产品图标文件改了,主题会自动更新吗?
A: 不会。每次改动 apps/desktop/assets/icon-master.png 后,需要在仓库根目录手动跑一次 pnpm --filter @deepseek-ai/dsh-desktop run icons 来重新生成 bundle 里的品牌样式表,然后重新打包发布。
上手难度
入门 — 一条 dsh plugin add 命令 + 重启 profile 即可,没有配置项、不会改模型上下文,普通用户可以直接装上试用、不喜欢再卸载。
已知问题与限制
- 修改
apps/desktop/assets/icon-master.png后必须运行pnpm --filter @deepseek-ai/dsh-desktop run icons才能刷新 bundle 里嵌入的品牌样式表,否则客户端仍展示旧图标。 - 新增的品牌位需要先在宿主上加
data-pilot-brand-mark表现层挂钩并完成视觉审计,主题才能以可逆方式替换;上游新增品牌位置而未加挂钩时,本插件不会自动接管。
Pilot Harness
English | 中文
A CodePilot-inspired desktop client and plugin suite for DeepSeek Harness.
Run the DeepSeek Harness plugin runtime as a focused native app, manage providers and multimodal models visually, and keep desktop additions isolated as ordinary Harness plugins.
Quick start · Plugins · Architecture · MIT License
Why Pilot Harness
DeepSeek Harness has a powerful “everything is a plugin” architecture, but its default experience is designed around a CLI-launched Web UI. Pilot Harness keeps that runtime model and adds the parts expected from a daily desktop product:
- A real desktop app — Electron packages the local Harness runtime for macOS, Windows, and Linux, owns native window behavior, and provides a recovery screen when startup needs attention.
- A calmer CodePilot-inspired interface — consistent tokens, radii, menus, hover states, settings cards, Markdown, conversation/trajectory navigation, and platform-aware title bars.
- Provider and model management — connect supported providers, declare an OpenAI-compatible endpoint, manage credentials separately from settings, browse the live model catalog, and identify image-capable models.
- Workspace context without clutter — project-aware conversation rows show branch, state, reminder summary, mode, and model details, while Files opens as a true right sidebar.
- Plugin-first extensions — the theme, Worktree sidebar, Schedule summary, and Session-log export remain Cordis/DeepSeek Harness rows rather than desktop-only business logic.
- Reversible customization — disabling the CodePilot theme row removes its product mark and visual overrides so the stock Harness presentation can take over again.
Pilot Harness does not replace the DeepSeek Harness agent loop, Session log, tool pipeline, provider contracts, or RPC implementation. Electron owns packaging and native integration; the composed Harness plugin tree remains the application runtime.
Quick Start
Download the installer for your system from GitHub Releases:
| Platform | Download | Install and handle the security prompt |
|---|---|---|
| macOS (Apple Silicon) | DMG installer ZIP app | Open the DMG, drag pilot-harness.app into Applications, and launch it normally. A formal Release is published only after its Developer ID signature has been verified. Because notarization is not enabled yet, Gatekeeper may still block the first launch; in that case open System Settings → Privacy & Security, click Open Anyway, then confirm Open. Do not run xattr or disable Gatekeeper for a formal Release. If macOS reports that the signed app is damaged, delete it, verify the Release checksum, and download it again instead of bypassing the warning. Apple's security instructions. |
| Windows (x64) | EXE installer | Run the EXE. If Microsoft Defender SmartScreen says Windows protected your PC, first confirm that the file came from this Release, then choose More info → Run anyway. Do not disable SmartScreen globally. A managed computer may hide this option; contact its administrator instead. Microsoft's SmartScreen explanation. |
| Linux (x64) | AppImage DEB RPM | DEB: sudo apt install ./Pilot-Harness-Linux-amd64.debRPM: sudo dnf install ./Pilot-Harness-Linux-x86_64.rpmAppImage: chmod +x Pilot-Harness-Linux-x86_64.AppImage, then ./Pilot-Harness-Linux-x86_64.AppImage. If the file manager blocks execution, enable Allow executing file as program in file properties. The preview packages are unsigned, so only accept a package-manager warning after confirming the official Release source. |
The table links to formal end-user Releases, not the seven-day Actions preview artifacts. Formal macOS files must pass Developer ID verification before publication; while they remain unnotarized, the only expected extra step is Open Anyway in System Settings. Preview macOS artifacts are ad-hoc signed for CI verification and are not the normal installation path. Once notarization is enabled, the Open Anyway step should normally disappear and this guide must be updated with the release pipeline. Windows and Linux preview installers remain unsigned. Only override an operating-system warning for files downloaded from this repository's official GitHub Release; do not turn off platform security globally.
After installation, open Pilot Harness, select a Workspace, then go to Settings → Providers to connect a provider and choose one of its available models. No separate DeepSeek Harness installation is required for the desktop app. Source setup and packaging instructions live in Development, not in the user installation path.
What is included
| Area | What Pilot Harness adds | Ownership |
|---|---|---|
| Desktop shell | Native window, local runtime lifecycle, directory dialog, recovery, installers, and platform icons | Electron app |
| Visual system | CodePilot-inspired design tokens and component contracts | @deepseek-ai/dsh-client-ui-codepilot-theme |
| Workspace Files | Right sidebar, file count, branch summary, row actions, and @path insertion | @deepseek-ai/dsh-ui-worktree |
| Reminder summary | Active reminder count and nearest scheduled time in Session hover details | @deepseek-ai/dsh-ui-schedule-summary |
| Session export | Per-Session ZIP export from the Trajectory toolbar and /export | @deepseek-ai/dsh-session-log-export |
| Providers and models | Configurable adapter, credential/settings UI, live catalog, and multimodal labels | Existing Harness plugins plus the Pilot Harness desktop profile |
The provider/model experience is deliberately a profile composition, not a new provider implementation. It mounts existing adapter, Settings, and Credentials contracts, then replaces the desktop placeholder only after a real provider advertises a usable model.
Use the plugins independently
The desktop client already includes every plugin below. If you use a local DeepSeek Harness Web profile instead, install only the feature you want with one command; each release asset is a prebuilt dsh.bundle, so no repository clone, YAML patch, or local build is required.
CodePilot theme
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-client-ui-codepilot-theme-0.1.0-rc.5.tgz
Applies the Pilot Harness visual system and product mark. Removing the plugin restores the stock Harness presentation. See theme details.
Files sidebar
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-ui-worktree-0.1.0-rc.5.tgz
Adds the Workspace-confined right file sidebar, file count, branch summary, row actions, and @path insertion. See Files plugin details.
Reminder summary
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-ui-schedule-summary-0.1.0-rc.5.tgz
Adds active-reminder metadata to Session hover details while the upstream Schedule plugin remains the reminder authority. See reminder plugin details.
Session-log export
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-session-log-export-0.1.0-rc.7.tgz
Adds per-Session ZIP export to the Trajectory toolbar and the /export command. See export plugin details.
Restart the Web profile after installation and use dsh --profile web --dump-config to confirm the added row. Files and Reminder summary require the Pilot Harness UI slot contracts included in Pilot Harness v0.1.0; older upstream Harness builds can install their bundles but cannot render those two UI contributions.
Remove a plugin with the same package name shown in its details page, for example:
dsh plugin --profile web remove @deepseek-ai/dsh-ui-worktree
Development
git clone https://github.com/op7418/pilot-harness.git
cd pilot-harness
pnpm install
pnpm run desktop:dev
Run the desktop checks with:
pnpm run desktop:test
pnpm --filter @deepseek-ai/dsh-desktop run typecheck
pnpm --filter @deepseek-ai/dsh-desktop run test:e2e
Official installers are never built or uploaded from a developer machine. Every verified push to main, and a manual workflow dispatch without a release tag, produces seven-day Actions preview artifacts on native macOS, Windows, and Linux runners. A version-matched v* tag starts the formal path, verifies the platform artifacts and macOS Developer ID signature, generates SHA256SUMS.txt, and publishes the GitHub Release.
The Sync DeepSeek Harness upstream workflow checks the newest non-draft official release every day at 09:00 Asia/Shanghai. A clean update is merged without force-pushing, verified, committed to main, and dispatched to the same native release pipeline as v<upstream-version>-pilot.1. A merge conflict opens or refreshes a GitHub Issue and stops before changing main; missing macOS signing secrets also open an issue and leave the verified source synchronized without publishing an unsigned release. Rerunning the workflow after resolving either condition resumes the pending release.
For the underlying system, read the DeepSeek Harness architecture, development guide, and desktop architecture.
Upstream, attribution, and trademark notice
Pilot Harness is an independent community project derived from the MIT-licensed DeepSeek Harness and visually inspired by CodePilot. It is not an official DeepSeek product and is not endorsed by or affiliated with DeepSeek. “DeepSeek”, “DeepSeek Harness”, and “CodePilot” remain the property of their respective owners.
License
Pilot Harness is available under the MIT License. Third-party software and licenses are listed in THIRD_PARTY_NOTICES.md.
收录徽章
[](https://deepseek-plugin.org/plugins/op7418/pilot-harness/packages/client/ui-codepilot-theme)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。