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'
使用方法¶
- 打開面板:在 DSH 側邊欄底部點擊 ⚉ 預設智能體 打開管理面板。面板支持視口自適應。
- 創建預設智能體:填寫 id、名稱、描述(觸發域)和 persona。勾選允許使用的插件(插件白名單)和工具(工具白名單)。保存後即可使用。
- 任務委派:主智能體在對話中調用
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