DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

@local/dsh-preset-hotswitch

Preset Hotswitch

通过 agentPresets.recompose 服务,在调用方 DSH 会话完成首轮交互后热切换其代理预设(实验性:绕过仅限空会话的规则);记录的选择在重启后仍然保留。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Dax233/dsh-preset-hotswitch#8bcbe37bae2274ef7cf8795dd8c9b081589d420d
README兼容性版本

兼容性与来源证明

Preset Hotswitch 以 @local/dsh-preset-hotswitch 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/26

版本

0.1.0stable
2026/10/26

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/26
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 agents-orchestration 分类下经过校验的插件。

Hindsight Coding Agents@vectorize-io/hindsight-coding-agents面向编程代理的仅反思式 Hindsight 长期记忆(可插拔支持多种运行框架:opencode、……),自动在后台导入(无需设置 CLI)。Liangshen@linxin666/dsh-liangshen适用于 dsh Web GUI 的 LiangShen (梁神) agent preset 及其 composer lever。主机部分在激活时将内置 preset 声明到 harness 的 agent-preset 注册表中(declare = enabled),因此无需写入任何内容,preset 即可供新会话选择Remote Bridge@linxin666/dsh-remote-bridgeDSH 远程桥接:主机端通过唯一且精确的 /ios/v1 WebSocket 路由提供协议 v1——会话列表、历史记录基线、提示、包含工具活动的实时回合增量、中断以及进程内代理审批——连接到通过一次性配对的设备Skills Manager@michengai/dsh-skills-managerDSH Skills Manager — 在 DeepSeek Harness 中统一加载并安全管理本机 Agent Skills · 在 DSH 中加载并安全管理本地 Agent Skills

README

dsh-preset-hotswitch · 预设热切换

一个只做一件事的 DeepSeek Harness 插件:让已经聊到一半的会话热切换到另一个 Agent 预设 (比如 cordis 创造模式),不用新开会话。

实验性:recompose() 是 registry 的公开服务方法,但其自述契约是"重新绑定空白 Agent, 由调用方负责空白检查"。本插件刻意跳过这个检查,依赖 DSH 0.2.1-rc.3 的实现细节; 升级 DSH 后可能失效(失效会以普通工具错误返回,不会改坏会话)。介意的话先在新会话里验证。

为什么需要它

官方 UI 只在空白会话(发出第一条消息之前)允许切换 preset。会话一旦开始, agentPresets.select() 会以 agent-preset/locked 拒绝,registry 的设计是"组合在会话创建时确定"。

但实际使用里,经常是聊到一半才发现需要另一套工具面/提示词:

  • 普通会话里忽然要写插件 → 想切到 cordis;
  • 在 cordis 里做完插件开发 → 想切回 standard 继续日常任务;
  • 临时想用 minimal / ptc 控制上下文与工具暴露面。

本插件用 registry 的公开服务方法 agentPresets.recompose() 重新绑定会话的组合 (它的 JSDoc 自述"由调用方负责空白检查"——本插件正是刻意跳过该检查的调用方), 再写入 agent-preset/selected 会话事件,让 registry 的 agentPreset 投影在恢复会话时重放这次选择 —— 重启 DSH 后仍然保持。

安装

dsh plugin --profile desktop add github:Dax233/dsh-preset-hotswitch

装完重启 DSH Desktop。Host-only bundle,没有额外依赖,不改任何 profile 配置。

要求 DSH 0.2.1-rc.3(提供 agentPresets 服务);DSH 升级后请按上面的实现说明重新核对 recompose / composedPreset / list 的契约。

工具

switch_session_preset

参数必填说明
preset否目标 preset id。不传时只报告当前绑定与可用 id,不切换
  • 不传 preset:返回本会话的 current 与可用 presets 列表。
  • 传 preset:把调用本工具的会话重新绑定到目标预设,返回切换前后的 id; 工具组合与提示词段落从下一次请求开始生效。
  • 目标与当前相同时是 no-op;目标不存在、激活失败或记录失败时返回 ok: false 与原因, 目标不存在时还会带上当前可用的 preset id 列表。

示例输出:

{"session":"session-233741f7","current":"ptc","presets":["standard","ptc","minimal","cordis"]}
switched session session-233741f7: ptc -> cordis (effective on the next request)

生效与持久化

  • recompose() 立即重新绑定组合,并触发 tools/change;当前正在执行的请求仍用旧组合, 下一次请求才用新组合(工具面、系统提示段落、skill 目录都会随之变化)。
  • 插件随后 append('agent-preset/selected', { agentPreset })。registry 的 agentPreset 会话投影会重放该事件,因此会话恢复/重启后保持新预设。
  • 会话创建头里的 agentPreset 是创建事实,不会被改写;选择记录只以事件形式追加。

限制与注意事项

  • 只影响调用工具的当前会话(工具运行上下文里的 exec.agent),不会改默认预设, 也不会批量影响其它会话。
  • 子 agent(subagent)会话会被拒绝:子会话的组合继承自委派它的父会话,不应从内部重绑定; 父会话切换后,已有子会话保留旧组合,之后新建的子会话才继承新预设。
  • 目标预设必须存在且可挂载;不存在或激活失败时会返回错误(含错误码、原因与可用 id), 会话保持原绑定。
  • 切换后目标预设没有你需要的工具,是预设组合差异,不是切换失败;随时可以再切回来。
  • 同一 preset id 的新 revision 不会刷新:no-op 判断只比较 id。修改了 preset 定义后, 当前会话再次调用本工具不会重新挂载;请重启 DSH 或新开会话。
  • ptc 组合下的工具面不同:ptc 模式只允许直接调用 run_code,本工具需要在 run_code 程序内调用(tools.switch_session_preset({ preset }));切回其它组合后恢复直接调用。
  • 这是模型面向的工具,没有 UI 按钮;需要手动切换时让 Agent 调用它即可。
  • 切换发生在会话中途,历史消息不会按新预设重写;浅层解读是"后续请求换一套组合"。

实现

  • lib/index.js:apply() 里用 ctx.effect 注册一个工具;inject = ['tools','agents','agentPresets']。
  • 调用方会话解析顺序:工具运行上下文的 exec.agent → agents.currentInitiator(); 两条路径都要通过 agents.get(id) === agent 的存活校验,都拿不到就报错, 不会猜"最后一个 Agent"切错会话。
  • 切换前拒绝 subagent 会话;切换:composedPreset 读当前值 → recompose(agent.ctx, id) → session.append 记录。
  • 不读会话文件、不写配置、不改默认预设;所有操作都走公开服务接口。

测试

node --test tests/hotswitch.test.mjs

覆盖:只读报告、切换并记录事件、当前预设 no-op、initiator 回退、非存活 agent 拒绝、 initiator 异常、非法 preset 类型、subagent 拒绝、recompose 失败(含可用 id)、 list 失败、记录失败,以及 render 输出。

License

MIT