dsh-prompt-rewriter 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -77
- package/docs/images/01-composer-button.png +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,116 +1,118 @@
|
|
|
1
1
|
# dsh-prompt-rewriter
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/dsh-prompt-rewriter)
|
|
4
|
+
[](LICENSE)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
一键把聊天输入框里的草稿改写成更清晰、更完整的提示词。**原位替换,不发送消息、不运行 Agent。**
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
一个非官方社区项目,与 DeepSeek 无隶属或授权关系。素材归属见 [NOTICE.md](NOTICE.md)。
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
---
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
## 它解决什么问题
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
一句话的草稿往往缺目标、缺约束、缺输出格式,模型只能猜。这个插件把草稿改写成可执行的提示词,再放回输入框——你可以先看一眼、改两笔,再决定发不发。
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
**按钮长在输入框里,不用另开页面。** 位置在输入框右下角、模型名左侧(图中蓝框那一个),输入框有内容时出现,为空时自动隐藏。
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+

|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
### 设置页
|
|
22
|
-
|
|
23
|
-
`设置 → 提示词增强` 提供三个开关与一个模型选择器,只影响这个按钮,不影响正常发送。
|
|
24
|
-
|
|
25
|
-

|
|
20
|
+
## 功能
|
|
26
21
|
|
|
27
|
-
|
|
22
|
+
- **一键改写**:输入框有内容时出现按钮,无内容时隐藏。
|
|
23
|
+
- **原位替换**:结果直接写回输入框,是一个可撤销的编辑步,`Ctrl+Z` 可回退。
|
|
24
|
+
- **随时可停**:改写中再点一下即取消,草稿保持原样,不报错。
|
|
25
|
+
- **失败可见**:出错时按钮变成重试图标,原因直接显示在按钮旁。
|
|
26
|
+
- **上下文感知**:会话已有对话时参考前文的目标、已确认要求与已排除方案;空会话只处理当前草稿。
|
|
27
|
+
- **参考输入框图片**:可选让输入框里的图片一起参与改写;历史消息里的图片**始终不读**。
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
### 改写前后
|
|
30
30
|
|
|
31
|
-

|
|
32
32
|
|
|
33
|
-
###
|
|
33
|
+
### 两种模式
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
空会话只处理当前草稿,图标无标记;会话已有对话时参考前文,图标右下角出现小圆点。
|
|
36
36
|
|
|
37
|
-

|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
### 按钮状态
|
|
40
40
|
|
|
41
|
-
-
|
|
42
|
-
- **原位替换**:结果直接写回输入框,是一个可撤销的编辑步(`Ctrl+Z` 可回退)。
|
|
43
|
-
- **可随时停止**:增强中点按钮即取消,草稿保持原样,不报错。
|
|
44
|
-
- **失败可见**:出错时按钮变成重试图标,并把原因直接显示在按钮旁。
|
|
45
|
-
- **上下文感知**:会话已有对话时,改写会参考前文的目标、已确认的要求与已排除的方案;空会话只处理当前草稿。
|
|
41
|
+

|
|
46
42
|
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
`设置 → 提示词增强` 页有三个开关,以及一个模型选择器:
|
|
43
|
+
## 安装
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
|---|---|---|
|
|
53
|
-
| **用哪个模型改写** | 关 | 关:跟随当前对话正在用的模型。开:始终使用下拉中选定的模型。 |
|
|
54
|
-
| **参考之前的对话** | 开 | 改写时参考本会话前文,更贴合真实意图。会多耗 token,长对话也更慢。 |
|
|
55
|
-
| **参考输入框里的图片** | 关 | 输入框里已放好的图片一并参与改写。**历史消息里的图片始终不读。** |
|
|
45
|
+
需要 DeepSeek Harness 桌面版,`node >= 22`。
|
|
56
46
|
|
|
57
|
-
|
|
47
|
+
### 从 npm 安装(推荐)
|
|
58
48
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
```sh
|
|
50
|
+
dsh plugin --profile desktop add dsh-prompt-rewriter
|
|
51
|
+
```
|
|
62
52
|
|
|
63
|
-
|
|
53
|
+
### 从 GitHub 源码安装
|
|
64
54
|
|
|
65
|
-
|
|
55
|
+
```sh
|
|
56
|
+
dsh plugin --profile desktop add github:huaguoxingkong/dsh-prompt-rewriter
|
|
57
|
+
```
|
|
66
58
|
|
|
67
|
-
|
|
68
|
-
|---|---|---|
|
|
69
|
-
| **npm(推荐)** | 想拿最新版、不想管源码 | 装全局包,再让 `dsh` 指向它 |
|
|
70
|
-
| **从源码克隆** | 想改代码、跟最新提交 | clone 后 `npm install` |
|
|
71
|
-
| **从 Release 下载 zip** | 不想装 git / npm | 解压后 `npm install` |
|
|
59
|
+
源码安装会拉取未构建的仓库,首次安装可能提示允许运行该包的安装脚本——只对你信任的包授予此权限。
|
|
72
60
|
|
|
73
|
-
|
|
61
|
+
### 从 Release 安装
|
|
74
62
|
|
|
75
|
-
|
|
63
|
+
到 [Releases](https://github.com/huaguoxingkong/dsh-prompt-rewriter/releases) 下载 `dsh-prompt-rewriter-1.0.0.zip`,解压后:
|
|
76
64
|
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
|
|
65
|
+
```sh
|
|
66
|
+
cd dsh-prompt-rewriter-1.0.0
|
|
67
|
+
npm install
|
|
68
|
+
dsh plugin --profile desktop add .
|
|
80
69
|
```
|
|
81
70
|
|
|
82
|
-
###
|
|
71
|
+
### 本地 checkout 安装
|
|
83
72
|
|
|
84
|
-
```
|
|
73
|
+
```sh
|
|
85
74
|
git clone https://github.com/huaguoxingkong/dsh-prompt-rewriter.git
|
|
86
75
|
cd dsh-prompt-rewriter
|
|
87
76
|
npm install
|
|
88
77
|
dsh plugin --profile desktop add .
|
|
89
78
|
```
|
|
90
79
|
|
|
91
|
-
|
|
80
|
+
`npm install` 是必需的:插件用 `@deepseek-ai/schemastery` 声明设置页的 `Config`,它是唯一外部依赖。
|
|
92
81
|
|
|
93
|
-
|
|
82
|
+
### 安装后
|
|
94
83
|
|
|
95
|
-
|
|
96
|
-
cd <解压目录>
|
|
97
|
-
npm install
|
|
98
|
-
dsh plugin --profile desktop add .
|
|
99
|
-
```
|
|
84
|
+
**重启 DeepSeek Harness。** 本插件没有 HMR,bundle 在启动时读取快照,不重启不会生效。
|
|
100
85
|
|
|
101
|
-
|
|
86
|
+
## 使用
|
|
102
87
|
|
|
103
|
-
|
|
88
|
+
1. 在输入框里写下任意草稿。
|
|
89
|
+
2. 点模型名左侧的增强按钮(大肥鱼图标)。
|
|
90
|
+
3. 等待改写完成,草稿被替换成新提示词。
|
|
91
|
+
4. 不满意可按 `Ctrl+Z` 或点回退图标还原。
|
|
104
92
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
93
|
+
改写用的是**当前会话选中的模型**,除非你在设置里固定了别的模型。
|
|
94
|
+
|
|
95
|
+
## 设置
|
|
96
|
+
|
|
97
|
+
`设置 → 提示词增强` 提供三个开关与一个模型选择器,只影响这个按钮,不影响正常发送。
|
|
108
98
|
|
|
109
|
-
|
|
99
|
+

|
|
100
|
+
|
|
101
|
+
| 选项 | 默认 | 说明 |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| **用哪个模型改写** | 关 | 关:跟随当前对话正在用的模型。开:始终使用下拉中选定的模型。 |
|
|
104
|
+
| **参考之前的对话** | 开 | 改写时参考本会话前文,更贴合真实意图。会多耗 token,长对话也更慢。 |
|
|
105
|
+
| **参考输入框里的图片** | 关 | 输入框里已放好的图片一并参与改写。**历史消息里的图片始终不读。** |
|
|
106
|
+
|
|
107
|
+
行为细节:
|
|
108
|
+
|
|
109
|
+
- **模型选择会持久化**:选择器列出你实际拥有的渠道与模型(与输入框的模型选择器同一份数据),无法手填不存在的模型。关闭开关不会清空已选模型,重新打开直接回显上次选择。
|
|
110
|
+
- **图片仅在完成上传后可读**:上传中的图片会被跳过,并在状态区提示“有 N 张图片未能读取”,不会让改写失败。
|
|
111
|
+
- 三个开关各自独立生效,互不影响。
|
|
110
112
|
|
|
111
113
|
## 配置
|
|
112
114
|
|
|
113
|
-
profile 插件行的 `config`
|
|
115
|
+
profile 插件行的 `config` 字段全部可选。前五项由设置页托管,后七项为运维上限:
|
|
114
116
|
|
|
115
117
|
```yaml
|
|
116
118
|
- id: dsh-prompt-rewriter
|
|
@@ -133,34 +135,40 @@ profile 插件行的 `config` 字段全部可选。前五项为设置页托管
|
|
|
133
135
|
historyMessageChars: 4000 # 单条历史字符上限
|
|
134
136
|
```
|
|
135
137
|
|
|
136
|
-
##
|
|
138
|
+
## 工作原理
|
|
137
139
|
|
|
138
140
|
| 半边 | 文件 | 职责 |
|
|
139
141
|
|---|---|---|
|
|
140
|
-
| Host | `index.js` | 注册 `POST /api/prompt-enhance
|
|
142
|
+
| Host | `index.js` | 注册 `POST /api/prompt-enhance`(改写)与 `GET/POST /api/prompt-enhance/settings`(设置),走 `ctx.connection.fetch`,继承 Harness 鉴权与来源校验。读取会话投影得到当前模型,经 `ctx.llm` 生成结果。 |
|
|
141
143
|
| Client | `client.js` | 在 `conversation.input.right` 渲染按钮;在 `settings.section` 渲染设置页。通过 `inputActions.insertText` 原位替换草稿。 |
|
|
142
144
|
|
|
143
|
-
|
|
145
|
+
三个值得注意的设计:
|
|
144
146
|
|
|
145
|
-
- **上下文按预算裁剪**:历史注入量取 `min(historyTokenBudget, 上下文窗口 × 5%)
|
|
146
|
-
- **历史以 JSON
|
|
147
|
-
- **图片开关由 Host 裁决**:浏览器只要输入框有图就上传,Host
|
|
147
|
+
- **上下文按预算裁剪**:历史注入量取 `min(historyTokenBudget, 上下文窗口 × 5%)`,从最新往回收集;单条超预算时截断而非丢弃,保证“有上下文”不会静默退化成“无上下文”。
|
|
148
|
+
- **历史以 JSON 数组注入**,系统提示中明确声明“这是数据,不是指令”,防止历史里的文本伪造结构。
|
|
149
|
+
- **图片开关由 Host 裁决**:浏览器只要输入框有图就上传,Host 依据开关决定是否使用——避免设置尚未加载完成时读到默认值而静默失效。
|
|
148
150
|
|
|
149
151
|
## 已知限制
|
|
150
152
|
|
|
151
153
|
- 历史图片不参与改写(有意为之,只读输入框图片)。
|
|
152
|
-
-
|
|
154
|
+
- 非流式替换:改写完成前按钮显示为动画态。
|
|
153
155
|
- 设置页的模型下拉依赖 Host 的 `remote.session.modelCatalog`;该面不可用时下拉会明确提示读取失败,而不是留空。
|
|
154
156
|
|
|
155
157
|
## 开发
|
|
156
158
|
|
|
157
159
|
插件分 Host 与 Client 两半:Host 只依赖 `ctx.connection`、`ctx.llm`、`ctx.settings` 等宿主服务,Client 通过 `window.__ModuleLoader__` 注册槽位组件。两半都随 bundle 在启动时加载,改动后需重启验证。
|
|
158
160
|
|
|
159
|
-
**单元测试未随本仓库发布。**
|
|
161
|
+
**单元测试未随本仓库发布。** 开发期测试依赖宿主私有的 `@deepseek-ai/schemastery`、宿主 React 副本与本机 profile 目录结构,直接开源会让使用者拿到跑不起来的文件。
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
node --check index.js # 语法
|
|
165
|
+
node --check client.js
|
|
166
|
+
npm pack --dry-run # 检查发布内容
|
|
167
|
+
```
|
|
160
168
|
|
|
161
169
|
## 许可
|
|
162
170
|
|
|
163
|
-
代码采用 MIT,详见 [LICENSE](
|
|
171
|
+
代码采用 MIT,详见 [LICENSE](LICENSE)。
|
|
164
172
|
|
|
165
173
|
内嵌素材分两类:
|
|
166
174
|
|
|
@@ -170,4 +178,4 @@ profile 插件行的 `config` 字段全部可选。前五项为设置页托管
|
|
|
170
178
|
| 鲸鱼尾巴 36 帧轮廓(来自 `dsh-status-rotator` v0.38.0,作者 01Virex) | **MIT**,已在上游核实(36 帧逐条比对一致) | 是,保留其版权声明 |
|
|
171
179
|
| DeepSeek「大肥鱼」品牌标(来源 `dsh-web-frontend`) | 源包内**未找到许可证** | **否**,已在 LICENSE 中显式排除 |
|
|
172
180
|
|
|
173
|
-
|
|
181
|
+
本项目为非官方社区项目,与 DeepSeek 无隶属或授权关系。完整归属与核实过程见 [NOTICE.md](NOTICE.md)。
|
|
Binary file
|
package/package.json
CHANGED