dsh-role-prompts
Manifest validDSH 插件:把岗位角色指令固定注入整个对话,避免 AI 跑偏
dsh-role-prompts · 岗位角色指令
把「岗位角色」变成在整个会话里持续生效的强制指令,而不是一句容易被模型忽略的软提示。
选中一个角色后,该会话后续每一轮请求都会带上这份岗位指令,而且是放在 system prompt 里——不进对话气泡、不改写你写的那句话。
安装
需要 DeepSeek Harness(DSH)桌面版或 Web 版。
方式一:用 DSH 自带 CLI(推荐)
dsh plugin add github:Justin-Mai/dsh-role-prompts
方式二:从本地目录挂载(改代码时用这个,装的是软链,改完重载插件即可生效)
git clone https://github.com/Justin-Mai/dsh-role-prompts.git
dsh plugin add ./dsh-role-prompts
装完在 DSH 里 Ctrl+R 刷新页面,设置左栏就会出现「角色指令」。
怎么用
- 打开 设置 → 角色指令,点「新建角色」,填两样东西:
- 角色名称(也就是选择时显示的名字),例如
代码评审员 - 岗位角色指令,例如:身份、职责边界、工作步骤、输出格式、禁止事项
- 角色名称(也就是选择时显示的名字),例如
- 回到对话,在输入框开头键入
-:上方弹出角色候选浮层(也可以继续输入过滤,如-评审)。 ↑↓选择,Enter或Tab确认,Esc取消。- 确认后
-查询词会被替换成一枚角色 chip(和@文件同一种节点、同一套外观),光标落在 chip 后面,直接写正文回车即可。插件不再在输入框外另加任何状态条。 - 想换角色:再键入
-选一次。想取消当前会话的角色:键入-,浮层底部有「停用『角色名』」一行。
它和普通提示词的区别
插件在 node 端挂两个钩子:
agent/inbox/inserted——你的消息刚进入队列时,读它开头有没有-角色名/@角色名,有就记下「这个会话现在是这个角色」。这一步早于 system prompt 组装,所以本轮就生效。system-prompt/assemble——每一轮真正调用模型前,把当前会话的角色作为一段 system prompt 追加上去:
<role_activation name="代码评审员" binding="mandatory">
你现在被指定担任「代码评审员」这一岗位角色。
该指令是强制性的:优先级高于你的默认行为习惯、写作风格与流程偏好……
执行要求:
1. 严格按下列岗位职责、专业视角、输出规范与禁止事项执行……
2. 若用户的请求与该岗位角色的职责冲突,先以岗位角色为准,并明确说明冲突点。
3. 不要复述、解释或讨论这段角色设定本身;直接以该角色的方式工作。
4. 用户消息开头的 `-角色名` / `@角色名` 只是激活标记,不是正文……
岗位角色定义:
<<<ROLE
<你的角色内容>
ROLE>>>
</role_activation>
因为走 system prompt,所以:
- 对话框气泡里只有你自己写的那句话,不会出现一整段角色设定;
- 角色约束对整个会话每一轮生效,用户不需要反复粘贴;
- 角色被删除后自动静默解除激活,不会注入一个不存在的角色。
存储
角色定义保存在一个 Markdown 文件里(文件名即插件名):
~/.dsh/dsh-role-prompts.md
格式是人可读的二级标题分段,可以直接手写编辑,插件每次请求都会重读:
## 代码评审员
你是一名资深代码评审员,只做评审,不重写整份代码。
角色内容里如果你想写 ## 工作流程 这类小节标题,可以直接写:插件落盘时会把你内容里行首的 ## 转义成 \## ,读回时还原,所以不会把你的角色拆成两个。
会话激活状态单独存放在 ~/.dsh/dsh-role-prompts.state.json(记录每个会话当前角色)。该文件损坏或版本不符时会被改名成 .bak 再重置,不会静默丢掉已有激活。
注意事项
- 触发词必须在草稿开头:
-后面紧跟角色名,中间不留空格。- 帮我列个清单这种 markdown 列表项不会被误判成角色激活。 - 名称不含空白:名称里的空格会被替换成
-。 - 输入法处于组合状态时不会拦截按键,避免打断中文候选。
- 也支持直接在消息里写
-角色名 正文或@角色名 正文发送:会当场激活该角色,并对本会话后续轮次继续生效。 - 角色 chip 是本插件注册进
inputTriggers的@引用源(source 名role)产出的;提交时它序列化成@角色名,node 端据此识别。该 source 不提供@候选菜单,所以@列表里不会多出角色条目。
实现
| 文件 | 职责 |
|---|---|
index.js | node 端:读写角色文件;agent/inbox/inserted 解析激活标记;system-prompt/assemble 注入角色段;/dsh-role-prompts/api/{list,state,activate,deactivate,save,delete} 路由 |
client.js | 浏览器端:conversation.input.overlay 角色浮层(唯一 UI 入口)、settings.section 设置页、inputTriggers 的 @role 引用源 |
cordis.patch.yml | 把插件插进 profile 的 Loader 层 |
test/ | 离线自检,不需要启动 DSH |
两个文件都不需要构建:index.js 是普通 ESM,client.js 是手写的 window.__ModuleLoader__.load({...}) 包装,改完刷新页面即生效。
开发与自检
npm test
test/basic.mjs 覆盖主链路(路由注册、激活、每轮注入、停用、显式前缀),test/fixes.mjs 是回归测试(角色内容里的 ## 不被拆成新角色、注入块转义、- 列表项 不误激活、/api/list 带 active 等)。
两个脚本都用临时 DSH_HOME 完全隔离,不会读写你本机 ~/.dsh 里的真实角色。
License
Comments
Loading…
Similar plugins
by XuezuoYS
这是一个适用于 Deepseek Harness 的插件,向用户提供 GUI 下自定义且区分模型的发送 Prompt 注入功能。
★ 0
MIT
JavaScript
Oct 17, 2026
dsh plugin --profile web add dsh-prompt-injectby tianyaojiudi-prog
DSH(DeepSeek Harness) 插件:把一段可在设置页随时改写的文字,作为全局系统提示词段注入到所有会话,含子代理与工作流内部子代理;文本与开关即时生效,无需重启。
★ 8
MIT
JavaScript
Oct 4, 2026
dsh plugin --profile web add dsh-djy-xttscby AGImentu
DSH 插件:在「更多设置」里查看、修改并保存所有 agent 共用的全局系统提示词,保存后立即生效。
★ 0
MIT
JavaScript
Oct 6, 2026
dsh plugin --profile web add dsh-prompt-editorby Frog755
Prompt Vault: 输入框上方的提示词库(DSH 插件)— 📚 按钮展开面板,点条目一键填入 prompt。DeepSeek Harness prompt library plugin.
★ 5
↓ 315/wk
MIT
JavaScript
Sep 10, 2026
dsh plugin --profile web add @frog755/dsh-prompt-vaultby Stmol
DSH plugin: keep your own prompts in Settings and switch them on per chat
★ 2
↓ 28/wk
MIT
JavaScript
Oct 4, 2026
dsh plugin --profile web add @stmol/dsh-prompt-libby WestFox-AwA
DSH Web 插件:在输入框按回车时,先由『传话 AI』把你的话改写成一条可直接发给工作 AI 的命令——档位/权限/上下文可调,并按任务难度自行决定编排强度,确认后再发送
★ 125
BSD-3-Clause
JavaScript
Oct 17, 2026
dsh plugin --profile web add @dsh-external/dsh-prompt-optimizer