dsh-computer:给 DeepSeek Harness 一台常驻微型虚拟机

前言

在 DeepSeek Harness(dsh)里让 agent 跑命令、开浏览器,常见做法是直接在本机 shell 或本机浏览器里执行。工作区路径虽然能对齐,但 agent 仍与宿主系统共用环境:误删文件、把登录态留在本机、难以在会话外持续观察桌面,都是实际会碰到的问题。社区插件 dsh-computer(维护者 Kevinwu901113)的思路是:给 dsh 单独配一台持久化的 Linux 微型虚拟机,自带 shell、浏览器、实时桌面和审批闸门;默认用 bundled microsandbox 跑 microVM,多数平台不需要 Docker。下面介绍它做什么、怎么装、日常怎么用,以及安装前需要知道的边界。

这是什么

dsh-computer 是 DSH 生态里的客户端类插件,当前版本 0.5.0(MIT 许可证)。一句话定位:让 agent 的命令和浏览器都在虚拟机里跑,会话工作区按原路径共享进 VM;你在 dsh 里可以看实时桌面、点击接管(扫码、验证码),危险操作先过审批。插件在 SkillHub 目录 与 GitHub 发布;目录站为社区站点,与 DeepSeek / 幻方无官方从属关系。

官方在 dsh 桌面版 0.2.0-rc.2(macOS,Apple 芯片)上验证通过。需要 Node >= 22(见 package.json)。

核心功能

以下能力均来自项目 README,按使用顺序理解即可。

命令与浏览器隔离在 VM 内

  • 每个 agent 的 bash 命令在虚拟机里执行,不在你的宿主机上跑。
  • 会话所在工作区文件夹自动共享进虚拟机,路径与本机一致(例如 /Users/你/Documents/项目 在 VM 里仍是同一路径)。
  • agent 使用虚拟机内的浏览器(工具名为 mcp__vm__browser_*),登录态在重启后仍可保留。

实时画面与接管

  • dsh 会话顶部有显示器按钮,可在右侧栏打开「虚拟机」标签页,观看、点击、输入,或接手处理 QR 登录、CAPTCHA。
  • 本机也可直接打开 live view(就绪后日志会给出地址,默认形态如下):
http://127.0.0.1:18080/vnc/index.html?autoconnect=true&resize=scale

审批闸门

对高风险动作会先要求审批,审批信息可附带实时画面链接。README 列出的典型范围包括:sudo、rm -rf、curl | sh、git push,以及涉及支付、登录、删除的浏览器操作。闸门同时覆盖 dsh 的 bash 与虚拟机侧的 sandbox_execute_bash / sandbox_execute_code。可通过配置把闸门设为 off、risky 或 browser(见下文配置表)。

持久与轻量

  • dsh 退出后虚拟机继续运行;下次启动 dsh 会连回同一台 VM。
  • 底层为 microsandbox microVM(Apple 芯片 macOS 用 Hypervisor.framework,Windows 用 WHP,Linux 用 KVM;Intel Mac 回退 Docker)。随插件 npm 依赖安装,无需单独装 Docker(Intel Mac 除外)。

审计与远程查看(可选)

  • 每次命令、VM 工具调用、审批与文件夹变更会追加到 ~/.dsh/dsh-computer-audit.jsonl。
  • 若配置 publicUrl(例如通过 Tailscale serve),审批消息(含 IM 审批卡片)里的实时画面链接可指向该地址,便于在手机等设备上查看;README 明确警告:VM 的 web 服务本身无鉴权,不要用公网隧道直接暴露 18080。

环境与资源要求

项目 要求
系统 macOS(Apple 芯片)、Linux(有 /dev/kvm)、Windows(开启 Hypervisor Platform);Intel Mac 自动改用 Docker
内存 虚拟机默认上限 4GB,空闲约 0.5GB
磁盘 约 10GB 空闲(含 VM 镜像)
网络 首次启动从 ghcr.io 拉镜像;插件会使用系统代理

安装与启用

插件以当前 dsh 进程权限运行,安装前建议浏览 仓库源码 与 MIT 许可证,确认符合你的安全策略。

dsh 桌面版(macOS)

桌面版使用名为 desktop 的配置,须用 App 自带的 dsh CLI 安装:

osascript -e 'quit app "DeepSeek Harness"'
"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop add github:Kevinwu901113/dsh-computer
open -a "DeepSeek Harness"

重新打开后,在输入框下方的权限预设里选择 Computer。

命令行版

npm i -g @deepseek-ai/dsh@0.2.0-rc.2
dsh plugin --profile web add github:Kevinwu901113/dsh-computer
cd ~/某个项目 && dsh web

第一次启动

插件会自动下载镜像(几 GB)并创建虚拟机。此期间 agent 命令会排队等待。完成后日志会出现类似:

computer ready — live view: http://127.0.0.1:18080/vnc/index.html?autoconnect=true&resize=scale

典型用法

在工作区里直接开发

在某个项目目录新建会话并执行命令即可;插件会把该工作区共享进 VM。若在家目录本身、隐藏目录(如 ~/.dsh、~/.ssh)、~/Library、~/Applications 或家目录以外位置启动,则不会在 VM 里自动挂载原路径,命令会在 VM 的 /home/gem 执行,并共享 ~/dsh-computer/workspace。

共享新文件夹需要重建虚拟机(停机 → 快照 → 恢复,约 20 秒),期间命令仍排队;VM 内文件、已装软件与浏览器登录态会保留。要固定共享多个目录,可在 ~/.dsh/dsh-computer.json 里写 mounts,改完重启 dsh:

{
  "mounts": ["/Users/你/Projects/a", "/Users/你/Projects/b"],
  "memory": "6G",
  "cpus": 4
}

在手机上查看 live view(Tailscale)

端口默认只监听本机。README 推荐用 Tailscale 在 tailnet 内转发,再把得到的 HTTPS 地址写入 publicUrl:

tailscale serve --bg --https=443 http://127.0.0.1:18080

勿使用 tailscale funnel 或公网端口转发直接暴露 18080。

维护虚拟机

桌面版下 msb 位于配置目录的 node_modules 中,例如:

MSB=~/.dsh/profiles/desktop/node_modules/@superradcompany/microsandbox-darwin-arm64/bin/msb
$MSB list
$MSB exec -u gem dsh-computer -- bash
$MSB stop dsh-computer

共享新文件夹会产生链式磁盘快照(每次约 15–20MB);误删 VM 时插件可从最新快照恢复。要彻底清空需 $MSB rm -f dsh-computer 并删除快照目录。

常用配置

桌面版推荐写 ~/.dsh/dsh-computer.json(环境变量见 README 对照表):

设置项 / 环境变量 默认值 作用
mounts / DSH_COMPUTER_MOUNTS 自动(见共享文件夹说明) 固定共享目录
memory / cpus 4G / 2 VM 资源上限
publicUrl / DSH_COMPUTER_PUBLIC_URL 空 外设备访问 live view 的地址
DSH_COMPUTER_PORT 18080 本机服务端口(仅 127.0.0.1)
image / DSH_COMPUTER_IMAGE ghcr.io/agent-infra/sandbox:latest VM 镜像
backend / DSH_COMPUTER_BACKEND auto microsandbox 或 docker
DSH_COMPUTER_GATE risky off / risky / browser
DSH_COMPUTER_PRESET computer computer-auto 关闭审批(仅建议 VM 内无重要登录态时使用)

排障时可查看 ~/.dsh/dsh-computer.log 末尾 50 行:tail -n 50 ~/.dsh/dsh-computer.log。

适用场景与注意

适合:希望在 dsh 里做 computer-use、又让 agent 与宿主机隔离;需要可观看、可接手的浏览器环境;需要审批与审计留痕的团队或个人实验。

务必知晓的限制(README「已知限制」):

  • Mac 休眠时 VM 暂停;要近似 7×24 需常开机器。
  • 127.0.0.1:18080 对本机其他进程也可访问,VM web 无鉴权;不要在 VM 浏览器登录高价值账号。
  • 浏览器 cookie 写盘约需 30–45 秒,刚登录就共享新文件夹或重启可能丢登录态。
  • 一个 dsh 配置对应一台 VM,尚无「每会话一台」。
  • Docker 后端(Intel Mac)不支持自动共享新文件夹,须在 mounts 配置后 docker rm -f dsh-computer。
  • Windows 仅验证到虚拟化检测,桌面版完整流程未验证。

若要在该 VM 之上做 IM、定时任务、预算上限等「常在线 agent」,README 指向同作者的 dsh-dot;设计说明见仓库内 docs/DESIGN.md(中文)。

结尾

dsh-computer 把「agent 的电脑」从概念变成一台可持久、可观看、可审批的 Linux microVM,并与 dsh 工作区路径对齐,适合在 DSH「一切皆插件」的生态里做客户端侧的隔离与 computer-use。安装与细节以官方文档为准。

  • 目录页:https://www.skillhub.cn/plugins/Kevinwu901113/dsh-computer
  • GitHub:https://github.com/Kevinwu901113/dsh-computer
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜