DSH-Preset-Dispatch:在一个页面里管角色预设与子代理派遣

前言

在 DeepSeek Harness(DSH)里,「角色」由原生预设机制管理:提示词、工具模板、稳定 ID 等都在一套流程里维护。另一方面,「某个角色能不能被父代理派出去、能用哪些模型、思考强度怎么限」往往落在另一处设置里。改一个角色的职责,还要单独改派遣策略,需要在多个界面来回切;页面侧若只做隐藏,越权写入仍可能打到服务端。

下面介绍社区插件 DSH-Preset-Dispatch(仓库 BigRagdollCat/DSH-Preset-Dispatch,维护者 BigRagdollCat)。它把角色预设编辑与子代理派遣授权合并到设置里的「Agent 管理」分区:一个弹窗、一次保存,并在 Host 侧做所有权与授权边界约束。SkillHub 目录页:DSH-Preset-Dispatch(社区站点,与 DeepSeek / 幻方无官方从属关系)。

这是什么

DSH-Preset-Dispatch(npm 包名 @local/dsh-preset-dispatch,当前版本 0.6.0)是 DSH 的 Web 客户端插件:在设置中提供原生风格卡片网格,区分「本插件管理」与「其他预设(只读)」;点开卡片后,上半是预设(名称、稳定 ID、职责说明、角色提示词、工具权限模板等),下半是子代理派遣策略,保存走统一协议并在服务端校验。

主代理通过工具面 preset_list、preset_dispatch 查看可派遣目录并创建子代理;派遣过程有主对话卡片、子会话配置徽标,以及可选的调用记录与持久化元数据(最近 50 条)。

它相对原生做法改了什么

原本 本插件
角色与派遣设置分散 一个弹窗、一次保存
前端隐藏难以防越权 仅受管预设可写,其他预设服务端只读
保存失败缺少反馈 分项结果:已落盘 / 待重试逐项可见
撤权后已发起的子代理仍可能启动 创建子代理前再次复核授权
派遣历史易随重启丢失 存储域 preset_dispatch_history v1,中断记录标为 interrupted
模型目录频繁读提供方 目录可缓存;授权决策不走缓存

核心功能

预设(角色)管理

  1. 设置 →「Agent 管理」:支持按名称 / ID / 说明搜索;↑ / ↓ 写入原生预设 order,与 DSH 原生预设列表顺序一致。
  2. 生命周期:新建、复制(独立 ID 与策略)、删除(二次确认;默认预设与仍有活跃会话的会被拒;删除前先停用派遣)。
  3. 受管预设通过原生 agent-managed-presets 组声明,仍出现在 DSH 原生 Agent 预设列表;内容哈希与版本递增:新会话用新版本,已绑定会话保留旧版本。

派遣授权与模型策略

每预设可配置:

  • 「允许作为子代理派遣」开关。
  • 模型范围:跟随 Host 授权池 或 仅允许所选模型;未在 DSH 全局授权池中的模型会标注「需授权」,勾选扩权需确认「同时启用 DSH 全局模型授权」。
  • 默认模型(或继承父代理)、默认思考强度、允许思考强度列表、是否锁定默认模型。
  • 全局项还包括 DSH 子代理模型授权池、最大派遣深度等。

授权分三层且取交集:目录可见性、全局授权池(subagent-model-selection-settings)、预设允许列表;每次真正创建子代理前都会再复核一次。

保存、派遣与可见性

  • 写入统一端点:所有权、修订号 CAS、授权池预校验后,按「授权池 → 定义 → 策略」顺序落盘;支持 operationId 幂等与草稿保护。
  • preset_dispatch 支持 reasoning_effort、run_in_background、可选 catalogId 与可选 selection(主代理自报低 / 中 / 高复杂度与 1–160 字理由,不参与授权)。
  • 主对话卡片、子会话左下角 / 输入区徽标区分计划配置与子会话已提交的实际请求;运行结果写入 tool/result.meta 的运行信封字段。
  • 查询压缩 compressUsedQueries 在 profile config 中可配,默认关闭;README 明确尚未在真实桌面端验证 Token / 费用节省,本文不宣称已降本。

自带七个受管角色

插件预置七个可编辑角色(具体可用模型取决于你实例的提供方与授权池,下表为 README 中的默认派遣示意):

预设 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(package.json 声明 peer:@deepseek-ai/dsh >=0.2.0-rc.1 <0.3.0-0)。若安装被兼容性闸门拒绝(incompatible-version),可按需执行 dsh plugin allow-version(README 说明:仅当你接受与声明 peer 不一致的风险时使用)。

从 GitHub 仓库 取得插件目录后,在本地指向该目录执行:

dsh plugin --profile web add ./DSH-Preset-Dispatch

安装完成后重启 dsh web。Host 侧模块只在进程重启时重新加载;仅刷新页面不会加载新的 Host 代码。客户端改动刷新页面即可。

安装成功后,打开 DSH 设置应能看到「Agent 管理」分区。

快速上手

  1. 打开页面:DSH 设置 →「Agent 管理」。
  2. 编辑角色:点卡片 → 在同一弹窗内设置角色信息与派遣策略 → 保存。打开「允许作为子代理派遣」后,父代理才可通过 preset_dispatch 调用该预设。
  3. 模型范围:选「指定模型」时,需按界面要求处理全局模型授权,避免在页面上绕过 DSH 全局池。
  4. 调整顺序:卡片 ↑ / ↓ 直接写入原生 order。
  5. 调用记录:页面顶部「调用记录」查看最近 50 条派遣元数据(角色、模型、强度、状态、可选 selection 与 tokenUsage 等),可刷新。

父代理侧典型流程:先 preset_list 获取精简目录(需要诊断时可带 diagnostic: true),再 preset_dispatch 按预设 ID 创建子代理;省略模型时使用预设默认,无默认才继承父模型。

配置与数据落点(节选)

profile patch 中本插件 config 可包含(README / 数据与隐私表):allowedPresets、allowModelSelection、compressUsedQueries,以及 maxDepth、presetPolicies 的初始值。设置命名空间 local-preset-dispatch 存最大派遣深度与各预设派遣策略。派遣历史在存储域 preset_dispatch_history v1;存储不可用时退回内存并上报原因。

适用场景与注意

适合:需要在 DSH 里长期维护多角色 Agent 预设,并希望派遣策略、模型范围、深度限制与原生预设 order 保持一致;希望服务端拒绝对非受管预设的写入,并在撤权后阻止新子代理启动的团队或个人。

务必注意:

  • 插件 Host 路由与保存逻辑以当前 DSH 进程权限运行;安装前应阅读源码与 LICENSE,确认符合你的安全与合规要求。
  • HTTP API 要求已认证操作者;授权不依赖「藏在界面后面」。
  • README 记录当前 376 项自动测试中 373 通过、3 跳过(与桌面 app.asar 内宿主包解析相关);部分真实桌面端与 Flash / Codex 链路仍标为尚未验证。
  • 调用记录与 selection.reason 会落盘为自由文本元数据;调用方不应写入密钥、任务原文或推理过程。

结尾

DSH-Preset-Dispatch 把分散的角色编辑与子代理派遣授权收到「Agent 管理」一处,用服务端所有权与三层授权交集约束派遣边界,并补齐保存分项反馈、启动前复核与派遣元数据持久化。若你在 SkillHub 或 GitHub 看到版本 0.6.0,可按上文命令安装并重启 dsh web 后从设置页开始调整七个内置角色或自建预设。

  • 目录页:https://www.skillhub.cn/plugins/BigRagdollCat/DSH-Preset-Dispatch
  • 仓库:https://github.com/BigRagdollCat/DSH-Preset-Dispatch
羽毛球分组比赛记分
小程序二维码

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

小夜