deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:summer-521/deepseek-harness-swift
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
基于 AppKit、SwiftUI 和 WKWebView 的原生 macOS 桌面壳。
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 |
设置窗口采用接近 macOS 系统设置的布局,支持通用设置、版本管理、插件管理和关于页面。
DSH Swift Native Shell
├── AppKit / SwiftUI / WKWebView
│ ├── 主窗口、菜单和 macOS 系统交互
│ └── 设置与关于窗口
│
├── DSH Service
│ ├── 应用内置 Node.js
│ ├── 应用内置 pnpm
│ └── 从 npm 安装的 DSH 运行时
│
├── Desktop Host Bridge
│ └── 当前 Profile 的桥接插件
│
└── Sparkle
└── Swift 应用包更新
在仓库根目录执行:
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
bash scripts/release-local.sh arm64;加 --dry-run 只查看流程。沿用 SWIFT_DIST_DIR;成功打包后会由原脚本清理 .build。此入口不运行测试、不安装、不发布。latest、next 或用户明确选择的 alpha。启动、插件操作和 Runtime 更新共享串行事务门,避免并发重启。alpha.N 与 rc.N 版本,GitHub 独有版本、beta 及任意降级暂不参与运行时选择。appcast-swift.xml,发布新版本时需要先构建 arm64 DMG,再使用 Sparkle sign_update 生成签名并更新 feed。bash scripts/release-prepare.sh <版本> <构建号> --notes <发布说明.md> 会依次执行 npm test → 更新 Version.xcconfig 与 README 三处引用 → 构建并打包 → 用 Sparkle 签名 → 写入 appcast(长度与签名取自同一份 DMG 字节)→ 跑版本一致性测试;加 --publish 才继续提交、打 tag、推送并创建 GitHub Release,加 --dry-run 只打印计划。scripts/setup-local-codesign-cert.sh 创建,DSH_CODESIGN_IDENTITY 可切换到其它身份或 - 回退 ad-hoc),未提供 Developer ID 签名和 notarization。latest/next/alpha tag 的单向升级;默认仅通知不自动安装,next 和 alpha 只能由用户明确选择;更新失败的版本会抑制到 npm tag 变化、应用升级或用户手动重试;旧版本会保留到新 Runtime 连续两次成功启动后自动清理,暂不提供任意版本切换、卸载或降级入口。profiles/swift-desktop,终端 dsh web 继续使用 profiles/web;旧版 App 的 profiles/desktop 会在首次启动时安全复制到新目录;通用设置中切换到 web 后,两者会共享插件和依赖,升级或插件变更可能影响终端启动。web Profile 下禁止 DSH Runtime 版本升级和自动更新;从 web 切回 swift-desktop 时,应用会先停止服务,再移除 web Profile 中的 dsh-desktop-host 与 @deepseek-ai/dsh-host-webserver,避免继续污染终端环境。~/Library/Application Support/DSH,而该目录不随 DSH_HOME 隔离。重复启动会被拒绝(LSMultipleInstancesProhibited + 应用内的 flock 实例锁,见 Sources/Service/DshInstanceLock.swift);锁路径被非普通文件占用(目录、符号链接等)、锁调用异常,或锁文件/应用数据目录不可写(权限、只读卷、磁盘空间)时,都会弹窗说明原因并停止启动——锁文件级的失败并不代表同一目录的状态文件不可写,因此不存在“无锁降级启动”这种安全模式。测试 harness 使用独立的 DSH_TEST_APP_SUPPORT 根,仍可并行运行。本项目采用 MIT License。DSH 运行时在首次启动时从 npm Registry 获取,其版权和许可证归对应上游项目所有。
本项目与 DeepSeek 不存在隶属或官方合作关系。DeepSeek Harness 及相关名称的权利归其各自所有者所有。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。