🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

mosabbir-maruf/ai-workstation

DeepSeek Harnessspec-screened扫描:无法判定在 GitHub 查看 ↗
未验证

一个可复用、隔离的 AI 编码工作站,用于在远程 Linux VPS 上运行 DeepSeek…

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

一个安全且可复用的 VPS 开发工作站,具有隔离的 Docker 项目、DeepSeek Harness、GitHub App 身份验证、SSH 预览以及简单的生命周期管理。

综合分
28.6
GitHub 分
28.6
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add mosabbir-maruf/ai-workstation
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:需留意实装验证未通过
是什么
dsh 原生插件 · market
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 18 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

⚠︎ 实装验证未通过(unknown · 2026/9/25) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
数据截至 2026/9/21(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
AI 工作站

一个可复用、隔离的 AI 编码工作站,用于在远程 Linux VPS 上运行 DeepSeek Harness(DSH)和项目开发工作负载。

Platform
Runtime
AI Runtime
License: MIT
Contributing
Security Policy
Maintainer

目录

- 概述
- 架构
- 安全模型
- 仓库结构
- 主机运行时结构
- 要求
- 安装
- 配置
- GitHub 身份验证
- 日常工作流程
- CLI 参考
- 项目生命周期
- Harness 和 DSH 生命周期
- 预览和 SSH 隧道
- Git 工作流程
- 缓存管理
- 状态备份和恢复
- 更新和升级
- CI/CD
- 运维手册
- 故障排除
- 安全检查清单
- 设计决策
- 快速参考
- 贡献
- 安全
- 许可证
- 维护者

概述

AI 工作站为远程 Linux VPS 提供一个可复用的开发环境。

项目作为普通 Git 仓库保留在主机上的 ~/projects/ 下。只有当前选定的项目会挂载到工作站容器的 /workspace 中。

工作站包含通用开发者运行时和 DeepSeek Harness。DSH 安装和 DSH 状态持久化在一次性容器文件系统之外,允许替换容器/镜像而不会有意丢失 Harness 状态。

该系统有四个主要边界:

1. 主机管理层 — Docker、项目、运行时状态、密钥和 ai CLI。
2. 工作站容器 — 隔离的开发者运行时加上选定的项目。
3. GitHub 代理 — 通过 Unix 套接字进行 GitHub App 凭据流程,而不是在容器内使用 PAT 或主机 SSH 密钥。
4. 现有基础设施 — 现有的网关/反向代理栈保持独立。

架构
高层架构

互联网
│
┌──────────────┴──────────────┐
│                             │
SSH :1182                      HTTPS :443
│                             │
▼                             ▼
┌────────────┐             ┌─────────────────────┐
│ Mac / 管理 │             │ 现有反向            │
│   客户端   │             │ 代理 / Nginx        │
└─────┬──────┘             └──────────┬──────────┘
│                               │
SSH 隧道                              ▼
│                      现有应用栈
▼
┌────────────────────────────────────────────────────────────────────────────┐
│                            Ubuntu VPS / 主机                               │
│                                                                            │
│  ┌──────────────────────┐       ┌───────────────────────────────────────┐  │
│  │ ~/projects/          │       │ ~/ai-workstation/                     │  │
│  │                      │       │                                       │  │
│  │ project-a/           │       │ scripts/ai                            │  │
│  │ project-b/           │       │ docker/                               │  │
│  │ active-project/ ─────┼──────►│ runtime/                              │  │
│  │                      │       │ secrets/                              │  │
│  └──────────┬───────────┘       │ .env                                  │  │
│             │                   └────────────────┬──────────────────────┘  │
│             │                                    │                         │
│             │ /workspace 挂载                     │ Docker Compose          │
│             ▼                                    ▼                         │
│  ┌──────────────────────────────────────────────────────────────────────┐  │
│  │                            ai-workstation                            │  │
│  │                                                                      │  │
│  │  用户:sandbox(UID 1001)                                            │  │
│  │  Node.js + Git + SSH 客户端 + ripgrep + fd + procps + tini            │  │
│  │                                                                      │  │
│  │  /workspace                  ← 仅活动项目                             │  │
│  │  /home/sandbox/.dsh          ← 持久化 DSH 状态                        │  │
│  │  /home/sandbox/.npm-global   ← 持久化 DSH 安装                        │  │
│  │                                                                      │  │
│  │  DSH:     127.0.0.1:4090                                             │  │
│  │  桥接:  0.0.0.0:4091                                               │  │
│  │  应用:     项目选定的开发端口                       │  │
│  └──────────────────────────────────────────────────────────────────────┘  │
│                              ▲                                             │
│                              │ Unix 套接字                                 │
│                   ┌──────────┴───────────┐                                 │
│                   │ GitHub broker 运行时│                                 │
│                   │ github.sock          │                                 │
│                   └──────────┬───────────┘                                 │
│                              │                                             │
│                   GitHub App 私钥                                   │
│                              │                                             │
│                   secrets/github-app.pem                                   │
└────────────────────────────────────────────────────────────────────────────┘

数据流

Mac / 操作员
│
│ SSH
▼
主机 CLI:ai
│
├── 项目选择
├── Git 操作
├── 工作站生命周期
├── Harness 生命周期
├── 应用生命周期
├── 缓存维护
└── 预览/隧道生成
│
▼
Docker 工作站
│
├── 选定项目位于 /workspace
├── 持久化 DSH 状态
├── 持久化 DSH 安装
├── 应用运行时状态
├── Harness 运行时状态
└── GitHub broker 套接字

组件职责

| 组件 | 职责 | 持久化 |
|---|---|---|
| scripts/ai | 主操作员 CLI | Git |
| docker/Dockerfile | 基础工作站镜像 | Git / GHCR |
| docker/compose.yml | 运行时、挂载、限制、端口 | Git |
| docker/entrypoint.sh | 容器引导和 DSH 安装 | Git |
| docker/app-runner.sh | 项目进程运行器 | Git |
| docker/harness.sh | DSH + 桥接生命周期 | Git |
| docker/github-app-credential-helper | 容器侧 Git 凭据助手 | Git |
| scripts/lib/github.sh | GitHub App/broker 管理 | Git |
| broker/ | 主机侧 broker 实现 | Git |
| runtime/dsh/ | DSH 状态/配置/历史 | 主机持久化 |
| runtime/npm-global/ | DSH 安装 | 主机持久化 |
| runtime/app/ | 应用 PID/日志状态 | 可丢弃 |
| runtime/harness/ | Harness PID/日志状态 | 可丢弃 |
| runtime/github-broker/ | Broker 套接字/运行时 | 运行时 |
| ~/projects/ | Git 工作副本 | 主机持久化 |
| GitHub Actions | ARM64 镜像构建/发布 | CI |
| GHCR | 容器镜像仓库 | 外部 |

安全模型

工作站有意与敏感的主机能力隔离。

容器安全

当前运行时配置为:

- 以非 root 用户 sandbox(UID 1001)运行;
- 丢弃所有 Linux 能力;
- 启用 no-new-privileges;
- 保持非特权状态;
- 将内存限制为 512 MB;
- 将 CPU 限制为 1.5 个 CPU;
- 将进程数限制为 256 个 PID;
- 将 /tmp 用作 noexec,nosuid;
- 避免使用主机网络;
- 避免使用主机 Docker 套接字;
- 避免挂载主机的 ~/.ssh;
- 仅将活动项目挂载到 /workspace。

凭据边界

GitHub 凭据无需复制到工作站中。

容器内的 Git
│
▼
凭据助手
│
▼
Unix 套接字
│
▼
主机 GitHub 代理
│
▼
GitHub App 身份验证
│
▼
GitHub

凭据助手不会通过 Git 的凭据存储持久化 GitHub 令牌。

机密位置

敏感文件仅存在于主机上:

.env
secrets/github-app.pem
runtime/dsh/.credentials.yaml

建议的权限:

.env                         600
secrets/github-app.pem       600
runtime/dsh/                 700
runtime/dsh/.credentials...  600

切勿提交私钥、令牌、凭据或 .env。

仓库结构

ai-workstation/
├── .env.example                     # 环境模板
├── .gitignore                       # 忽略的机密、运行时和操作系统文件
├── CONTRIBUTING.md                  # 贡献者指南
├── LICENSE                          # MIT 许可证
├── README.md                        # 主要架构与用户文档
├── SECURITY.md                      # 安全策略与披露流程
├── install.sh                       # 主机安装与验证脚本
├── update.sh                        # 快进更新与升级脚本
│
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml           # 结构化缺陷报告表单
│   │   ├── feature_request.yml      # 结构化功能请求表单
│   │   └── config.yml               # Issue 模板配置
│   ├── workflows/
│   │   └── image.yml                # ARM64 GHCR 构建与发布工作流
│   └── pull_request_template.md     # PR 提交模板
│
├── broker/
│   └── github_broker.py             # 主机侧 GitHub App 凭据代理
│
├── config/
│   └── projects.yml                 # 项目配置注册表
│
├── docker/
│   ├── Dockerfile                   # 基础 ARM64 工作站镜像
│   ├── compose.yml                 # 运行时/安全配置
│   ├── entrypoint.sh               # 容器引导与 DSH 设置
│   ├── app-runner.sh               # 应用进程运行器
│   ├── harness.sh                  # DSH + 桥接生命周期
│   └── github-app-credential-helper# 容器侧凭据助手
│
└── scripts/
├── ai                           # 主 CLI
├── github-app-credential-helper # 主机侧凭据助手
└── lib/
└── github.sh                # GitHub App/代理辅助脚本

[!NOTE]
runtime/、.env、.venv/、secrets/ 以及 ~/projects/ 下的项目检出目录都是本地主机运行时路径,有意排除在版本控制之外。

主机运行时结构

~/
├── ai-workstation/
│   ├── .env
│   ├── .venv/
│   ├── runtime/
│   │   ├── dsh/
│   │   ├── npm-global/
│   │   ├── app/
│   │   ├── harness/
│   │   └── github-broker/
│   └── secrets/
│       └── github-app.pem
│
└── projects/
├── project-a/.git
├── project-b/.git
└── active-project/.git

只有选定的项目会被挂载到 /workspace。

要求

主机

- 带有 Docker 的 Linux 主机。
- 支持 Docker Compose。
- Git。
- Python 3。
- sudo。
- 对将要管理的仓库具有 GitHub 访问权限。
- 针对当前已发布镜像的 ARM64 主机,或合适的镜像/构建策略。

随附的安装程序会验证 Docker、Git、Python 3、Docker 守护进程访问权限以及 Python 虚拟环境支持。

推荐的服务器配置

- SSH 密钥认证。
- 禁用密码认证。
- 禁用 root SSH 登录。
- 防火墙对入站流量默认拒绝。
- 仅开放必需的公共端口。
- 开发端口绑定到 localhost。

安装

cd ~/ai-workstation
./install.sh

安装程序会:

1. 验证主机先决条件;
2. 如有需要,安装 Python venv 支持;
3. 创建运行时/项目/密钥目录;
4. 从 .env.example 创建 .env;
5. 创建 Python 虚拟环境;
6. 安装所需的 Python 依赖;
7. 将 ai 安装到 /usr/local/bin/ai;
8. 验证安装结果。

然后:

ai doctor
ai github setup
ai github status
ai github test

配置

.env.example 当前包含:

IMAGE=ghcr.io/mosabbir-maruf/ai-workstation:latest
DSH_VERSION=0.1.2-rc.1
ACTIVE_PROJECT=
ACTIVE_PROJECT_PATH=

CLI 在配置时还会在本地维护与 GitHub App/broker 相关的值。

规则

- 保持 .env 私密。
- 切勿提交 .env。
- 保持 secrets/github-app.pem 私密。
- 对于受控部署,优先使用可信/固定版本的镜像引用。
- 当需要确定性行为时,固定 DSH_VERSION。

GitHub 认证

使用:

ai github setup
ai github status
ai github test

GitHub App 私钥应放置在:

~/ai-workstation/secrets/github-app.pem

保护它:

chmod 600 ~/ai-workstation/secrets/github-app.pem

成功的认证测试应报告:

Testing GitHub App credentials...
✓ GitHub Installation Token: OK

GitHub authentication: READY ✓

日常工作流程

启动

ai start

检查

ai status

启动活动项目

ai run

预览

ai preview

停止项目

ai app stop

停止工作站

ai stop

典型会话

ai doctor
ai start
ai run
ai preview

Work with DSH / editor / browser

ai app logs
ai status
ai app stop
ai stop

CLI 参考

运行:

ai

以查看内置命令列表。

项目

ai add
ai remove
ai list
ai use

ai add 会将 GitHub HTTPS 仓库克隆到 ~/projects/。

ai use 选择挂载到 /workspace 的项目。

Git

ai pull
ai push "commit message"

ai pull 使用仅快进(fast-forward-only)的 Git 行为。

ai push 在提交/推送前会检查暂存文件名中常见的敏感文件模式。

工作站

ai start
ai stop
ai restart
ai status
ai logs
ai shell
ai run
ai preview

应用

ai app stop
ai app restart
ai app status
ai app logs

Harness

ai harness start
ai harness stop
ai harness restart
ai harness status

DSH

ai dsh version
ai dsh update
ai dsh update

维护

ai cache
ai cache clear
ai cache clear --deps
ai cache clear --deps --yes
ai update
ai upgrade
ai doctor

GitHub

ai github setup
ai github status
ai github test

状态

ai state export
ai state import

项目生命周期

GitHub 仓库
│
▼
ai add
│
▼
~/projects/project-name
│
▼
ai use project-name
│
▼
ACTIVE_PROJECT / ACTIVE_PROJECT_PATH
│
▼
ai start
│
▼
Docker 工作站
│
▼
ai run
│
▼
开发服务器
│
▼
ai preview
│
▼
通过 SSH 隧道访问 Mac 浏览器

切换项目会复用同一个工作站镜像。

Harness 与 DSH 生命周期

DSH 安装、DSH 状态和 Harness 运行时元数据被有意分开。

runtime/npm-global/
└── DSH 安装

runtime/dsh/
└── DSH 状态/配置/历史

runtime/harness/
└── PID/日志/运行时元数据

在容器内部:

DSH
└── 127.0.0.1:4090
▲
│
│ 本地桥接
│
Bridge
└── 0.0.0.0:4091
│
▼
主机: 127.0.0.1:4090

这使得 DSH 服务可以保持容器内部运行,同时仍可通过 SSH 隧道在本地访问。

预览与 SSH 隧道

开发端口有意不公开。

当前固定的主机绑定包括:

127.0.0.1:3000
127.0.0.1:3001
127.0.0.1:8000
127.0.0.1:4090 -> container:4091

项目开发服务器可能使用其他端口,例如 5173。

运行:

ai preview

示例:

检测到的应用端口: 5173

SSH 隧道命令:

ssh -N \
-L 5173:172.20.0.2:5173 \
-L 4090:172.20.0.2:4091 \
mosabbir-cloud

URL:
应用 : http://127.0.0.1:5173
DSH : http://127.0.0.1:4090

容器 IP 和应用端口是运行时值,不得硬编码。

Git 工作流

GitHub 是项目源代码的唯一事实来源。

典型工作流:

ai use my-project
ai start
ai run

开发

ai pull
ai push "feat: implement feature"

ai app stop
ai stop

工作站不要求将 PAT 或主机 SSH 私钥挂载到容器中。

缓存管理

检查

ai cache

这是只读操作。

安全清理

ai cache clear

在工作站运行时,清理可回收的 Docker 构建器缓存和 npm 缓存。

它不会有意删除:

- DSH 状态;
- DSH 安装;
- .env;
- Git 仓库;
- Docker 镜像;
- Docker 容器;
- Docker 卷。

依赖清理

ai cache clear --deps

在确认后删除 ~/projects 下的 node_modules 目录。

非交互式:

ai cache clear --deps --yes

推荐:

ai app stop
ai cache clear --deps
ai run

依赖会根据项目的 lockfile 重新安装。

状态备份与恢复

项目源代码由 GitHub 保护。DSH 状态是独立的,应单独备份。

导出

ai state export

将状态归档存储在某处受保护的位置,最好是在主机之外。

导入

ai state import

只导入受信任的归档。

推荐的恢复流程:

ai stop
ai state import /path/to/backup.tar.gz
ai start
ai dsh version

备份建议

对于生产/运维环境,请对状态导出使用定期的加密且主机外的副本。

当前系统提供导出/导入功能;自动异地备份仍属于运维职责。

更新与升级

有三个独立的更新层。

CLI/仓库

ai update

或:

./update.sh

工作站镜像

ai upgrade

镜像从 GHCR 获取。

仅 DSH

ai dsh update

推荐的 DSH 升级:

ai state export
ai dsh update
ai harness restart
ai dsh version

DSH 更新不需要重建基础镜像,因为安装位于持久化的 runtime/npm-global 中。

CI/CD

工作站镜像在 GitHub Actions 中为 Linux ARM64 构建。

Push to main
│
▼
.github/workflows/image.yml
│
├── checkout
├── QEMU ARM64
├── Docker Buildx
├── GHCR login
├── build linux/arm64
├── push :latest
├── push :
├── inspect published images
└── clean old tagged versions

已发布的引用:

ghcr.io/mosabbir-maruf/ai-workstation:latest
ghcr.io/mosabbir-maruf/ai-workstation:

为什么使用 SHA 标签?

latest 很方便。提交 SHA 标签为回滚和调试提供了确定性的镜像引用。

对于受控部署:

IMAGE=ghcr.io/mosabbir-maruf/ai-workstation:

比仅依赖 latest 更可取。

运维手册

每日开始

ai doctor
ai start
ai status
ai run
ai preview

开发期间

ai status
ai app logs
ai harness status
ai shell
切换项目

ai use another-project
ai run
ai preview

一天结束时

ai app stop
ai stop

DSH 升级前

ai state export
ai dsh update
ai harness restart
ai dsh version

工作站重大变更前

ai state export
ai doctor

故障排查

工作站已停止

ai start

然后:

ai status

DSH/Harness 已停止

ai harness status
ai harness restart

如果工作站本身已停止:

ai start

应用启动失败

ai app status
ai app logs

如果依赖需要干净地重新安装:

ai app stop
ai cache clear --deps
ai run

GitHub 身份验证失败

ai github status
ai github test

检查 broker 和 GitHub App 配置。

不要将 PAT 或主机 SSH 私钥复制到工作站作为变通方案。

预览失败

ai status
ai preview

从客户端机器运行生成的 SSH 命令,并验证应用正在检测到的端口上监听。

镜像问题

docker image ls ghcr.io/mosabbir-maruf/ai-workstation
ai doctor

对于确定性部署,请使用带有 SHA 标签的镜像。

安全检查清单

[ ] 已启用 SSH 密钥身份验证
[ ] 已禁用 SSH 密码身份验证
[ ] 已禁用 Root SSH 登录
[ ] 防火墙默认拒绝传入连接
[ ] 仅开放必需的公共端口
[ ] 工作站以非 root 身份运行
[ ] 工作站未启用特权模式
[ ] 已丢弃所有 Linux capabilities
[ ] 已启用 no-new-privileges
[ ] 未挂载主机 Docker socket
[ ] 未挂载主机 ~/.ssh
[ ] 未使用主机网络
[ ] 仅在 /workspace 挂载活动项目
[ ] .env 未被跟踪
[ ] GitHub 私钥未被跟踪
[ ] DSH 凭据受到保护
[ ] GitHub 身份验证使用 broker/App 流程
[ ] 开发端口仅限 localhost
[ ] DSH 状态有恢复备份
[ ] 镜像来源可信

运行:

ai doctor

定期执行。

设计决策

一个工作站,多个项目

通用工具属于镜像的一部分。项目源代码保留在镜像之外,因此新项目不需要新镜像。

仅挂载活动项目

只有选定的仓库会暴露给工作站。这减少了对无关项目的意外访问。

持久化 DSH 安装

DSH 可以独立于基础工作站镜像进行更新。

持久化 DSH 状态

DSH 状态是工作流数据,而不是一次性的容器状态,因此它位于容器之外。

不使用 Docker socket

挂载 /var/run/docker.sock 会让容器访问主机 Docker 守护进程,并大幅增加影响范围。此架构有意避免这样做。

不使用主机 SSH 密钥

GitHub 访问通过 broker 进行,而不是将 ~/.ssh 挂载到工作站。

仅限本地的开发端口
开发服务器不应意外成为公共服务。SSH 隧道提供私有的操作员访问。

预构建的 ARM64 镜像

生产 VPS 使用预构建的 ARM64 镜像,而不是在本地编译镜像。

快速参考
text
PROJECTS
ai add
ai remove
ai list
ai use

GIT
ai pull
ai push "commit message"

WORKSTATION
ai start
ai stop
ai restart
ai status
ai logs
ai shell
ai run
ai preview

APP
ai app stop
ai app restart
ai app status
ai app logs

HARNESS
ai harness start
ai harness stop
ai harness restart
ai harness status

DSH
ai dsh update [version]
ai dsh version

MAINTENANCE
ai cache
ai cache clear
ai cache clear --deps
ai cache clear --deps --yes
ai update
ai upgrade
ai doctor

GITHUB
ai github setup
ai github status
ai github test

STATE
ai state export
ai state import

贡献

欢迎贡献!在提交拉取请求之前,请阅读 CONTRIBUTING.md,了解有关开发工作流、分支命名、编码标准、shell 脚本编写指南和验证要求的详细信息。

安全

安全是 AI Workstation 的基础。如需报告安全漏洞,或进一步了解我们的容器隔离边界、凭据助手架构和纵深防御模型,请查阅 SECURITY.md。

许可证

本项目根据 MIT 许可证授权。请参阅 LICENSE 获取完整许可证文本。

维护者

由 Mosabbir Maruf 开发和维护。

GitHub Profile

维护者说明

此仓库是工作站基础设施和操作员工具的唯一可信来源。

请勿将以下内容纳入 Git:

- 主机运行时状态;
- 项目工作副本;
- .env;
- 私钥;
- DSH 凭据;
- 临时文件;
- 缓存。

使用 GitHub 管理项目源代码,并使用状态导出机制进行 DSH/工作站恢复。

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

💬 加入社群

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

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群