前言¶
DSH(DeepSeek Harness)中的 Agent 预设决定了会话的工具目录、系统提示和 capabilities。官方机制下,预设通常在会话启动(turn/start)时确定,之后不可更改。这种设计是为了保证对话历史与工具调用的逻辑一致性。但在实际开发或调试中,有时需要在会话中途切换工作模式。该插件通过复用官方的 AgentPresets.recompose 机制,允许在会话的步骤边界进行热切换。
功能概览¶
该插件为 DSH 会话提供运行时切换 Agent 预设的能力。
* 斜杠命令:支持 /mode list 和 /mode <preset-id>。
* 步骤边界应用:切换不会中断当前正在进行的模型请求,而是在当前步骤完成后、下一个请求组装前生效。
* 机制复用:底层复用官方的 AgentPresets.recompose 逻辑,包括单例挂载和作用域重新绑定。
安装与启用¶
通过 dsh plugin 命令安装该插件包。
dsh plugin --profile web add "git+https://github.com/aefuimn/dsh-agent-preset-switcher.git"
安装完成后,需要重启 dsh web 进程并刷新页面以加载插件。
验证安装是否成功,运行:
dsh plugin --profile web ls
输出列表中应包含 dsh-agent-preset-switcher。
典型用法¶
安装并重启后,在 DSH 会话中即可使用斜杠命令。
-
查看当前及完整预设列表:
输入/mode list。系统会返回当前正在使用的预设 ID,以及所有可用的预设列表。 -
请求切换预设:
输入/mode <preset-id>。系统会记录请求并准备在下一个步骤边界应用更改。
适用场景与注意¶
该插件适合需要在调试或交互过程中动态测试不同 Agent 预设的场景。
- 并发与中断:切换操作是异步的,不会打断当前正在进行的模型请求。最长等待时间为当前步骤完成时间。
- 子代理限制:子代理会话无法应用此插件提供的切换功能,其预设跟随父会话。
- 异常处理:如果底层的
recompose机制抛出异常,切换操作会被视为失败,会话将保持原状。 - 许可证:MIT 许可证。
结语¶
通过引入步骤边界重绑定机制,该插件在不破坏官方架构的前提下,增加了 DSH 会话的灵活性。开发者可以在对话中途尝试不同的 Agent 工作模式。