dsh-prompt-customizer 0.4.2 → 0.5.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 +41 -35
- package/client/client.js +1655 -781
- package/client/client.js.map +1 -1
- package/lib/effective.js +2 -2
- package/lib/index.js +139 -100
- package/lib/promotion.js +58 -62
- package/lib/sectionOps.d.mts +35 -0
- package/lib/sectionOps.mjs +140 -0
- package/lib/zh/cordis.mjs +110 -0
- package/lib/zh/core.mjs +47 -0
- package/lib/zh/index.d.mts +8 -0
- package/lib/zh/index.mjs +23 -0
- package/lib/zh/sdk.mjs +22 -0
- package/lib/zh/teams.mjs +19 -0
- package/lib/zh/undo.mjs +18 -0
- package/package.json +9 -10
- package/src/client/Panel.tsx +532 -0
- package/src/client/{PresetsTab.tsx → PresetsPane.tsx} +146 -129
- package/src/client/PreviewPane.tsx +73 -0
- package/src/client/SectionsPane.tsx +331 -0
- package/src/client/ToolsPane.tsx +230 -0
- package/src/client/error-boundary.tsx +48 -0
- package/src/client/index.ts +69 -406
- package/src/client/locales.ts +44 -8
- package/src/client/nav.tsx +284 -0
- package/src/client/shell.tsx +179 -0
- package/src/client/styles.ts +24 -14
- package/src/client/types.ts +1 -4
- package/src/client/PreviewTab.tsx +0 -92
- package/src/client/SectionsTab.tsx +0 -539
- package/src/client/ToolsTab.tsx +0 -293
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<strong>DeepSeek Harness 的系统提示词与工具目录定制器。<br>
|
|
9
|
-
按名称屏蔽 / 替换 / 注入 / 排序提示词段,按会话阶段与 agent 预设分层 ——
|
|
9
|
+
按名称屏蔽 / 替换 / 注入 / 排序提示词段,按会话阶段与 agent 预设分层 —— 全部在侧边栏的独立「提示词管理」面板里完成。</strong>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
</p>
|
|
24
24
|
|
|
25
25
|
<p align="center">
|
|
26
|
-
<a href="https://github.com/DreamsTOF/dsh-prompt-customizer/releases"><img src="https://img.shields.io/badge/version-0.
|
|
26
|
+
<a href="https://github.com/DreamsTOF/dsh-prompt-customizer/releases"><img src="https://img.shields.io/badge/version-0.5.0-blue.svg" alt="Version"></a>
|
|
27
27
|
<a href="https://github.com/DreamsTOF/dsh-prompt-customizer/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT License"></a>
|
|
28
28
|
<a href="https://github.com/deepseek-ai/deepseek-harness"><img src="https://img.shields.io/badge/DeepSeek_Harness-Plugin-blueviolet.svg" alt="DeepSeek Harness Plugin"></a>
|
|
29
29
|
<a href="https://www.npmjs.com/package/dsh-prompt-customizer"><img src="https://img.shields.io/npm/v/dsh-prompt-customizer" alt="npm version"></a>
|
|
@@ -41,14 +41,14 @@
|
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
-
一个 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh)
|
|
44
|
+
一个 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) 插件,让你在侧边栏的独立面板里控制**系统提示词**和**工具目录**(仿宿主能力管理页:顶部 agent 预设 Tab、左栏勾选列表 + 底部三态过滤、右栏实时预览)。
|
|
45
45
|
|
|
46
46
|
其他插件注入的提示词段可能污染你的系统提示词。本插件让你按名称**屏蔽**、**替换**、**注入**、**排序**提示词段,并把工具从**模型可见目录**里隐藏 —— 全程实时生效,不需要改动任何其他插件。
|
|
47
47
|
|
|
48
48
|
两件事贯穿整个设计:
|
|
49
49
|
|
|
50
50
|
- **按会话阶段分层**:引导期(未晋级)/ 常驻期(晋级后)/ 压缩受控期(压缩后仍未晋级)各有**独立的屏蔽名单、独立的排序空间、独立的工具目录**。同一个预设可以做到首轮只给模型 1 个工具和几段提示词,晋级后放开全套。
|
|
51
|
-
- **按 agent
|
|
51
|
+
- **按 agent 预设分层**:顶部预设 Tab 选「全部 Agent」改的是默认值;选中某个 agent 预设后,改动只对该预设生效(字段级覆盖,未设置的字段继续回落全局)。
|
|
52
52
|
|
|
53
53
|
## 会话阶段怎么流转
|
|
54
54
|
|
|
@@ -97,38 +97,40 @@
|
|
|
97
97
|
|
|
98
98
|
## 界面
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
两张图覆盖全部功能 —— 侧边栏点 **提示词定制** 打开独立面板,头部是模式切换(提示词 / 工具 / 配置)+ 阶段 Tab(引导期 / 压缩受控期 / 常驻期,左右两栏联动)+ 三态同步与中文提示词开关;第二行是 agent 预设 Tab(「全部 Agent」+ 各预设)。
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
**提示词模式**:左栏当前阶段的勾选列表(屏蔽 / 替换 / 注入 / 排序,底部三态过滤),右栏实时预览装配后的最终系统提示词:
|
|
103
103
|
|
|
104
|
-

|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
**工具模式**:左栏该阶段的工具目录勾选列表,「本系统全部工具」池可把注册表里仍有的工具加回该阶段;右栏是模型可见目录(含「模型可见 / 注册表总数」对照):
|
|
107
107
|
|
|
108
|
-

|
|
109
109
|
|
|
110
110
|
## 功能特性
|
|
111
111
|
|
|
112
112
|
### 提示词段
|
|
113
113
|
|
|
114
|
-
-
|
|
114
|
+
- **屏蔽**:按名称从装配结果里移除该段。被屏蔽的行不会消失,仍可编辑、恢复 —— 屏蔽只意味着不注入模型。
|
|
115
115
|
- **替换**:编辑该段文本,编辑框预填当前生效文本(动态段会尽力解析出真实内容再回显)。
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
- **每阶段独立**:引导期屏蔽写 `sectionsBootstrap`,压缩受控期写 `sectionsCompaction`,常驻期写 `sections`;三份名单互不继承、互不影响,排序空间也互不干扰,因此「引导期只留 5 段、常驻期全开」可以分别表达 —— 在一个阶段屏蔽 /
|
|
116
|
+
- **注入**:每个阶段里「+ 注入」展开表单,按名称 + 文本新建一段,带 `手动` 徽标,随时可删除。
|
|
117
|
+
- **排序**:行内 ↑/↓ 箭头。顺序以 0 起始的连续虚拟下标存储,不会出现重复或小数 order,也不需要手填数字。
|
|
118
|
+
- **每阶段独立**:引导期屏蔽写 `sectionsBootstrap`,压缩受控期写 `sectionsCompaction`,常驻期写 `sections`;三份名单互不继承、互不影响,排序空间也互不干扰,因此「引导期只留 5 段、常驻期全开」可以分别表达 —— 在一个阶段屏蔽 / 恢复某段,绝不会改变它在其它阶段的状态。从「本系统全部提示词」池把段**加入**当前阶段即成为当前阶段的独立副本(带原文写入本阶段注入条目)。
|
|
119
119
|
- **强制覆盖(`forceSections`,默认开)**:包装宿主的装配入口,最终提示词段直接从注册表原始段重建 —— 预设插件自身的阶段裁段(如 liangshen 引导期 20→1)与 persona 的 `complete: true` 整段接管都无法再改写本插件的屏蔽 / 替换 / 注入 / 排序结果;工具目录与动态上下文保持预设与宿主行为。设为 `false` 退回瀑布流内过滤(此时完整段接管仍会压制段级定制)。
|
|
120
|
+
- **中文提示词开关(面板头部工具栏,刷新按钮旁)**:开启 = 把名字对得上内置译本(`lib/zh/`,全池 25 段中可静态翻译的 24 段)的段一次性覆盖为中文;关闭 = 清掉这些段的替换文本,回归英文原文。两个方向都写入编辑草稿,与手动编辑同一条保存路径;开关状态从配置探测,不新增字段。自定义段与对不上名字的段不受影响,段数与注入不增不减。`{{...}}` 提示词变量(如 persona 的 `{{model}}` / `{{cwd}}`)、机器路径与代码块逐字保留;`tools:sdk` 只替换前导散文,TS 代码块取自原文。
|
|
121
|
+
- **三态同步(头部开关,默认关)**:开启后提示词 / 工具两栏的屏蔽与解除屏蔽(含工具加回)对三个阶段一起生效,只作用于同名的那一项 —— 想让一段提示词 / 一个工具在三个阶段同时开或关时不用点三遍。
|
|
120
122
|
|
|
121
123
|
### 工具目录
|
|
122
124
|
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
125
|
+
- **勾选 = 该阶段对模型可见**(`exclude`):取消勾选即在**该阶段**隐藏这个工具,勾回来就恢复,被隐藏的行半透明原位保留。没有白名单模式 —— 它会让 `exclude` 整体失效,一次勾选就能悄悄关掉该阶段其它所有工具,而表达能力并不比反选更多。
|
|
126
|
+
- **「加回」名单(`add`)**:被该阶段裁掉、但**注册表里仍有**的工具,可从「本系统全部工具」池加入该阶段 —— 装配时在过滤**之后**从注册表查回 schema 追加(`exclude` 优先:同一名字两边都在 = 隐藏)。注册表里根本没有的工具(别的预设独有)加不进来,界面会明确说明。
|
|
127
|
+
- **阶段目录**:引导期与压缩受控期各有独立的 exclude / add 名单,运行时优先级为 **压缩受控期 > 引导期 > 静态** —— 压缩后仍未晋级且配了压缩目录就用它,否则未晋级时用引导目录,其余情况用静态过滤。
|
|
128
|
+
- **扩充的天花板是注册表**:只能把注册表里已有的工具加回某个阶段;要让一个全新工具出现,得改预设的组成,不是这里。
|
|
127
129
|
- 只影响面向模型的目录;工具本身与路由照常工作。
|
|
128
130
|
|
|
129
131
|
### 模型视角预览
|
|
130
132
|
|
|
131
|
-
|
|
133
|
+
预览常驻面板右栏:提示词模式看最终系统提示词,工具模式看模型可见目录(右栏可切提示词 / 工具子视图),随头部阶段 Tab 联动切换。它展示经过**所有插件**过滤后的最终装配结果,所见即模型所见。工具视图给出「模型可见 / 注册表总数」的对照 —— PTC、Code Mode 这类预设会把整套目录包装成单个 `run_code`,只看注册表会误判。
|
|
132
134
|
|
|
133
135
|
### 提示词变量
|
|
134
136
|
|
|
@@ -148,7 +150,7 @@
|
|
|
148
150
|
- **保存当前配置**:把当前作用域的完整定制(含每阶段屏蔽名单、每阶段排序、阶段工具目录)存成一份可复用的配置快照。
|
|
149
151
|
- **应用**:同名段被覆盖、快照名单之外的当前段被默认屏蔽;快照里当前系统匹配不上的段默认跳过(跨系统导入不凭空建段),快照里没有的阶段字段保留你当前的值,不会被抹掉。同一时间只有一份在用。
|
|
150
152
|
- **导出 / 导入**:配置快照以 JSON 往返(Tauri 桌面走原生对话框,Web 走下载 / 文件选择),同名预设会被跳过。顺序以相对形式存储(每段记住它跟随谁),快照因此可跨不同段集合移植。
|
|
151
|
-
- **存为 agent
|
|
153
|
+
- **存为 agent 预设**:整体**复制**当前编辑目标的预设目录(组成文件、伴生脚本、技能目录一并带走)到用户预设根,再把当前定制写进它的覆盖项。新预设随即出现在头部预设 Tab 里 —— 它是一个真正可切换的 agent 预设,而不只是一份配置副本。
|
|
152
154
|
|
|
153
155
|
### 跨预设的注册表池
|
|
154
156
|
|
|
@@ -160,7 +162,7 @@
|
|
|
160
162
|
|
|
161
163
|
<table>
|
|
162
164
|
<tr align="center">
|
|
163
|
-
<td width="19%"><b>①
|
|
165
|
+
<td width="19%"><b>① 侧边栏面板</b><br>左栏勾选列表 / 右栏预览<br><i>只改内存草稿</i></td>
|
|
164
166
|
<td width="3%">→</td>
|
|
165
167
|
<td width="19%"><b>② 插件自有路由</b><br><code>/config</code> · <code>/config/apply</code><br><code>/preview</code> · <code>/inventory</code> · <code>/presets</code></td>
|
|
166
168
|
<td width="3%">→</td>
|
|
@@ -177,7 +179,7 @@
|
|
|
177
179
|
</td>
|
|
178
180
|
</tr>
|
|
179
181
|
<tr>
|
|
180
|
-
<td colspan="9" align="center"><b>⑥ 模型收到</b>:最终系统提示词 +
|
|
182
|
+
<td colspan="9" align="center"><b>⑥ 模型收到</b>:最终系统提示词 + 可见工具目录;右栏预览读的就是这一份结果</td>
|
|
181
183
|
</tr>
|
|
182
184
|
</table>
|
|
183
185
|
|
|
@@ -208,32 +210,36 @@ dsh plugin --profile web add dsh-prompt-customizer
|
|
|
208
210
|
dsh plugin --profile web add /path/to/dsh-prompt-customizer
|
|
209
211
|
```
|
|
210
212
|
|
|
211
|
-
安装后打开 dsh Web UI
|
|
213
|
+
安装后打开 dsh Web UI,侧边栏浏览区上方就是 **提示词** 入口(点击打开覆盖主区的「提示词管理」面板)。
|
|
212
214
|
|
|
213
215
|
## 使用说明
|
|
214
216
|
|
|
215
|
-
|
|
217
|
+
侧边栏浏览区上方点 **提示词定制**,打开覆盖主区的独立面板。头部:模式切换(提示词 / 工具 / 配置)、阶段 Tab(引导期 / 压缩受控期 / 常驻期 —— 左栏列表与右栏预览联动切换同一个阶段)、三态同步与中文提示词开关、保存 / 刷新 / 关闭;第二行是 agent 预设 Tab:「全部 Agent」改的是默认值,选中某个预设后改动只对该预设生效。
|
|
216
218
|
|
|
217
|
-
|
|
219
|
+
### 提示词模式
|
|
218
220
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
-
|
|
221
|
+
左栏列出当前阶段的段:
|
|
222
|
+
|
|
223
|
+
- **勾选框**:该阶段是否注入模型(`未屏蔽` / `已屏蔽` 徽标);被停用的行半透明原位保留,随时勾回
|
|
224
|
+
- **编辑**:按阶段替换该段文本,替换过的行带 `已替换` 徽标与「还原」按钮
|
|
225
|
+
- **↑/↓**:调整该阶段内的顺序;`#N` 是它当前的虚拟下标
|
|
222
226
|
- `系统` / `手动` 徽标标明段的来源,只有 `手动` 段可以删除
|
|
227
|
+
- **「+ 注入」**:展开表单按名称 + 文本新建一段(阶段锁定为当前 Tab)
|
|
228
|
+
- **底部三态过滤**:全部 / 已启用 / 已停用,只统计当前阶段
|
|
223
229
|
|
|
224
|
-
|
|
230
|
+
「本系统全部提示词」只读池收在列表末尾的折叠区,每行三个小按钮把该段加入对应阶段。右栏实时预览当前阶段装配后的最终系统提示词 —— 编辑草稿的效果同步呈现,面板会标注「预览尚未保存草稿」。
|
|
225
231
|
|
|
226
|
-
###
|
|
232
|
+
### 工具模式
|
|
227
233
|
|
|
228
|
-
|
|
234
|
+
左栏列出该阶段进入过滤的目录 ∪ 你加回的工具:勾选 = 该阶段对模型可见,取消 = 在该阶段隐藏。「本系统全部工具」池收在折叠区,每行三个小按钮把该工具加入对应阶段。想看模型真正拿到几个工具,看右栏预览的「模型可见 / 注册表总数」对照。
|
|
229
235
|
|
|
230
|
-
###
|
|
236
|
+
### 配置模式
|
|
231
237
|
|
|
232
|
-
|
|
238
|
+
左栏是**配置快照库**(保存当前配置 / 导入 / 应用 / 导出 / 删除,正在使用的那份带「使用中」标记);右栏是**存为 agent 预设**(整体 fork 当前编辑目标的预设目录并写入当前定制)与**全局设置**:强制覆盖开关、环境变量黑名单(增删条目、查看当前实际注册的变量清单)、提示词变量参考、恢复初始状态(清空全部定制并关闭 `forceSections`,与卸载插件等效,无需重启,点击需二次确认)。
|
|
233
239
|
|
|
234
240
|
### 编辑目标与保存
|
|
235
241
|
|
|
236
|
-
|
|
242
|
+
预设 Tab 决定改动落在哪。提示词与工具模式共享同一份未保存草稿,**保存**按钮一次落盘;切到配置模式或切换编辑目标会丢弃草稿(脏草稿先弹确认)。也就是说:写坏的东西不点保存就不会进文件。
|
|
237
243
|
|
|
238
244
|
## 配置存放位置
|
|
239
245
|
|
|
@@ -248,9 +254,9 @@ dsh plugin --profile web add /path/to/dsh-prompt-customizer
|
|
|
248
254
|
- **丢弃段的原因不止一种**。除了 `complete` 接管,也存在预设用自己的规则在特定阶段裁段(实测某预设引导期 20 段 → 1 段,而注册表里并没有 complete 段)。所以面板还做了一次机制无关的比对:把本插件产出的段名与最终装配逐名核对,不符时提示「产出 N 段,模型只见 M 段」。
|
|
249
255
|
- **预览的伪会话可能降级**。阶段视图由一次合成会话驱动,个别预设插件会在这种会话上抛错;此时该阶段回退为无会话装配并标注「已降级」,即那个阶段看到的是不带原生阶段裁剪的结果。
|
|
250
256
|
- **替换动态生成的段会固定其内容**。像 `app:web-surface` 这类段在装配时实时生成(嵌入当前 Web 端口等)。替换后文本冻结为你编辑时的值,不再跟随运行时变化;想保持跟随请改用屏蔽。
|
|
251
|
-
- **动态段文本解析是尽力而为**。面板读取动态段时会尝试调用其生成函数(只传最小上下文)来回显真实内容;依赖更复杂上下文、一调就抛的段会显示 `<动态生成>`,其余功能不受影响。另外,带 `{{model}}` / `{{cwd}}`
|
|
257
|
+
- **动态段文本解析是尽力而为**。面板读取动态段时会尝试调用其生成函数(只传最小上下文)来回显真实内容;依赖更复杂上下文、一调就抛的段会显示 `<动态生成>`,其余功能不受影响。另外,带 `{{model}}` / `{{cwd}}` 之类变量的段在列表里显示的是**未替换的模板**,右栏预览里才是替换后的最终文本。
|
|
252
258
|
- **导出依赖宿主允许下载**。Web 回退走浏览器下载:若宿主 webview 静默丢弃下载,面板仍会提示「导出成功」而文件没有落地。导入(文件选择)不受影响。
|
|
253
|
-
-
|
|
259
|
+
- **工具目录的扩充以注册表为天花板**,见前文「扩充的天花板是注册表」。
|
|
254
260
|
|
|
255
261
|
## 开发
|
|
256
262
|
|