DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Tom6814 /

dsh-web

Topic repository only

🚀 DeepSeek Harness 的网页部署Docker

★ 3 Stars1 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@eef700c3

DeepSeek Harness Web 部署版

DeepSeek Harness(@deepseek-ai/dsh)的 Web 网页部署版, 基于 Docker 一键部署。部署后通过浏览器访问完整的 Harness Web 界面:对话、工作区(网页内目录浏览 + 新建文件夹)、 插件市场(搜索 GitHub dsh-plugin 插件并安装)等。

目前项目正在高速开发中,很快将增加更多功能

Docker 部署

# 构建镜像
docker build -t dsh-web .

# 运行
docker run -d --name dsh \
  -p 8080:8080 \
  -e PORT=8080 \
  -v dsh-data:/data \
  dsh-web

# 浏览器打开 http://localhost:8080

💡 DeepSeek API Key 在网页里配置:首次打开后进入「设置 → 模型」填入 DEEPSEEK_API_KEY(dsh 把密钥保存在配置文件中,不通过环境变量注入)。

⚠️ 务必挂载持久化目录:-v dsh-data:/data 将数据卷挂载到容器 /data, 用于保存 dsh 的配置、工作区、会话记录和安装的插件。不挂载的话,容器重建后这些数据会全部丢失。

其他常用参数:

# 绑定其他端口(如 9000)
-p 9000:8080 -e PORT=8080

# 国内网络构建较慢时,可换 npm 镜像源加速
docker build --build-arg NPM_REGISTRY=https://registry.npmmirror.com -t dsh-web .

环境变量

变量 默认值 说明
DEEPSEEK_API_KEY — 在网页「设置 → 模型」中配置,不通过环境变量注入
PORT 8080 对外端口
DSH_HOME /data/dsh dsh 数据目录(即持久化卷挂载点 /data)
DSH_TRUSTED_HOSTS — 额外信任的主机(逗号分隔),通过域名访问时使用
PREVIEW_ALLOW_PORTS 3000-9999 预览面板可反代的容器内端口白名单(如 5173,8000-9000),防止任意端口探测
PREVIEW_EXTRA_ROOTS — 预览可读的额外根目录(逗号分隔),默认含 /tmp

项目结构

├── Dockerfile                  # 镜像构建(Node LTS + nginx 反代 + dsh + Patchright 浏览器)
├── start.sh                    # 启动脚本
├── patches/                    # 部署适配配置(网页目录浏览 + 插件市场 + 浏览器 MCP + 自动化)
│   ├── web.cordis.patch.yml    # web profile:browse 交互 / 插件市场 / MCP 浏览器 / 自动化
│   └── headless.cordis.patch.yml # headless profile:仅浏览器 MCP(自动化任务执行时使用)
├── plugin-market/              # 插件市场插件(搜索安装 / 预览面板 / 导出项目)
├── plugins/floatboat-style/    # Floatboat 风格提示词注入插件(prompt sections)
├── plugins/automation/         # 自动化插件(定时触发 AI 执行任务)
├── plugins/image-gen/          # 图片生成插件(对话内生成图片,gpt-image-1/2 等)
├── plugins/model-extras/       # 模型增强插件(OpenAI Responses API / 自定义模型)
├── plugins/mcp-skill/          # 技能与 MCP 管理(侧栏入口 + Cursor mcp.json 导入)
├── presets/floatboat/          # 「Floatboat 风格」agent preset(部署到用户预设目录)
└── vendor/dsh-routing-suite/   # 第三方:dsh-super-injector(运行时注入器)+ router-standard 路由预设

说明

  • 模型配置走官方原生:「设置 → 模型」配置 DeepSeek API Key 或添加任意 OpenAI 兼容 自定义提供方(官方支持)。额外提供 OpenAI Responses API 适配器(Codex / gpt-5 的 /v1/responses 协议,原生仅支持 chat/completions):在官方 Models 页选择 openai-responses 提供方后,把端点配置写入 $DSH_HOME/model-extras.json(baseURL / apiKey / models), /models 自动获取模型列表。

  • 对话内生成图片(GPT Image 1/2 等):「设置 → 插件 → 图片生成」配置图片端点(OpenAI 兼容 /images/generations)与 Key,自动获取图片模型(gpt-image-1、gpt-image-2、dall-e-3…)。 之后直接让 Agent 生成图片——工具 generate_image 会把图片保存到工作区 images/ 并可预览。

  • 自动化(主页侧栏):左侧栏底部「⏰ 自动化」入口(类 TRAE 任务栏),点击打开抽屉面板, 可创建定时任务——间隔分钟、每天几点、每周周几几点,到点由 dsh 自带 headless 运行器执行 任务(复用同一模型配置);支持「✨ AI 优化」把一句话需求扩展为结构化任务指令、立即运行、 运行历史查看。

  • 技能与 MCP(侧栏):左侧栏「技能与 MCP」入口(自动化下方)打开管理面板——

    • MCP 服务器:新增/编辑/删除/启停(stdio 命令或 streamable-http URL);热插拔: 保存/启停后立即连接或断开并注册/注销工具(mcp__<服务器>__<工具>),无需重启; 面板显示「已热连接 N 工具」状态;重启后自动恢复连接;
    • OAuth 浏览器授权:需要浏览器验证的远程 MCP(如 Supabase 等 streamable-http + OAuth 服务器)自动进入「需浏览器授权」状态,点击「打开授权」在浏览器完成登录/授权 (授权码流:回调 → token 交换 → 自动连接注册工具),授权持久化,无需重启;
    • Cursor 格式:导入区直接粘贴 JSON 文本(.cursor/mcp.json 的 mcpServers 内容, command/args/env 与 url/headers 均支持)即批量导入并热生效;「以 Cursor 格式显示」 一键把当前服务器以 Cursor mcpServers 结构展示/导出;
    • Skills:管理 $DSH_HOME/skills/<name>/SKILL.md(Claude 风格技能根)——上传 SKILL.md 文件或 zip 压缩包(自动解压定位 SKILL.md 并保留附属文件)、手动新建/删除/ 启停;「AI 帮我创建」(一句话描述 → LLM 生成标准 SKILL.md 并安装)、「AI 帮我安装」 (粘贴任意教程/规则文本 → AI 整理成标准技能安装);保存即出现在输入框「/」技能菜单 (dsh 技能文件监听,实时生效)。
    • GitHub 同步(会话底部):每个会话底部一行「GitHub 同步」——可选,同一 工作区下所有会话复用同一仓库+分支。绑定方式二选一:
    • OAuth App(推荐):配置 GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET (GitHub Settings → Developer settings → OAuth Apps 创建)。回调地址必须填 你实际访问的域名:https://<你的域名>/api/github-sync/oauth/callback (多个访问域名需逐个添加回调;也可用 PUBLIC_URL 显式固定对外地址)。 回调地址由服务端按当前请求域名动态生成,与注册一致才能授权成功。 会话底部点「用 GitHub 登录」→ 浏览器授权 → 自动获取账号与邮箱 → 在账号下 选择任意仓库(所有仓库)+ 分支 → 点「同步」把会话导出为 Markdown 提交到该仓库 (dsh-sessions/<会话id>.md,重复同步覆盖更新)。OAuth token 持久化,可「解绑」。
    • 手动令牌:环境变量 GHP / GH_USER / GH_EMAIL,或在行内折叠的高级项填 GHP。
    • 侧栏折叠:「自动化」「技能与 MCP」按钮随侧栏收窄自动隐藏文字、图标居中放大。
  • 浏览器自动化(MCP):镜像内置 Patchright(playwright 的 stealth 分支,驱动级反检测, 能过基础机器人验证)的 MCP server。Agent 工具集中出现 mcp__browser__browse / interact / extract / close,可查看、填写、点击网页。web 与 headless(自动化任务)profile 都可用。

  • dsh-routing-suite(vendored,MIT):

    • dsh-super-injector v0.3.3:运行时注入器,dev_* 工具全家桶——注入/卸载/热重载/ 侧挂转正/脚手架/构建发布/插件自检(dev_inject_plugin、dev_uninject_plugin、 dev_reload_package、dev_plugin_status、dev_scaffold_plugin 等 14 个), junction 链接 + loader.create 免重启装配;设置页「插件」区提供插件管理 UI (列表/卸载/拖入内化);清单持久化重启自动恢复。
    • router-standard 预设 v0.1.1:任务感知思维模式路由(spec/react/weak 三模式 + 近距离引导 + 单任务三锚)。新建会话选择 Router Standard (experimental) 预设, 生成类任务自动 react、维护类任务自动 spec;AI 自优化工具 dev_router_status / dev_router_mode / dev_mode_subagent。
    • 构建方式见 vendor/dsh-routing-suite/README.md。
  • 导出:右上角「导出」按钮二级菜单——导出项目(工作区打包 zip 直接下载,不落盘, 自动排除 node_modules/.git/dist 等)、导出会话日志(复用官方 Session log)。

  • 预览面板:对话中的 localhost 链接与文件在右侧分栏预览(可拖宽、缩放、移动端全屏); 地址栏显示 127.0.0.1:端口 / file:// 格式;除二进制外任意文件可预览(文本直接显示, 二进制给出下载页)。

  • 镜像基于 Node 22 LTS,内置 nginx 反向代理(dsh 出于安全设计不支持 0.0.0.0 直绑)。

  • 首次使用:添加工作区 → 网页内目录树选目录 → 开始对话;模型配置在 设置 → 模型。 外部 http(s) 链接保持默认新标签页打开。PREVIEW_ROOT 可覆盖文件预览根(默认 /workspace), PREVIEW_EXTRA_ROOTS 追加额外可读根(逗号分隔;未设置时默认含容器临时目录)。

  • 插件启停:设置 → 插件 → 「插件列表」展开任意插件卡片,详情里带「启用 / 停用」按钮, 通过写入 $DSH_HOME/cordis.patch.yml 用户补丁层即时生效(dsh 热更新),重启后保持。

  • Floatboat 风格预设:新建会话时在预设选择器中选「Floatboat 风格」——将 Floatboat (AOE Tech Labs)提示词工程的精华迁移到 dsh:交付完整度优先的工作哲学、工具使用纪律 (文件最小变更/来源可信度/浏览器与检索选择/凭据处理)、交付真实性契约(不虚构产物)、 安全边界(防套取/防泄露)与委派记忆纪律。基于官方 standard preset,工具能力完全一致; 提示段落由 plugins/floatboat-style 插件以 systemPrompt.section() 注入(对应 Floatboat 的 prompt-segment 机制),每段可独立关闭。⚠️ 该 preset 依赖 dsh-floatboat-style 插件(镜像已内置),单独复制 preset 到未装插件的环境会挂载失败。

  • 插件安装:搜索 GitHub topic:dsh-plugin 仓库后,自动检测每个仓库对应的 npm 包(读根 package.json;monorepo 探测 packages/ 子包,免 GitHub API 限流): 卡片标注 ✓ npm: <包名> 表示该仓库有已发布的 npm 插件包,点击「安装」直接安装 npm 包(而非 GitHub 根包,避免 monorepo 根包无 dsh.bundle 装完不生效的坑)。 安装时自动处理 pnpm 构建授权(allowBuilds 占位自动批准 + 重试)与兜底 reconcile; 安装后做插入条目冲突检测(聚合包与单包同时装会致重启崩溃,装时即警告并可一键 卸载 /api/plugin-market/uninstall)。

  • 重启服务:安装成功后点「重启服务」→ 进程以非零码退出(exit(1),平台判定 崩溃必重启;优雅退出 exit 0 可能被平台视为正常关闭而不重启)→ 容器平台自动拉起 新实例 → 插件进入 loader 组合与 Web UI。前端在服务恢复后自动提示并引导刷新页面 (index.html 已禁缓存,保证新插件入口图 __DSH_BOOT__ 重新拉取)。请确保已为 /data 挂载持久化卷,否则重启会丢失新装的插件与会话数据。

  • 排查日志:插件市场所有操作(install/uninstall/toggle/restart)都以 [plugin-market] 前缀输出详细日志(spec、profile 路径、pnpm 输出、allowBuilds 处理、bundles 现状、冲突检测结果),在 Zeabur 日志面板可直接 grep 定位问题。

—/ 5

No ratings yet

Manifest verification required

Commit eef700c31d09

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout