Sign inSign up

micrograils/deepseek-harness

By micrograils

•Updated 7 days ago

DeepSeek Harness - DeepSeek coding agent development environment

Image
API management
Machine learning & AI
Developer tools
0

3.2K

micrograils/deepseek-harness repository overview

Docker Image Size Docker Pulls Platforms

⁠micrograils/deepseek-harness

开箱即用的 DeepSeek Harness 开发容器:DeepSeek 官方编码智能体框架(对标 Claude Code, 理念是 "Model + Harness = Agent")的 Web UI,配好反向代理与常用 agent 工具链,拉起来就能开工。

容器内是 dsh web + nginx 一体化:dsh web 只监听回环 127.0.0.1:3080(官方刻意如此), 由 nginx 在 :80 对外提供服务,并代浏览器完成登录握手。

容器内不含 sshd,不暴露 22 端口,管理容器请用 docker exec。 镜像里的 ssh 仅作客户端使用(如 git clone git@host、登录其他主机)。

⁠快速开始

docker pull micrograils/deepseek-harness:latest

docker run -d --rm \
  -p 3080:80 \
  -e DEEPSEEK_API_KEY=你的API密钥 \
  -e DSH_UID=$(id -u) -e DSH_GID=$(id -g) \
  -v $(pwd):/workspace \
  micrograils/deepseek-harness
# 浏览器访问 http://127.0.0.1:3080

# 进 shell(非 root 用户 dsh)
docker exec -it <容器名> bash
  • 不用手动登录:dsh 的 Web UI 有一道启动令牌握手,本镜像已在入口脚本 + nginx 里 自动化了(从启动日志抓令牌、缺会话 Cookie 时自动走一遍),直接访问上面的地址即可, 无需复制 docker logs 里打印的 ?token= URL。
  • 重建容器不用重新登录:会话 Cookie 默认 30 天,签名密钥在 DSH_HOME,加一个 -v ./dsh-data:/opt/dsh 挂载即可持久化。
  • 从 IDE 链接 / 预览 iframe 等跨站入口打开也正常:镜像已把会话 Cookie 的 SameSite 从 dsh 默认的 Strict 改写为 Lax,否则浏览器会反复换票直到报「重定向次数过多」。
  • 挂载目录权限不对(dsh 报 EACCES,或生成的文件属主是 1000/root):用上面的 DSH_UID / DSH_GID 把容器内运行用户对齐到宿主机用户;不设置则保持默认 1000:1000。

以上几项都已由镜像内置处理(登录握手、跳转保留端口、会话 Cookie 改写),无需额外配置。

⁠Docker Compose(推荐)

下面这份 compose 是给不想敲长 docker run 的人准备的 demo:存成 docker-compose.yml (或 compose.yaml)即可直接用,只依赖公开镜像,不需要源码或仓库里的任何文件。

services:
  deepseek-harness:
    image: micrograils/deepseek-harness:latest
    container_name: deepseek-harness
    ports:
      - "3080:80"         # Web UI
    environment:
      - DEEPSEEK_API_KEY=your-api-key
      - DSH_UID=1000      # 填 `id -u`
      - DSH_GID=1000      # 填 `id -g`
      # - DEEPSEEK_BASE_URL=https://your-internal-llm.example.com
    volumes:
      - ./project:/workspace
      - ./dsh-data:/opt/dsh
docker compose up -d
# 浏览器访问 http://127.0.0.1:3080

⁠环境变量

变量默认说明
DEEPSEEK_API_KEY空DeepSeek API 密钥
DEEPSEEK_BASE_URL空企业内网 LLM 端点(生产请指向内网算力,勿用公网 api.deepseek.com)
DSH_HOME/opt/dshharness 配置 / profile / 凭证目录(建议挂载持久化)
DSH_HOST127.0.0.1dsh web 监听地址(保持回环,勿改)
DSH_PORT3080dsh web 监听端口(nginx 反向代理目标)
DSH_UID / DSH_GID1000容器内运行用户 dsh 的 uid/gid,对齐宿主机用户(见上文)
DSH_PUBLIC_URLhttp://127.0.0.1:3080仅用于启动日志里打印的访问地址(端口映射不同时改它)
DSH_TELEMETRY_DISABLED1关闭遥测(默认关)

⁠镜像信息

  • dsh 版本:0.1.5-rc.2(同时用作镜像 tag;:latest 跟随最新发布)
  • 基础镜像:node:24-bookworm-slim (Debian),多架构 amd64 / arm64
  • 对外端口:80(Web UI,nginx → 127.0.0.1:3080)——无 SSH 服务
  • 运行用户:dsh(非 root,sudo NOPASSWD;uid/gid 默认 1000:1000,可映射)
  • 工作目录:/workspace
  • 工具链:git、curl、wget、rsync、tmux、vim、python3、jq、yq、ripgrep、fd、htop、netcat、ssh 客户端
  • 许可证:DeepSeek Harness (MIT)

⁠变更历史

日期变更
2026-09-14移除 sshd(不再暴露 22 端口,改用 docker exec);新增 DSH_UID / DSH_GID 用户映射;发布前增加冒烟测试
2026-09-13dsh → 0.1.5-rc.2
2026-09-11dsh → 0.1.5-rc.1
2026-09-07启动时自动纠正 /home/dsh、DSH_HOME、/workspace 属主,修复 bind mount 后 dsh 写不进去;dsh → 0.1.2-rc.1
2026-09-01远程访问修复:启动令牌握手自动化(旧版 dsh 无令牌机制,会自动退化为纯反向代理)、跳转保留外部端口、会话 Cookie 改 SameSite=Lax;dsh → 0.1.2-alpha.3
2026-08-31统一版本管理与发布流程,首次提供 compose 示例(即上文那份 demo);dsh → 0.1.1-rc.2
2026-08-19首个版本:dsh 0.1.0-rc.7,dsh web + nginx 一体化镜像

⁠安全注意

⚠️ 本镜像把一个具备远程代码执行能力的智能体暴露到网络上,仅限可信网络 / 本地使用; 暴露到公网前务必加认证(例如在 nginx 层加 TLS + Basic Auth)。

⚠️ DeepSeek Harness 目前处于开发者预览阶段,迭代快速,可能存在破坏性兼容变更; 升级时重拉新 tag 的镜像、重建容器即可,配置与登录态由(挂载出来的)DSH_HOME 保留。

Tag summary

Content type

Image

Digest

sha256:bd7ff91bd…

Size

505.5 MB

Last updated

7 days ago

docker pull micrograils/deepseek-harness