← 返回列表
✓ 可直接安装
在自有服务器跑无头实例,本地 GUI 混排远程会话
自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node >=18);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/8/27 · 已提供中文文档
DeepSeek Harness 的远程 DSH 主机管理——在你自己的服务器上运行无头 dsh,从本地 GUI 操作它(SSH 隧道、混合会话列表、自动修复)。
综合分
50.2
GitHub 分
50.2
用户评分
—
★ Stars
52
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-sevnpm 包 dsh-sev 已校验归属本仓库,走 npm 安装最省事
🟢实装验证通过· 2026/9/19
由 dsh-plugin-verify(GitHub Actions)在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/8/29(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-sev @ 0.3.4
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 15:49:42
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-sev 面向 DeepSeek Harness 的远程 DSH 主机管理 —— 在你自己的服务器上运行无头 dsh 实例,并从本地 GUI 操作它,就像它是本地工作区一样。长时间运行的任务不会因你的笔记本电脑关机而中断。 中文简介:把一台服务器变成你的 DSH「分身」——本地 GUI 左侧边栏混排远程会话、一键打开远程 GUI、SSH 隧道掉线自动重连。长任务甩给服务器,关掉 Mac 也不中断。 - English documentation:见下文 - 中文文档:见文末「中文文档」一节 ✨ 功能特性 - 双通道远程控制 —— 以两种方式操作远程 dsh:SSH 隧道 + 面板(查看其 GUI、浏览会话)以及 dsh CLI 控制(sev_run_task 智能体工具通过 ssh + dsh --profile headless 在远程运行一次性任务)。 - 远程项目 —— 将任务指向服务器文件夹(cwd);远程智能体在那里工作,任务文件落在服务器上,可通过 Syncthing / scp 取回。 - 左侧边栏混合列表 —— 远程会话就显示在本地会话旁边(标题、运行脉冲、相对时间),Codex 风格。 - 一键远程 GUI —— 在面板内(iframe)或标签页中打开远程实例的完整 Web UI。 - 自动修复 SSH 隧道 —— 断开的隧道会自动重连(看门狗),并在应用重启后恢复。 - 远程会话 API —— 会话列表 / 健康状态通过隧道从远程主机自身的 API 拉取。 - 可恢复配置 —— 主机注册表是一个纯 JSON 文件,带有自动滚动备份(.bak);删除时会要求确认。 - 零本地暴露 —— 远程主机仅监听 127.0.0.1;你通过 SSH 隧道访问它。仅限回环的 API 防护。 🏗 架构 ┌─ your machine (local dsh) ────────────────────────────┐ │ web GUI ⇄ /api/dsh-sev/* ⇄ Node half │ │ · browser half: sidebar entry, mixed session list │ │ · node half: registry, tunnel lifecycle, watchdog │ └──────────────┬────────────────────────────────────────┘ │ ssh -L :127.0.0.1: ▼ ┌─ your server (headless dsh, systemd) ─────────────────┐ │ dsh --profile web --host 127.0.0.1 --port 3080 │ │ sessions persist here; long tasks survive laptop off │ └────────────────────────────────────────────────────────┘ 📦 安装 从 npm 安装(推荐) on the machine running the local DSH GUI npm i -g pnpm # dsh plugin CLI needs pnpm dsh plugin --profile web add dsh-sev restart the DSH host / web GUI to load the plugin 从源码安装 git clone && cd dsh-sev npm install && npm run build dsh plugin --profile web add link:$(pwd) 🖥 服务器设置(「远程主机」) 在服务器上安装无头 DSH(以 Ubuntu 22.04+ 为例): 1. Node + dsh (use a mirror if you are in CN) npm i -g pnpm npm i -g @deepseek-ai/dsh --registry=https://registry.npmmirror.com 2. Model credentials — the remote instance needs its own API keys: ~/.dsh/settings.yaml (默认模型 / 提供商) ~/.dsh/.credentials.yaml (DeepSeek / 提供商密钥) ~/.modlens/config.json (视觉桥接,如使用) export ARK_PLAN_API_KEY=... (基于环境变量的提供商,如使用) 3. systemd 单元,使其在重启后仍能存活(调整路径) sudo tee /etc/systemd/system/dsh-web.service >/dev/null Environment=DSH_HOME=/home//.dsh WorkingDirectory= ExecStart=/usr/bin/node /node_modules/@deepseek-ai/dsh/lib/bin.js --profile web --host 127.0.0.1 --port 3080 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload && sudo systemctl enable --now dsh-web 提示:将你本地的 ~/.dsh(设置、凭据、记忆、插件配置)一次性复制到服务器——当保持在相同路径时,链接的插件源会通过相对符号链接解析。参见 docs/server-migration.md。 🌐 网络 隧道使用你正常的 ssh——任何可达地址均可工作: - 推荐:ZeroTier——在你的机器之间建立私有网状网络,无需公开端口。在两端安装,加入同一网络,并将服务器的 ZeroTier IP 填入 ~/.ssh/config。 - 或者:局域网 IP / VPN / 仅使用密钥的公开 IP。 示例 ~/.ssh/config: Host my-server HostName 203.0.113.1 # your server's ZeroTier / LAN IP User your-user IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes 🚀 用法 1. 安装后,刷新 GUI。你将看到: - 左侧边栏导航中出现一个 远程 条目, - 工作区列表上方出现一个 远程会话 分组(当有主机在线时)。 2. 打开 远程 面板,输入 SSH 别名(例如 my-server),点击 添加。 3. 插件会自动启动隧道(ssh -L),并显示主机 在线 及其会话列表。 4. 点击任意远程会话(或 打开)即可在面板内操作远程 GUI。 主机会持久化保存在 ~/.dsh/remote-hosts.json 中(并带有滚动备份 remote-hosts.json.bak)。 🔒 安全 - 远程主机仅绑定 127.0.0.1——绝不暴露到网络。 - 所有插件 API 路由都强制执行 仅限回环 的防护(主机头 + 来源检查),与其他 DSH 插件保持一致。 - 你的模型 API 密钥仅存在于你控制的机器上(本地 + 服务器)。 - 隧道只是 ssh——复用你现有的密钥;切勿将密钥提交到此仓库。 🤖 智能体控制(一次性远程任务) 安装后,本地智能体会获得一个 sev_run_task(host, task) 工具,它通过远程主机自己的无头 dsh CLI(ssh + dsh --profile headless)在远程主机上运行任务。只需说:“在服务器上运行这个:……”。 服务器端无头设置(一次): bash 1. a dedicated DSH_HOME with the plain DeepSeek provider mkdir -p ~/.dsh-headless cat > ~/.dsh-headless/settings.yaml ~/.dsh-headless/profiles/headless/cordis.patch.yml :127.0.0.1: ▼ ┌─ 服务器(headless dsh,systemd)─────────────────┐ │ dsh --profile web --host 127.0.0.1 --port 3080 │ │ 会话持久在服务器;长任务不因本机关机而中断 │ └──────────────────────────────────────────────────┘ 📦 安装 从 npm 安装(推荐) bash 在本机(运行 DSH GUI 的机器) npm i -g pnpm # dsh 插件 CLI 需要 pnpm dsh plugin --profile web add dsh-sev 重启 DSH host / web GUI 使插件生效 从源码安装 bash git clone && cd dsh-sev npm install && npm run build dsh plugin --profile web add link:$(pwd) 🖥 服务器部署(「远程分身」) 在服务器上装 headless DSH(Ubuntu 22.04+ 示例): bash 1. Node + dsh(国内可用镜像加速) npm i -g pnpm npm i -g @deepseek-ai/dsh --registry=https://registry.npmmirror.com 2. 模型凭据——远程实例需要自己的 API key: ~/.dsh/settings.yaml (默认模型 / 提供商) ~/.dsh/.credentials.yaml (DeepSeek / 各厂商 key) ~/.modlens/config.json (视觉桥,如使用) export ARK_PLAN_API_KEY=... (基于环境变量的提供商,如使用) 3. systemd 守护,重启不丢(按需改路径) sudo tee /etc/systemd/system/dsh-web.service >/dev/null Environment=DSH_HOME=/home//.dsh WorkingDirectory= ExecStart=/usr/bin/node /node_modules/@deepseek-ai/dsh/lib/bin.js --profile web --host 127.0.0.1 --port 3080 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload && sudo systemctl enable --now dsh-web 提示:可以把本机 ~/.dsh(settings、credentials、memories、插件 profile)一次性复制到服务器——link 插件按相对路径解析,保持同路径即可。详见 docs/server-migration.md。 🌐 组网 隧道用你现有的 ssh,任何可达地址都行: - 推荐 ZeroTier — 设备间私有组网,无需公网端口。两端安装、加入同一网络,把服务器的 ZeroTier IP 写进 ~/.ssh/config。 - 或者:局域网 IP / VPN / 仅密钥认证的公网 IP。 ~/.ssh/config 示例: Host my-server HostName 203.0.113.1 # 你的服务器 ZeroTier / 局域网 IP User your-user IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes 🚀 使用 1. 安装后刷新 GUI,你会看到: - 左侧导航栏的 远程 入口, - 工作区列表上方的 远程会话 分组(主机在线后出现)。 2. 打开 远程 面板,输入 SSH 别名(如 my-server),点 添加。 3. 插件自动建立隧道(ssh -L)并显示主机 在线 与会话列表。 4. 点任意远程会话(或 打开)即可在面板内操作远程 GUI。 主机配置持久化在 ~/.dsh/remote-hosts.json(每次保存自动留 remote-hosts.json.bak 备份)。 🔒 安全 - 远程实例只监听 127.0.0.1,不暴露到网络。 - 插件所有 API 路由带 loopback-only 围栏(host 头 + origin 校验),与其它 DSH 插件一致。 - 模型 API key 只存在于你控制的机器(本机 + 服务器)。 - 隧道就是 ssh——复用你现有的密钥;永远不要把密钥提交进本仓库。 🤖 Agent 控制(一次性远程任务) 安装后,本地 agent 会获得 sev_run_task(host, task) 工具——通过远程主机自己的 headless dsh CLI(ssh + dsh --profile headless)跑任务。直接说「帮我在服务器上跑:…」即可。 服务器端 headless 一次性配置: bash 1. 独立 DSH_HOME + 原生 DeepSeek 提供商 mkdir -p ~/.dsh-headless cat > ~/.dsh-headless/settings.yaml ~/.dsh-headless/profiles/headless/cordis.patch.yml <<'CFG' - enable: - id: llm-deepseek CFG 注意:provider id 是 deepseek-official;headless profile 默认禁用了 llm-deepseek,上面的 patch 即启用它。任务文本经 stdin 写入临时文件(任意引号都安全),5 分钟超时。 🛠 开发 bash npm install # devDeps: esbuild / typescript / @types/react npm run build # 打包 lib/client.js(浏览器半) npm test # node --test(11 用例:路由/围栏/看门狗/会话代理/.bak) npm run typecheck # 可选 tsc --noEmit 插件结构: lib/index.js # Node 半:注册表、隧道、看门狗、/api/dsh-sev 路由 src/client/index.tsx # 浏览器半:侧边栏入口、混排列表、面板、iframe scripts/build.mjs # esbuild → lib/client.js(window.__ModuleLoader__.load 格式) cordis.patch.yml # bundle 层清单(id: sev / name: dsh-sev) 📦 发布 bash npm run build && npm test # prepublishOnly 会自动执行 npm publish # 需要 npm 账号;发布的包就是「安装包」 接入 DSH 插件市场:用 dsh plugin add dsh-sev 安装已发布包;市场收录按 DSH 插件注册流程。 📄 License / 许可证 MIT
扫码进群