# deepseek-harness-desktop

> 为 dsh Web GUI 提供 Windows XP Luna 复古皮肤，含蓝色窗口条、绿色开始按钮与 Bliss 蓝天桌面，支持 Zune 暗色变体。

## Metadata

- Author: [@ningbainb](https://github.com/ningbainb)
- Repo: <https://github.com/ningbainb/deepseek-harness-desktop.git>
- GitHub: [ningbainb/deepseek-harness-desktop](https://github.com/ningbainb/deepseek-harness-desktop)
- Stars: 156
- Language: TypeScript
- License: [BSD-3-Clause](https://spdx.org/licenses/BSD-3-Clause.html)
- Homepage: <https://ningbainb.github.io/deepseek-harness-desktop/>
- Topics: `ai-agent`, `ai-coding-assistant`, `codex`, `deepseek`, `deepseek-harness`, `desktop-app`, `dsh`, `dsh-plugin`, `electron`, `electron-app`, `gui`, `open-source`, `plugin-system`, `plugins`, `remote-access`, `skills`, `ssh-client`, `windows`, `windows-desktop`
- Forks: 5
- Open Issues: 6
- Last push: 2026-08-20T05:29:52.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/skins/xp
```

## Wiki

## 一句话定位
把 dsh Web GUI 的外观整体换成 Windows XP Luna 蓝复古风，呈现蓝色渐变窗口条、绿色开始按钮、Bliss 蓝天桌面与米色状态栏。纯客户端皮肤，不影响任何模型或数据行为。

## 核心能力
- 渲染固定的 Luna 蓝标题栏，带四色旗标图标和最小化/最大化/关闭按钮
- 渲染底部米色状态栏，含「就绪 / DeepSeek 在线」与凹陷的 CAPS/NUM/SCRL 指示灯
- 在侧边栏底部任务栏条上插入绿色「开始」按钮，点击打开设置对话框
- 覆盖侧边栏、资源管理器树行、设置面板、对话区等面板表面，配色与直角全局生效
- 自动切换浅色 Luna 与深色 Zune 两套调色板，跟随 DSH 主体的明暗主题
- 注入四色旗标 favicon，固定文档标题为「Windows XP · DeepSeek 在线」

## 技术实现
- **语言**: TypeScript
- **关键依赖**: `@deepseek-ai/cordis`（类型来源）、CSS Modules（lightningcss 编译进 bundle）
- **架构模式**: 客户端 bundle 插件，通过 `cordis.patch.yml` 在 web GUI 插件名册中插入 `ui-skin-xp` 条目；运行时仅写 DOM（body 属性、固定栏、按钮、favicon、document.title），由 `ctx.effect` 注册 disposer 在卸载时全部回滚
- **入口文件**: `src/index.ts`（host 半区空实现）+ `src/client/index.ts`（浏览器半区主逻辑）

## 适用场景
想让日常使用的 dsh Web 界面回到 Windows XP 时代怀旧外观的人，比如喜欢 Luna 蓝渐变和绿色开始按钮带来的视觉习惯、或想给客户演示一种复古桌面观感时。皮肤只换壳，不影响模型调用与会话数据，所以也适合想要换个心情又不想换工具的用户。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH Web GUI | 未声明 | 需启用 web profile；面板级表面需要 ui-layout 的 AppFrame 列携带 `data-pane` 属性 |
| Node | 未声明 | 包内未声明 engines |
| 平台 | 跨平台 | 仅运行在 Web 浏览器侧，host 半区为空实现 |
| 原生模块 | 无 | 纯前端 CSS/TS，无任何 node 原生依赖 |

## 安装方式
```bash
dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/skins/xp
```

## 配置项
本插件无需额外配置。安装后通过 `dsh-skin use xp` 激活；切换其他皮肤时再执行 `dsh-skin use <其他皮肤名或 default>`。

## 常见问题

**Q: 这个插件做什么？需要额外配置吗？**

A: 它把 dsh Web GUI 的外观换成一整套 Windows XP Luna 蓝风格，包括标题栏、状态栏、开始按钮、桌面背景等。装好后用 `dsh-skin use xp` 激活即可，不需要任何额外配置。

**Q: 能不能同时启用多个皮肤？**

A: 不能，同一时刻只激活一个皮肤。安装多个皮肤包后，由 `scripts/dsh-skin` 在 profile 层做互斥切换。

**Q: 开始按钮是真的开始菜单吗？**

A: 不是。点击开始按钮会把点击事件转发给侧边栏底部的设置入口，从而打开设置对话框，不承载真正的开始菜单。

**Q: 暗黑模式能用吗？**

A: 可以。当 DSH 主题切换到暗黑时，皮肤会自动切换到 Zune 风格的黑色变体，仍由 `data-ds-dark-theme` 属性驱动。

**Q: 加载启动页会被换肤吗？**

A: 启动页在外壳启动时先于插件 bundle 渲染，因此保持默认外观；皮肤只在 UI 稳定后接管，启动页内部卡片不会换成 Luna 风格。

**Q: 这个插件会影响模型请求或聊天记录吗？**

A: 不影响。它只改动浏览器 DOM（样式、属性、标题、favicon），不注入服务、不发送 cordis 事件、不触及任何 provider 请求。

**Q: 没有 data-pane 属性时还能用吗？**

A: 可以，窗口标题栏、状态栏、开始按钮、favicon 都能生效，只是面板专属的侧边栏标题带、资源管理器树行等表面样式因为缺 hook 而不会匹配。

**Q: 如何卸载？**

A: 从对应 profile 移除本插件（`dsh plugin --profile web remove ...`），并通过 `dsh-skin use <其他皮肤名或 default>` 切回其他外观即可，无需清理数据。

## 上手难度
入门 — 安装一行命令 + 一次激活，皮肤立即接管界面，不涉及任何配置或数据迁移。

## 已知问题与限制
- 加载页保持原样：外壳启动页在插件 bundle 存在之前就已渲染，皮肤从 UI 稳定后开始生效；属性一旦设置，启动页也会获得窗口边框，但其内部卡片仍保留现代风格
- 主题切换在皮肤内部：皮肤在两种 `data-ds-dark-theme` 状态下各自固定配色，切换外观主题只会翻转浅色 Luna / 深色 Zune 两套配色，不会回到非皮肤外观
- 「开始」按钮只打开设置：它把点击转发给侧边栏底部已有的设置入口，并不承载真正的开始菜单
- 四色旗标是平面近似：飘扬的 Windows 旗标以平面 2×2 旗标呈现（内联 SVG），并非真实的波浪形 Logo

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [deepseek-harness-desktop](https://deepseek-plugin.org/plugins/ningbainb/deepseek-harness-desktop/packages/skins/xp)
Wiki generated by AI (model: `MiniMax-M3`)
