deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:gluztm/DSHGuard
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
简体中文 | English
给 DeepSeek Harness(DSH)网页引擎配的一个 Windows 桌面"守护壳":改动前自动存档、出事一键回滚,上游破坏性更新或插件改坏配置都能退回原样;本地就能寻找、安装、管理插件,不需要另装插件市场;引擎一键启动与停止,日志随时可看、还能导出诊断——全程图形界面,不需要命令行。
它面向不熟悉命令行的用户:安装后双击启动,点按钮即可运行引擎;出现故障、卡顿或插件状态异常时,也能在同一个窗口里查看和处理。



我长期使用 DSH,把日常反复遇到的不便一条条记下来,最终做成这样一个一键管理式启动器。下面列出的就是当初要解决的问题,每一条在后面的功能章节里都能找到对应做法:
| 反复遇到的不便 | 守护壳里的对应做法 |
|---|---|
| 装了新插件或改了配置之后出了问题,没有还原点可退 | 快照页的改动前自动存档与一键回滚,出事就退回上一次正常的状态,参见快照页 |
| 装了一堆插件,说不清谁在启用、谁被关掉、谁该升级;想装新的又没有可浏览的入口 | 插件页的本地清单与社区收录,寻找、安装、管理都在本机完成,不需要另装插件市场,参见插件页 |
| 引擎起不来时没有任何现场,不知道去哪看日志 | 日志页的实时输出、历史日志与「导出诊断」,参见日志页 |
| 引擎按上游标签安装,上游一发破坏性更新,跑起来的就是另一个版本 | 版本记忆锁住现在这个版本,配合快照回滚,参见设置页 |
| 每次都要在终端里敲命令启动引擎,还要自己找端口、自己开页面 | 状态页的「一键启动引擎」,参见状态页 |
设计原则是只做看护,不做接管:守护壳是独立程序,和 DSH 引擎是两回事。引擎原本由外部启动,守护壳只负责启动与监测,并在需要时处理现场。
左侧是导航栏,共六个页面(状态、日志、快照、插件、设置、说明),最下方是「退出UI」;右栏常驻三块信息:服务控制(当前可用的引擎操作)、DSH 版本(正在用的版本与最新版)、事件信息(最近发生了什么)。界面为全中文,标题栏右侧可切换日夜配色。

| 页面 | 管什么 |
|---|---|
| 状态 | 引擎在不在跑、跑的是哪个端口、最近输出与事件;右栏是一键启动与终止 |
| 日志 | 本次会话的实时输出、历史日志、导出诊断与复制日志 |
| 快照 | 改动前存档,随时按项或整组回滚 |
| 插件 | 「寻找插件」逛社区收录并安装;「本地插件」启停、更新、卸载 |
| 设置 | 常规(开关与端口)、路径(各种目录)、版本(升级与回退) |
| 说明 | 应用内说明与常见问题 |
它解决什么痛:引擎原本要在终端里手动拉起,端口是不是对的、进程还活着没有,全靠自己确认。
具体能做什么

启动过程中进度条持续推进;即使引擎卡在某一阶段不动,进度也会缓慢向前爬,不会停在原地让人以为程序已经死了。
注意点
它解决什么痛:引擎起不来时,窗口一闪就没了,用户手里没有任何现场,更不知道该把什么交给维护者。
具体能做什么
日志文件的分工与「出问题怎么办」,见下文日志与诊断。
注意点
它解决什么痛:改插件清单或配置之后出问题,没有还原点,只能手工比对、逐步试错。
具体能做什么
注意点
插件页顶部有两个页签,默认停在「本地插件」。
它解决什么痛:插件一多,谁在启用、谁被关掉、谁有新版本、谁跟当前引擎版本合不来,全靠回忆。
具体能做什么
↑ / ↓。xxxx年xx月xx日。注意点
它解决什么痛:想装插件时没有可浏览的入口,只能靠别人给的包名去猜。
具体能做什么

注意点
它解决什么痛:开机要不要自动跑起来、引擎就绪后浏览器要不要自己开、端口撞车了往哪改,这些零碎开关原本散落在各处,没有统一入口。
具体能做什么

它解决什么痛:日志、快照、缓存、引擎配置分散在不同位置,要找的时候不知道去哪翻,想挪个地方也没有手段。
具体能做什么

注意点
它解决什么痛:引擎按上游标签安装,标签一动,跑起来的就是另一个版本,行为跟着变。
具体能做什么

注意点
应用内帮助:这是什么、怎么用、常见问题与当前版本号,都在这一页里,不需要另找文档。

DSHGuard-Setup-<版本>.exe。不需要自行准备 Node.js,也不需要敲任何命令——安装向导会检查运行环境,缺失时会给出提示,并可以代为安装(用户级、免管理员)。
需要 .NET 10 SDK(Windows 10/11 64 位)。在仓库根目录执行一条命令即可:
dotnet publish -c Release
产物是单文件、自带运行时,双击就能用:
bin\Release\net10.0-windows\win-x64\publish\DSHGuard.exe
单文件、自包含、带压缩等发布参数都已经写在 DSHGuard.csproj 里,命令行不需要再传。想跑一遍自检或者打成安装包,见下面的「想提交贡献?」。
用现成安装包的话,这些都不用手动准备;自己编译才需要 .NET 10 SDK。
界面语言:程序界面目前只有中文,没有多语言支持,系统的显示语言不影响界面文字。需要英文界面的话,欢迎到本仓库提交 Issue 提出,或直接提交改动参与贡献;需求较多时会补上英文界面。文档另有英文入口,见 README.en.md。
DSHGuard-Setup-<版本>.exe。引擎已经在别处跑着时,守护壳会识别出来,不会重复启动,也不会抢端口。
程序目录下会有这几样(都可以在「设置 → 路径」里改):
| 目录 | 内容 |
|---|---|
Config |
守护壳自己的设置与版本记忆 |
Cache |
插件包与截图缓存,删掉不影响使用(下次用到会重新下载) |
Logs |
日志(见下一节) |
Snapshots |
快照存档 |
Tools |
辅助脚本(例如安装 Node.js 用到的脚本) |
Config 目录下的 plugin-times.json 是守护壳自己的本地记账:记的是每个插件的安装时间与本机的更新日期,只在本机使用、不会对外发送,也可以随时删除。它从 1.3 开始记录,此前已装的插件显示为「未知」;卸载后重装则记最近一次。
守护壳以只读为主,不改 DSH 自己的配置目录(%USERPROFILE%\.dsh):引擎的配置、插件与会话数据都在那边,卸载时也一律不碰。
只有下面三种「发现明显损坏、且不动就会卡住」的情况,它才会在先备份之后动手,并在窗口的「事件信息」里说明改了什么:
| 情形 | 动作 |
|---|---|
补丁层配置文件(cordis.patch.yml)语法不合法、引擎会整份忽略它 |
备份后修正结构 |
| 插件清单里的包名写法有误(引擎会认不出该插件) | 备份后修正该条 |
| 本程序上次留下的组件联接已失效,会让引擎拒绝启动 | 删除这些由本程序创建的联接 |
任何其它情况下,它都不会写入或删除 %USERPROFILE%\.dsh 里的内容;「回滚快照」这种会覆盖配置的动作,也必须由用户明确点击才会执行。
Logs 目录下有两类文件,分工明确:
异常-<日期>-<时间>.log:只记异常。例如界面卡住超过若干秒、某个对话框长时间未关闭、启动失败。日常操作不会出现在这里。启动-<日期>-<时间>.log:只在启动失败时留下。留下时写清这一次用的工作目录、版本、命令行、预检结果、失败原因与引擎输出尾部——"为什么没起来"的答案基本都在这里。引擎起来(端口就绪)就没这份文件,连"第一次尝试失败、自动重试成功"的也一并撤掉:成功启动不留日志。出问题时的推荐动作:日志页 → 导出诊断,得到一个压缩包,里面是上述日志、配置与一份运行环境摘要;把它发给维护者即可。
运行卸载程序(开始菜单的「卸载 DSH 守护壳」,或系统「设置 → 应用」)后:
引擎起不来怎么办?
先看 Logs 里最新那份启动日志(引擎没起来才会有它):里面记了这一次的版本、工作目录、引擎输出的尾部。多数情况是网络不通(首次需要下载引擎)或 npm 缓存损坏——后者删掉 Cache 目录再试即可。引擎能正常启动时不会有这份日志,也不该有。
第一次点「一键启动」特别慢?
首次需要下载并缓存引擎,之后启动会快很多。
端口被别的程序占了?
在「设置 → 常规」把端口换掉;守护壳只在启动前检查,不会去抢别人的端口。
「退出UI」和「终止引擎」有什么区别?
「退出UI」只退出守护壳,引擎继续运行;「终止引擎」会真的结束引擎进程,仅在引擎正托管守护壳本身、或上次没停干净需要强杀时,才先弹窗确认一次。
安装某个插件失败?
若失败只出现在某一个插件上,多半是该插件来自 Git 仓库,而本机尚未安装 Git:这类插件在安装时由系统的 Git 取回内容,缺少 Git 便会失败。装好 Git 后重新安装即可;失败的具体原因可在日志页查看。
装了新插件没生效?
重启一次引擎即可;卸载插件前建议先停止引擎。
界面偶尔卡顿,或拖动窗口时响应迟滞?
这是分层窗口(毛玻璃)合成的老问题。程序在切换主题或毛玻璃后会主动要求系统重画一次;真的卡住超过 5 秒,会记进异常日志,方便定位。老机器可以在「设置 → 常规」把毛玻璃背景关掉。
遇到问题或有改进想法,欢迎提交 Issue 或 Pull Request;文档纠错、使用体验上的建议同样欢迎,不一定非要写代码。
如果这个工具对你有帮助,欢迎点一个 Star —— 那是对作者最直接的鼓励,也能让更多需要它的人看到这个项目。
# 发布单文件(产物:bin\Release\net10.0-windows\win-x64\publish\DSHGuard.exe)
dotnet publish -c Release
# 编译
dotnet build -c Release
# 自检(不显示窗口、不访问引擎、不写配置;退出码 0 = 全部通过)
bin\Release\net10.0-windows\win-x64\DSHGuard.exe --selftest
# 打包安装程序(产物在 dist\)
powershell -ExecutionPolicy Bypass -File installer\build-installer.ps1
源码结构(主要文件):
| 文件 | 职责 |
|---|---|
App.xaml.cs |
程序入口、单实例、模式分发(--selftest / --shot / --uninstall) |
MainWindow.*.cs |
主窗口与各页面(状态、日志、快照、插件、设置、说明) |
ProcessManager.cs |
引擎进程的启动、追踪与终止(工作目录、端口归属判定) |
VersionMemory.cs |
版本记忆:固定版本、回退候选与近期性判断 |
GuardDialog.cs |
统一样式的对话框(非模态,避免"点不动"的假卡死) |
Logger.cs / ProcessEnv.cs |
日志分流与环境自净(临时目录归一) |
ProfileReset.cs |
一键重置:把出问题的配置文件整体搬走并留备份 |
SelfTest.cs |
自带冒烟自检(数百条断言,覆盖上面这些模块) |
installer\DSHGuard.iss |
安装包与卸载程序的全部界面与逻辑 |
自检是这套程序的验收基线:任何改动之后都应当 --selftest 全绿再打包。
本项目采用 MIT 许可证,全文见仓库根目录的 LICENSE。
Copyright (c) 2026 DSHGuard contributors
你可以自由使用、修改、分发,包括商业用途,只需保留版权与许可声明。软件按"现状"提供,不附带任何担保。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。