dsh-prompt-injector
Inject a reusable prompt preset into the FRONT of your DeepSeek Harness message at send time — next message only or every turn, your choice. / DeepSeek Harness 提示词注入器:发送时把预设注入消息首部,可选只注入下一条或每轮都注入。
What it is
Inject a reusable prompt preset into the FRONT of your DeepSeek Harness message at send time — next message only or every turn, your choice. / DeepSeek Harness 提示词注入器:发送时把预设注入消息首部,可选只注入下一条或每轮都注入。
How to install
Run this in the DSH web profile, then refresh the page.
$ dsh plugin --profile web add 'git+https://github.com/yukk4159-bit/dsh-prompt-injector.git#3799576069a0cf0feb94bcb8c37e4863f181a853'
DSH versions accepted
Undeclared
Author and traction
yukk4159-bit · ★ 10 · Updated 2026-10-11
About this plugin
[English](README.en.md) | 简体中文
dsh-prompt-injector · 提示词注入器
一个 [DeepSeek Harness](https://deepseek.com/harness/) Web 插件:把可复用的提示词预设在发送的那一刻注入到消息首部,而不是填进输入框。
注入几次由你决定:💌 只注入下一条(默认)或 💖 每轮都注入。
萌系二次元画面风格:🌸 粉紫渐变、圆角卡片、会呼吸的小表情。
在 DeepSeek Harness 0.2.0-rc.2 上实测可用(Host 侧 67 个用例,浏览器半在真实 GUI 里跑通,见[已验证](#已验证--待验证))。
长什么样
先选注入方式,再点预设:
选好之后 chip 变成 💌 名字 下一条,输入框里一个字符都不会多:
发送时才是注入发生的时刻。下面是「每轮都注入」连发两条的结果——两条消息都带上了预设块,而输入框始终只有你自己写的话:
---
和「提示词预设」类插件的区别
| | 常见的预设插件 | 提示词注入器 |
|---|---|---|
| 选中预设后 | 把提示词填进输入框 | 只在输入框左侧显示一个 💌 / 💖 徽章,输入框内容完全不动 |
| 你打字时 | 要在一大段提示词后面接着写 | 输入框里只有你自己写的话 |
| 注入几条 | 选中就一直生效 | 默认只注入下一条,发完自动松开;想每轮都注入得自己切 |
| 发送时 | 提示词就是消息的一部分(你在输入框里看得见) | Host 端在 agent/pre-step 把提示词拼到消息最前面 |
| 对话记录 | 提示词和你的话混在一起 | 记录里是完整的注入后文本(模型看到什么,记录就是什么) |
实现位置:lib/inject.js 的 applyInjection(),注册在 agent/pre-step 瀑布事件上——这是消息进入会话日志之前的最后一个接缝。
为什么不是「往输入框塞标记」
最初的设计是往 composer 草稿里写一个不可见的选取标记,随消息一起送到 Host。实测下来这条路在当前版本走不通:
- DSH 的 composer 是 Lexical 编辑器,没有任何公开的草稿写入服务;
- Lexical 自己拥有文档状态,直接改 DOM 会被它下一次 reconcile 覆盖;
- 通过 DOM 事件(
execCommand('insertText'))写入也依赖当前选区,而打开面板后焦点已经不在编辑器上。
所以选择改由 Host 侧按会话记录:浏览器半把「这个会话选了哪个预设、注入到什么时候」通过插件的 HTTP 接口告诉 Host(lib/http.js 的 /selection),Host 在发送瞬间查表注入。这样完全不依赖编辑器的内部实现,也不需要污染消息文本——顺带还让「只注入一条」变得容易实现:Host 注入完就把这条选择丢掉。
> 早期版本还写了一套「尽力而为」的草稿写入代码,已经删掉了:它写得进去也不起决定作用(真正生效的是 Host 侧的选择),留着只会让「到底谁说了算」变模糊。现在插件完全不碰输入框。
---
安装
插件是「bundle」形态(根目录有 cordis.patch.yml),用 dsh plugin 安装:
dsh plugin --profile web add "github:yukk4159-bit/dsh-prompt-injector"
dsh plugin 把包管理转发给 pnpm,所以也可以装本地路径或指定分支:
# 本地检出(改代码时用这个,改完重启就生效) dsh plugin --profile web add "/path/to/prompt-injector" # 指定分支或 tag dsh plugin --profile web add "github:yukk4159-bit/dsh-prompt-injector#main"
或者在没有全局 dsh 的环境里:
npx -p @deepseek-ai/dsh dsh plugin --profile web add "github:yukk4159-bit/dsh-prompt-injector"
装完重启该 profile,然后打开 Web GUI:
- 输入框左边会多一个 🌸 预设 按钮 —— 点开挑预设;
- 左侧边栏 → 设置 → 提示词注入器 —— 管理预设库(增删改查、搜索、标签过滤)。
---
用法
1. 设置页写预设:名字、ID(可选)、标签、注入内容 → 保存。
保存会写进该 profile 的配置文件(cordis.patch.yml 的 config.presets),重启、切会话都不会丢。
2. 在输入框左边点 🌸,面板顶部先选注入方式,再点一个预设:
- 💌 只注入下一条(默认)——只有你紧接着发送的那一条会被注入,Host 注入完就把这条选择丢掉,再发就干干净净;
- 💖 每轮都注入——一直生效,直到你点「取消」。
面板顶部的切换是立刻生效的:已经选了预设时改方式,等于同时把那条选择改成新方式。
chip 上会写清楚现在是哪种(💌 名字 下一条 / 💖 名字 每轮),不会出现「以为只注入一次、其实一直在注入」。
3. 正常写你的话,回车发送。
4. 发送瞬间,Host 把预设正文按模板拼到消息最前面再交给模型。
5. 默认方式下,发完那一条之后 chip 自己回到 🌸(面板打开时每 3 秒问一次 Host,因为一次性选择是 Host 释放的,它没法主动通知页面)。
再点一次同一个预设、或点面板里的「取消」即取消。
不点面板也能用:{{ID}}
在消息里直接写 {{code}}(code 是这个预设的 ID),那一条就会用对应预设,发完即止——这本来就是一次性的,和 chip 的选择互不干扰。
- 写了一个库里有的 ID:注入并把这处
{{code}}从消息里拿走; - 写了一个库里没有的 ID:当成普通文字原样发出去,也不会挡住 chip 的选择;
- 指向已停用的预设:不注入,文字原样保留。
Compare in this category
The five most-starred plugins in the same category.
| Plugin | Author | Stars | Version | Updated |
|---|---|---|---|---|
| dsh-purge | kingcharleslzy-ai | 6.3K | 1.6.86 | 2026-11-08 |
| dsh-unrestricted | yexi-by | 1.1K | 0.2.8 | 2026-11-05 |
| dsh-univer-office | dream-num | 707 | 0.4.0 | 2026-11-03 |
| dsh-synapse | liangmianya | 697 | 0.5.7 | 2026-11-04 |
| dsh-qqbot | tencent-connect | 570 | 0.5.5 | 2026-11-08 |