DSH 目前没有“指定编译用 VPS”的内置配置。bash 工具(dsh-bash-local / dsh-bash-sandbox)只在 DSH 所在机器本地执行;远程执行能力目前只有 @deepseek-ai/dsh-e2b(E2B 云沙箱,无法指向你自己的 VPS)。官方文档也明确:远程执行是整个能力 seam 的“同级实现”,不是现成的配置开关。所以正确做法是 SSH + 项目指令 把 VPS 接进来,CPU 限制放在 VPS 侧用 systemd 执行。
一、DSH 侧:把 VPS 指定为“编译机”
1. 配置免密 SSH 别名(在 DSH 宿主机上):
# ~/.ssh/config
Host buildvps
HostName 1.2.3.4
User builder
IdentityFile ~/.ssh/id_ed25519_build
ServerAliveInterval 302. 写一个构建包装脚本(rsync 同步 → 远程构建 → 拉回产物),以后 agent 只需要调这一个命令:
#!/usr/bin/env bash
# scripts/remote-build.sh
set -euo pipefail
SRC="$PWD"; DEST=build@buildvps:~/jobs/$(basename "$SRC")
rsync -a --delete --exclude .git --exclude node_modules "$SRC/" "$DEST/"
ssh buildvps "systemd-run --collect --wait --uid=builder \
-p CPUQuota=400% -p RuntimeMaxSec=12h -p Nice=10 \
-- make -j\$(nproc)" # ← 构建命令被关进带配额的 scope
rsync -a "$DEST/build/" "$SRC/build/"3. 用 AGENTS.md 把规则固化进每个会话。dsh-agent-instructions 会自动向上查找并加载工作区的 AGENTS.md(全局的可放 ~/.dsh/AGENTS.md):
## 构建规则
- 所有编译/构建/测试运行必须通过 `scripts/remote-build.sh`(即 ssh buildvps)执行,
禁止在本机直接跑 make/npm run build 等重 CPU 任务。
- 长任务用后台执行,不要阻塞会话。这样每次会话 agent 都会收到这条指令,把编译统一打到 VPS 上。
C/C++ 项目还有个更透明的替代:在 VPS 装distccd、本机装distcc+ccache,本地make -j32 CC=distcc gcc自动把编译单元分流到 VPS,代码不用同步;但 CPU 限制就没法用“每次构建一个 scope”这种方式精确控制了。
二、VPS 侧:实现“不超过 12 小时满载”
用 systemd 的瞬时 scope,每次构建被内核强制限流/限时,agent 想绕过也绕不过:
| 规则 | 配置 | 含义 |
|---|---|---|
| 连续满载不超过 12 小时 | RuntimeMaxSec=12h | 墙钟时间 12 小时后整个 scope 被强杀,无论构建是否完成 |
| 累计 CPU 时间不超过 12 CPU·小时 | LimitCPU=43200 | RLIMIT_CPU,按累计 CPU 秒计;8 核满跑约 1.5 小时就会耗尽 |
| 根本不满载 | CPUQuota=N% | 100% = 1 个核;如 8 核机器设 CPUQuota=600%,最多用到 6/8,永远打不满 |
| 降优先级 | Nice=10 + CPUWeight=50 | 有其他负载时自动让路 |
按你说的“不超过 12 小时满载”,推荐组合是 CPUQuota=600%(不到满载)+ RuntimeMaxSec=12h(单次构建硬上限);如果你指的是累计 CPU 时间 12 小时,就换用 LimitCPU=43200。若想要“每天累计满载 ≤12h”的滚动预算,再加个 cron 读 cpu.stat 累计值、超了就 systemctl stop 构建服务即可。
堵住绕过口子(可选但推荐):在 VPS 的 authorized_keys 里给这把 key 加强制命令,让这把 SSH key 只能往受限 scope 里扔构建,别的干不了:
command="systemd-run --collect --wait --pipe --uid=builder -p CPUQuota=600% -p RuntimeMaxSec=12h --",no-port-forwarding,no-agent-forwarding ssh-ed25519 AAAA... dsh-build小结
- DSH 侧:SSH 别名 + 包装脚本 +
AGENTS.md指令,三件套即可“指定编译 VPS”; - CPU 规则:VPS 侧
systemd-run -p CPUQuota=… -p RuntimeMaxSec=12h(或LimitCPU=43200按累计 CPU 时间); - 配
ccache可以显著减少实际消耗的 CPU 小时数。