dsh-launch-pad:统一的本地服务管理方案

在 DeepSeek Harness (DSH) 的使用场景中,Agent 往往需要猜测本地服务的启动命令,这容易导致命令错误。同时,多个项目同时运行时,端口冲突是常见问题,手动管理进程和日志也增加了操作成本。dsh-launch-pad 旨在解决这些问题,提供一个统一的本地服务控制台。

这是一个本地服务控制台。它通过全局 registry 管理服务,防止端口冲突,并提供 UI 面板和 Agent 工具来管理服务的生命周期。

核心功能

启动命令归一化探测
插件会按照优先级探测启动命令:.dsh-services.yml(权威)> package.json(dev/start/serve)> docker-compose.yml > Makefile > justfile > Python 项目文件等。这降低了手动编写启动命令的频率。

全局 registry 与端口仲裁
所有服务在 ~/.dsh/service-registry.json 中全局注册。启动前会通过 lsof 检查端口占用,在 portMode=auto 模式下,冲突时自动分配最近空闲端口并注入参数(如 --port N 或 PORT=N)。

DSH 界面操作
DSH Web 界面侧边栏会出现“服务”按钮。点击后弹出悬浮面板,可以查看服务状态、实际端口,并支持一键启动、停止和重启。日志会持久化存储在 ~/.dsh/services/logs/ 目录下并支持展开查看。

Agent 工具双通道
插件暴露了 7 个 agent 工具,包括 service_list、detect、register、start、stop、restart 和 status。这意味着 Agent 不再需要猜测启动命令,而是可以调用这些工具来精确管理服务。

自动跟随与登记
面板会自动跟随 DSH 当前选中的会话。当切换到未登记的新项目时,Host 会自动探测并注册候选服务(60s 节流防抖),并在面板提示“已自动登记”。

安装与启用

使用官方插件安装命令添加该仓库:

dsh plugin --profile web add github:realpkuasule/dsh-launch-pad

安装后需要重启 DSH 并刷新页面以加载插件。

配置与用法

在项目根目录下创建 .dsh-services.yml 文件进行服务定义:

services:
  web:
    command: npm run dev
    cwd: .
    port: 5173
    portMode: auto
    template: npm

在 Agent 对话中,可以使用工具查看服务状态:

# 使用 agent 工具 service_list 查看服务状态

依赖与限制

依赖环境
插件依赖以下系统工具:python3(用于 setsid 包装进程)、lsof、pgrep。目前 Windows 系统尚未适配。

已知行为
* 禁止双开:同一个服务实例无法重复启动。
* 冷门框架:对于不识别的端口参数,端口注入会退化为 PORT 环境变量。
* Docker 端口:Docker 端口不自动重写,若冲突会报错。
* Monorepo:没有标准 dev/start/serve 脚本的项目(如 pnpm --filter apps/web dev)可能需要手动编写 .dsh-services.yml。

总结

dsh-launch-pad 通过命令归一化探测和全局端口仲裁,解决了本地开发环境中的服务管理混乱问题。它结合了 DSH 的 UI 交互和 Agent 工具,提供了从配置到启动、监控的一站式方案。更多细节可查阅 GitHub 仓库。

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

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

小夜