通过 IPC 把 10 个项目/对话/Canvas/Office 工具与 ui_render 注册进 DSH Web Profile,身份由父进程统一管。
- 语言
- JavaScript
- License
- MIT
- 分支
- dev
安装
$ dsh plugin --profile web add github:vibeinging/deepseek-harness-desktop-app/packages/dsh-product-bridge在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
DeepSeek Harness Desktop App 的产品桥接 Profile Bundle。它通过 IPC 把 10 个项目/对话/Canvas/Site/Office 工具和 ui_render 注册到当前 DSH Web Profile 的 Agent 工具目录,并把应用指令、项目记忆、模型目标等关键上下文以受控方式注入模型步,让 DSH 能在不修改官方源码的前提下访问桌面应用的本地数据。
核心能力
- 暴露 2 个项目上下文工具:
project_list(列出当前用户可见的项目)与conversation_list(列出当前项目下对话,支持是否包含归档) - 暴露 4 个 Canvas/Site 工具:
canvas_inspect/canvas_create/canvas_edit/canvas_suggest,全部基于不可变 base 版本,编辑和建议都要求先 inspect - 暴露 3 个 Office 产物工具:
artifact_office_inspect/artifact_office_create/artifact_office_edit,覆盖 Markdown / DOCX / XLSX / PPTX / PDF 五种格式 - 暴露 1 个结构化界面工具
ui_render:在父进程校验的有界 schema 内渲染可交互界面,按钮和表单只会发出可见的用户消息 - 把 5 个工作台页面(结果与证据、浏览器、文件、产物、Site)通过
product.json贡献到agent.workbench.tool产品位置,应用外壳从当前 Profile 目录读取 - 拦截写入类工具:5 个写操作都会触发 DSH 内置审批流程;子进程侧不持有任何身份或权限,全部由父进程绑定已授权 Session、用户和项目后处理
技术实现
- 语言: JavaScript (ESM,
"type": "module") - 关键依赖:
@deepseek-ai/cordis^4.0.1、@deepseek-ai/dsh-agent^0.1.0-rc.6、@deepseek-ai/dsh-invariants^0.1.0-rc.6、@deepseek-ai/dsh-tools^0.1.0-rc.6 - 架构模式: Cordis 插件(
inject: ["agents","tools","webServer"]),通过cordis.patch.yml声明为product-bridge行;通过product.json声明工作台产品位置贡献;运行时与父进程走 IPC,子进程只携带 Session id - 入口文件:
packages/dsh-product-bridge/src/index.js(apply(ctx)是 Cordis 启动钩子,内含 IPC 主机、工具注册、内存/指令注入、模型目标跟踪、生命周期收尾)
适用场景
想在 DeepSeek Harness Desktop App 里让 DSH 直接读写本地项目文件、Canvas、Office 产物和结构化界面时使用这个 Bundle。它把官方 DSH Web Profile 扩展为能调用桌面应用能力的形态,省去自行 fork 或维护本地 SDK 的成本。普通用户不需要单独安装它——它随桌面应用一起随 Profile 加载。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH Agent | 0.1.0-rc.6 | 通过 peerDependencies 显式钉到 ^0.1.0-rc.6,必须使用 next/rc.6 系列,latest 仍指向旧版本 |
| DSH Tools | 0.1.0-rc.6 | 同上,peerDependencies 锁定 |
| DSH Invariants | 0.1.0-rc.6 | 同上,peerDependencies 锁定 |
| Cordis | ^4.0.1 | 提供插件运行时 |
| Node | ^22.19.0 或 >=24.0.0 | engines 字段声明 |
| 平台 | 跨平台 | 跟随宿主桌面应用(macOS / Windows / Linux) |
安装方式
dsh plugin --profile web add github:vibeinging/deepseek-harness-desktop-app/packages/dsh-product-bridge
配置项
本插件无需额外配置。所有能力由 cordis.patch.yml(声明 Cordis 插件行 product-bridge)、product.json(声明工作台 5 个页面与显示信息)和 package.json#dshWork/#dsh(声明 Bundle 元数据)静态注入,运行时通过 IPC 与父进程协商上下文。
常见问题
Q: 装上这个包之后,DSH 会多出什么能力?
A: DSH Agent 工具目录里会多出 10 个工具:project_list / conversation_list 用于读取项目与对话,4 个 Canvas/Site 工具(inspect/create/edit/suggest),3 个 Office 产物工具(inspect/create/edit),以及一个用于渲染结构化交互界面的 ui_render。
Q: 这些工具在模型看到之前会先被怎么拦一道?
A: 任何会改动桌面应用本地数据的写入类工具(canvas_create / canvas_edit / canvas_suggest / artifact_office_create / artifact_office_edit)都会触发 DSH 内置的审批流程,模型必须先拿到用户确认才能继续。
Q: 子进程只发一个 Session id,身份和权限谁来管?
A: 全由父进程(DeepSeek Harness Desktop App 的 Electron 主进程)管。子进程拿到 Session id 后发请求,父进程把它绑定到唯一已授权的 Session、用户与项目,再处理项目/对话/Canvas/Site/Office 请求;请求不能跨身份、跨项目。
Q: 上下文里的应用指令和项目记忆是怎么注入的?
A: 每个模型步进入前,桥接先读一次父进程快照,把允许的应用指令、项目指令、全局/项目记忆包装成不可变 user 消息附到 agent/pre-step 批次里,并打上 dsh-work-context / dsh-work-memory 来源;读取失败只跳过这一次补充,不会替换用户消息。
Q: 子 Agent 会沿用父 Agent 的模型配置吗?
A: 会。桥接会记录父 Agent 最终解析出的 provider/model,当 DSH 创建子 Agent 时在第一次请求前把目标固定下来,避免子 Agent 回退到进程启动默认模型;之后父 Agent 的请求仍然走自己的正常设置。
Q: 这个包跟同仓库的 dsh-work-shell、dsh-theme-pack 是什么关系?
A: 三者同属 DeepSeek Harness Desktop App 的私有 Profile Bundle 三件套:dsh-work-shell 替换默认壳,dsh-theme-pack 提供主题,dsh-product-bridge 注入产品工具;三件齐全桌面应用才完整。
Q: 父进程关掉了,子进程会不会留未处理错误?
A: 不会。运行时把就绪消息和产品 IPC 都走成回调式发送,父进程关闭会正常胜过晚到的 Loader,未发送成功的请求会被拒绝而不是变成 unhandled channel error。
Q: 第三方 Bundle 能绕过这套机制把 UI 塞进渲染进程吗?
A: 不能。包含 dsh.client 的社区 Bundle 会在预检阶段被拒绝,工作台页面只渲染本地白名单内的组件;用户安装的 Bundle 既无法跑 Client 代码,也无法只靠 JSON 名字进入 Renderer。
上手难度
进阶 — 需要理解 DSH Profile Bundle、Cordis 注入点和 IPC 工作机制才能修改,普通用户通常无需手动调整。
已知问题与限制
peerDependencies强制锁到0.1.0-rc.6,因为部分叶子包的latest仍指向旧版本;开发时若链接 DSH 源码或混装不同 RC 系列会破坏兼容性- 本包为私有包(
package.json标private: true),不发布到公共 registry;成品必须携带同一份审核版本和匹配的官方 NPM SDK 版本 - rc.6 SDK 不再发布原来的 ProductHost 与项目工具包,工具与 IPC 桥接由本 Bundle 直接持有,升级 DSH SDK 时需同步调整
- KV Cache:同一 Profile 内 Bundle 版本或顺序变化会重启 DSH 运行时,可复用的工具前缀可能改变
- 普通请求 30 秒超时,写操作类审批后端到端 60 秒超时(
PRODUCT_REQUEST_TIMEOUT_MS/PRODUCT_MCP_TIMEOUT_MS) - 移除的"项目 Plugin 挂载、Skill、MCP 数据"目录方法返回空目录,由 DSH 原生注册表继续接管
中文 | English
DeepSeek Harness Desktop App 是建立在 DeepSeek Harness(DSH)之上的本地 AI 工作桌面。它把 DSH 的 Session、Agent、Tool、Skill、MCP 和 Profile Bundle 与项目、文件、网页、Git Worktree、Canvas、Site 和 Office 产物组织在同一个桌面应用中。
| 专业蓝亮色 | 专业蓝暗色 |
|---|---|
![]() | ![]() |
快速开始
本地开发要求 Node.js 24 或更高版本。当前项目使用 DSH 0.1.0-rc.6。
npm install
npm run doctor
npm run dev
切换 Node.js 大版本、CPU 架构或操作系统后,运行 npm run setup 重新准备依赖。
主要功能
| 功能 | 用户可以做什么 |
|---|---|
| DSH 对话 | 流式回答、思考过程、工具调用、停止、继续、重试、消息分支和重启恢复 |
| 模型与权限 | 选择 Provider、模型和推理强度,管理凭据引用、Session 权限、工具审批和模型提问 |
| Tool、Skill、MCP 与多 Agent | 使用当前 Profile 中的工具、技能、MCP、Hook、子 Agent 和 Workflow |
| 项目与对话 | 创建项目、全局或临时对话,置顶、排序、重命名、归档、恢复和删除 |
| 桌面外壳与设置 | 使用三列工作台、左右栏折叠、全局搜索、缩放快捷键和更新检查,调整语言、网络、通知、终端与隐私选项 |
| 项目上下文与记忆 | 设置应用指令、项目指令、授权源码目录、写入目标以及全局或项目记忆 |
| 输入与引用 | 使用 @ 引用文件、使用 # 引用对话,粘贴图片和大段文本附件 |
| 编码工作区 | 查看 Diff、逐行评论和编辑、在外部编辑器打开、发起 AI Review,并安全撤销模型产生的文件修改 |
| Git Worktree | 创建、启用、停用和删除隔离工作目录,让新对话在指定 Worktree 中运行 |
| 文件与搜索 | 浏览项目文件、任务和产物,预览文本、代码、图片和 Office 内容,按文件名或正文搜索 |
| Browser Workspace | 多标签浏览、历史、页内查找、缩放、下载、打印、开发者工具、站点权限、网页快照和“使用此页” |
| 结果与证据 | 直接查看当前 DSH Session 的完整轨迹、工具输入输出、耗时、Token 和最终回答 |
| Canvas 与本地 Site | 创建和编辑 Canvas、处理行内建议与版本冲突,生成并响应式预览单文件 Site |
| Office 产物 | 创建、查看和定点编辑 Markdown、DOCX、XLSX、PPTX 和 PDF,并保留版本 |
| 主题与外观 | 切换 Profile 主题,新建、导入、预览、编辑、导出和删除本地主题,调整明暗模式、背景和透明度 |
| 插件中心 | 检查兼容性,把 DSH Profile Bundle 安装到当前 Web Profile,并查看来源、版本和加载顺序 |
DSH 轨迹就是结果与证据
右侧“结果与证据”直接读取当前绑定 DSH Session 的 session.history。用户消息、请求上下文、模型输出、工具调用、工具结果、权限变化和最终回答都在同一条可回放轨迹中,不维护第二套运行中心。

对话和工作台
一个项目对话对应一个 DSH Session。右侧工作台可以添加结果与证据、浏览器、文件、产物和 Site 标签;项目文件树、Agent 工作目录、当前 Diff 和行编辑都跟随当前项目权限与活动 Worktree。


Canvas 保存不可变版本,支持正文编辑、版本比较、精确行内建议和冲突处理。Site 使用同一套版本能力,并在隔离沙箱中提供桌面、平板和手机预览。


Git Worktree 隔离开发
项目设置提供完整的 Worktree 工作流:
- 为项目创建一个或多个独立分支和工作目录,同一时间启用一个。
- 启用后,新建对话的 Agent、DSH Session、Diff 和行编辑使用该 Worktree,主检出保持不变。
- 切换工作目录不会迁移已有对话;应先启用目标 Worktree,再新建对话。
- 删除前必须切回主检出。删除工作目录后保留 Git 分支,避免误删提交。
- 非 Git 目录、重复分支、越界路径和异常符号链接会被拒绝;磁盘上丢失的 Worktree 会标记为不可用。

主题与外观
@deepseek-ai/dsh-theme-pack Profile Bundle 提供默认的 professional-blue 和可选的 anime-blue。正式产品也支持本地自定义主题的新建、导入、预览、编辑、导出和删除。
本地主题只能使用安全的颜色与外观设置,不能注入原始 CSS、远程图片或修改应用名称。个人背景、明暗模式和透明度可以独立调整。

插件中心
普通用户从左侧“插件”页面安装 DSH Profile Bundle:
- 输入带精确版本的 npm 包,或带完整 commit 的
dsh-external仓库地址。 - 先运行兼容性检查;只有结果为“可以安装”时才能写入当前 Profile。
- 安装后查看 Bundle 的来源、版本、加载顺序和能力,用户安装的 Bundle 可以卸载。
Tool、Skill、MCP、Hook 等 Host Bundle 可以进入 DSH 运行时。包含第三方 Client UI 的 Bundle 目前不会进入拥有 Electron 权限的主窗口;随应用提供并经过审核的 Client Bundle 不受此限制。

与 DSH 官方 Web 的关系
DeepSeek Harness Desktop App 不是 DSH Web 的 iframe,也没有复制一套 Agent 运行时。Electron 启动 DSH Web Profile,并继续使用同一套 Session、Agent、Tool、Skill、MCP、Settings、Profile Bundle 和 Client Loader。DeepSeek Harness Desktop App 在同一运行链上提供自己的桌面外壳,并增加项目管理、文件授权、Browser Workspace、Git Worktree、Canvas、Site 和 Office 产物。
需要模型使用的产品能力通过绑定 Session 和 DSH Tool 接入;项目数据、文件权限、网页、Worktree 和产物版本仍由 DeepSeek Harness Desktop App 管理。
当前边界
- 当前没有五列任务看板、独立定时任务页面、Git 图谱、stage/unstage 面板或独立终端页。
- 本地 Site 只提供预览和单文件导出,没有部署服务;公开分享目前只有只读查看。
- 当前没有移动端远程控制、二维码配对、公网隧道、SSH、SFTP 或端口转发。
- 子 Agent 可以执行并出现在对话与轨迹中,但还没有完整的独立管理页。
数据与安全
Profile、Session、项目、运行记录和产物数据默认保存在本机 ~/.dsh。项目源码目录默认只读,Agent 写入需要用户明确授权。
完整规则见 PRIVACY.md、SECURITY.md 和 THIRD_PARTY_NOTICES.md。
平台状态
| 平台 | 当前状态 |
|---|---|
| macOS Apple Silicon | 开发与目录包已验证 |
| macOS Intel | Rosetta 检查通过,仍需 Intel 实机验收 |
| Windows x64 | 已接入构建流程,仍需安装包实机验收 |
| Windows arm64 | 暂不支持 |
| Linux | 暂无桌面打包配置 |
许可证
项目代码使用 MIT License。第三方依赖与二进制文件的来源、许可证和分发限制见 THIRD_PARTY_NOTICES.md。

