DeepSeek Harness Hub
← 返回列表

naturalth2012/dsh-wpf-port

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

一个用于 deepseek-harness 的原生 Windows 桌面客户端C+ WPF。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/5 · 已提供中文文档

用于 DeepSeek harness 的 Windows 桌面客户端(C#/WPF)——用于在本地运行 deepseek-harness 的原生 UI。

综合分
29.3
GitHub 分
29.3
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add naturalth2012/dsh-wpf-port
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-wpf-port

English · 中文

English

这是什么?

一个用于 deepseek-harness 的原生 Windows 桌面客户端(C# + WPF)。

它复刻了 Web 客户端(apps/web + packages/client)面向用户的功能,并增加了 Windows 原生增强功能。后端——LLM 调用、工具、会话逻辑——通过 packages/host 的环回 HTTP/WebSocket 网关原样复用。只有传输载体和 UI 层用 C# 重新实现。

⚠️ 状态:alpha。 功能可用,但尚未达到生产就绪。参见已知限制。

⚠️ 与 DeepSeek 无关联。 这是一个独立的、由社区维护的客户端。它并非 Web 客户端的完整替代品——参见与 Web 客户端的关系。

与 Web 客户端的关系

WPF 客户端覆盖了 Web 客户端的大部分面向用户的功能,并在 Windows 原生交互方面更强(目录选择、文件打开、DPI 感知、多窗口、系统托盘、离线查看)。

它并非 100% 等价。Canvas 时间线交互、Todo/Queue 停靠栏写操作、Viewer 集成与增强渲染(L2–L4)、托盘气泡通知,以及字体/双向文本布局适配仍然缺失或为只读,还有少数项目因缺少上游 RPC 而受阻。

功能特性

- 传输 —— 双下游 WebSocket 流(事件流 + RPC 响应流),具备重连代际语义
- 会话 —— 工作区→会话树、分支切换、增量 upsert、悬停卡片、拖拽重排序
- 聊天 —— 完整对话循环、流式渲染、压缩 / 重试行、丰富的统计行
- 协作 —— 提示词、审批、Jobs-Queue 面板、重连回放;通过 settings.mutate 配合 CAS 重试实现 Plan 和权限标签
- 配置 —— 设置页面、模型选择、凭据管理、模型发现
- 子代理 —— 目录树,支持只读 / 继续模式
- 后台任务 —— 任务面板
- 可视化 —— 轨迹时间线、产物、反馈、复制
- 本地存储查看器(Dsh.Viewer) —— 离线浏览本地 .jsonl/.zstd 会话数据(L0–L4:树形浏览、丰富的 Markdown/工具渲染、会话内搜索、统计、Markdown/JSONL 导出、6 语言 UI)
- Windows 原生 —— 多窗口、系统托盘、全局热键、置顶、窄窗口响应式布局、深色标题栏、自动滚动
- 离线回放 —— 当网关不可达时读回缓存的会话历史
- 零配置后端 —— 将客户端指向一个 deepseek-harness 检出目录(或设置 DSH_HARNESS_DIR),它会自动安装依赖、构建 Web 包、启动 pnpm dsh web 并连接——无需手动配置后端
- 国际化 —— 6 种语言(English、中文、日本語、Deutsch、Français、Español)

要求

| | |
|---|---|
| 操作系统 | Windows(Dsh.Wpf 和 Dsh.Viewer 目标框架为 net8.0-windows;它们需要 WPF 和 WebView2) |
| SDK | .NET 8 SDK 并带有 Windows 桌面工作负载 |
| 外部依赖 | 本地 deepseek-harness 检出目录 —— 未随本仓库捆绑 |
| 可选 | Node.js + pnpm(客户端在首次启动时会运行 pnpm install + pnpm run build 来构建 Web 包) |

快速开始

dotnet build dsh-wpf-port.slnx      # 构建
dotnet run --project Dsh.Wpf        # 运行桌面客户端
dotnet run --project Dsh.Viewer     # 运行本地存储查看器

测试 —— 逐个显式运行每个测试项目
dotnet test Dsh.Contract.Tests/Dsh.Contract.Tests.csproj
dotnet test Dsh.App.Tests/Dsh.App.Tests.csproj
dotnet test Dsh.Viewer.Tests/Dsh.Viewer.Tests.csproj

首次启动时,在 Service 面板中选择你的 deepseek-harness 目录。或者设置 DSH_HARNESS_DIR 环境变量;客户端也会探测 ~/deepseek-harness 和 ~/dsh/deepseek-harness。

后端自动配置。 客户端需要一个正在运行的 deepseek-harness 主机。首次启动时,它会检测到一个全新的检出目录(缺少 apps/web/dist),运行 pnpm install + pnpm run build,在 http://127.0.0.1:3080 上启动 pnpm dsh web,轮询直到网关响应,然后自动连接。你只需选择一次目录。

注意:dotnet run 不会热重载。重新构建前请关闭正在运行的 Dsh.Wpf.exe,否则构建会因 MSB3027(DLL 被锁定)而失败。

注意:请按测试项目分别运行 dotnet test。dotnet test dsh-wpf-port.slnx 会将 Dsh.Wpf(一个非测试项目)拉入 VSTest 目标,并可能报告一个带有 0 errors / 0 warnings 的假失败。

项目结构

Dsh.Contract/   契约层 —— 纯 DTO(信封、错误码、方法注册表、帧、投影)
Dsh.Client/     传输层 —— WpfApiClient、代际、帧路由
Dsh.App/        应用层 —— 服务、投影仓库、交互协调器
Dsh.Wpf/        UI 层 —— WPF 视图和视图模型
Dsh.Viewer/     本地存储查看器(独立、只读)
os/             开发过程文档(中文)—— 见 os/README.md

测试

369 个测试通过(Dsh.App.Tests 218 + Dsh.Contract.Tests 95 + Dsh.Viewer.Tests 56)。

契约测试是针对真实线上数据夹具而非模拟对象编写的,因此上游协议变更能被及早发现。

已知限制

| 领域 | 状态 |
|---|---|
| 画布时间线交互(拖拽聚焦 / 滚轮缩放) | 坐标轴已绘制;交互层缺失 |
| TodoDock / QueueDock 写操作 | 只读(session.updateQueue 契约已存在,客户端未接入) |
| 查看器:主机-客户端集成(L2)、跨会话全局搜索、HTML/CSV 导出 | L0–L4 已完成并测试(树形浏览、富渲染、会话内搜索/统计、Markdown/JSONL 导出) |
| 托盘任务/审批气泡 | 未实现 |
| 日期/数字本地化、字体与双向布局 | 未实现 |
| 作业终止、凭据变更事件 | 被上游阻塞(缺少 RPC) |

完整列表见 os/17-landable-gap.md。

贡献

构建前置条件、代码约定、提交风格及 PR 流程见 CONTRIBUTING.md。

欢迎提交 Issue 和 PR。如果你打算认领限制列表中的较大条目,请先开一个 Issue,以免重复工作。

文档

- CONTRIBUTING.md —— 贡献指南
- CHANGELOG.md —— 变更日志与已知限制
- os/README.md —— 开发文档(中文)

许可证与上游关系

- 许可证:MIT
- 上游:本仓库不包含 deepseek-harness 源码(MIT,Copyright 2026 DeepSeek AI)。它仅在运行时调用你本地的检出目录。请自行获取该依赖;本仓库不再分发其代码。

中文

这是什么?

deepseek-harness 的 Windows 原生桌面客户端(C# + WPF)。

它覆盖 Web 客户端(apps/web + packages/client)的面向用户功能,并增加 Windows 原生增强。后端(LLM 调用、工具、会话逻辑)通过 packages/host 的 loopback HTTP/WebSocket 网关原样复用,仅用 C# 重写通信 carrier 与 UI 层。

⚠️ 状态:alpha。 功能完整度较高但未达生产就绪,见已知限制。

⚠️ 非 DeepSeek 官方项目。 这是独立维护的社区客户端,且不是 Web 客户端的完全替代,见与 Web 客户端的关系。

与 Web 客户端的关系

WPF 客户端覆盖 Web 客户端的绝大部分面向用户功能,并在 Windows 原生交互(目录选择、文件打开、DPI 感知、多窗口、系统托盘、离线查看)上更强。

但并非 100% 等价:Canvas 时间轴交互、Todo/Queue Dock 写操作、查看器融合与增强(L2–L4)、托盘 balloon、字体与 bidi 排版适配仍为只读或未实现,另有少量项因上游缺失 RPC 而阻塞。

功能特性

- 传输 —— 双下行 WebSocket 流(事件流 + RPC 响应流),含重连世代语义
- 会话 —— workspace→session 树、分支切换、增量 upsert、悬停卡、拖拽排序
- 对话 —— 完整对话闭环、流式渲染、compaction / retry 行、富样式状态行
- 协作 —— 提问、审批、Jobs-Queue 面板、重连回放;Plan 与权限芯片走 settings.mutate + CAS 重试
- 配置 —— 设置页、模型选择、凭据管理、模型发现
- 子代理 —— 目录树,支持只读 / 续写模式
- 后台作业 —— 作业面板
- 可视化 —— 轨迹时间轴、产物、反馈、复制
- 本地存储查看器(Dsh.Viewer) —— 离线浏览本地 .jsonl/.zstd 会话数据(L0–L4 已交付并测试:树形浏览、富 Markdown/工具渲染、会话内检索、统计、Markdown/JSONL 导出、6 语言 UI)
- Windows 原生 —— 多窗口、系统托盘、全局热键、窗口置顶、窄屏响应式、深色标题栏、自动滚动
- 离线回放 —— 网关不可达时回读缓存的会话历史
- 零配置后端 —— 指定 deepseek-harness 检出目录(或设置 DSH_HARNESS_DIR),客户端自动安装依赖、构建 web bundle、启动 pnpm dsh web 并连接,无需手动搭建后端
- 国际化 —— 6 种语言(英、中、日、德、法、西)

环境要求

| | |
|---|---|
| 操作系统 | Windows(Dsh.Wpf 与 Dsh.Viewer 目标框架为 net8.0-windows,依赖 WPF 与 WebView2) |
| SDK | .NET 8 SDK,含 Windows 桌面工作负载 |
| 外部依赖 | 本地 deepseek-harness 检出目录 —— 本仓库不包含 |
| 可选 | Node.js + pnpm(首次启动时客户端会为 web bundle 执行 pnpm install + pnpm run build) |

快速开始

dotnet build dsh-wpf-port.slnx      # 构建
dotnet run --project Dsh.Wpf        # 运行桌面客户端
dotnet run --project Dsh.Viewer     # 运行本地存储查看器

测试 —— 按测试项目逐个运行
dotnet test Dsh.Contract.Tests/Dsh.Contract.Tests.csproj
dotnet test Dsh.App.Tests/Dsh.App.Tests.csproj
dotnet test Dsh.Viewer.Tests/Dsh.Viewer.Tests.csproj
首次运行时在「服务」面板中选择 deepseek-harness 目录。也可设置 DSH_HARNESS_DIR 环境变量;客户端还会探测 ~/deepseek-harness 与 ~/dsh/deepseek-harness。

后端自动初始化。 客户端需要一个运行中的 deepseek-harness 宿主。首次启动时会检测全新检出(缺少 apps/web/dist),自动执行 pnpm install + pnpm run build,在 http://127.0.0.1:3080 启动 pnpm dsh web,轮询直至网关响应后自动连接。你只需指定一次目录。

注意:dotnet run 不会热重载。重新构建前请先关闭正在运行的 Dsh.Wpf.exe,否则会因 DLL 被锁定而构建失败(MSB3027)。

注意:dotnet test 请按测试项目逐个运行。dotnet test dsh-wpf-port.slnx 会把非测试项目 Dsh.Wpf 拉进 VSTest 目标,在部分环境下以「0 错误 / 0 警告」误报失败。

项目结构

Dsh.Contract/   契约层 —— 纯 DTO(信封、错误码、方法注册表、帧、投影)
Dsh.Client/     通信层 —— WpfApiClient、世代、帧路由
Dsh.App/        应用层 —— 服务、投影仓库、交互协调器
Dsh.Wpf/        UI 层 —— WPF 视图与视图模型
Dsh.Viewer/     本地存储查看器(独立只读模块)
os/             开发过程文档(中文)—— 见 os/README.md

测试

369 个用例通过(Dsh.App.Tests 218 + Dsh.Contract.Tests 95 + Dsh.Viewer.Tests 56)。

契约测试基于真实 wire fixture 而非 mock,因此能及时捕获上游协议变更。

已知限制

| 项目 | 状态 |
|---|---|
| Canvas 时间轴交互(拖拽聚焦 / 滚轮缩放) | 轴已自绘,缺交互层 |
| TodoDock / QueueDock 写操作 | 只读(session.updateQueue 契约已就绪,客户端未接线) |
| 查看器融合(L2)、跨会话全局检索、HTML/CSV 导出 | L0–L4 已完成并测试(树形浏览、富渲染、会话内检索/统计、Markdown/JSONL 导出) |
| 托盘作业/审批 balloon | 未实现 |
| 日期数字本地化、字体与 bidi 排版 | 未实现 |
| 作业 kill、凭据变更事件 | 被上游阻塞(缺失 RPC) |

完整清单见 os/17-landable-gap.md。

参与贡献

构建前提、代码规范、提交约定与 PR 流程见 CONTRIBUTING.md。

欢迎提交 issue 与 PR。若打算认领限制清单中的较大条目,请先开 issue 说明思路,避免重复劳动。

文档

- CONTRIBUTING.md —— 贡献指南
- CHANGELOG.md —— 变更日志与已知限制
- os/README.md —— 开发文档(中文)

许可证与上游关系

- 许可证:MIT
- 上游依赖:本仓库不包含 deepseek-harness 源码(MIT,Copyright 2026 DeepSeek AI),仅在运行时调用你本地的检出目录。请自行获取该依赖,本仓库不分发其代码。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群