快速了解
它能做什么
一个为 DSH 桌面端提供主机桥接,并替换上游 Web 服务器配置的 DSH Bundle。
本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。
桌面端 Profile
Not declared in supplied evidence
证据已验证
核对日期 2026/9/10 UTC 14:18
有代码证据的贡献
它为 DSH 增加什么
用面向桌面的主机桥接与 Web 服务器配置替换上游 Web 服务器条目。
机制证据 ↗选择前先看
这是 Swift Native Shell 项目中的私有 DSH Bundle。其补丁会禁用 @deepseek-ai/dsh-host-webserver,再加入仅本机监听的桌面 Web 服务器与 dsh-desktop-host 桥接插件。该包导出客户端、Web 服务器、浏览器路由、LAN 路由、入口、会话代理、控制和访问状态模块。
适合谁
采用 Swift Native Shell 架构、需要其内置桌面桥接能力的 DSH Desktop 集成者。
常见任务
- 为 DSH Profile 配置桌面主机桥接插件。
- 通过 DSH_DESKTOP_PORT 配置本机桌面 Web 服务器端口。
- 提供桌面壳客户端与服务边界使用的桥接模块。
权限与数据
提供的补丁配置本机 Web 服务器,且清单会向 Web 客户端注入主题、会话和语言区域信息。
权限- 将 Web 服务器绑定到 127.0.0.1。
- 通过 DSH 客户端注入访问主题、会话和语言区域信息。
- 提供的包清单和补丁未声明数据保留、遥测或向外部传输数据的策略。
- 依赖 @deepseek-ai/dsh-host-webserver 对等依赖。
- 提供的证据未声明凭据要求。
局限
- 未找到 0.1.0 版本的 npm 分发包。
- 未捕获安装脚本。
- 未声明 Harness 版本范围。
- 该 Bundle 面向桌面桥接配置,不是通用 Web 服务器替代品。
DSHub 已核对
- 包清单与 DSH Bundle 补丁已在固定源提交中通过结构验证。
- 补丁会禁用上游 Web 服务器条目,并插入 desktop-webserver 和 desktop-host。
- 已验证不可变 Git Bundle 分发路径。
DSHub 未核对
- 尚未执行安装或运行时行为验证。
- 尚未验证与特定 DSH Harness 版本的兼容性。
- 尚未独立验证各导出模块的实际运行行为。
固定版本安装
安装 DSH Desktop Host Bridge
这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。
维护者原文
项目 README
DSH Swift Native Shell 是 DSH Desktop 的独立 Swift 原生 macOS 实现。它负责窗口、菜单、设置页、运行时生命周期和桌面系统集成,核心 DSH Web UI 仍由官方 @deepseek-ai/dsh 运行时提供。
本项目是一个独立的 Xcode 工程,不依赖 Electron 仓库,也不需要通过 npm install 或 npm ci 准备应用构建依赖。
[!IMPORTANT] 这是非官方社区项目,当前为预发布版本。macOS 构建默认使用本地自签名证书签名(无证书时可用
DSH_CODESIGN_IDENTITY=-回退 ad-hoc),尚未接入 Developer ID 和 notarization。首次打开如遇系统拦截,请右键选择“打开”,或前往“系统设置 → 隐私与安全性”放行。
下载
当前 Swift 原生版安装包发布在 DSH Desktop Releases。
| 平台 | 架构 | 安装包 | 下载 |
|---|---|---|---|
| macOS | Apple Silicon | DMG | 下载 arm64 |
界面预览
主界面
<p align="center"> <img alt="DSH Swift 主界面" src="assets/主界面.png" /> </p>独立设置中心
设置窗口采用接近 macOS 系统设置的布局,支持通用设置、版本管理、插件管理和关于页面。
<h4 align="center">通用设置</h4> <p align="center"> <img alt="DSH Swift 通用设置" src="assets/通用设置.png" /> </p><h4 align="center">版本管理</h4> <p align="center"> <img alt="DSH Swift 版本管理" src="assets/版本管理.png" /> </p><h4 align="center">插件管理</h4> <p align="center"> <img alt="DSH Swift 插件管理" src="assets/插件管理.png" /> </p>主要特性
- 原生 macOS 窗口体验:使用 AppKit 管理主窗口、交通灯、Dock 恢复、窗口拖拽、双击标题栏和独立设置窗口。
- SwiftUI 设置中心:提供通用、版本、插件和关于页面,界面跟随系统深浅色模式。
- DSH 运行时管理:应用包只内置 Node.js 和 pnpm,首次启动时从 npm Registry 下载并安装 DSH 运行时。
- DSH Runtime 更新:首次启动和后续更新均从 npm Registry 获取 DSH 插件族;更新先安装 candidate,完成 Node/control、Renderer HTTP、匿名拒绝、Browser/LAN 边界和 Web UI 验证后才确认,失败时恢复完整的 Runtime 与当前 Profile 快照,并暂时抑制失败版本。
- 插件管理:支持当前 DSH Profile 插件的安装、更新、卸载和服务重启,桥接插件随应用内置。
- 桌面通知:支持 DSH 任务完成通知,并可从通知恢复应用窗口。
- Sparkle 更新:Swift 应用包使用 Sparkle 提供检查更新和签名更新;应用版本与 DSH npm 运行时版本彼此独立。
- Apple Silicon 构建:应用、内置 Node.js 和 DMG 均为 arm64 架构。
运行架构
DSH Swift Native Shell
├── AppKit / SwiftUI / WKWebView
│ ├── 主窗口、菜单和 macOS 系统交互
│ └── 设置与关于窗口
│
├── DSH Service
│ ├── 应用内置 Node.js
│ ├── 应用内置 pnpm
│ └── 从 npm 安装的 DSH 运行时
│
├── Desktop Host Bridge
│ └── 当前 Profile 的桥接插件
│
└── Sparkle
└── Swift 应用包更新
构建
环境要求
- macOS 26 或更高版本
- 支持 Swift 5.9 的 Xcode
- 构建时可访问 Swift Package Manager、Node.js 和 npm Registry
构建应用与 DMG
在仓库根目录执行:
bash scripts/build-app.sh
bash scripts/package-dmg.sh
默认构建并打包 Apple Silicon(arm64)版本:
DSH_BUILD_ARCH=arm64 bash scripts/build-app.sh
DSH_BUILD_ARCH=arm64 bash scripts/package-dmg.sh
应用包和 DMG 默认输出到 dist/。如需指定输出目录:
SWIFT_DIST_DIR=/path/to/output bash scripts/build-app.sh
SWIFT_DIST_DIR=/path/to/output bash scripts/package-dmg.sh
构建脚本会自动准备对应架构的 Node.js,并下载、校验固定版本的 pnpm CLI。assets/node/ 和 assets/bin/pnpm-pkg/ 是构建时生成的缓存,已通过 .gitignore 排除,不需要提交。
Xcode 工程是标准构建入口;Package.swift 仅作为辅助 Swift Package 清单保留。若要获得完整的资源准备和分架构产物,请使用 scripts/ 下的脚本。
默认用本地自签名证书(DSH Local Dev)对应用包签名,使 macOS 的 TCC 授权(如屏幕录制)在替换新包后仍保持有效;首次构建前可运行 bash scripts/setup-local-codesign-cert.sh 生成并导入该证书,或通过 DSH_CODESIGN_IDENTITY=- 回退到 ad-hoc 签名。
测试
测试包括源码/工程配置检查与动态 Swift harness;需要 Node.js、macOS 和 Xcode 命令行工具,不需要安装 npm 依赖:
npm test
开发工作流
- 一次完成本地 arm64 构建、打包、校验及 SHA-256:
bash scripts/release-local.sh arm64;加--dry-run只查看流程。沿用SWIFT_DIST_DIR;成功打包后会由原脚本清理.build。此入口不运行测试、不安装、不发布。
版本与更新
- Swift 应用版本和构建号独立维护在 Version.xcconfig 中。
- Swift 应用版本不等同于 DSH npm 运行时版本;后者在应用内的版本管理页单独检查并升级到 npm
latest、next或用户明确选择的alpha。启动、插件操作和 Runtime 更新共享串行事务门,避免并发重启。 - Runtime 版本目录以 npm Registry 为唯一来源;当前只接受 stable、
alpha.N与rc.N版本,GitHub 独有版本、beta 及任意降级暂不参与运行时选择。 - Sparkle 公钥写入 Info.plist,Ed25519 私钥只保存在发布机器的 Keychain 中,禁止提交到仓库。
- 当前更新 feed 位于
appcast-swift.xml,发布新版本时需要先构建 arm64 DMG,再使用 Sparklesign_update生成签名并更新 feed。
已知限制
- 当前使用本地自签名证书签名(
scripts/setup-local-codesign-cert.sh创建,DSH_CODESIGN_IDENTITY可切换到其它身份或-回退 ad-hoc),未提供 Developer ID 签名和 notarization。 - 通知点击恢复隐藏主窗口等少数系统交互仍有待完善。
- 应用更新和 DSH npm 运行时更新是两套独立流程。
- 当前只提供从已安装 Runtime 向 npm
latest/next/alphatag 的单向升级;默认仅通知不自动安装,next和alpha只能由用户明确选择;更新失败的版本会抑制到 npm tag 变化、应用升级或用户手动重试;旧版本会保留到新 Runtime 连续两次成功启动后自动清理,暂不提供任意版本切换、卸载或降级入口。 - App 默认使用独立的
profiles/swift-desktop,终端dsh web继续使用profiles/web;旧版 App 的profiles/desktop会在首次启动时安全复制到新目录;通用设置中切换到web后,两者会共享插件和依赖,升级或插件变更可能影响终端启动。 webProfile 下禁止 DSH Runtime 版本升级和自动更新;从web切回swift-desktop时,应用会先停止服务,再移除 web Profile 中的dsh-desktop-host与@deepseek-ai/dsh-host-webserver,避免继续污染终端环境。- 目前仅提供 macOS 26+、Apple Silicon(arm64)构建。
- 同一用户会话只允许运行一个实例:状态文件、事务快照、服务记录和端口都位于
~/Library/Application Support/DSH,而该目录不随DSH_HOME隔离。重复启动会被拒绝(LSMultipleInstancesProhibited+ 应用内的flock实例锁,见Sources/Service/DshInstanceLock.swift);锁路径被非普通文件占用(目录、符号链接等)或锁调用异常时会弹窗说明并停止启动,只有权限/只读/磁盘空间这类环境限制才会在记录诊断后继续启动。测试 harness 使用独立的DSH_TEST_APP_SUPPORT根,仍可并行运行。 - Runtime 升级完成到下次启动之间是"已确认待结算"窗口:此期间插件安装/更新/卸载与 Profile 切换会保持禁用(普通设置不受影响),重启一次 DSH 后即可继续——这样可避免升级回退时静默撤销此间改动的插件,或让清理悬置。该门禁在插件操作真正取得运行时锁之后会再检查一次,因此排队期间进入该窗口的操作会被拒绝,而不是静默生效后再被回退。
许可证
本项目采用 MIT License。DSH 运行时在首次启动时从 npm Registry 获取,其版权和许可证归对应上游项目所有。
本项目与 DeepSeek 不存在隶属或官方合作关系。DeepSeek Harness 及相关名称的权利归其各自所有者所有。
有意识地管理
安装与管理
前置条件与目标 Profile
目标: 桌面端 Profile
交付方式: Git Bundle — summer-521/deepseek-harness-swift#c41a74fc5f09832c133f6576c6437de64f61284c。
验证、更新与移除
显示生命周期命令
dsh plugin --profile desktop list兼容性与访问范围
Requires @deepseek-ai/dsh-host-webserver as a peer dependency: Not declared in supplied evidence。
风险事实
证据与编辑审查Manifest、Bundle patch、分发与新鲜度
不可变证据
审查状态与源码活动
请使用固定 Git 源,不要预期这个 0.1.0 包可从 npm 获取。
AI 审查于 2026/9/10 UTC 14:19。GitHub 事实核对日期: 2026/9/10 UTC 14:19。
自当前证据基线以来,没有记录到重要源码变化。