DSX
DSX 是 DeepSeek Harness 的原生桌面外壳。它把官方 DSH 直接打包成双击即用的桌面应用,并额外内置了一个可供 AI 模型直接调用的 Chromium 浏览器。
核心亮点:内置 AI 浏览器 + 图片 OCR
DSX 在 Electron 中内置了一个真正的浏览器,并把浏览器与图片识别合并进同一个 dsx 插件:
- 默认后台常驻、隐藏运行,像 Codex 一样,不会因为模型调用浏览器就突然弹窗。
- 点击右上角的侧栏按钮才从右侧滑入显示,关闭时平滑滑出,并可左右拖动分隔条调整宽度。
- 支持多标签页、地址栏、前进/后退/刷新等完整交互。
- 通过一个自包含的 DSH Cordis 插件(
packages/dsx)桥接,模型可直接调用browser_open、browser_snapshot、browser_click、browser_type、browser_screenshot等工具。 - 图片先 OCR 再进模型:你上传的图片会先经过多模态模型识别成文字,再交给当前使用的文本模型,DeepSeek 等纯文本模型也能直接看图。
- 语音输入:输入框右侧新增语音按键,录音后由同一个多模态模型(mimo-v2.5 等)转成文字插入输入框;录音中直接按发送键或回车,会先转写拼接再自动发送。
- 浏览器截图、图片 OCR 与语音输入共用同一套多模态配置:多模态模型接口地址、API Key、模型名称,以及「开启浏览器视觉」「开启图片 OCR」两个开关,都在「插件管理 → DSX」中配置,设置完全走 DSH 官方的插件设置接口。
- 首次升级会自动把旧插件
dsx-browser-tool的设置迁移到新的dsx命名空间,已有配置不丢失。 - 插件以 npm 包名
@kemi-20/dsx维护,后续可直接发布到 npm 供 DSH 按名安装。
多模态模型(浏览器视觉 / OCR / 语音共用)
在「插件管理 → DSX」中配置一个 OpenAI 兼容的多模态端点,例如小米 MiMo:
dsx:
visionApiUrl: https://api.xiaomimimo.com/v1
visionApiKey: <你的 API Key>
visionModel: mimo-v2.5
- 浏览器截图、上传图片 OCR、语音转写共用这一份配置,无需分别设置。
- 所有多模态请求都关闭模型思考(
thinking: { type: "disabled" }),截图与图片只返回识别内容,语音只返回转写文本,不夹带推理过程。 - 语音转写由 DSH 插件后端直连 API(与 OCR 同一条链路),不经过浏览器页面,因此不受 CORS 限制,可直连任意 OpenAI 兼容网关。
旧插件目录 packages/dsh-browser-tool 已合并为 packages/dsx,不再被引用,可手动删除。
为什么要 DSX
- 不再需要
npx @deepseek-ai/dsh web,也不需要一直开着命令行窗口。 - 完全复用官方
~/.dsh:密钥、会话、技能、插件系统、Agent 预设全部兼容,不另建.dsx目录。 - 无标题栏、原生窗口控制,系统托盘常驻;关闭窗口只是隐藏,不会退出。
- 单实例运行,DSH 意外退出后自动重启。
- macOS:点 Dock 图标重新唤出隐藏窗口,菜单栏模板图标自动适配深浅色,DSH 独立进程组退出不残留。
安全:不再监听固定 3080 端口
DSH 不再绑定众所周知的 127.0.0.1:3080:每次启动由操作系统分配一个随机端口,并生成一次性访问令牌。
- 所有 HTTP 请求与 WebSocket 升级都必须携带令牌(Electron 窗口自动带上
dsx-tokenCookie),否则一律 401/断开。 - 浏览器、curl、其他本地进程都无法再直接访问 DeepSeek Harness 的 Web UI 或 API——只有 DSX 窗口本身能访问。
- 随机端口每次启动都不同,不存在可猜测的固定入口。
构建与安装
npm ci
# Windows NSIS 安装包
npm run dist:win
# macOS DMG(当前机器架构)
npm run dist:mac
# 未打包目录,便于本地快速检查
npm run dist:dir
产物输出到 release/。
CI 自动打包
.github/workflows/build.yml 会在推送到 main、创建 v* 标签以及发起 Pull Request 时自动构建:
- Windows:NSIS 安装包(
windows-latest) - macOS:DMG(
macos-latest) - 打
v*标签时自动发布 GitHub Release
安装包使用固实 7z 最大压缩(-mx=9),并在打包时剔除 README、License、Source Map、TypeScript 声明、测试/示例/文档目录等非运行文件,尽量减小体积。
开发
npm install
npm start
启动后 DSH 会监听一个随机本地端口,DSX 自动加载 Web UI。关闭窗口只是隐藏;在托盘菜单中选择「退出 DSX」才会完全停止。
工作原理
DSX 把固定版本的 DSH 依赖闭包打包成 resources/dsh-runtime.asar,首次启动时解压到 Electron 用户数据目录并复用,之后启动无需联网下载。依赖闭包按 package-lock.json 精确复制,避免 Electron 打包器剪掉 DSH 动态加载的插件。
内置浏览器是挂在主窗口上的 WebContentsView 侧边面板;Cordis 插件负责在模型与浏览器之间通过 DSH 插件 IPC 转发命令。语音转写同样由插件后端直连多模态 API,浏览器页面只负责录音与展示结果。
数据位置
- DSH 主目录:
~/.dsh(与官方 CLI 共享) - Windows 日志:
%APPDATA%/DSX/logs/dsh.log - macOS 日志:
~/Library/Application Support/DSX/logs/dsh.log - 运行时缓存:Electron 用户数据目录(自动管理)
目录结构
src/ Electron 主进程与 preload
packages/dsx DSH Cordis 插件:AI 浏览器桥接 + 图片 OCR + 语音输入
scripts/ 构建、运行时准备与安装辅助脚本
build/ 打包资源(Windows / macOS 图标)
.github/workflows/ Windows / macOS / Release 自动构建
No comments yet. Be the first to write one.