dsh-superagent-manager: Managing Multiple Super Agent Projects in a Single DSH Client

前言

DeepSeek Harness(DSH)里若要用 dsh-superagent,上游原型默认一个实例只绑定一个 repository。手头多个仓库、多个智能体项目时,常见做法是开多个客户端或手动起多组 dsh web,端口、stateDir、侧边栏工作区都要自己记。下面介绍社区插件 dsh-superagent-manager(维护者 Aily-DSH):把建仓、克隆、注册工作区、启停实例和 UI 嵌入收进同一个客户端。

这是什么

dsh-superagent-manager 是 DSH 的客户端类插件(当前版本 0.3.1,MIT 许可证)。它在同一个 DSH 客户端里管理多个 dsh-superagent 项目:每个项目对应独立的 dsh web 进程(独立端口、独立 stateDir、独立 profile),由插件负责生命周期,并把实例 UI 代理到客户端内的 Super Agent 面板(一项目一标签页)。

README 中说明这是「同一客户端内迂回运行多个 Super Agent」的方案 A;上游若要做单进程多实例(方案 C)需改造,不在本插件范围内。

环境要求

安装前确认依赖满足 README 中的表格:

依赖 说明
DSH >= 0.2.1-rc.2(engines.dsh)
dsh-superagent 同一 profile 中已安装;本插件以其 bundle 起子进程,并从已安装 profile 复制配置
GitHub CLI gh 已登录,且对用于建仓的账号具备 repo 权限
平台 文档写明实例进程管理使用 Windows 的 taskkill / netstat;其他平台需替换相关实现

核心功能

经 README 核实,插件主要承担以下工作:

  1. 一键创建项目:创建或复用 GitHub 仓库、本地 clone、脚手架;仓库落在 $DSH_HOME/state/<id>/repos/<repo>。
  2. 侧边栏工作区:在客户端注册同名工作区,可带颜色标记。
  3. 实例生命周期:启动、停止、删除实例;客户端重启后由 autoResume 恢复上次运行的实例(实例为 detached 子进程,客户端退出后仍可继续跑)。
  4. Super Agent 面板:左侧打开 Super Agent,每个项目一个标签页;标签旁开关与设置页状态同步,支持懒加载 iframe、停用后保留最后一帧。
  5. 反向代理与隔离:代理入口 /sa/<id>/... → http://127.0.0.1:<port>/...,含 WebSocket(/sa/<id>/api/remote.mux);每个实例使用独立子域 http://<id>.localhost:<port>,localStorage / IndexedDB / Cookie 与客户端本体隔离。
  6. HTTP API:同源前缀 /api/dsh-superagent-manager,仅接受回环地址请求(见下文「API 与状态路径」)。

安装与启用

先把插件加入 profile。官方 README 给出的方式如下(link 也可指向上游 checkout 路径):

# 1. 加入 profile(link 指向上游 dsh-superagent 的 checkout 也可以)
dsh plugin --profile <profile> add link:/path/to/dsh-superagent-manager

确认该 profile 的 package.json 里 bundle 列表包含本插件,例如:

"dsh": { "profile": { "bundles": [
  "@deepseek-ai/dsh-base",
  "@deepseek-ai/dsh-web-app",
  "dsh-superagent",
  "dsh-superagent-manager"
] } }

包内 cordis.patch.yml 会插入 Cordis 组合;dsh.client.platform = web 用于加载面板 UI。修改 lib/ 下代码后需重启客户端进程;仅刷新浏览器只能更新面板 UI。

若在插件市场索引里暂时搜不到,README 建议可直接从 Git 源安装(示例 profile 为 desktop):

dsh plugin --profile desktop add git+https://github.com/Aily-DSH/dsh-superagent-manager.git

社区索引示例见 Aily-DSH/dsh-plugin-index,将其 jsDelivr 地址加入 dsh.profile.indexes 后,可在「设置 → 插件市场」浏览(市场只读配置里的索引 URL,不搜 npm)。

典型用法

在设置页创建并启动项目

  1. 打开 设置 → 插件 → Super Agent 管理。
  2. 填写项目名(可选:owner、仓库名、是否私有),点击创建。
  3. 插件会创建或复用 GitHub 仓库、clone 到实例 stateDir、在侧边栏生成工作区并启动实例。

在 Super Agent 面板里操作

  1. 左侧点击 Super Agent 打开面板。
  2. 每个项目对应一个标签页:右侧开关启用/停用实例;刷新拉状态,停用/启用针对当前标签,新标签页打开直达代理地址。
  3. 首次打开某实例时,在其子域内登录或选择工作区,不会污染客户端本体的 localStorage。

API 与状态路径

便于脚本或二次集成时,README 列出的 HTTP 接口如下:

方法 路径 说明
GET /instances 实例列表(运行状态、端口、颜色、负载、workspace、viewer)
POST /create 创建项目,body:{ name, owner?, repoName?, private?, createRepo?, color? }
POST /start 启动,body:{ id }
POST /stop 停止,body:{ id }
POST /remove 删除,body:{ id, deleteFiles? }
POST /color 修改侧边栏颜色,body:{ id, color }

常用状态与配置路径:

路径 / 变量 说明
$DSH_HOME/state/superagent-manager/instances.json 实例注册表
$DSH_HOME/state/<id>/ 实例 stateDir
$DSH_HOME/profiles/<id>/ 实例 profile
DSH_SUPERAGENT_MANAGER_HOME 覆盖注册表根目录(默认 $DSH_HOME/state)
SUPERAGENT_MANAGER_OPERATOR 实例初始化 operator,默认 SolaNoKan

架构上,客户端提供 /api/dsh-superagent-manager/* 与 /sa/<id>/* 反向代理,多个 dsh web 各占端口,UI 通过 iframe 挂在 http://<id>.localhost:<port>/sa/<id>/。

适用场景与注意

适合谁:需要在一个 DSH 客户端里并行维护多个 dsh-superagent 仓库、且希望侧边栏工作区与 Super Agent UI 统一管理的开发者。

务必知晓的限制(来自 README):

  • 一个项目一个进程/端口;实例数量受端口与内存约束。
  • 不支持「一个实例管多个仓库」。
  • 进程控制当前依赖 Windows 命令;非 Windows 需自行改实现。
  • 插件以当前 DSH 进程权限运行;安装前应阅读 源码 与 MIT 许可证,并理解 gh 建仓所需权限。

DSH 生态强调「一切皆插件」;SkillHub、awesome-dsh-plugins 等社区目录为独立收录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-superagent-manager 把多项目 Super Agent 的建仓、克隆、工作区注册、进程启停和标签页内代理串成一条可在客户端内完成的流程,适合在上游仍「一实例一仓库」的前提下做多项目并行开发。

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

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

Xiaoye