通过 IPC 把 10 个项目/对话/Canvas/Office 工具与 ui_render 注册进 DSH Web Profile,身份由父进程统一管。
$ dsh plugin --profile web add github:vibeinging/deepseek-harness-desktop-app/packages/dsh-product-bridgeRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
DeepSeek Harness Desktop App 的产品桥接 Profile Bundle。它通过 IPC 把 10 个项目/对话/Canvas/Site/Office 工具和 ui_render 注册到当前 DSH Web Profile 的 Agent 工具目录,并把应用指令、项目记忆、模型目标等关键上下文以受控方式注入模型步,让 DSH 能在不修改官方源码的前提下访问桌面应用的本地数据。
project_list(列出当前用户可见的项目)与 conversation_list(列出当前项目下对话,支持是否包含归档)canvas_inspect / canvas_create / canvas_edit / canvas_suggest,全部基于不可变 base 版本,编辑和建议都要求先 inspectartifact_office_inspect / artifact_office_create / artifact_office_edit,覆盖 Markdown / DOCX / XLSX / PPTX / PDF 五种格式ui_render:在父进程校验的有界 schema 内渲染可交互界面,按钮和表单只会发出可见的用户消息product.json 贡献到 agent.workbench.tool 产品位置,应用外壳从当前 Profile 目录读取"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.6inject: ["agents","tools","webServer"]),通过 cordis.patch.yml 声明为 product-bridge 行;通过 product.json 声明工作台产品位置贡献;运行时与父进程走 IPC,子进程只携带 Session idpackages/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 版本PRODUCT_REQUEST_TIMEOUT_MS / PRODUCT_MCP_TIMEOUT_MS)