前言¶
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)需改造,不在本插件范围内。
- 目录页:https://www.skillhub.cn/plugins/Aily-DSH/dsh-superagent-manager
- 源码:https://github.com/Aily-DSH/dsh-superagent-manager
环境要求¶
安装前确认依赖满足 README 中的表格:
| 依赖 | 说明 |
|---|---|
| DSH | >= 0.2.1-rc.2(engines.dsh) |
dsh-superagent |
同一 profile 中已安装;本插件以其 bundle 起子进程,并从已安装 profile 复制配置 |
| GitHub CLI | gh 已登录,且对用于建仓的账号具备 repo 权限 |
| 平台 | 文档写明实例进程管理使用 Windows 的 taskkill / netstat;其他平台需替换相关实现 |
核心功能¶
经 README 核实,插件主要承担以下工作:
- 一键创建项目:创建或复用 GitHub 仓库、本地 clone、脚手架;仓库落在
$DSH_HOME/state/<id>/repos/<repo>。 - 侧边栏工作区:在客户端注册同名工作区,可带颜色标记。
- 实例生命周期:启动、停止、删除实例;客户端重启后由
autoResume恢复上次运行的实例(实例为 detached 子进程,客户端退出后仍可继续跑)。 - Super Agent 面板:左侧打开 Super Agent,每个项目一个标签页;标签旁开关与设置页状态同步,支持懒加载 iframe、停用后保留最后一帧。
- 反向代理与隔离:代理入口
/sa/<id>/...→http://127.0.0.1:<port>/...,含 WebSocket(/sa/<id>/api/remote.mux);每个实例使用独立子域http://<id>.localhost:<port>,localStorage / IndexedDB / Cookie 与客户端本体隔离。 - 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)。
典型用法¶
在设置页创建并启动项目¶
- 打开 设置 → 插件 → Super Agent 管理。
- 填写项目名(可选:owner、仓库名、是否私有),点击创建。
- 插件会创建或复用 GitHub 仓库、clone 到实例 stateDir、在侧边栏生成工作区并启动实例。
在 Super Agent 面板里操作¶
- 左侧点击 Super Agent 打开面板。
- 每个项目对应一个标签页:右侧开关启用/停用实例;刷新拉状态,停用/启用针对当前标签,新标签页打开直达代理地址。
- 首次打开某实例时,在其子域内登录或选择工作区,不会污染客户端本体的 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 的建仓、克隆、工作区注册、进程启停和标签页内代理串成一条可在客户端内完成的流程,适合在上游仍「一实例一仓库」的前提下做多项目并行开发。