DSH Build Servers:在对话里绑定远程机构建机

前言

在 DeepSeek Harness(DSH)里做 C/C++ 或 CMake 类项目时,本地环境未必与目标机一致:内核版本、依赖库、算力或公司内网里的专用构建机,往往才是「真」编译环境。若每次都要自己开终端、scp 源码、逐条执行 configure / build / test,再回到聊天窗口贴日志,上下文很容易被拆散。

下面介绍社区工作流插件 dsh-build-servers(仓库 ji-tz/dsh-build-servers):在 Web UI 与当前会话中绑定一台远程构建机,上传本地源码,按阶段跑 configure → build → install → test,查看实时状态与输出,并可在同一会话里打开 SSH 终端;智能体还能通过同名工具驱动同一台机器。README 明确说明:它不是 CI 系统,而是面向「一次只桥接一台机器」的小型、可检视桥梁;在 Windows 上对 RHEL 8 构建主机做过测试(当前 bundle 状态 v1.2.0)。

这是什么

dsh-build-servers 由维护者 ji-tz 发布,在 SkillHub 插件目录 中归类为工作流。package.json 标明版本 1.2.0、许可证 MIT,面向 DSH 0.2.x bundle API(engines.dsh: >=0.2.0 <0.3.0)。

浏览器不直接连 SSH:页面通过同源 Host 路由 /build-servers 访问,由 Host 进程维护服务器列表、探测缓存、流水线任务与终端会话;远程侧只需 OpenSSH 与 POSIX shell。

核心功能

构建机面板与认证

左侧 Build servers 面板只登记网络信息:显示名、SSH 目标(别名 / user@host / IP)、端口、认证方式、启用/禁用,以及在线 OS/IP 探测;不在服务器条目里保存路径或命令。

  • 密钥:默认走 ssh-agent 与本地 SSH 配置,或为每台机器从 ~/.ssh 选一把密钥(或手写路径),以 ssh -i 且 IdentitiesOnly=yes 连接。
  • 密码:通过短生命周期 SSH_ASKPASS 辅助进程把密码交给 OpenSSH,避免出现在命令行;密码以明文保存在本地配置文件中,且不会回传给浏览器。

按会话绑定与编译设置

每个对话绑定一台服务器。新会话默认 Local;在输入区工具栏权限控件旁的服务器选择器里切换。工作区会记录上次用过的服务器,但新会话不会自动继承。

Compile settings(编译设置)按会话保存:本地源码目录、同步路径(远端解压位置)、构建路径(默认 <sync path>/build)、上传排除规则,以及各阶段命令。某阶段命令为空时,默认依次为 cmake ..、cmake --build . -j$(nproc)、cmake --install .、ctest。

上传与流水线

流程为:本地 tar 经管道传入 ssh … tar -x,再按配置用 bash -lc 执行各阶段;任一阶段失败即停止,也可中途停止。界面展示阶段状态、退出码、耗时与输出。

绑定服务器后,输入区下方出现状态芯片(本地会话无芯片):绿灯加 Ready / Upload / Configure / Build / Install / Test / Reconnecting / Disconnected;点击可查看负载、内存、磁盘、运行时间及状态条,并从此处或选择器菜单进入 Compile settings。

SSH 终端与智能体工具

每台服务器维护一个持久的 ssh -tt … bash -l 会话,供 UI、终端标签页与智能体共用;行模式终端(非全屏 TUI)。右侧引导区提供 New remote terminal 卡片,可在标签页打开当前会话的构建机 shell。

智能体工具包括:

  • build_server:status / run / pipeline / stop
  • remote_terminal:list / open / send / read / close

与 UI 使用同一会话绑定与同一条 SSH 通路。

安装与启用

依赖:已安装带 Web UI 与 plugin_manager 的 DSH;本机 OpenSSH 客户端(密钥模式建议 8.4+ 以支持 SSH_ASKPASS_REQUIRE);本机与构建机均需 tar;构建机需 POSIX shell(探测会 opportunistically 使用 /proc、hostname、sed、awk、find、df、git 等)。

从 npm 安装最新稳定版:

plugin_manager install_bundle
  target: dsh-build-servers@latest

从本地 checkout:

plugin_manager install_bundle
  target: D:\path\to\dsh-build-servers

或指定 Git 提交:

plugin_manager install_bundle
  target: git+https://github.com/ji-tz/dsh-build-servers.git#<commit>

若包位于大仓库子目录,在 Git 地址后追加 &path:/build-servers。

安装后插件即启用。若侧栏或输入区未出现新入口,刷新页面一次(Ctrl+R);客户端以 bundle 形式提供。

也可在 Settings → Plugins → Discover 中加入市场索引(需启用实验性 plugin-market bundle):

https://raw.githubusercontent.com/ji-tz/dsh-build-servers/main/market/index.json

索引指向 npm registry 版本。

安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证。插件在当前 DSH Host 进程权限下执行 SSH、读写本地 ~/.dsh(Windows 为 %USERPROFILE%\.dsh)配置;这并非沙箱化的第三方市场应用,能力等同于你本机用户能做的事。

典型用法

  1. 打开左侧 Build servers,添加服务器:名称、SSH 目标、可选端口、密钥或密码认证。
  2. 在新会话中,于输入区选择器将 Local 切换为目标构建机;通过状态芯片或选择器菜单打开 Compile settings,填写本地源码路径(默认当前工作区)、同步路径、构建路径、排除规则与阶段命令。
  3. 绑定后观察状态芯片阶段变化;需要时打开远程终端或在对话中让智能体调用 build_server / remote_terminal 工具。

远端仅会收到上传的源码以及你在各阶段配置的命令所产生的改动;服务器网络条目本身不存储命令。

本地存储与安全要点

文件 内容
build-servers.json 网络条目:id、name、target、port、enabled、auth、密钥路径;密码模式下含明文密码
build-server-bindings.json 按会话绑定与按工作区上次使用的服务器
build-server-settings.json 按会话的路径、排除规则与阶段命令

GET /servers 对密码仅返回 hasPassword,不返回明文。编辑时密码留空表示保留原密码;改回密钥认证会删除已存密码。

密钥认证使用 BatchMode=yes,需已知主机密钥;密码模式对新主机使用 StrictHostKeyChecking=accept-new,主机密钥变更仍会被拒绝。Host 为浏览器列出 ~/.ssh 下候选密钥文件名与类型,不把密钥材料送到浏览器。

适用场景与注意

适合:需要在对话上下文中完成「选机 → 传源码 → 跑 CMake 风格流水线 → 看日志 / 开 shell」的开发者;希望智能体与 UI 共用同一远程环境的 DSH 用户。

不适合:替代 Jenkins、GitHub Actions 等多机 CI;README 强调一次只桥接一台机器。

SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系;插件列表反映社区贡献,安装与信任边界由你自己把握。

结尾

dsh-build-servers 把远程构建机收进 DSH 会话:绑定、上传、分阶段编译测试、状态可视化和 SSH 终端在同一套 Host 路由与智能体工具下完成,减少在聊天与终端之间来回切换。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye