dsh-ob-agent:在 DSH 里统一闸门与子代理编排

前言

在 DeepSeek Harness(DSH)里做智能体工作流时,主会话往往会继承一整套 Agent 类工具:子代理、工作流、Ralph 等。工具一多,模型容易误选;若再为不同任务单独配身份、模型和权限,配置会散落在多处,难以按会话收敛能力面。

下面介绍社区插件 dsh-ob-agent(维护者 yxsj245,SkillHub 分类为工作流)。它在 DSH 侧提供「一个总开关 + 可预设的角色条目 + 每会话勾选」,并在执行层对残留工具做守卫,让主代理按设置选择性调用合适的子代理。当前版本 0.2.0,README 标明适配 DSH 0.2.1-rc.2;仓库采用 MIT 许可证。

这是什么

dsh-ob-agent 是 DSH 的 Agent 能力统一控制插件:用聊天框总开关隐藏或拒绝继承的 Agent 工具,用角色条目描述调用时机、子代理身份、spawn/fork、模型、思考档位和只读/完全权限,并支持每会话勾选后把「何时调用」写入系统提示。插件还提供 agent_create、agent_update、agent_list,让模型在策略允许范围内自助创建可复用角色(默认仅可改自建条目)。

与「完全依赖宿主默认暴露全部子代理工具」相比,本插件把能力收敛到用户勾选的条目,并在只读模式下用白名单与 tools.guard() 做执行层拒绝;子代理可向直接父代理回发,但不能再次委派。

SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;安装前请自行阅读源码与许可证。插件以当前 DSH 进程权限运行,不宣称 OS 级沙箱。

核心功能

聊天框总开关与每会话勾选

输入框上方有「子代理」总开关,按会话保存。关闭时:继承面的 Agent 工具被隐藏,自有层残留工具由守卫在执行层拒绝;系统提示会明确禁止沿用历史工具名(0.2.0 起与「智能体团队模式」的切换有关,见仓库 docs/v0.2.0.md)。打开后只放行已勾选的条目,系统提示只列当前实际可用的能力。

出厂内置 8 条角色(含代码审查、通用子代理、Agent 自助管理及折叠的 5 条 DSH 原生工具分组);原生分组默认收起,不能借收起绕过总开关。

角色条目与运行模式

设置页可编辑每条角色的名称、描述、调用时机、身份提示词、spawn/fork、模型/思考档位、权限、默认勾选及纳管状态。新建子代理固定为 continuable(可继续对话):工具名统一为 subagent_<id>_session,委派后立即返回持久子代理 ID,完成后由宿主通知,可用 send_message 续话、interrupt_agent 中止。一次性模式已按用户要求移除;旧 one-shot 条目读取后会归一为可继续对话,保留角色 ID、身份、模型、权限与勾选。

模型自助与团队模式(0.2.0)

agent_create / agent_update / agent_list 在全局策略允许下创建或维护条目,写入经校验并留审计日志。0.2.0 增加「智能体团队模式」:先释放本插件的角色工具、限制和能力提示,再由用户在 DSH 插件页开启官方智能体团队;官方团队服务已存在时自动避让,本插件不安装或实现团队工具。

策略快照与安全边界

受管子代理在 startActivation() 边界使用命名空间 ID,保存不可变策略快照,并在宿主 agent/created 阶段装配身份与工具守卫。默认目录:

$DSH_HOME/plugins/dsh-ob-agent/child-policies/
# DSH_HOME 未设置时:~/.dsh/plugins/dsh-ob-agent/child-policies/

可用环境变量 DSH_OB_AGENT_POLICY_DIR 覆盖。备份或迁移会话时应同时备份该目录;策略缺失、损坏或父子身份不符时会拒绝冷恢复,不会默认为完全权限。快照是插件工具策略,不是 OS 沙箱;全权限下本机进程仍可改文件。

闸门分三层:tools.restrict 隐藏继承工具、tools.guard() 单调拒绝(含自有层)、以及按所选工具重挂原生实现。只读权限与父会话可见工具求交集,交集为空则条目不可用;默认文件类白名单为 read / read_image / glob / grep,可选保留向直接父代理的 send_message。

安装与启用

本插件暂无 npm 发布包,需在源码目录本地构建后,用 file: 路径安装到已有 web profile。文档中的示例命令如下(路径按实际 checkout 调整):

# 在插件源码目录
npm install --legacy-peer-deps
npm run check

# 安装到已有 web profile(不会启动替代服务器)
dsh plugin --profile web add file:C:/Users/17737/Code/other/DSH/plugins/dsh-OB-agent

安装或更新源码后需重启原 DSH 进程,再在现有 GUI 刷新页面。npm run build 产物在源码目录的 lib/;更新前建议备份 profile 的配置、依赖清单和锁文件。不要用另起 Web 服务代替更新原 GUI。

典型用法

  1. 完成安装并重启 DSH,在聊天框确认出现「子代理」条与设置页入口。
  2. 按任务在设置页调整条目(模型、权限、调用时机、身份提示词);提示词变量须写为已注册形式,例如 {{cwd}}、{{model}},带空格或未知变量会在校验时被拒。
  3. 在新会话中打开总开关,勾选本会话要用的角色;系统提示会反映当前勾选与调用时机。
  4. 主代理调用对应 subagent_<id>_session 委派;子代理完成后可续话或向父代理回发(若全局允许)。
  5. 若需让模型自建角色,在设置页放开自助管理范围后,使用 agent_create / agent_update / agent_list(遵守默认「仅改自建」等限制)。

验收时可对照 docs/USAGE.md:总开关开关生效、勾选后出现 _session 工具、返回 ID 与完成通知正常;只读子代理不应写文件或执行命令。模型侧工具契约见仓库 docs/model-guide.md。

适用场景与注意

适合:希望在同一 DSH 配置下按会话收紧 Agent 工具面;需要预设多角色(审查、通用子代理、原生 workflow 等)并统一权限与模型路由;需要在 DSH 0.2.1-rc.2 异步 apply() 与新子代理 activation 路径上保持条目身份与守卫一致的用户。

注意:

  • peer 依赖包含 @deepseek-ai/dsh-tool-subagent(>=0.2.1-rc.2 <0.3.0)等宿主组件,宿主版本不匹配时可能出现 persona is no longer supported 或面板异常,应核对安装副本版本与 lib/ 构建哈希后重启。
  • 策略目录可能含角色提示词,勿公开或写入密钥;run_code 不能加入只读白名单。
  • 原生非本插件命名空间的子代理 ID 不受快照冷恢复校验,但仍受闸门配置管理。
  • 其他插件的运行时错误本插件不负责修复;本次范围仅限 dsh-ob-agent。

结尾

dsh-ob-agent 把 DSH 里分散的 Agent 类能力收拢到可配置的闸门与角色条目上,并配合策略快照与执行层守卫,让主代理按会话调用合适的子代理。需要安装步骤、权限语义与 0.2.1 迁移细节时,以仓库 README 与 docs/USAGE.md 为准。

羽毛球分组比赛记分
小程序二维码

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

小夜