DeepSeek Harness 预设智能体管理插件

DeepSeek Harness (DSH) 生态强调模块化与权限隔离。在多智能体协作场景下,如何复用特定能力的智能体并严格控制其权限,是一个常见需求。dsh-preset-agent-manager 插件将「预设智能体」提升为 DSH 的一等公民。它提供了一个可视化的侧边栏管理面板,并提供了 preset_agent_dispatch 工具,允许主智能体在对话中委派任务。每个预设智能体拥有独立的插件白名单和工具白名单,子会话在隔离环境中运行,确保主会话安全。

核心功能

  • 侧边栏管理面板:位于 DSH 侧边栏底部,提供全屏管理界面。支持创建、编辑和删除预设智能体。删除操作需二次确认并显示当前活跃的子会话数。
  • 严格的白名单机制:支持插件白名单与工具白名单。白名单逻辑分为两层:继承层掩码(toolFilter.allow)和自身层 guard(tools.guard),确保子会话只能调用被明确勾选的工具。
  • 模型工具:
    • preset_agent_dispatch(agent_id, task):主智能体调用此工具将任务委派给预设智能体。
    • preset_agent_admin(action, …):用于管理预设智能体的操作。
  • 持久化存储:配置数据保存在 $DSH_HOME/data/dsh-preset-agent-manager/agents.json。文件采用「临时文件 + rename」的原子写入方式,损坏的文件会被自动旁置为 .corrupt 后缀。

安装与启用

方式一:标准安装(需要 pnpm)

本插件声明了 dsh.bundle.patch,安装成功后会自动加入 profile 的 dsh.profile.bundles 配置。

dsh plugin --profile web add file:$env:USERPROFILE\.dsh\plugins\dsh-preset-agent-manager

注意:dsh plugin 是一个 pnpm 薄转发器。若提示 pnpm not found on PATH,请先执行 corepack enable pnpm 或全局安装 pnpm。修改 profile 配置后需要重启 profile 生效。

方式二:手工安装(不依赖 pnpm)

若环境无 pnpm,需手动将插件文件放入 profile 的解析路径,并追加 patch 层配置。

# 1. 放入 profile 的解析路径(Node 从 profile 目录向上查找 node_modules)
$dst = "$env:DSH_HOME\profiles\web\node_modules\dsh-preset-agent-manager"
New-Item -ItemType Directory -Force $dst | Out-Null
Copy-Item "$env:USERPROFILE\.dsh\plugins\dsh-preset-agent-manager\*" $dst -Recurse -Force

# 2. 激活:把下面 4 行追加到 profile 的 patch 层
#    (该 profile 声明了 patchReload: live,正常情况无需重启)
- insert:
    - id: preset-agent-manager
      name: 'dsh-preset-agent-manager'
      config:
        rev: '16'

使用方法

  1. 打开面板:在 DSH 侧边栏底部点击 ⚉ 预设智能体 打开管理面板。面板支持视口自适应。
  2. 创建预设智能体:填写 id、名称、描述(触发域)和 persona。勾选允许使用的插件(插件白名单)和工具(工具白名单)。保存后即可使用。
  3. 任务委派:主智能体在对话中调用 preset_agent_dispatch 工具。
{ "agent_id": "log-tracer", "task": "自包含的任务描述" }

调用返回包含 status(success / partial / failed)、output、tool_allow、warnings、error、startup_ms、duration_ms、session_id 等字段。

机制与限制

  • 委派深度限制:插件设置了 maxDepth: 1,即预设智能体无法再次委派其他智能体,防止无限递归。白名单与作用域 guard 是额外的安全保证。
  • 白名单执行逻辑:
    • 继承层掩码:toolFilter.allow 过滤子会话继承的工具(全局层 + 父层),只保留白名单内的工具。
    • 自身层 guard:由于子会话自身的 scope 可能包含 subagent 等特殊工具,主机半在子会话发布后立即注册 tools.guard,拦截不在白名单内的工具调用。
  • 并发安全:preset_agent_dispatch 声明了 isConcurrencySafe: () => true,同一预设智能体的多次委派会独立运行、互不干扰。
  • 已知限制:没有 pnpm 无法使用 dsh plugin add 的裸包名形式;预设智能体不是 agent preset,不能继承 preset 行独有的工具。

数据格式

预设智能体的配置保存在 $DSH_HOME/data/dsh-preset-agent-manager/agents.json,结构如下:

{
  "version": 1,
  "agents": [
    {
      "id": "log-tracer",
      "name": "日志追踪器",
      "description": "排查日志、慢查询、错误堆栈",
      "persona": "你是一个专业的日志分析专家……",
      "pluginWhitelist": ["@deepseek-ai/dsh-tool-fs"],
      "toolWhitelist": ["read", "grep"],
      "createdAt": "2026-09-15T10:00:00.000Z",
      "updatedAt": "2026-09-15T10:00:00.000Z"
    }
  ]
}

总结

dsh-preset-agent-manager 通过可视化的侧边栏和严格的工具/插件白名单,解决了 DSH 中智能体委派时的权限控制与复用问题。开发者可以通过简单的 JSON 调用实现任务分流,同时保持主智能体环境的隔离与安全。

  • 插件目录:https://www.skillhub.cn/plugins/qingli-sketch/dsh-preset-agent-manager
  • GitHub 仓库:https://github.com/qingli-sketch/dsh-preset-agent-manager
羽毛球分组比赛记分
小程序二维码

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

小夜