在运行中的会话里即时切换系统提示词人格,无需重启
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add sorbitol25/dsh-persona-switch该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-persona-switch
为 DeepSeek Harness(dsh)提供实时人格切换。在运行中的会话里直接切换系统提示词人格——TUI、Web UI 或无头模式都行,不用重启,也不用改核心。插件自带切换器,外加示例 JB 人格(jb);更长的变体人格故意没有收录,你自己的人格放在 $DSH_HOME/personas/。
/persona show the active persona + the roster
/persona list same
/persona jb switch (name = personas/<name>.md)
/persona off stop overriding the system prompt
/persona reload re-read the persona directory (after editing a file)
/persona complete on|off|auto
或者直接跟智能体说——persona_switch 已经注册成工具:
jbに切り替えて
验证
人格到底有没有覆盖提示词,是可以测出来的:把路由指向本地 mock(DEEPSEEK_BASE_URL),读取 DSH 发出的请求体。
展开完整文档(README 剩余 1 节)
dsh-persona-switch
为 DeepSeek Harness(dsh)提供实时人格切换。在运行中的会话里直接切换系统提示词人格——TUI、Web UI 或无头模式都行,不用重启,也不用改核心。插件自带切换器,外加示例 JB 人格(jb);更长的变体人格故意没有收录,你自己的人格放在 $DSH_HOME/personas/。
/persona show the active persona + the roster
/persona list same
/persona jb switch (name = personas/<name>.md)
/persona off stop overriding the system prompt
/persona reload re-read the persona directory (after editing a file)
/persona complete on|off|auto
或者直接跟智能体说——persona_switch 已经注册成工具:
jbに切り替えて
验证
人格到底有没有覆盖提示词,是可以测出来的:把路由指向本地 mock(DEEPSEEK_BASE_URL),读取 DSH 发出的请求体。test/capture-prompt.mjs 做的就是这件事,三种状态的表现和 front-matter 里写的完全一致:
| persona | complete | agent-turn system message | harness identity |
| off | — | 2,823 B | PRESENT |
| jb | true | 7,989 B — byte-exact match with personas/jb.md | absent |
| jb | false | 10,814 B (= 2,823 merged + 7,989 persona) | PRESENT |
每种情况下都会带上 25 个工具 schema,thinking 保持开启,会话标题辅助请求(单独一个 363 B 的请求)不受影响。
为什么非得做成插件
DSH 自己的文档写得很清楚:「Deployment-authored prompt text is config/ composition only … there is no end-user prompt-editing API.」 部署人格挂在 dsh-system-prompt 那一行的配置上,dsh-persona 只在单个智能体预设内部遮蔽它。会话跑起来之后,两者都切不了。
这一行注册一个提示词 section,它的 text 是服务商函数,每次组装时求值:
sp.section({
name: 'persona-switch:persona',
order: sp.getSectionOrder('DEPLOYMENT_PERSONA_PREFIX'),
text: () => activeText(), // ← read on every turn, not at boot
interpolate: false,
complete: activeComplete(), // persona becomes the whole system prompt
})
切换时销毁并重新注册这个 section,触发 system-prompt/change;下一轮就按新人格组装。
安装
从 npm 安装(每个配置档一行命令——每个 dsh 配置档都是独立安装):
dsh plugin --profile web add dsh-persona-switch
dsh plugin --profile dsh-tui add dsh-persona-switch
dsh plugin --profile headless add dsh-persona-switch # for scripting
重启该配置档(或直接启动它),/persona 就在那里了。不用再配置别的——包内声明了 dsh.bundle.patch,所以 dsh plugin add 会顺带把它追加到 dsh.profile.bundles。如果 pnpm 的 packument 缓存过期,可能给你一个旧版本,那就锁定版本(…add dsh-persona-switch@0.1.2);直接 add dsh-persona-switch 会解析到 latest。
从本地检出安装(开发用——file: 依赖是符号链接,改完下次启动 dsh 就生效,不用重装):
dsh plugin --profile web add file:C:/path/to/dsh-persona-switch
桌面应用(Electron)。 它的 desktop 配置档是保留的:dsh plugin --profile desktop … 会拒绝执行,报 profile "desktop" is managed exclusively by the Electron application。手动安装(或运行 scripts/install-desktop.ps1,它做的就是这件事,并会校验结果):
powershell -ExecutionPolicy Bypass -File scripts/install-desktop.ps1
然后彻底退出应用(包括托盘)再重新启动。/ 菜单里现在会列出 persona;/persona <name> 在宿主侧执行(不产生模型轮次,不消耗 token)。如果应用更新重写了 ~/.dsh/profiles/desktop/package.json,重跑一遍脚本。
升级 / 卸载
dsh plugin --profile web add dsh-persona-switch@0.1.2 # upgrade (pin: pnpm can serve a stale packument)
dsh plugin --profile web remove dsh-persona-switch # uninstall
卸载不会动 $DSH_HOME/personas/.md(那是你的文件,不属于包)。
角色
$DSH_HOME/personas/.md——首次运行时从 personas/ 播种,之后归你编辑。文件名主干就是角色名。可选 front-matter:
title: JB core (persona slim2 / 8KB) # shown by /persona list
complete: true # true = this becomes the ENTIRE system prompt
suffix: "" # optional text after first-party guidance
<persona prose>
| 字段 | 默认值 | 含义 |
| title | 文件名主干 | 名册里显示的标签 |
| complete | false | true 会替换整个系统提示词(harness 身份、引导语、全部内容)。false 把文本放到角色前缀槽位,保留第一方引导语。 |
| suffix | — | 追加到角色后缀槽位,而不是前缀 |
内置种子:
| 角色 | 大小 | complete | 说明 |
| jb | ~8 KB | 是 | 示例 JB 角色 |
| terse | 0.5 KB | 否 | 非完整角色的示例 |
| _selftest | 0.3 KB | 是 | 只回答 BANANA——用来验证接线 |
jb_full(84 KB 的变体)不在本仓库里,也不在它的历史记录中——它在 2026-10-12 被移除,.gitignore / .git/info/exclude 会把它挡在外面。
complete: true 会让配置档成为整个系统提示词(见验证);false 保留第一方指引,把配置档放到 deployment-persona 槽位。可选的 suffix: 落在第一方指引之后。你自己的配置档放在 $DSH_HOME/personas/ —— 往那里丢一个 .md,然后运行 /persona reload。
添加你自己的
往 $DSH_HOME/personas/ 丢一个 .md 文件,然后 /persona reload。不用重启。
文件
$DSH_HOME/personas/ your personas (seeded once)
$DSH_HOME/persona-switch.json { "active": "...", "complete": true|null }
$DSH_HOME/persona-switch.log what registered, when, and why anything failed
状态是部署级的(一个 $DSH_HOME),所以在 TUI 里切换的配置档,下一次 headless 运行也会用。脚本化使用因此变得简单:
'{ "active": "jb" }' | Set-Content "$env:USERPROFILE\.dsh\persona-switch.json"
dsh headless "..." # runs under jb
配置
cordis.patch.yml:
- id: persona-switch
name: dsh-persona-switch
config:
maxPersonaBytes: 400000 # truncate a longer persona (0 = no cap)
tool: true # register the model-facing persona_switch tool
测试
npm test # node test/unit.mjs — 30 assertions, no network
node test/capture-prompt.mjs --persona _selftest # proves the system message
node test/capture-prompt.mjs --persona off # and the stock prompt, for contrast
test/unit.mjs 拿真实的 apply() 跑一个假的 Cordis 上下文:播种、名册、切换、complete 开关、状态持久化、工具路径、未知名称、拆卸。
test/capture-prompt.mjs 起一个本地 mock,说 Anthropic Messages 和 OpenAI chat-completions,把 DEEPSEEK_BASE_URL 指向它,运行 dsh headless,报告收到的系统消息。不会有任何东西到达真实服务商,所以跑起来不花钱。设 DSH_CAPTURE_DIR=<dir> 可以导出完整请求体。
线上路径也用同样方式验证过:
$ node test/capture-prompt.mjs --persona _selftest "What is 1+1?"
system bytes : 256
harness identity : absent
persona "_selftest" : system message IS the persona (exact match)
说明 / 限制
- complete: true 很重。 每一轮配置档都是整个系统提示词;84 KB 的配置档每次请求都要花这些 token,还可能改变前缀缓存行为。用 dsh-whale-widget / dsh-context 盯着它。
- 两个 complete 段会让组装失败 —— 这一行只注册它自己,所以把其他配置档插件挡在外面,或者关掉。
- 没有客户端 bundle:切换器是斜杠命令 + 工具,不是 Web 设置面板。在 Web UI 里,命令从输入框就能用。
- 这里没有任何东西是 JB 专属的 —— 它就是个配置档切换器。JB 预设只是被要求提供的种子。
- DeepSeek 路由使用 Anthropic Messages(POST /v1/messages),开启 thinking,并按模型路由设置 output_config.effort;插件不碰这两项。
- 已发布:仓库已公开,包已上 npm(查当前版本用 npm view dsh-persona-switch version)。下一个版本见 PUBLISHING.md —— §0 是当前状态,§3 记录了 JB-seed 的决定(2026-10-12 做出,jb.md 随包发布, jb_full.md 永不发布)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
sorbitol25/dsh-persona-switch
在运行中的会话里即时切换系统提示词人格,无需重启
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。