dsh-custom-mode 2.2.0 → 2.2.2
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.i18n.yaml +2 -2
- package/README.md +22 -9
- package/README.zh.md +22 -9
- package/client.js +106 -43
- package/locales.mjs +25 -11
- package/package.json +12 -5
package/README.i18n.yaml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# 双语配对一致性记录:两侧在「上次确认一致」时的 git blob 哈希。
|
|
2
2
|
# 两份文档权威相同——改完任意一侧,请把另一侧也改掉,然后重新记录:
|
|
3
3
|
# node tools/verify-translation-pairing.mjs --write
|
|
4
|
-
README.md:
|
|
5
|
-
README.zh.md:
|
|
4
|
+
README.md: eea37666d29e8936957f2fd4290c325bf8e7be6c
|
|
5
|
+
README.zh.md: 7ad5b62f4f24842261ca30f2572f76810a808f98
|
package/README.md
CHANGED
|
@@ -2,16 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
English | [中文](README.zh.md)
|
|
4
4
|
|
|
5
|
-
Edit a DeepSeek Harness (`dsh`) mode
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Edit a DeepSeek Harness (`dsh`) custom mode: system prompt, base mode, and plugin switches. Keep more than one assistant. 自定义模式、系统提示词、提示词编辑。
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/header.png" width="820" alt="dsh-custom-mode">
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<table align="center">
|
|
12
|
+
<tr>
|
|
13
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/05-assistant-manager.png" width="360" alt="Assistants"></td>
|
|
14
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/03-system-prompt.png" width="360" alt="System prompt"></td>
|
|
15
|
+
</tr>
|
|
16
|
+
<tr>
|
|
17
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/01-mode-switch.png" width="360" alt="Base mode"></td>
|
|
18
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/02-plugin-switches.png" width="360" alt="Plugin switches"></td>
|
|
19
|
+
</tr>
|
|
20
|
+
</table>
|
|
8
21
|
|
|
9
22
|
## Install
|
|
10
23
|
|
|
11
24
|
Pin the version. A bare name can install an older build during pnpm's release cooldown. Details: [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md).
|
|
12
25
|
|
|
13
26
|
```sh
|
|
14
|
-
dsh plugin --profile web add dsh-custom-mode@2.2.
|
|
27
|
+
dsh plugin --profile web add dsh-custom-mode@2.2.2
|
|
15
28
|
```
|
|
16
29
|
|
|
17
30
|
Restart the process that serves the profile. The version on the settings page is the one that is running.
|
|
@@ -28,13 +41,13 @@ On Windows, `install.sh` is bash and it needs a `dsh` executable on `PATH`. Othe
|
|
|
28
41
|
|
|
29
42
|
The prompt is `prompt.md`. The next time a model step is assembled, that file is read again. History can load an older draft into the editor; loading does not write. A save computed against an older copy is refused when the file changed underneath. The model can change the same file only through `custom_prompt`, which asks first.
|
|
30
43
|
|
|
31
|
-
|
|
44
|
+
The page is two branches. This assistant edits the one you have open, and all five base modes can be chosen. New assistant writes only when you click New assistant: Coding, Writing, and Chat stay selectable, and only the official Standard mode is lit. The other four official modes are dim and cannot be chosen there.
|
|
32
45
|
|
|
33
46
|
| Posture | After create |
|
|
34
47
|
| --- | --- |
|
|
35
|
-
| Develop |
|
|
36
|
-
| Write | Terminal off
|
|
37
|
-
| Chat | Files and terminal off. |
|
|
48
|
+
| Develop | Official Standard mode, tools as shipped. |
|
|
49
|
+
| Write | Official Standard mode. Terminal off, file tools on. |
|
|
50
|
+
| Chat | Official Standard mode. Files and terminal off. |
|
|
38
51
|
|
|
39
52
|
## Boundaries
|
|
40
53
|
|
|
@@ -46,7 +59,7 @@ New assistants start as one posture. That choice applies only to the assistant y
|
|
|
46
59
|
|
|
47
60
|
Declared range: `>=0.1.5-rc.2 <0.2.0-0 || >=0.1.6-alpha.1 <0.2.0-0 || >=0.1.7-alpha.1 <0.2.0-0 || >=0.2.0-0 <0.3.0-0 || >=0.2.1-alpha.1 <0.3.0-0`
|
|
48
61
|
|
|
49
|
-
| dsh | Claim | Checked for 2.2.
|
|
62
|
+
| dsh | Claim | Checked for 2.2.2 |
|
|
50
63
|
| --- | --- | --- |
|
|
51
64
|
| `0.2.0-rc.2` | declared | Windows web profile, before this release |
|
|
52
65
|
| `0.2.1-alpha.1` | declared, in CI | not re-run for this release |
|
package/README.zh.md
CHANGED
|
@@ -2,16 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | 中文
|
|
4
4
|
|
|
5
|
-
在 DeepSeek Harness(`dsh
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
在 DeepSeek Harness(`dsh`)里改自定义模式的系统提示词、基础模式和插件开关。可以有多个助手。custom mode、system prompt、prompt editor。
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/header.png" width="820" alt="dsh-custom-mode">
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<table align="center">
|
|
12
|
+
<tr>
|
|
13
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/05-assistant-manager.png" width="360" alt="助手"></td>
|
|
14
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/03-system-prompt.png" width="360" alt="系统提示词"></td>
|
|
15
|
+
</tr>
|
|
16
|
+
<tr>
|
|
17
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/01-mode-switch.png" width="360" alt="基础模式"></td>
|
|
18
|
+
<td align="center"><img src="https://raw.githubusercontent.com/BOWLUNA/dsh-custom-mode/main/docs/images/02-plugin-switches.png" width="360" alt="插件开关"></td>
|
|
19
|
+
</tr>
|
|
20
|
+
</table>
|
|
8
21
|
|
|
9
22
|
## 安装
|
|
10
23
|
|
|
11
24
|
钉版本。只写包名时,pnpm 的发布冷却期可能装到旧版。细节见 [docs/TROUBLESHOOTING.zh.md](docs/TROUBLESHOOTING.zh.md)。
|
|
12
25
|
|
|
13
26
|
```sh
|
|
14
|
-
dsh plugin --profile web add dsh-custom-mode@2.2.
|
|
27
|
+
dsh plugin --profile web add dsh-custom-mode@2.2.2
|
|
15
28
|
```
|
|
16
29
|
|
|
17
30
|
重启为这个 profile 提供服务的进程。设置页上的版本号才是正在运行的版本。
|
|
@@ -28,13 +41,13 @@ dsh plugin --profile web add dsh-custom-mode@2.2.0
|
|
|
28
41
|
|
|
29
42
|
提示词是 `prompt.md`。下一步组装模型输入时会重读这个文件。历史可以把旧稿载入编辑器;载入不落盘。打开页面之后文件被改过时,这一次保存会被拒绝。模型要改同一份文件,只能走 `custom_prompt`,并且先问过你。
|
|
30
43
|
|
|
31
|
-
|
|
44
|
+
页面分成两支。当前助手改的是已经打开的这一位,基础模式五档都可以点。新建助手只在点「新增助手」时写入:开发、写作、聊天可以点,工具底只有官方标准模式是亮的。其余四档是暗的,在这一支里点不了。
|
|
32
45
|
|
|
33
46
|
| 姿态 | 新建之后 |
|
|
34
47
|
| --- | --- |
|
|
35
|
-
| 开发 |
|
|
36
|
-
| 写作 |
|
|
37
|
-
| 聊天 |
|
|
48
|
+
| 开发 | 官方标准模式,工具按出厂。 |
|
|
49
|
+
| 写作 | 官方标准模式。终端关,文件工具开。 |
|
|
50
|
+
| 聊天 | 官方标准模式。文件和终端关。 |
|
|
38
51
|
|
|
39
52
|
## 边界
|
|
40
53
|
|
|
@@ -46,7 +59,7 @@ dsh plugin --profile web add dsh-custom-mode@2.2.0
|
|
|
46
59
|
|
|
47
60
|
声明范围:`>=0.1.5-rc.2 <0.2.0-0 || >=0.1.6-alpha.1 <0.2.0-0 || >=0.1.7-alpha.1 <0.2.0-0 || >=0.2.0-0 <0.3.0-0 || >=0.2.1-alpha.1 <0.3.0-0`
|
|
48
61
|
|
|
49
|
-
| dsh | 声明 | 2.2.
|
|
62
|
+
| dsh | 声明 | 2.2.2 核对 |
|
|
50
63
|
| --- | --- | --- |
|
|
51
64
|
| `0.2.0-rc.2` | 声明支持 | 本版发布前的 Windows web profile |
|
|
52
65
|
| `0.2.1-alpha.1` | 声明支持,CI 有这条腿 | 本版没有重跑 |
|
package/client.js
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
* Browser half: 「自定义模式」settings page — the assistant manager.
|
|
3
3
|
*
|
|
4
4
|
* Blocks:
|
|
5
|
-
* 0. 助手 —
|
|
6
|
-
* 1.
|
|
7
|
-
* 2.
|
|
8
|
-
*
|
|
9
|
-
* 4. 插件开关 — collapsed until the user opens it.
|
|
5
|
+
* 0. 助手 — which assistant is selected.
|
|
6
|
+
* 1. 当前助手 — prompt, name, five live base modes, plugin switches.
|
|
7
|
+
* 2. 新建助手 — Coding / Writing / Chat stay selectable. The official
|
|
8
|
+
* modes are shown beside them, and only Standard is lit.
|
|
10
9
|
*
|
|
11
10
|
* Three decisions worth knowing before editing this file:
|
|
12
11
|
*
|
|
@@ -62,13 +61,20 @@ try {
|
|
|
62
61
|
"nav": "自定义模式",
|
|
63
62
|
"assistant.heading": "助手",
|
|
64
63
|
"assistant.hint": "每个助手单独保存系统提示词、基础模式和插件开关。",
|
|
65
|
-
"posture.hint": "
|
|
64
|
+
"posture.hint": "这一支只在点「新增助手」时写入。",
|
|
65
|
+
"tree.posture": "起步",
|
|
66
|
+
"tree.base": "工具底",
|
|
67
|
+
"tree.baseHold": "新建时固定用官方标准模式。",
|
|
68
|
+
"tree.baseSkip": "这一支点不了。建好后到「当前助手」里改。",
|
|
69
|
+
"tree.baseLocked": "只有官方标准模式是亮的。其余四档是暗的,新建时点不了。",
|
|
66
70
|
"posture.develop.label": "开发",
|
|
67
|
-
"posture.develop.note": "
|
|
71
|
+
"posture.develop.note": "官方标准模式,工具按出厂。",
|
|
68
72
|
"posture.write.label": "写作",
|
|
69
|
-
"posture.write.note": "
|
|
73
|
+
"posture.write.note": "官方标准模式。终端关闭,文件读写打开。",
|
|
70
74
|
"posture.chat.label": "聊天",
|
|
71
|
-
"posture.chat.note": "
|
|
75
|
+
"posture.chat.note": "官方标准模式。文件和终端关闭。",
|
|
76
|
+
"editor.heading": "当前助手",
|
|
77
|
+
"editor.hint": "这一支改上面选中的助手。基础模式五档都可以点。",
|
|
72
78
|
"assistant.empty": "还没有助手,用下面的输入框新建一个。",
|
|
73
79
|
"assistant.loadingList": "正在读取助手列表…",
|
|
74
80
|
"assistant.newPlaceholder": "新助手的名字(例如:写作助手)",
|
|
@@ -78,7 +84,7 @@ try {
|
|
|
78
84
|
"assistant.brokenHint": "此模式在本机无法启动,不会出现在新会话菜单里。点「按本线修复」只关闭那些行。",
|
|
79
85
|
"assistant.switchHint": "切换助手保留各自的未保存草稿;列表中的「未保存」标记即为此。",
|
|
80
86
|
"btn.create": "新增助手",
|
|
81
|
-
"create.heading": "
|
|
87
|
+
"create.heading": "新建助手",
|
|
82
88
|
"btn.creating": "创建中…",
|
|
83
89
|
"btn.duplicate": "复制",
|
|
84
90
|
"btn.moveUp": "上移",
|
|
@@ -196,7 +202,7 @@ try {
|
|
|
196
202
|
"name.placeholder": "自定义模式",
|
|
197
203
|
"name.descriptionPlaceholder": "描述,显示在模式菜单里,可留空",
|
|
198
204
|
"mode.heading": "基础模式",
|
|
199
|
-
"mode.hint": "
|
|
205
|
+
"mode.hint": "五档都可以点。改的是当前这位助手。提示词仍以本页为准。",
|
|
200
206
|
"rows.heading": "插件开关",
|
|
201
207
|
"rows.filterPlaceholder": "按名称或 id 筛选",
|
|
202
208
|
"cap.heading": "插件开关",
|
|
@@ -296,13 +302,20 @@ try {
|
|
|
296
302
|
"nav": "Custom mode",
|
|
297
303
|
"assistant.heading": "Assistants",
|
|
298
304
|
"assistant.hint": "Each assistant keeps its own system prompt, base mode and plugin switches.",
|
|
299
|
-
"posture.hint": "
|
|
305
|
+
"posture.hint": "This branch is written only when you click New assistant.",
|
|
306
|
+
"tree.posture": "Starter",
|
|
307
|
+
"tree.base": "Tool base",
|
|
308
|
+
"tree.baseHold": "A new assistant always starts on the official Standard mode.",
|
|
309
|
+
"tree.baseSkip": "Cannot be chosen on this branch. Change it later under This assistant.",
|
|
310
|
+
"tree.baseLocked": "Only the official Standard mode is lit. The other four are dim and cannot be chosen when creating.",
|
|
300
311
|
"posture.develop.label": "Coding",
|
|
301
|
-
"posture.develop.note": "
|
|
312
|
+
"posture.develop.note": "Official Standard mode, tools as shipped.",
|
|
302
313
|
"posture.write.label": "Writing",
|
|
303
|
-
"posture.write.note": "
|
|
314
|
+
"posture.write.note": "Official Standard mode. Terminal off, file access on.",
|
|
304
315
|
"posture.chat.label": "Chat",
|
|
305
|
-
"posture.chat.note": "
|
|
316
|
+
"posture.chat.note": "Official Standard mode. Files and terminal off.",
|
|
317
|
+
"editor.heading": "This assistant",
|
|
318
|
+
"editor.hint": "This branch edits the assistant selected above. All five base modes can be chosen.",
|
|
306
319
|
"assistant.empty": "No assistants yet — create one with the field below.",
|
|
307
320
|
"assistant.loadingList": "Loading assistants…",
|
|
308
321
|
"assistant.newPlaceholder": "Name of the new assistant (e.g. Writing assistant)",
|
|
@@ -430,7 +443,7 @@ try {
|
|
|
430
443
|
"name.placeholder": "Custom mode",
|
|
431
444
|
"name.descriptionPlaceholder": "Description, shown in the mode menu. Optional.",
|
|
432
445
|
"mode.heading": "Base mode",
|
|
433
|
-
"mode.hint": "
|
|
446
|
+
"mode.hint": "All five can be chosen. This edits the assistant selected above. The prompt on this page still applies.",
|
|
434
447
|
"rows.heading": "Plugin switches",
|
|
435
448
|
"rows.filterPlaceholder": "Filter by name or id",
|
|
436
449
|
"cap.heading": "Plugin switches",
|
|
@@ -767,7 +780,12 @@ try {
|
|
|
767
780
|
".cpfe-actions{display:flex;flex-wrap:wrap;gap:var(--g);align-items:center;margin-top:4px}",
|
|
768
781
|
".cpfe-newrow{display:flex;gap:var(--g);align-items:center;flex-wrap:wrap;margin-top:10px}",
|
|
769
782
|
".cpfe-postures{display:flex;flex-direction:column;gap:6px}",
|
|
770
|
-
".cpfe-create{display:flex;flex-direction:column;gap:6px
|
|
783
|
+
".cpfe-create{display:flex;flex-direction:column;gap:6px}",
|
|
784
|
+
".cpfe-branch{display:flex;flex-direction:column;gap:16px;margin-top:8px;padding-left:12px;border-left:1px solid var(--dsw-alias-border-l1)}",
|
|
785
|
+
".cpfe-node{display:flex;flex-direction:column;gap:4px}",
|
|
786
|
+
".cpfe-node-label{font-size:12px;line-height:18px;color:var(--dsw-alias-label-tertiary)}",
|
|
787
|
+
".cpfe-locked button:disabled:not([aria-pressed=true]){opacity:.4;cursor:default}",
|
|
788
|
+
".cpfe-locked button:disabled[aria-pressed=true]{opacity:1;cursor:default}",
|
|
771
789
|
".cpfe-field{display:flex;width:100%;margin-bottom:8px}",
|
|
772
790
|
".cpfe-row-head{font-size:14px;line-height:22px;color:var(--dsw-alias-label-primary)}",
|
|
773
791
|
".cpfe-row-switch{flex:0 0 auto}",
|
|
@@ -1717,38 +1735,70 @@ try {
|
|
|
1717
1735
|
: "cpfe-status cpfe-ok"
|
|
1718
1736
|
const shown = dirty && status === "" ? t("msg.unsaved") : status
|
|
1719
1737
|
|
|
1738
|
+
const lockedModes =
|
|
1739
|
+
payload !== null && Array.isArray(payload.modes) && payload.modes.length > 0
|
|
1740
|
+
? payload.modes
|
|
1741
|
+
: [{ id: "standard" }, { id: "ptc" }, { id: "minimal" }, { id: "cordis" }, { id: "all" }]
|
|
1720
1742
|
const createGroup = react.createElement(
|
|
1721
1743
|
"section",
|
|
1722
1744
|
{ className: "cpfe-create" },
|
|
1723
1745
|
react.createElement("h2", { className: "cpfe-h" }, t("create.heading")),
|
|
1724
1746
|
react.createElement(SectionHint, { text: t("posture.hint") }),
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
:
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1747
|
+
react.createElement(
|
|
1748
|
+
"div",
|
|
1749
|
+
{ className: "cpfe-branch" },
|
|
1750
|
+
postureChoices.length === 0
|
|
1751
|
+
? null
|
|
1752
|
+
: react.createElement(
|
|
1731
1753
|
"div",
|
|
1732
|
-
{ className: "cpfe-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1754
|
+
{ className: "cpfe-node" },
|
|
1755
|
+
react.createElement("span", { className: "cpfe-node-label" }, t("tree.posture")),
|
|
1756
|
+
react.createElement(
|
|
1757
|
+
"div",
|
|
1758
|
+
{ className: "cpfe-pills", role: "radiogroup", "aria-label": t("tree.posture") },
|
|
1759
|
+
postureChoices.map((item) =>
|
|
1760
|
+
react.createElement(
|
|
1761
|
+
A.Pill,
|
|
1762
|
+
{
|
|
1763
|
+
key: item.id,
|
|
1764
|
+
active: item.id === posture,
|
|
1765
|
+
disabled: busy,
|
|
1766
|
+
"aria-pressed": item.id === posture,
|
|
1767
|
+
onClick: () => setPosture(item.id),
|
|
1768
|
+
},
|
|
1769
|
+
t("posture." + item.id + ".label", item.id),
|
|
1770
|
+
),
|
|
1744
1771
|
),
|
|
1745
1772
|
),
|
|
1773
|
+
react.createElement("p", { className: "cpfe-note" }, t("posture." + posture + ".note", "")),
|
|
1774
|
+
),
|
|
1775
|
+
react.createElement(
|
|
1776
|
+
"div",
|
|
1777
|
+
{ className: "cpfe-node" },
|
|
1778
|
+
react.createElement("span", { className: "cpfe-node-label" }, t("tree.base")),
|
|
1779
|
+
react.createElement(
|
|
1780
|
+
"div",
|
|
1781
|
+
{ className: "cpfe-pills cpfe-locked", role: "radiogroup", "aria-disabled": "true", "aria-label": t("tree.base") },
|
|
1782
|
+
lockedModes.map((mode) =>
|
|
1783
|
+
react.createElement(
|
|
1784
|
+
A.Pill,
|
|
1785
|
+
{
|
|
1786
|
+
key: mode.id,
|
|
1787
|
+
active: mode.id === "standard",
|
|
1788
|
+
disabled: true,
|
|
1789
|
+
"aria-pressed": mode.id === "standard",
|
|
1790
|
+
title: mode.id === "standard" ? t("tree.baseHold") : t("tree.baseSkip"),
|
|
1791
|
+
onClick: () => {},
|
|
1792
|
+
},
|
|
1793
|
+
t("base." + mode.id + ".label", mode.label),
|
|
1794
|
+
),
|
|
1746
1795
|
),
|
|
1747
|
-
react.createElement("p", { className: "cpfe-note" }, t("posture." + posture + ".note", "")),
|
|
1748
1796
|
),
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1797
|
+
react.createElement("p", { className: "cpfe-note" }, t("tree.baseLocked")),
|
|
1798
|
+
),
|
|
1799
|
+
react.createElement(
|
|
1800
|
+
"div",
|
|
1801
|
+
{ className: "cpfe-newrow" },
|
|
1752
1802
|
react.createElement(A.Input, {
|
|
1753
1803
|
className: "cpfe-newinput",
|
|
1754
1804
|
value: newName,
|
|
@@ -1772,6 +1822,7 @@ try {
|
|
|
1772
1822
|
},
|
|
1773
1823
|
busy ? t("btn.creating") : t("btn.create"),
|
|
1774
1824
|
),
|
|
1825
|
+
),
|
|
1775
1826
|
),
|
|
1776
1827
|
)
|
|
1777
1828
|
|
|
@@ -1927,7 +1978,6 @@ try {
|
|
|
1927
1978
|
),
|
|
1928
1979
|
)
|
|
1929
1980
|
: null,
|
|
1930
|
-
createGroup,
|
|
1931
1981
|
typeof (assistants.find((item) => item.id === selected) || {}).broken === "string"
|
|
1932
1982
|
? react.createElement("p", { className: "cpfe-note" }, t("assistant.brokenHint"))
|
|
1933
1983
|
: null,
|
|
@@ -1975,7 +2025,7 @@ try {
|
|
|
1975
2025
|
? react.createElement("p", { className: "cpfe-note" }, t("mode.unavailable"))
|
|
1976
2026
|
: react.createElement(
|
|
1977
2027
|
"div",
|
|
1978
|
-
{ className: "cpfe-pills" },
|
|
2028
|
+
{ className: "cpfe-pills", "data-live": "base" },
|
|
1979
2029
|
payload.modes.map((mode) =>
|
|
1980
2030
|
react.createElement(
|
|
1981
2031
|
A.Pill,
|
|
@@ -2251,8 +2301,17 @@ try {
|
|
|
2251
2301
|
),
|
|
2252
2302
|
),
|
|
2253
2303
|
),
|
|
2254
|
-
|
|
2255
|
-
|
|
2304
|
+
editorReady
|
|
2305
|
+
? react.createElement(
|
|
2306
|
+
"section",
|
|
2307
|
+
null,
|
|
2308
|
+
react.createElement("h2", { className: "cpfe-h" }, t("editor.heading")),
|
|
2309
|
+
react.createElement(SectionHint, { text: t("editor.hint") }),
|
|
2310
|
+
react.createElement(
|
|
2311
|
+
"div",
|
|
2312
|
+
{ className: "cpfe-branch" },
|
|
2313
|
+
editorSections.filter((section) => section.key === "prompt"),
|
|
2314
|
+
react.createElement(
|
|
2256
2315
|
"div",
|
|
2257
2316
|
{ className: "cpfe-bar" },
|
|
2258
2317
|
react.createElement(
|
|
@@ -2326,6 +2385,10 @@ try {
|
|
|
2326
2385
|
: null,
|
|
2327
2386
|
)
|
|
2328
2387
|
: null,
|
|
2388
|
+
),
|
|
2389
|
+
)
|
|
2390
|
+
: null,
|
|
2391
|
+
createGroup,
|
|
2329
2392
|
// The confirmation is a portal: rendering it here keeps every piece of this page's
|
|
2330
2393
|
// state in one component.
|
|
2331
2394
|
renderable(A.RiskConfirmation) && editorReady
|
package/locales.mjs
CHANGED
|
@@ -21,13 +21,20 @@ export const zh = {
|
|
|
21
21
|
// ── 助手管理 ──────────────────────────────────────────────────────────────
|
|
22
22
|
'assistant.heading': '助手',
|
|
23
23
|
'assistant.hint': '每个助手单独保存系统提示词、基础模式和插件开关。',
|
|
24
|
-
'posture.hint': '
|
|
24
|
+
'posture.hint': '这一支只在点「新增助手」时写入。',
|
|
25
|
+
'tree.posture': '起步',
|
|
26
|
+
'tree.base': '工具底',
|
|
27
|
+
'tree.baseHold': '新建时固定用官方标准模式。',
|
|
28
|
+
'tree.baseSkip': '这一支点不了。建好后到「当前助手」里改。',
|
|
29
|
+
'tree.baseLocked': '只有官方标准模式是亮的。其余四档是暗的,新建时点不了。',
|
|
25
30
|
'posture.develop.label': '开发',
|
|
26
|
-
'posture.develop.note': '
|
|
31
|
+
'posture.develop.note': '官方标准模式,工具按出厂。',
|
|
27
32
|
'posture.write.label': '写作',
|
|
28
|
-
'posture.write.note': '
|
|
33
|
+
'posture.write.note': '官方标准模式。终端关闭,文件读写打开。',
|
|
29
34
|
'posture.chat.label': '聊天',
|
|
30
|
-
'posture.chat.note': '
|
|
35
|
+
'posture.chat.note': '官方标准模式。文件和终端关闭。',
|
|
36
|
+
'editor.heading': '当前助手',
|
|
37
|
+
'editor.hint': '这一支改上面选中的助手。基础模式五档都可以点。',
|
|
31
38
|
'assistant.empty': '还没有助手,用下面的输入框新建一个。',
|
|
32
39
|
'assistant.loadingList': '正在读取助手列表…',
|
|
33
40
|
'assistant.newPlaceholder': '新助手的名字(例如:写作助手)',
|
|
@@ -39,7 +46,7 @@ export const zh = {
|
|
|
39
46
|
'assistant.brokenHint': '此模式在本机无法启动,不会出现在新会话菜单里。点「按本线修复」只关闭那些行。',
|
|
40
47
|
'assistant.switchHint': '切换助手保留各自的未保存草稿;列表中的「未保存」标记即为此。',
|
|
41
48
|
'btn.create': '新增助手',
|
|
42
|
-
'create.heading': '
|
|
49
|
+
'create.heading': '新建助手',
|
|
43
50
|
'btn.creating': '创建中…',
|
|
44
51
|
'btn.duplicate': '复制',
|
|
45
52
|
'btn.moveUp': '上移',
|
|
@@ -159,7 +166,7 @@ export const zh = {
|
|
|
159
166
|
'name.descriptionPlaceholder': '描述,显示在模式菜单里,可留空',
|
|
160
167
|
|
|
161
168
|
'mode.heading': '基础模式',
|
|
162
|
-
'mode.hint': '
|
|
169
|
+
'mode.hint': '五档都可以点。改的是当前这位助手。提示词仍以本页为准。',
|
|
163
170
|
|
|
164
171
|
'rows.heading': '插件开关',
|
|
165
172
|
'rows.filterPlaceholder': '按名称或 id 筛选',
|
|
@@ -279,13 +286,20 @@ export const en = {
|
|
|
279
286
|
// ── assistant management ──────────────────────────────────────────────────
|
|
280
287
|
'assistant.heading': 'Assistants',
|
|
281
288
|
'assistant.hint': 'Each assistant keeps its own system prompt, base mode and plugin switches.',
|
|
282
|
-
'posture.hint': '
|
|
289
|
+
'posture.hint': 'This branch is written only when you click New assistant.',
|
|
290
|
+
'tree.posture': 'Starter',
|
|
291
|
+
'tree.base': 'Tool base',
|
|
292
|
+
'tree.baseHold': 'A new assistant always starts on the official Standard mode.',
|
|
293
|
+
'tree.baseSkip': 'Cannot be chosen on this branch. Change it later under This assistant.',
|
|
294
|
+
'tree.baseLocked': 'Only the official Standard mode is lit. The other four are dim and cannot be chosen when creating.',
|
|
283
295
|
'posture.develop.label': 'Coding',
|
|
284
|
-
'posture.develop.note': '
|
|
296
|
+
'posture.develop.note': 'Official Standard mode, tools as shipped.',
|
|
285
297
|
'posture.write.label': 'Writing',
|
|
286
|
-
'posture.write.note': '
|
|
298
|
+
'posture.write.note': 'Official Standard mode. Terminal off, file access on.',
|
|
287
299
|
'posture.chat.label': 'Chat',
|
|
288
|
-
'posture.chat.note': '
|
|
300
|
+
'posture.chat.note': 'Official Standard mode. Files and terminal off.',
|
|
301
|
+
'editor.heading': 'This assistant',
|
|
302
|
+
'editor.hint': 'This branch edits the assistant selected above. All five base modes can be chosen.',
|
|
289
303
|
'assistant.empty': 'No assistants yet — create one with the field below.',
|
|
290
304
|
'assistant.loadingList': 'Loading assistants…',
|
|
291
305
|
'assistant.newPlaceholder': 'Name of the new assistant (e.g. Writing assistant)',
|
|
@@ -415,7 +429,7 @@ export const en = {
|
|
|
415
429
|
'name.descriptionPlaceholder': 'Description, shown in the mode menu. Optional.',
|
|
416
430
|
|
|
417
431
|
'mode.heading': 'Base mode',
|
|
418
|
-
'mode.hint': '
|
|
432
|
+
'mode.hint': 'All five can be chosen. This edits the assistant selected above. The prompt on this page still applies.',
|
|
419
433
|
|
|
420
434
|
'rows.heading': 'Plugin switches',
|
|
421
435
|
'rows.filterPlaceholder': 'Filter by name or id',
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-custom-mode",
|
|
3
|
-
"version": "2.2.
|
|
4
|
-
"description": "Edit a DeepSeek Harness (dsh) mode
|
|
3
|
+
"version": "2.2.2",
|
|
4
|
+
"description": "Edit a DeepSeek Harness (dsh) custom mode: system prompt, base mode, and plugin switches.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"author": "bowluna <ai@bowluna.com>",
|
|
@@ -21,14 +21,21 @@
|
|
|
21
21
|
},
|
|
22
22
|
"keywords": [
|
|
23
23
|
"dsh",
|
|
24
|
-
"deepseek-harness",
|
|
25
24
|
"deepseek",
|
|
25
|
+
"deepseek-harness",
|
|
26
|
+
"deepseek-ai",
|
|
26
27
|
"dsh-plugin",
|
|
27
28
|
"plugin",
|
|
28
|
-
"agent-preset",
|
|
29
29
|
"custom-mode",
|
|
30
30
|
"system-prompt",
|
|
31
|
-
"prompt-editor"
|
|
31
|
+
"prompt-editor",
|
|
32
|
+
"agent-preset",
|
|
33
|
+
"assistant",
|
|
34
|
+
"base-mode",
|
|
35
|
+
"自定义模式",
|
|
36
|
+
"系统提示词",
|
|
37
|
+
"提示词编辑",
|
|
38
|
+
"DeepSeek插件"
|
|
32
39
|
],
|
|
33
40
|
"dsh": {
|
|
34
41
|
"bundle": {
|