前言¶
在 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 |
| 模型目录频繁读提供方 | 目录可缓存;授权决策不走缓存 |
核心功能¶
预设(角色)管理¶
- 设置 →「Agent 管理」:支持按名称 / ID / 说明搜索;
↑/↓写入原生预设order,与 DSH 原生预设列表顺序一致。 - 生命周期:新建、复制(独立 ID 与策略)、删除(二次确认;默认预设与仍有活跃会话的会被拒;删除前先停用派遣)。
- 受管预设通过原生
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在 profileconfig中可配,默认关闭;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 管理」分区。
快速上手¶
- 打开页面:DSH 设置 →「Agent 管理」。
- 编辑角色:点卡片 → 在同一弹窗内设置角色信息与派遣策略 → 保存。打开「允许作为子代理派遣」后,父代理才可通过
preset_dispatch调用该预设。 - 模型范围:选「指定模型」时,需按界面要求处理全局模型授权,避免在页面上绕过 DSH 全局池。
- 调整顺序:卡片
↑/↓直接写入原生order。 - 调用记录:页面顶部「调用记录」查看最近 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