DeepSeek Harness Hub
← 返回列表

gitcore/dsh-docker

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

让 AI agent 替你安装 dsh Docker。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/24 · 已提供中文文档

把 DeepSeek 官方智能体 Shell(@deepseek-ai/dsh)装进 Docker——部署这件事,交给你的 AI agent。A rebuild blueprint: let your AI agent install dsh for you.

综合分
27.3
GitHub 分
27.3
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add gitcore/dsh-docker
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-docker

让 AI agent 替你安装 dsh Docker。

dsh(@deepseek-ai/dsh,DeepSeek 官方智能体 Shell)的容器化部署。注意:本仓库里没有 Dockerfile,也没有 compose.yaml——只有一份部署施工图:dsh-docker-rebuild.md。把它交给任意 AI agent,由 agent 在你的机器上现场重建并完成部署。

快速开始

git clone https://github.com/gitcore/dsh-docker.git
cd dsh-docker

把这段话发给你的 AI agent(Claude Code / DeepSeek / Cursor 等均可):

阅读当前目录下的 dsh-docker-rebuild.md,
严格按它的步骤在这台机器上部署 dsh。
需要向我确认的事情直接问,不要猜。

agent 会先问你三个问题:

| 问题 | 说明 |
|---|---|
| 是否需要外网(公网)访问? | 不需要 → 内网直连;需要 → 继续提供入口域名 |
| API key 现在有吗? | 可选;没有则进入 Web UI 后按页面提示录入 |
| 数据放在哪里? | 可选;默认部署目录下 ./dsh-data |

之后 agent 自动完成:落盘 4 个文件 → 构建镜像 → 启动容器 → 健康检查通过为止。

外网部署(可选)

第一问答「需要」时的形态:dsh 保持零端口发布,前面加一道门禁反代,由它统一负责 TLS 与登录校验。

浏览器
│ https://:
▼
路由器(公网 IP,端口转发  → 内网主机 443)
▼
门禁反代(nginx 容器,webnet 网络,443 TLS)
├─
│     ├─ auth_request ──► 认证服务 /会话校验端点
│     │      401 → 302 https:///signin(登录页)
│     ▼      200
│     dsh 容器 dsh:3080(仅 webnet 内部可达)
└─  ──► 认证服务(登录页)

你需要自备三样东西:

| 依赖 | 说明 |
|---|---|
| 入口/登录页域名 | 各配一张 TLS 证书,装在门禁反代上 |
| 认证服务 | 提供会话校验端点与登录页;没有就先部署一个 |
| 路由器端口转发 | 公网  → 内网主机 443 |

agent 会把你的入口域名登记进 .env 的 DSH_TRUSTED_HOSTS(域名与带端口形式各一条)。门禁层的具体配置不在施工图范围内,细节见施工图文末「门禁说明」。

特权接口与 loopback Host

dsh 把特权 RPC(settings. / credentials. / agentPreset. / llm.discoverModels 等写操作)设计为只接受 loopback 的 Host 头——它校验的是 Host 头的值,不是来源 IP。所以不经处理时,远程用户即使已登录也打不开设置页、凭据页。

解法:门禁反代转发 /api/ 路径时,把 Host 改写为 127.0.0.1:3080(参考实现:proxy_set_header Host 127.0.0.1:3080)。

但改写 Host 等于穿过了 dsh 自带的浏览器信任墙,必须在反代层补同源校验作为补偿:

| 校验 | 规则 | 违规处置 |
|---|---|---|
| Origin | 为空(非浏览器客户端)或精确等于本站入口源 | 403 |
| Sec-Fetch-Site | 为空 / same-origin / none | 403 |

校验通过后再把 Origin / Sec-Fetch- 头清空转发(空值=不转发该头),避免残留标记与伪造的 Host 打架。这就是三条底线的由来——登录校验不能省、Host 改写必须配同源守卫、dsh 端口不能发布,三者缺一即出现绕过面。

部署产物

- ubuntu:24.04 底座 + 锁定版本的 dsh + jq / rg / fd / git / vim / build-essential 工具链
- 三处 bind mount 持久化:会话、workspace、home 目录;容器重建不丢数据
- entrypoint 启动自愈:按 storages/workspace.json 重建注册过的 workspace 目录
- 默认零端口发布:远程访问需自备门禁反代(TLS + 登录态校验),拓扑图见施工图文末
- 可选独立形态:受信内网直连 :3080

设计取舍

- 施工图而非成品:每次部署从同一份文档现场重建,改动可追溯、可审计
- 环境值来自提问:凭据、路径、域名均向用户收集,文档内无写死的机器默认值
- fail loudly:前置缺失即报错停止,不做静默兜底

Credits

基于 DeepSeek 官方 npm 包 @deepseek-ai/dsh 构建。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群