DSH 浏览器端一键启动组合包:搭建 Web 宿主、API 网关、浏览器插件名册、模型提示与自动开浏览器。
ⓘ This plugin is a sub-package of the whitelonng/dshcode monorepo — stars and activity count the whole repository.
- Language
- TypeScript
- License
- MIT
- Branch
- master
Install
$ dsh plugin --profile web add github:whitelonng/dshcode/packages/bundle/web-appRun 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
Install via your agent
Install the DeepSeek Harness plugin whitelonng/dshcode/packages/bundle/web-app for me: review the repository at https://github.com/whitelonng/dshcode.git first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
一句话定位
DSH 浏览器端的开箱组合包,把 Web 服务、API 网关、浏览器插件名册、模型上下文提示以及默认浏览器唤起能力一次性装好,在终端里一行 dsh --profile web 就能拉起完整的网页版 DSH。
核心能力
- 一键拉起浏览器端 DSH:在
dsh --profile web启动时挂载所有 Web 宿主行(HTTP 服务、API 网关、Session 投影缓存、本地存储),并提示访问地址 - 自动打开默认浏览器:服务端口就绪后调用系统默认浏览器打开
http://127.0.0.1:3080,无需手动复制链接 - 模型上下文提示:注册
app:web-surface提示段落,告诉模型当前用户在使用本机 Web 界面以及更新约定 - Bash 变量透出:在管理的 Shell 环境里暴露
DSH_WEB_URL环境变量,方便脚本调用当前 Web 入口 - 可信主机白名单:通过
--trusted-host多次传入为浏览器的 API 信任栅栏追加允许的主机或域名 - 社区插件托管:把 GenUI、Annotation、Web-UI 等可选社区产品作为浏览器插件统一收录,部署开关可在设置里管理
技术实现
- 语言: TypeScript (ESM)
- 关键依赖:
@deepseek-ai/cordis、@deepseek-ai/dsh-host-webserver、@deepseek-ai/dsh-host-frontend-static、@deepseek-ai/dsh-app-boot、commander、open - 架构模式: Cordis 函数插件 + Bundle Patch:
src/index.ts导出name/inject/Config/apply的函数插件形式;cordis.patch.yml是一份叠加在 dsh-base 之上的补丁清单,逐条声明要插入或覆盖的宿主行 - 入口文件:
src/index.ts(runtime glue 插件)、src/startup.ts(命令行参数解析)、cordis.patch.yml(宿主装配清单)
适用场景
刚装好 DSH 想要在浏览器里和模型对话的普通用户,跑 dsh --profile web 就够了。如果想从局域网手机或其他终端访问本机 Web 界面,再通过 --trusted-host 把对方主机名加进白名单。如果只想要纯命令行交互,可以选择 dsh-headless 组合包,本包对命令行不友好、必须配合 Web 端使用。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未声明 | 该组合包未在自身 package.json 声明 dsh 版本要求 |
| Node | >= 22.19.0 | 仓库根 package.json 声明 ^22.19.0 || >=24.0.0;本包使用 node:child_process、node:os、node:url 等 Node 内置模块 |
| 平台 | 跨平台 | 在 macOS / Windows / Linux 上都能工作;启动默认浏览器由 open 库统一处理,Windows 下额外等待 PowerShell 启动子进程退出码 |
| 原生模块 | 无 | 不依赖任何 napi / 原生编译模块;运行时只使用 Node 内置模块与纯 JS 依赖 |
安装方式
dsh plugin --profile web add github:whitelonng/dshcode/packages/bundle/web-app
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
openBrowser | boolean | 是否在服务就绪后自动打开默认浏览器;通过 SSH 远程启动时会被自动关闭 | true |
printUrl | boolean | 是否在终端打印 dsh web: http://... 的访问行(含局域网地址) | true |
surfaceContext | boolean | 是否注册 app:web-surface 提示段落和 DSH_WEB_URL 环境变量;非交互式层可关闭 | true |
trustedHosts | string[] | 通过 --trusted-host 传入的可信主机列表,会拼接到 API 信任栅栏 | [] |
--host | string | 绑定的主机地址;明确拒绝 0.0.0.0(出于安全考虑) | 未指定时回退 127.0.0.1 |
--port | number | 监听端口;传 0 由系统分配空闲端口 | 未指定时回退 3080 |
--no-open | boolean | 关闭启动后自动打开浏览器的行为 | --open |
常见问题
Q: 启动时控制台显示 frontend dist not built 该怎么处理?
A: 该组合包只把已经构建好的前端 dist 提供给浏览器,需要先在仓库根目录跑一次 pnpm run build 把前端产物生成出来,再启动 dsh --profile web。源码里没有从源码直接服务的兜底逻辑。
Q: 我想让同局域网手机访问 dsh web,要怎么配?
A: 默认绑定 127.0.0.1:3080,外部无法直连。该包刻意不支持 --host 0.0.0.0,需要在反向代理或隧道后面再用 --trusted-host http://your-proxy.local 把对端主机加进 API 信任白名单。
Q: 安装到 dsh 后需要做什么才能启用?
A: 该组合包属于 Web profile 层插件,安装后请用 dsh --profile web 启动 dsh;同名的 headless profile 不会挂载它,会回退到命令行交互。
Q: 想关掉每次启动都自动开浏览器的行为,有开关吗?
A: 有。启动时附加 --no-open 即可;远程 SSH 登录时插件也会自动跳过这一步,避免在服务器上弹出本地浏览器。
Q: 想卸载或停用这个组合包,该怎么做?
A: 该组合包属于 Web profile 层,移除整条 dsh --profile web 启动方式即可停用;若需替换为其他 Web 表面实现,在自己的 profile 补丁里覆盖 web-runtime 行即可,无需修改本包代码。
Q: 修改了前端代码为什么浏览器没自动刷新?
A: 客户端插件热更新通道默认空闲,仅当同时跑 pnpm run dev:web 监听客户端 bundle 重建时,无刷新重载才会生效;apps/web shell 与其他普通包改动需要重建产物后手动刷新页面。
上手难度
入门 — 一条命令即可使用,所有可调参数都有合理默认值,普通用户不需要读源码就能完成启动;要自定义托管主机或绑定端口时才需要看一眼启动参数。
已知问题与限制
- 前端 dist 必须先构建:组合包通过
require.resolve定位已构建产物,未构建时会以错误形式拒绝启动,并提示执行pnpm run build - 局域网地址仅启动期采样:网卡变化后不会重新广播,启动时打印的 LAN URL 与信任栅栏始终保持一致
- 社区插件开关需要重启:Settings 页面只持久化期望状态,不会热插拔已挂载的外部插件;切换后重启 dsh 才生效
- Web 共享 HMR 暂未开启:
cordis.patch.yml中hmr行被设为disabled,源码注释标记待 reload 生命周期测试完成后重新启用(cordis.patch.yml:21) - 不支持所有网络接口绑定:
--host 0.0.0.0会在命令行解析阶段被主动拒绝,CLI 暂未实现安全防护下的全接口暴露 - 临时工具调用模式开关:
cordis.patch.yml的tools行读取环境变量DSH_TOOLS_MODE(native/code/both),待 Web UI 提供每会话选择后会移除该环境变量入口
English | 中文
DSHCode 是一款面向 macOS 和 Windows 的免费开源桌面 AI Agent 应用。它将 DeepSeek 官方开源项目 DeepSeek Harness 的 Web UI 与插件运行时打包成一个可直接安装的 Electron 应用——无需 Node.js、无需终端、无需命令行。

功能特性
DSHCode 继承了 DeepSeek Harness 的完整能力,并加上了开箱即用的桌面体验。
Agent 核心 — 插件化框架,内置 bash、文件系统、网页搜索/抓取、终端、LSP 与子进程工具;支持沙箱隔离与逐操作审批提示。
交互式 UI — 内联渲染的 GenUI 卡片:图表、表格、测验、3D 场景、示意图、表单与进度视图。
Skills 技能 — 可安装的技能目录,为 Agent 提供专项工作流——研究、文档写作、视觉工具等。
编排能力 — Subagent 并行委派,以及可跨多个 Agent 分阶段并行展开的 Workflow。
长任务 — 执行前先审查再批准的 Plan 模式、跨轮次持续进行的 Goal 目标、可恢复的会话。
模型体验 — 通过官方 API 使用 DeepSeek 模型;会话日志完整记录模型所见内容,任何一次运行都可被重建。
模型控制 — 按供应商调节推理强度(关闭到最高)、最大输出 token 数,以及图像输入、图像生成与图像识别等多模态能力开关。

个性化 — 主题与皮肤合集、选区批注工作流、命令快捷键、中英双语界面。
插件管理 — 从 npm 或 Git 仓库安装插件、检查更新,并可逐个启用或禁用。

故障恢复 — 加载失败的插件会连同诊断信息一起报告:可禁用该插件、以安全模式启动,或让 Agent 携带失败上下文自动修复。


归档管理 — 搜索已归档会话,可恢复或彻底删除。

可扩展 — 安装新能力无需改动应用本体。
桌面集成 — 托盘图标、系统通知、单实例运行、加固的 Electron 窗口。

详见 Web UI 指南 的操作讲解,以及桌面应用指南中的架构、平台目标与当前限制。
下载
| 平台 | 安装包 |
|---|---|
| macOS Apple Silicon | DSHCode-*-macos-arm64.dmg |
| macOS Intel | DSHCode-*-macos-x64.dmg |
| Windows x64 | DSHCode-*-win-x64.exe |
每个版本都会随安装包发布 SHA-256 校验和(SHA256SUMS.txt)。
预览版安装包尚未进行代码签名或公证,因此 macOS Gatekeeper 与 Windows SmartScreen 可能在首次启动前发出警告。软件本身是安全的;警告只是因为二进制文件缺少付费签名证书:
- macOS:在访达中右键点击应用并选择打开,然后在弹窗中确认。或者在终端执行一次
xattr -cr /Applications/DSHCode.app。 - Windows:在 SmartScreen 弹窗中点击更多信息,然后选择仍要运行。
快速开始
安装 DSHCode 安装包后,从 macOS“应用程序”文件夹或 Windows“开始”菜单打开 DSHCode。应用会自行启动和停止内置 Web profile;安装版用户无需运行终端命令。
从源码运行
开发者仍可从仓库源码运行上游 Web 入口:
git clone https://github.com/whitelonng/dshcode.git
cd dshcode
pnpm install
pnpm run build
pnpm dsh web
命令会打印本地 Web UI 地址。详见 Web UI 指南。
桌面应用
打开 DSHCode 时,应用会启动内置的 Harness Web profile,并在经过安全加固的 Electron 窗口中显示。桌面外壳刻意保持精简;产品行为和 Web UI 仍由上游包提供,因此后续可以继续集成上游更新,而不必维护第二套界面。
本地服务与端口
应用每次启动时都会在 Electron 主进程内启动一个 HTTP 服务。该服务只绑定 127.0.0.1,并让操作系统分配一个可用的临时端口,因此不会占用固定端口,通常也不会与其他本地服务冲突。DSHCode 只允许一个应用实例,只加载其自身的精确回环地址;进程退出前会先释放 Harness 树,所以关闭应用也会停止服务并释放端口。
构建桌面安装包
git clone https://github.com/whitelonng/dshcode.git
cd dshcode
pnpm install
pnpm run desktop:dist
构建产物写入 .artifacts/desktop/release/。名为 Desktop 的 GitHub Actions 工作流会构建 macOS Apple Silicon、macOS Intel 和 Windows x64 安装包;desktop-v* tag 会把完整构建矩阵及 SHA-256 校验和发布到 GitHub Releases。
常见问题
DSHCode 是什么?
DSHCode 是一款免费、开源的桌面应用,把 DeepSeek 的插件化 AI Agent 框架 DeepSeek Harness 变成可直接安装的 macOS 与 Windows 应用,并提供图形化的对话与工作区界面。
DSHCode 是 DeepSeek 官方软件吗?
不是。DSHCode 是独立的社区项目。它保留上游包名、版权、架构、文档和 upstream Git 远程地址,以便正确归属来源并继续合并上游变更;但除非 DeepSeek 明确授权,它不代表 DeepSeek 官方发行、背书或认证。
需要 Node.js 或终端吗?
不需要。安装版用户得到的是普通应用;Node.js、CLI 与终端只在从源码运行或自行构建安装包时才需要。
为什么 macOS/Windows 会弹出安全警告?
预览版安装包尚未进行代码签名或公证。这是签名证书的成本问题,不是安全问题;一次性打开步骤见下载一节。
需要 API Key 吗?
需要。DSHCode 通过官方 API 运行 DeepSeek 模型;在应用设置中配置一次即可。
DSHCode 可以扩展吗?
可以。内置插件安装器可在不改动应用本体的前提下添加新能力;安全模式可以禁用导致崩溃的插件,保证应用仍能正常启动。
项目定位
DeepSeek Harness(dsh)是由 DeepSeek AI 开发的官方开源插件式 agent harness(智能体框架)。DSHCode 作为桌面端配套发行版参与其插件生态,并使用 dsh-plugin 和 deepseekharness-plugin 仓库标签便于检索。
DSHCode 是独立的社区项目。除非 DeepSeek 明确授权,否则它不代表 DeepSeek 官方发行、背书或认证。
开发
请先阅读开发指南、架构文档和桌面应用指南。面向 agent:请遵循 AGENTS.md。
致谢
- LINUX DO — 本项目也在 LINUX DO 社区持续分享与交流。
- dsh-genui — 为内置生成式 UI 能力提供插件实现。
- dsh-annotation — 为内置文本批注流程提供插件实现。
- dsh-web-ui — 为内置 Web UI 功能与皮肤集合提供插件实现。
许可证与品牌
源码继续使用上游 MIT 许可证。再次分发时必须保留 DeepSeek 的版权与许可声明;内置第三方软件及其许可证见 THIRD_PARTY_NOTICES.md,桌面安装包会同时附带这两个文件。
MIT 软件许可证本身不等于获得 DeepSeek 商标或 Logo 的 DSHCode 品牌使用许可。DeepSeek 的用户协议(中文版)保留了这些品牌标识的相关权利。DSHCode 发行版使用独立应用图标;内嵌 Harness 界面保留的上游身份标识及官方 powered by dsh 署名只用于说明兼容关系,不代表官方背书。
Listing badge
[](https://deepseek-plugin.org/plugins/whitelonng/dshcode/packages/bundle/web-app)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.