前言¶
DeepSeek Harness (DSH) 的核心在于插件化与 Agent 灵活性。在实际使用中,开发者常遇到一个需求:在会话中途只希望改变模型说话的语气与人设,而不希望重置它已有的工具、技能或模型选择。现有的某些切换方案在执行人设替换时,往往需要注册 Agent Preset 或调用 recompose(),这会连带重置整个会话的工具组合,导致工具丢失或命令表清空。
dsh-persona-switcher 插件解决了这个问题。它通过宿主原生的 persona-switcher:persona section 机制,将角色正文注入到提示词中,实现了“只换说话的人,不碰手里的工具”。
核心能力¶
-
角色库管理
插件支持在rolesDir目录下维护角色文件,每个角色对应一个ROLE.md。文件中包含id、name、description以及人设正文。角色文件支持目录结构或扁平文件形式。 -
会话中途切换
使用/role <id>命令即可在当前会话中切换角色。插件不会调用recompose(),因此不会重置会话的工具、技能和模型配置。使用/role none可一键退回宿主默认人设。 -
宿主原生机制
插件利用宿主的persona-switcher:personasection 机制,将角色内容作为独立提示词段注入。它不遮蔽宿主的部署身份行(如You are a coding agent...),只是在其后追加人设描述,确保模型始终知道自身运行在哪个模型上。 -
持久化与默认值
每次切换会话角色时,插件会将选择记录在$DSH_HOME/persona-switcher/sessions.json中。重启 DSH 后,该会话的第一步提示词会自动应用上次记录的角色。同时,支持通过defaultRole配置项设置新会话的默认角色。 -
可视化管理与诊断
在设置页中提供可视化的角色库管理界面(含专属导航图标),支持新建、编辑和删除角色。此外,提供role_probe诊断工具,用于检查当前绑定状态、系统节点及工具清单。
安装与启用¶
确保已安装 DeepSeek Harness >= 0.2.0-rc.1。
dsh plugin add --profile desktop dsh-persona-switcher
安装后需要完全退出并重启 DSH 才能生效。
使用方式¶
-
查看当前状态
在会话中输入/role,可查看当前会话角色及角色清单。 -
切换角色
输入/role whale-girl切换到指定角色(whale-girl为角色 ID)。 -
撤销切换
输入/role none撤销本会话的角色,恢复为宿主默认人设。 -
设置默认角色
输入/role default whale-girl,将指定角色设为新会话的默认角色。 -
设置页操作
直接在设置页的“人设切换”板块进行可视化管理。
边界与安全¶
本插件在设计上严格限制了权限范围,仅写入内存中的提示词段和特定的配置文件,不涉及网络请求或凭据读取。
-
权能边界
- 不声明任何角色级工具、技能或模型。
- 不读取角色文件中的
tools、denyTools、skillsDir、model字段。 - 不注册 agent preset,不调用
recompose()。 - 不遮蔽宿主的身份行。
-
文件写入位置
插件仅写入 4 个位置:$DSH_HOME/persona-switcher/sessions.json(会话记录)、<rolesDir>下的角色文件(仅用户主动新建/编辑/删除时)、宿主 profile 的cordis.patch.yml(通过 settings 表层间接写入)。 -
网络与隐私
插件不联网、不上传角色内容、不读取凭据文件。仅通过宿主已有的本地 webServer 提供极少数端点(如列出角色),不开启独立服务。
总结¶
dsh-persona-switcher 是一个专注于“人设层”切换的轻量级插件。如果你需要在不重置工具链的情况下频繁切换模型语气,它提供了比更换 Agent Preset 更精细的控制方案。安装后角色文件保留,卸载即可彻底清除所有痕迹。
- GitHub 仓库:https://github.com/yupaoa/dsh-persona-switcher
- 插件目录:https://www.skillhub.cn/plugins/yupaoa/dsh-persona-switcher