DSH-Console
界面增强 活跃维护

DSH-Console

limbo947/DSH-Console

WPF开发的系统托盘工具,支持一键启停本地AI服务Web端,可实时监控服务运行状态,支持服务自启及开机自动启动,操作轻便无需额外配置。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
C#
主要语言
MIT
开源协议
188 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:limbo947/DSH-Console
git clone https://github.com/limbo947/DSH-Console.git
git clone git@github.com:limbo947/DSH-Console.git
README.md main

DSH-Console

DeepSeek Harness 本地服务控制 —— 一个现代轻量级的 WPF 桌面面板,用于启动、停止、监控本地的 DeepSeek Harnessdsh web)服务。

扁平化浅色/深色双主题 · 圆角卡片 · 类似系统托盘工具的竖版小面板

Releases
License

界面预览

停止态 运行态
停止态 运行态

功能特性

  • 服务生命周期管理:一键启动/停止(主按钮随状态机自动切换为深灰 ▶"启动服务" / 红色 ■"停止服务"),另有重启、打开链接
  • 真实进程管理:通过 cmd /c 拉起 npm 全局命令 dsh webtaskkill /T 连进程树一起停止,杜绝孤儿 node 进程
  • 智能端口:默认使用 dsh 的 3080 端口;启动前探测,被占用则自动回退到系统分配端口并在日志中提示
  • 状态可视化:绿点"运行中"/灰点"已停止"、真实 URL 与 PID、3 秒一次的健康探活(服务意外退出自动回到停止态)
  • 操作日志:可折叠的日志面板,实时转发 dsh 的 stdout/stderr(剥离 ANSI 颜色码),自动滚底
  • 三个偏好开关
    • 开机自启(写入 HKCU Run 键,免管理员权限)
    • 自动启动服务(应用打开后立即拉起 dsh)
    • 深色模式(语义色刷双调色板,切换即时生效并持久化)
    • 服务就绪后由 dsh web 自身自动打开浏览器,面板不再提供重复的打开开关
  • 窗口行为:无边框可拖拽、置顶开关(📍 蓝色指示)、打开时自动恢复上次关闭的位置(坐标失效时回退居中)、最小化隐藏到系统托盘(双击/右键菜单唤回,右键可直接启动/停止服务)

技术栈

说明
UI WPF + XAML,全部控件样式自绘,零第三方 UI 依赖
架构 MVVM(手写轻量 ObservableObject + RelayCommand,无 NuGet 依赖)
目标框架 .NET Framework 4.8(Windows 10/11 系统自带,免安装运行时)
托盘 WinForms NotifyIconUseWindowsForms

运行要求

  • Windows 10 1903+ / Windows 11(自带 .NET Framework 4.8 运行时)
  • 已全局安装 DeepSeek Harness CLI:npm i -g @deepseek/harnessdsh 需位于 PATH)

快速开始

# 开发运行(需 .NET 8+ SDK)
dotnet run

# 仅编译
dotnet build

# 发布单目录产物
dotnet publish -c Release

产物位于 bin\Debug\net48\DSH-Console.exe,可直接拷贝到任意 Windows 机器双击运行。

💡 需要开箱即用的版本?前往 Releases 页 下载最新 DSH-Console-vX.Y.Z.exe,双击即可运行。

项目结构

DSH-Console/
├── App.xaml(.cs)                  # 应用入口(StartupUri,勿手写 Main)
├── MainWindow.xaml(.cs)           # 面板界面;拖拽与托盘显隐等视图层职责
├── Mvvm/
│   ├── ObservableObject.cs        # INotifyPropertyChanged 基类
│   └── RelayCommand.cs            # 挂接 CommandManager 的命令实现
├── Services/
│   ├── DshProcessService.cs       # dsh web 进程管理(启动/停止/端口发现/输出转发)
│   ├── AppIconFactory.cs          # 鲸鱼几何离屏渲染为托盘图标(含原生句柄管理)
│   └── TrayIconService.cs         # NotifyIcon 封装(显隐/唤回/启停服务/退出)
├── Themes/
│   ├── LightTheme.xaml            # 浅色调色板(语义色刷)
│   └── DarkTheme.xaml             # 深色调色板(与浅色同名键一一对应)
├── ViewModels/
│   └── MainViewModel.cs           # 状态机、命令、注册表偏好、日志
└── tools/
    └── verify-dsh-wrap.ps1        # dsh 启动/停止路径的端到端验证脚本

端口与偏好存储

位置
服务端口 首选 3080(dsh 默认),占用时回退系统分配
开机自启 HKCU\Software\Microsoft\Windows\CurrentVersion\Run\DeepSeekHarness
自动启动服务 HKCU\Software\DeepSeekHarness\AutoLaunchService(DWORD)
深色模式 HKCU\Software\DeepSeekHarness\DarkMode(DWORD)
窗口位置 HKCU\Software\DeepSeekHarness\WindowLeft / WindowTop(DWORD)

兼容性与环境适配

关注点 处理方式
运行时 net48 为 Windows 10 1903+ / 11 自带,目标机器免安装
高 DPI app.manifest 声明 PerMonitorV2,不同缩放/跨屏拖动均清晰渲染
dsh 定位 无硬编码路径:应用目录 → PATH 逐级探测 dsh.cmd/.bat/.exe,未安装时启动报友好错误
端口冲突 启动前探测 3080,占用自动回退随机端口并在日志提示
权限 全部写 HKCU(无需管理员);服务仅绑 127.0.0.1,不触发防火墙弹窗
编码 子进程管道强制 UTF-8,不依赖系统代码页;日志剥离 ANSI 颜色码
字体 Microsoft YaHei UI / Segoe UI / Consolas 均为 Windows 内置

致谢

鲸鱼图标与 DeepSeek 字形取自 deepseek-ai/deepseek-harnesswebsite/public/wordmark.svg(MIT 许可)。