
oh-dsh
☆ 60一站式 DeepSeek Harness 社区发行版:TUI、桌面端与 Web UI 三种形态统一体验,支持分层安装、一步到位,免去手工整合打包。
Get this plugin
Review the source, then continue to the publisher.
dsh plugin add @oh-dsh/desktop@latestAbout this plugin
Source snapshot 8/13/2026简体中文 · English
Oh-DSH-Desktop
把 DeepSeek Harness 装进一个可安装、可扩展的桌面工作台。
安装 · 架构 · 内置 Plugins · 构建与发布
主界面、Side Panel 与 Porcelain 桌面皮肤
Oh-DSH-Desktop 保留 DSH React UI,把固定版本的 DSH runtime、Node.js、 Electron 和本地能力打包进一个 macOS 应用。模型仍运行在云端,桌面端负责 终端、Workspace、Git、浏览器、窗口集成和 plugin 生命周期。
它不是另一套 DSH 前端,也不需要额外安装 Web Terminal 或 shell plugin。
@oh-dsh/desktop 提供统一桌面入口,功能模块继续沿用 DSH 官方的 Profile、
Loader、locale、settings 和 ThemeService 契约。
主要能力
- 自包含的 Apple Silicon macOS 应用与安装包。
- 多标签 PTY Terminal、逐提交/逐行 Review、Browser 和 Files。
- Review 评论可汇总进消息输入框,直接交给 Agent 处理。
- Pinned Summary、可展开 Side Panel 与原生窗口控制。
- 支持隔离预览、放弃、应用和恢复的插件市场。
- 中英文实时切换,以及四套 Oh-DSH 自有桌面皮肤。
- 人类 UI 与 Agent 共用同一套插件安装事务和审批边界。
界面预览
插件市场:浏览 dsh-external 目录,并在隔离环境中预览变更。
桌面皮肤:在 DSH 设置页即时切换,由 Host 持久化选择。
安装
安装测试包
从 GitHub Releases 下载:
Oh-DSH-Desktop-0.1.2-arm64.dmgOh-DSH-Desktop-0.1.2-arm64.zip
打开 DMG,把 Oh-DSH-Desktop.app 拖入 Applications。当前测试包没有
Developer ID 和 notarization,首次启动时可在 Finder 中右键应用并选择
“打开”。
如果 macOS 阻止打开 DMG,请先确认文件下载自本项目的 GitHub Release, 再移除该 DMG 的 quarantine 属性并重新打开。请将示例中的 DMG 路径替换为 文件的实际下载路径:
xattr -d com.apple.quarantine ~/Downloads/Oh-DSH-Desktop-0.1.2-arm64.dmg
从源码运行
要求 macOS 12+、Apple Silicon、Node.js 24+、pnpm 11+ 和 Xcode Command Line Tools。
git submodule update --init --recursive
pnpm install
pnpm run build:dsh
pnpm start
Better Sidebar Host 以固定 Git submodule 跟踪,并通过公开 HTTPS 仓库获取;
初始化该 submodule 不需要 SSH 或 GitHub CLI 认证。固定的 DSH 源码单独获取,
也可以通过下述 DSH_SOURCE 指向已有 checkout。
发行构建固定使用 DSH 0.0.1-rc.2:
7b9644f2b664e46c9518506035aa6c8d5af4d8e8
首次构建会把源码放进 .cache/dsh-source/。如需使用另一个 checkout,可设置
DSH_SOURCE=/absolute/path,但 package version 必须与固定版本一致。
运行数据位于:
~/Library/Application Support/Oh-DSH-Desktop/dsh
DeepSeek API key 可以在 DSH 设置页配置,也可以写入该目录下的 .env。
常用操作
| 操作 | 快捷键 |
|---|---|
| 切换 DSH 左侧栏 | ⌘B |
| 切换底部 Terminal | ⌘J |
| 切换 Side Panel | ⌥⌘B |
| 打开 Review | ⌃⇧G |
| 打开 Browser | ⌘T |
| 打开 Files | ⌘P |
| 新建 Side chat | ⌥⌘S |
| 退出 Side Panel 专注模式 | Esc |
Side Panel 打开时会收起 Pinned Summary,并显示全屏展开按钮。Terminal 与 Side Panel 可以独立开关。
架构
flowchart TB
App["Oh-DSH-Desktop.app<br/>Electron shell"]
Desktop["@oh-dsh/desktop<br/>window · menu · unified entry"]
Runtime["Bundled Node.js + DSH runtime"]
UI["DSH React UI"]
Host["better-sidebar-runtime<br/>PTY · files · Git · commit diff"]
Panels["panel-controls<br/>Terminal dock"]
Sidebar["desktop-sidebar<br/>review UI · comments · tools"]
Summary["pinned-summary<br/>session summary"]
Market["plugin-marketplace<br/>preview · apply · recover"]
Skins["desktop-skins<br/>theme · persist"]
App --> Desktop
App --> Runtime --> UI
Runtime --> Host
UI --> Panels
UI --> Sidebar
UI --> Summary
UI --> Market
UI --> Skins
Panels --> Host
Sidebar --> Host
cordis.patch.yml 复用 dsh-base 与 dsh-web-app,在随机 loopback 端口
启动 Web runtime,再按依赖顺序加载桌面 plugins。第三方插件仍由 DSH
Profile 和 Loader 管理。
内置 plugins
| Plugin | 来源关系 | Oh-DSH 改造 |
|---|---|---|
@oh-dsh/desktop | Oh-DSH 自研 | 统一桌面入口、Electron bridge、原生菜单、窗口、Agent 能力与内置 plugin 注册顺序 |
@oh-dsh/better-sidebar-runtime | 固定跟踪 DSH-better-sidebar submodule | 仅编译上游 Host,提供 PTY、Files、Git、history 和 commit diff;不加载上游 UI |
@oh-dsh/panel-controls | 基于 dsh-web-panel 的下游改造 | 保留 Oh-DSH Terminal dock、主题、双语和 Session 状态,复用统一 PTY Host;不再安装独立 Web Terminal |
@oh-dsh/pinned-summary | Oh-DSH 自研 | 当前 Session 摘要、半高卡片和正文 gutter 管理 |
@oh-dsh/desktop-sidebar | DSH-better-sidebar 的 Oh-DSH UI 下游 | 复用统一 Host,提供 Session tabs、viewer、Files、Git Review、逐行评论和 Agent composer 引用,保留现有布局、图标与主题 |
@oh-dsh/plugin-marketplace | 炼化 plugin-registry 与 dsh-hub | 统一隔离预览、风险确认、TOFU 来源锁、应用与恢复流程,并适配桌面导航和双语 UI |
@oh-dsh/desktop-skins | 基于 dsh-skins 的下游改造 | 沿用 ThemeService 扩展思路,重做皮肤、设置 UI 和 Host 持久化 |
标记为“下游改造”或“炼化”的 plugin 会定期检查上游 release 和 feature,选择 与当前 DSH 契约兼容的能力同步。同步以 feature 为单位重新适配,不直接覆盖 Oh-DSH 的 UI、主题和桌面交互。
更完整的来源与许可证说明见 THIRD_PARTY_NOTICES.md。
插件市场
左侧 Plugins 页面浏览 dsh-external 目录。安装、更新、启用、停用和卸载
都会先生成隔离 candidate Profile:
检查来源与精确 commit
↓
在隔离 Profile 中安装并启动预览
↓
放弃(当前桌面不变)或应用(保留 previous)
↓
需要时 Undo 恢复上一份 Profile
Agent 也可以通过对话进入同一流程。应用和恢复仍需要人类审批,不能绕过预览 或启动第二套 DSH Loader。私有仓库认证使用 GitHub CLI:
gh auth login
安全边界
- DSH Web runtime 与 Agent 管理通道只监听随机 loopback 端口。
- Browser 使用独立 Electron partition,不注入 Node.js 或 preload。
- Better Sidebar Host 对 Files 和 Git 请求执行 Session 与 Workspace 边界校验。
- 市场固定 Git commit,默认阻止安装脚本,应用前不修改当前 Profile。
- pnpm release-age 策略保持启用,只排除
@deepseek-ai/*。
本地构建与发布
完整构建会重建固定 DSH;缓存已经就绪时可使用 quick 构建:
pnpm run dist:mac
# 或
pnpm run dist:mac:quick
产物位于 release/:
release/
├── Oh-DSH-Desktop-0.1.2-arm64.dmg
├── Oh-DSH-Desktop-0.1.2-arm64.zip
└── mac-arm64/Oh-DSH-Desktop.app
仓库当前不依赖 GitHub Actions 生成发行包。上传前在本机验证:
pnpm run typecheck
pnpm test
pnpm run dist:mac
pnpm run smoke:app
codesign --verify --deep --strict \
release/mac-arm64/Oh-DSH-Desktop.app
hdiutil verify release/Oh-DSH-Desktop-0.1.2-arm64.dmg
验证通过后手动创建 Release,已有 Release 则使用 gh release upload --clobber 更新产物:
gh release create v0.1.2 \
release/Oh-DSH-Desktop-0.1.2-arm64.dmg \
release/Oh-DSH-Desktop-0.1.2-arm64.zip \
--title "Oh-DSH-Desktop 0.1.2" \
--generate-notes
License
BSD 3-Clause