dsh-plugin-superagent: DSH Cross-Project Task Console

前言

在 DSH 里跑多个代码库或并行目标时,常见做法是开多个会话、靠记忆或聊天记录区分「这条消息属于哪个项目」。会话一关或换窗口,任务上下文容易断档;让模型自动猜项目归属,又容易路由错误。下面介绍社区插件 dsh-plugin-superagent(维护者 NattoCB,分类:工作流):在 DSH 之上加一层本地项目控制面,用持久 Ticket、显式选项目和可替换的执行会话,把「一个目标对应一个项目」落到可验收的工作流里。

这是什么

dsh-plugin-superagent 是 DSH 的跨项目任务控制台:项目矩阵、独立 Ticket、显式路由、真实 DSH Worker 执行,界面在独立的本地 3081 端口。仓库简介概括为:DSH project control plane with durable tickets, explicit routing, replaceable sessions, and a local project matrix.

设计原则可以概括为:一个目标,一个项目;任务持续存在,会话按需更替。 插件是项目与任务控制层,不包含自动猜测归属的 LLM 路由器,也不提供 Watchdog 全自动调度。实现参考了 DSH Superagent prototype 的分层思想;当前能力与限制以本仓库源码为准。许可证 MIT,package 版本 0.1.1(资料中的 package.json)。

核心功能

项目身份与矩阵

  • 创建和编辑项目的名称、目标、绝对工作目录、下一步行动;支持关注、归档、恢复与搜索。
  • 可按需从 DSH 已有工作区和会话元数据导入项目关联;导入不会自动启动任务。

Ticket 跨会话保留

任务链路为:Project → Ticket → Assignment → DSH Session。会话结束或被替换时,不会抹掉任务请求与消息。

显式路由,不用 LLM 猜项目

统一输入区必须选择项目;可新建任务,也可继续待回复或待验收的任务。插件不会用 LLM 猜测消息属于哪个项目。

真实 DSH 执行与人工验收

通过宿主的会话服务启动 Worker,传入项目目标和任务要求;执行消息归入对应 Ticket。Worker 完成一轮后进入待验收,只有用户确认才算完成;待回复、阻塞和失败的工作优先展示。

明确恢复,避免静默重试

发送结果不确定、服务中断或执行失败时保留现场,由用户点击「明确重试」;重试可替换执行会话,Ticket 继续保留,避免自动重复执行。

环境与依赖

前置条件:

  • Node.js 22 或更新版本。
  • 已安装并可运行的 DSH 0.2.0-rc.2。
  • dsh-llm 由 DSH 宿主提供;插件不引入第三方运行时依赖。

安装与启用

通过 DSH 的 Plugin Manager 安装 bundle,向管理器提交仓库地址(安装命令以 README 原文为准,勿自行拼接 CLI 插件名):

https://github.com/NattoCB/dsh-plugin-superagent

让 Plugin Manager 使用 install_bundle 处理安装与依赖。插件通过 cordis.patch.yml 挂载。

首次安装到受管或冻结的 DSH 部署时,应先在独立候选环境验证,再通过该部署的发布流程切换;不要直接改写正在承载会话的生产目录。高级用户可参考 DSH CLI 的 dsh plugin --profile <name> <pnpm-args...>;--profile 必须明确指定——这是向该 profile 的 pnpm 转发命令的底层入口,不替代受管部署的 bundle 安装与发布流程。

启用后,在 DSH 侧栏底部点击 Superagent 项目台 进入项目矩阵。控制台右上角 返回 DSH 可在同一标签页切回宿主;两个方向都经宿主认证交换,无需手动复制登录链接。

也可从已认证的 DSH 页面打开:

http://127.0.0.1:3080/api/superagent/open

该入口会引导浏览器进入已认证的 3081 控制台。3080 与 3081 的认证按 authority 隔离;仅登录 3080 后直接输入 3081 地址,可能仍需要通过上述入口取得控制台认证。不要分享重定向后的认证链接或令牌。

典型用法

经过上面的安装与入口步骤后,可按 README 中的流程操作:

  1. 新建项目,填写名称、目标、已有的绝对工作目录和下一步行动;也可以导入 DSH 工作区。
  2. 在统一输入区选择项目并发送具体任务。运行状态与人工待处理项会出现在项目卡片上。
  3. 打开项目查看请求、结果与消息。待回复或待验收时可补充信息;满意后点击「验收完成」。
  4. 阻塞或失败时先检查原因,再点击「明确重试」。

浏览器页可见时,每 4 秒同步概览。同步失败会显示错误并保留上次数据;同一表单在保存结束前只能发起一次请求。任务详情提供可复制的执行会话 ID;宿主提供入口地址时可打开 DSH 查找对应会话。

配置与生命周期

配置位于插件的 Cordis entry 中:

配置 默认值 含义
host 127.0.0.1 仅支持 loopback 监听
port 3081 独立项目控制台端口
stateDir $DSH_HOME/superagent-control 持久化项目、任务、消息与执行关联;未设置 DSH_HOME 时使用 ~/.dsh/superagent-control
agentPreset standard DSH Worker 使用的 preset

插件停用时释放自身 HTTP listener 和事件订阅,并通过 DSH 取消自身拥有的执行,不取消其他会话。重新启用会读取持久状态,中断的任务需要显式恢复。运行数据写在包目录之外,采用串行、原子替换并限制文件权限;DSH 工作区、会话、模型凭证和历史仍归 DSH 管理。

故障处理(节选)

  • 401 / 页面未认证:从 DSH 的 /api/superagent/open 入口重新打开控制台。
  • 503 / DSH 不可用:检查宿主插件和会话服务;界面会保留已同步数据。
  • 409 / 任务不可继续:等待当前执行结束,或检查中断原因后显式重试,不要重复发送同一请求。
  • 3081 已被占用:检查是否已有实例或尚未清理的 listener;不要停止不属于本插件的进程。

适用场景与注意

适合需要在 DSH 中并行管理多个有明确工作目录的目标、且希望任务请求与验收状态不随会话销毁的开发者。若你依赖全自动项目路由或 Watchdog 调度,当前版本不包含这些能力。

DSH 生态理念是「一切皆插件」;社区目录站点(如 SkillHub)与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的插件,不是官方应用商店条目。

安全与权限:插件以当前 DSH 进程权限运行,Worker 会访问你配置的项目工作目录。安装前应阅读源码与 MIT 许可证,在候选环境验证后再用于承载真实会话的部署。项目目录在界面与本地详情中可见,截图与备份前请检查是否含私人内容。

结尾

dsh-plugin-superagent 把多项目智能体开发里「会话易断、归属难辨」的问题,收敛到项目矩阵、持久 Ticket 和显式验收上;执行仍走真实 DSH Worker,控制面在本地 3081。进一步了解可查看目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/NattoCB/dsh-plugin-superagent
  • GitHub:https://github.com/NattoCB/dsh-plugin-superagent
羽毛球分组比赛记分
小程序二维码

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

Xiaoye