DSH Superagent

项目矩阵 · 独立 Ticket · 显式路由 · DSH Worker
Node.js 22+ · DSH 0.2.0-rc.2 · MIT
DSH 的跨项目任务控制台。项目拥有目标和工作目录,Ticket 保存请求、消息与验收状态,真实 DSH 会话负责执行。界面位于独立的本地 3081 端口。
A local project control plane for DSH: durable tickets, explicit project routing, replaceable execution sessions, and human acceptance.
能做什么
- 项目有独立身份:创建和编辑目标、工作目录、下一步行动;关注、归档、恢复与搜索项目。
- 任务跨会话保留:
Project → Ticket → Assignment → DSH Session。会话结束或被替换,不会抹掉任务请求与消息。 - 显式选择项目:统一输入区必须选择项目;可新建任务,也可继续待回复或待验收的任务。插件不会用 LLM 猜测消息属于哪个项目。
- 真实 DSH 执行:通过宿主的会话服务启动 Worker,传入项目目标和任务要求;执行消息归入对应 Ticket。
- 人工验收:Worker 完成一轮后进入待验收,只有用户确认才算完成;待回复、阻塞和失败的工作优先显示。
- 明确恢复:发送结果不确定、服务中断或执行失败时保留现场,由用户显式重试,避免自动重复执行。
- 按需导入:读取 DSH 已有工作区和会话元数据,导入项目关联;导入不会自动启动任务。
这是项目与任务控制层。目前不包含自动猜测归属的 LLM 路由器,也不提供 Watchdog 全自动调度。
所有展示截图使用虚构项目与隔离验收数据。
使用
前置条件:Node.js 22 或更新版本,以及已安装并可运行的 DSH 0.2.0-rc.2。dsh-llm 由 DSH 宿主提供,插件不引入第三方运行时依赖。
通过 DSH 的 Plugin Manager 安装 bundle,提交仓库地址:
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 地址,可能仍需要通过上述入口取得控制台认证。不要分享重定向后的认证链接或令牌。
- 新建项目,填写名称、目标、已有的绝对工作目录和下一步行动;也可以导入 DSH 工作区。
- 在统一输入区选择项目并发送具体任务。运行状态与人工待处理项会出现在项目卡片上。
- 打开项目查看请求、结果与消息。待回复或待验收时可补充信息;满意后点击“验收完成”。
- 阻塞或失败时先检查原因,再点击“明确重试”。重试可替换执行会话,Ticket 继续保留。
浏览器页可见时,每 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 |
已有插件的配置启用/停用,与首次安装或 bundle patch 变更是不同操作。插件停用时释放自身 HTTP listener 和事件订阅,并通过 DSH 取消自身拥有的执行;不取消其他会话。重新启用会读取持久状态,中断的任务需要显式恢复。首次安装或新增宿主代码仍应遵循当前 DSH 部署的重启与候选验证流程。
数据与隐私
运行数据存放在包目录之外,写入采用串行、原子替换并限制文件权限。DSH 自己的工作区、会话、模型凭证和历史仍归 DSH 管理;插件不会直接重写这些存储。
项目目录在卡片上默认收折,并在本地详情中可见。界面、消息和工作目录可能含有私人内容;截图、分享和备份前请检查。仓库和发布包只应包含源代码、通用文档及虚构数据截图,不应包含状态目录、真实会话记录、认证链接或凭证。
开发与验证
npm test
npm run check
npm pack
无需安装第三方运行时依赖。dsh-llm 是宿主提供的 peer;这里的 npm pack 只生成可检查的本地包,不代表已发布到 npm。
自动化测试覆盖持久化、状态转换、调度恢复和 HTTP 边界等行为。UI 还需要在隔离的真实 DSH 中验证:认证入口、新建与编辑后回读、任务执行与补充消息、工具调用、验收、归档与恢复、工作区导入,以及停用/重启用后的 listener 清理。桌面与窄屏都应检查截图、控制台和网络请求。测试命令存在不代表这些人工验收已经通过;发布时应以实际记录为准。
静态演示驱动只用于布局和接口联调,不能作为真实 DSH 执行证据。源码发布、候选安装、生产激活与上游收录是独立状态。
故障处理
- 401 / 页面未认证:从 DSH 的
/api/superagent/open入口重新打开控制台。 - 503 / DSH 不可用:检查宿主插件和会话服务;界面会保留已同步数据。
- 409 / 任务不可继续:等待当前执行结束,或检查中断原因后显式重试,不要重复发送同一请求。
- 3081 已被占用:检查是否已有实例或尚未清理的 listener;不要停止不属于本插件的进程。
相关项目
本项目参考 DSH Superagent prototype 的项目与执行分层思想。当前实现的功能与限制以本仓库源码和验证结果为准。
No comments yet. Be the first to write one.