目录

一、预备环境

        1.Docker安装

        2.源码下载

二、Docker本地部署

        1.编写打包镜像启动文件

        2.打包镜像并启动

三、使用测试

        1.基础使用

        2.自定义插件


一、预备环境

        1.Docker安装

        本机安装好 Docker Desktop ,下面是本人安装版本参考。

        2.源码下载

        下载官方提供的源码到本地工作目录下。

        Github地址:https://github.com/deepseek-ai/deepseek-harness

二、Docker本地部署

        1.编写打包镜像启动文件

        由于官方没有提供 dockerfile 等 docker 部署文件,因此需要自行编写。

        使用docker部署的好处是,方便管理和迁移部署。之后如果不想使用了,删除docker镜像和容器即可,不会影响本机环境。想要在离线环境安装,也只需把打好的镜像和部署文件复制,即可部署。

        把源码解压到本地,在源码目录下创建 5 个文件即可。

        下面是文件详情内容,请自行创建。

        .dockerignore :

# 依赖和构建产物(容器内重新安装)
node_modules
lib
dist
apps/web/dist

# Git 仓库(不需要进镜像,也避免泄露历史)
.git
.git*
!.gitattributes

# 敏感文件
.env
.env.*
*.key
*.pem

# 日志和临时文件
*.log
pnpm-debug.log
coverage
tmp
.sessions
.storages
.cache

# IDE 和系统文件
.vscode
.idea
.DS_Store
Thumbs.db

# Docker 自身(避免递归)
Dockerfile
docker-compose.yml
# 保留 docker-patch.yml(容器内需要它)

        .env :

        环境文件主要是用来方便配置模型 API 和 Agent 工作区目录的本地映射的。

        Agent 工作区目录 (DSH_WORKSPACE) ,我是在源码目录下创建了一个workspace/的空文件夹作为工作区,可以根据个人情况自定义。

        模型API需要自己去deepseek官方申请,如果是其他的模型提供商,可以先部署之后再配置

# DeepSeek API 配置
DEEPSEEK_API_KEY=sk-xxxxx

# 可选:自定义 API 地址(代理或自部署模型时填写)
DEEPSEEK_BASE_URL=https://api.deepseek.com

# Web UI 端口(默认 3080)
DSH_PORT=3080

# 挂载到容器内的工作目录(agent 能读写的本地路径)
DSH_WORKSPACE=D:\Project\Code\deepseek-harness-master\workspace

        docker-compose.yml :

services:
  dsh-web:
    build: .
    container_name: deepseek-harness
    ports:
      - "${DSH_PORT:-3080}:3080"
    environment:
      - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-}
      # 可选:自定义 base URL(用于代理或自部署模型)
      - DEEPSEEK_BASE_URL=${DEEPSEEK_BASE_URL:-}
    volumes:
      # 挂载你想让 agent 操作的本地项目目录
      - ${DSH_WORKSPACE:-D:/Project/Code}:/app/workspace
      # 持久化会话数据(重建容器后对话记录不丢失)
      - dsh-data:/app/.dsh-home
    # 注意:working_dir 必须是 /app(应用代码所在目录)
    # agent 的工作区通过 Web UI 的"选择工作区"指向 /workspace
    working_dir: /app/workspace
    restart: unless-stopped
    # 限制资源,防止失控
    deploy:
      resources:
        limits:
          memory: 4G

volumes:
  dsh-data:

        Dockerfile :

FROM node:22-slim AS builder

# 安装 node-gyp 原生编译所需的工具链(python3、make、g++)和 git
RUN apt-get update && \
    apt-get install -y --no-install-recommends python3 make g++ git && \
    rm -rf /var/lib/apt/lists/*

# 启用 corepack 并锁定 pnpm 版本
RUN corepack enable && corepack prepare pnpm@11.7.0 --activate

WORKDIR /app

# 复制所有源码(.dockerignore 控制排除项)
COPY . .

# 安装依赖 + 构建
RUN pnpm install --frozen-lockfile && pnpm run build

# ─── 运行阶段(更小的最终镜像)───
FROM node:22-slim

RUN corepack enable && corepack prepare pnpm@11.7.0 --activate

# 运行时仍需要 git(部分插件操作用到)
RUN apt-get update && \
    apt-get install -y --no-install-recommends git && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

# 只从 builder 阶段复制构建产物
COPY --from=builder /app /app

# 非 root 用户运行(安全加固)
RUN groupadd -r dsh && useradd -r -g dsh -d /app dsh && \
    chown -R dsh:dsh /app && \
    mkdir -p /workspace && chown dsh:dsh /workspace
USER dsh

# Web UI 默认端口
EXPOSE 3080

# 健康检查
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD node -e "fetch('http://127.0.0.1:3080').then(r=>{if(!r.ok)throw r.status}).catch(()=>process.exit(1))"

# 启动命令
CMD ["pnpm", "dsh", "web", "--patch", "/app/docker-patch.yml"]

        docker-patch.yml :

# Docker 部署 patch:允许容器外访问 Web UI
- id: webserver
  config:
    host: '0.0.0.0'
    port: 3080

        2.打包镜像并启动

        在源码目录编写好5个文件之后,在当前目录进入cmd窗口运行:

docker compose up -d --build

        第一次构建会比较慢,如果中途中断了,请多重试几次,大概率是网络问题,docker打包镜像要“科学上网”。

        完成后,查看容器日志,显示下面内容正常,本地访问 http://localhost:3080/ 即可进入web界面。

三、使用测试

        1.基础使用

        DeepseekHarness前端设计风格非常简洁,只保留了基本的对话框,但像skill、session、prompt、插件等这些内容都是完整实现了,只是没有显式暴露给用户。

        对话需要指定工作目录,在我们之前设置的 workspace/ 下创一个新的文件夹开始,创建完成之后,在本地也可以看到,容器内做了映射。

        指定完工作区,并配置好对话模型 api 就可以进行对话了(需注意在docker的.env文件中配置deepseek模型api,如果是其他渠道或本地部署的需要进入页面后在左下角模型处配置再开启对话)。

        2.自定义插件

        DeepseekHarness最有意思的地方就是其插件化的架构设计,所有agent平台功能:llm调用、对话管理、记忆管理、工具、甚至是agent循环逻辑、前端ui界面都是可以改造的插件。

        下面进行两个简单的实验来测试插件功能:

        ①PDF文件预览功能 + ②图谱创建展示功能

        平台原本不支持PDF文件预览和文本转为拓扑图谱功能。仅通过平台对话框交互,agent自主完成分析、编写代码、沙箱测试、修复bug,稳定运行30分钟,并将功能类似手机app注册安装到平台可用。

        像todo任务列表、沙箱环境测试都是原生支持的。只需跟大模型对话描述内容,其会自动完成插件开发的全流程过程。

        在容器映射的本地目录下可以看到agent创建的两个插件文件目录。

        创建完成之后,要重启一下harness平台来注册插件到配置文件,当前也可以直接跟大模型对话让其修改配置文件。

        当前也体现了docker部署的好处之一,如果插件编写失败可能会导致harness平台崩溃,此时只需docker compoose up -d 重新启动一个容器即可恢复,然后让agent检查插件问题再重启容器。

        注册成功后,可以在设置的插件中看到。

        下面来测试一下新创建的两个插件功能。

        首先是PDF预览功能。

        功能正常在对话中可用,可以实现大型pdf文件类似wps、office的基础预览、标注功能。

        下面测试图谱功能,也是在对话中使用。

        我让 agent 读取 DeepseekHarness 源码,整理一个核心系统架构的拓扑图(基于AI生成,准确性待验证)。图谱节点、关系都可以新建、拖动、修改、删除。    

        下面是插件功能跟平台的拓扑关系。(基于AI生成,准确性待验证)

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐