DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

BigRagdollCat /

BigRagdollCat/DSH-Preset-Dispatch

Verified

This plugin has no description yet.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@62a5b7ad

Agent 管理(dsh-preset-dispatch)

为 DeepSeek Harness 提供的一个插件:把角色预设编辑与子代理派遣授权合并到一个页面、一个弹窗、一次保存里。

A DeepSeek Harness plugin that unifies agent-preset editing and subagent-dispatch authorization in one place.

在 DSH 里,预设(角色)由原生机制管理,而"谁能派遣、能用哪些模型、用多大强度"是另一套设置。两者分散在不同位置,改一个角色的职责与它的派遣策略要来回切换,且缺少服务端约束——本插件把它们合并,并把授权边界做在服务端。


界面

Agent 管理:七个受管预设的原生风格卡片列表

卡片按原生预设的 order 排序(与 DSH 原生预设列表同一规则);页脚显示版本与派遣摘要,↑ / ↓ 调整顺序,「调用记录」查看派遣历史。

编辑弹窗:角色设置与子代理派遣设置在同一处

点卡片打开一个弹窗:上半是角色(稳定 ID、名称、职责说明、角色提示词、工具权限模板),下半是子代理派遣设置。

模型范围:勾选允许的模型,未授权的标注「需授权」

模型范围可选"跟随授权池"或"指定模型";未在 DSH 全局授权池中的模型标注「需授权」,勾选时会被要求同时启用全局授权,避免在页面上绕过授权。


目录

  • 界面
  • 它解决什么问题
  • 主要特性
  • 受管角色
  • 安装
  • 快速上手
  • 授权与安全模型
  • 数据与隐私
  • 兼容性
  • 常见问题
  • 开发与验证
  • 许可

它解决什么问题

原本 本插件
角色提示词、工具模板在一处;派遣开关、模型范围在另一处 一个弹窗同时承载"预设设置"与"子代理派遣设置",一次保存
页面只做前端隐藏,越权请求仍可能生效 服务端强制所有权:只有本插件管理的预设可被写入,其他预设完全只读
保存失败时"看起来什么都没发生" 分项结果:哪一部分已落盘、哪一部分待重试,逐项可见可重试
派遣期间撤权后,已发起的子代理仍会启动 启动前复核:创建子代理前再次校验授权,撤权即拒绝并释放已创建的子代理
派遣历史只在内存里,重启即丢 持久化元数据(最近 50 条),重启后仍在;中断的派遣标记为已中断
模型目录每次读取都要问提供方 目录缓存(含并发合并与故障保留),但授权永不走缓存

主要特性

  • 统一保存协议:所有写入走一个端点,服务端先做完整预校验(所有权、目标一致性、修订号、授权池变化),再落盘;结果按"分项"返回,配合操作标识保证重试幂等。
  • 所有权边界:本插件只管理它自己创建的预设。原生内置预设与其他插件的预设在本页完全只读,且该限制由服务端执行,不依赖界面。
  • 生命周期安全:删除预设时先让其派遣失效再删定义;同 ID 重建不会继承旧授权;复制出的预设拥有独立身份与独立策略。
  • 部分失败可恢复:保存被中断或部分失败时,草稿会保留(含刷新页面),并在弹窗内显示恢复面板——可"重新读取"或"仅提交未完成部分",扩权类改动必须逐项确认。
  • 派遣历史:记录角色、提供方、模型、强度、时间、状态、策略快照与子会话 ID。不保存任务内容、回答或推理。
  • 原生外观:复用 DSH 的主题与控件风格,浅色/深色一致;卡片→单弹窗,Esc 关闭、Tab 在弹窗内循环。
  • 零运行时依赖:纯 ESM,只从 Harness 解析它提供的包(zod、存储域等),不额外安装任何东西。

受管角色

插件自带七个角色预设,可在页面上编辑(名称、职责说明、角色提示词、工具模板、派遣策略):

预设 ID 名称 工具模板 默认派遣
planner 规划架构 只读 6.1 Sol · high
researcher 研究检索 研究检索 DeepSeek V4.1 Flash · high
investigator 根因调查 只读 6.1 Sol · high
reviewer 代码审查 只读 6.1 Sol · medium
implementer 实现开发 实现开发 DeepSeek V4.1 Flash · high
test-author 测试编写 测试编写 6.1 Sol · high
verifier 测试验证 测试验证 DeepSeek V4.1 Flash · high

具体可用的模型取决于你实例的提供方与授权池,因此上表是默认值而非固定值。

安装

前提:DeepSeek Harness 运行时 0.2.0-rc.2(见 兼容性)。

# 1) 克隆仓库
git clone https://github.com/BigRagdollCat/DSH-Preset-Dispatch.git

# 2) 安装(把路径换成你克隆到的位置)
dsh plugin --profile web add ./DSH-Preset-Dispatch

# 3) 重启 dsh web —— 插件的 Host 代码只在进程重启时重新加载

安装后打开 DSH 设置,应能看到「Agent 管理」分区;卡片为原生风格网格。

若安装被兼容性闸门拒绝(incompatible-version),说明你的运行时版本与本插件声明的 peer 不一致,可按需放行:

dsh plugin allow-version

注意:仅切换插件开关不会重新加载 Host 代码(模块按 URL 缓存)。Host 侧改动一律需要重启 dsh web;只改客户端时刷新页面即可。

快速上手

  1. 打开页面:DSH 设置 →「Agent 管理」。
  2. 编辑一个角色:点卡片 → 弹窗内同时设置角色信息与派遣策略 → 保存。
    • 「允许作为子代理派遣」打开后,该预设才能被父代理调用。
    • 「模型范围」可选"跟随授权池"或"指定模型";指定时还要勾选"同时启用 DSH 全局模型授权",否则会被拒绝——这是有意为之,避免在页面上绕过全局授权。
  3. 调整顺序:卡片上的 ↑ / ↓ 直接生效,写入的是原生预设的 order 字段,因此管理页与原生预设列表顺序一致。
  4. 查看派遣记录:页面顶部「调用记录」→ 最近 50 条元数据,可刷新。

授权与安全模型

这是本插件最需要理解的部分。授权分三层,互不等价:

  1. 目录可见性:你的实例里有哪些模型(来自提供方)。
  2. 全局授权池:DSH 允许子代理使用哪些模型(subagent-model-selection-settings)。
  3. 每个预设的允许列表:本插件为某个角色单独勾选的范围。

最终能否派遣 = 三者交集,并且每次派遣在真正创建子代理之前会再复核一次。此外:

  • 插件的 HTTP 路由只接受已认证的操作者请求(未认证返回 400),并校验回环地址、Host 与同源;安全不依赖"藏在界面后面"。
  • 授权决策永不进入缓存:目录可以缓存,但"能不能用这个模型"每次实时读取。
  • 只有本插件管理的预设可写。其他预设即使被手工放进请求,也会被服务端拒绝。

数据与隐私

数据 位置 内容
插件设置 设置命名空间 local-preset-dispatch 派遣深度、允许的预设、每个预设的派遣策略
受管预设 profile patch 的 agent-managed-presets 组 角色定义与原生 order
派遣历史 存储域 preset_dispatch_history 最近 50 条元数据:角色、提供方、模型、强度、时间、状态、策略快照、子会话 ID

派遣历史不保存任务内容、回答或推理文本;无法通过 schema 校验的历史记录会被介质移开备份(backup-and-skip),而不是让整份历史不可读。

清理:删除对应存储域目录即可清空历史;历史是派生数据,删除不影响预设与策略。

兼容性

  • 运行时:@deepseek-ai/dsh >=0.2.0-rc.1 <0.3.0-0(peerDependencies)。已在 0.2.0-rc.2 上完成完整验收;其他 0.2.x 版本按同一契约推断,但未逐一实测。若被兼容性闸门拒绝(incompatible-version),可用 dsh plugin allow-version 放行。
  • 形态:纯 ESM,零运行时依赖;storage 的 domain 形态为可选依赖,不可用时历史退化为内存并上报原因,其余功能不受影响。
  • 平台:在 Windows + DSH Web 上完成验收;未在其他平台验证。

常见问题

为什么其他预设点不动? 那是设计:只有本插件创建的预设可编辑,其余完全只读,且由服务端强制。这样可以避免本插件替你改动其他插件或原生内置的行为。

我改了默认模型,为什么现有会话没变? 派遣设置只影响新会话,已有会话保持它启动时的版本。这是有意为之,避免中途改变正在运行的任务。

保存后提示"部分已保存"是什么意思? 一次保存可能包含多个部分(角色定义、派遣策略、全局设置)。已落盘的部分不会重复提交,未完成的部分可以只重试它们;若期间有人在别处改过同一项,会先显示差异再让你确认。

「调用记录」是空的? 三种可能:还没派遣过;历史存储域未挂载(弹窗会显示原因);或记录超过 50 条被淘汰。历史只保留元数据,重启后仍在。

升级插件后界面没变? Host 改动需要重启 dsh web;仅客户端改动刷新页面即可。可用 node scripts/live-probe.mjs 判断运行实例是否已加载新代码。

开发与验证

零依赖,直接跑 node 即可(脚本不依赖 npm 安装):

node scripts/check.mjs                  # 语法检查 + 冻结哈希校验 + 冻结表完整性
node scripts/test.mjs                   # 全部单元/集成测试(单进程,不派生子进程)
node scripts/pack-check.mjs             # 对真实 npm pack 结果断言(必需文件/排除项/无残留)
node scripts/storage-contract-check.mjs # 用真实包验证存储域声明与 schema 契约
node scripts/live-probe.mjs             # 运行实例是否已加载本版本代码

四道门禁都验证过失败路径(移除必需文件或删除冻结表行会返回非零),不是"永远通过"的检查。

维护说明与冻结哈希表见 MAINTENANCE.md;需求、设计、升级与回退、验收证据见 docs/。

许可

MIT © 2026 BigRagdollCat(发布前请把 LICENSE 与本行中的 BigRagdollCat 替换为你的名字或 GitHub 用户名)

你可以自由使用、修改、再分发,只需保留版权与许可声明。


附:本插件对 Harness 的扩展点

供开发者参考(不影响普通使用):

  • 设置页:Agent 管理(客户端由本插件的 client.js 提供)
  • 工具:preset_dispatch(按预设派遣子代理,支持显式指定提供方/模型/强度)
  • HTTP 路由:/api/preset-dispatch/*(统一保存、状态查询、目录刷新、历史查询),仅接受已认证操作者请求
  • Host 入口:稳定入口 entry.js;预设行由本插件自己的 role-managed.js 承载
—/ 5

No ratings yet

Verified DSH bundle

Commit 62a5b7ad89f6

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout