@xia-sc/dsh-cc-studio 0.11.0 → 0.11.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 +8 -6
- package/lib/agent.js +1 -1
- package/package.json +3 -2
- package/presets/cc/agent.cordis.yml +18 -34
- package/presets/cc.patch.yml +18 -34
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ DSH(DeepSeek Harness)插件:输入框上方的胶囊 → 全屏融合工
|
|
|
14
14
|
|
|
15
15
|
| 项目 | 值 |
|
|
16
16
|
| --- | --- |
|
|
17
|
-
| 包名 / 版本 | `@xia-sc/dsh-cc-studio` `0.11.
|
|
17
|
+
| 包名 / 版本 | `@xia-sc/dsh-cc-studio` `0.11.1` |
|
|
18
18
|
| 兼容 | DSH `>=0.4.5-rc.4`(含**桌面版**)、Node `>=22`、**零运行依赖**;逐版本实测见 [兼容与权限](#兼容与权限) |
|
|
19
19
|
| 落盘位置 | `<DSH_HOME>/cc-library/`(角色卡)、`<DSH_HOME>/cc-drafts/`(会话草稿;LLM 创作锁 `.lock.json` 与覆盖前备份 `backups/` 也在这里);`DSH_HOME` 默认 `~/.dsh`,旧位置仍读得到 |
|
|
20
20
|
| 文档 | 用户文档=本文件;改代码前必读 [AGENTS.md](./AGENTS.md);完整历史 [CHANGELOG.md](./CHANGELOG.md) |
|
|
@@ -42,7 +42,7 @@ DSH(DeepSeek Harness)插件:输入框上方的胶囊 → 全屏融合工
|
|
|
42
42
|
dsh --profile <profile> --dump-config
|
|
43
43
|
期望在 `# == @xia-sc/dsh-cc-studio` 那一层下看到两行:`id: dsh-cc-studio`(宿主行)与 `id: preset-cc`(CC 预设行)。
|
|
44
44
|
4. 告诉用户重启:宿主行只在启动时组合 —— CLI 重启 `dsh web`,桌面版退出并重新打开应用。
|
|
45
|
-
5. 重启后可选自检:在「CC 模式」会话里调任意一个 cc_* 工具,返回里带 "build": "0.11.
|
|
45
|
+
5. 重启后可选自检:在「CC 模式」会话里调任意一个 cc_* 工具,返回里带 "build": "0.11.1" 即说明新代码已加载
|
|
46
46
|
(这也是判断「改了但没重启」的唯一可靠依据)。
|
|
47
47
|
6. 不要做的事:
|
|
48
48
|
- 不要手工把 presets/ 拷进 ~/.dsh/.agent-presets/(dsh >= 0.4.7-alpha.4 已不读该目录,拷了也不生效);
|
|
@@ -58,9 +58,9 @@ DSH(DeepSeek Harness)插件:输入框上方的胶囊 → 全屏融合工
|
|
|
58
58
|
```bash
|
|
59
59
|
# 从 npm 安装(推荐)
|
|
60
60
|
dsh plugin --profile web add @xia-sc/dsh-cc-studio
|
|
61
|
-
dsh plugin --profile web add @xia-sc/dsh-cc-studio@0.11.
|
|
61
|
+
dsh plugin --profile web add @xia-sc/dsh-cc-studio@0.11.1 # 锁定版本
|
|
62
62
|
|
|
63
|
-
# 从 GitHub 源安装(可加 #v0.11.
|
|
63
|
+
# 从 GitHub 源安装(可加 #v0.11.1 / #master 指定 tag / 分支)
|
|
64
64
|
dsh plugin --profile web add github:xia-sc/dsh-cc-studio
|
|
65
65
|
|
|
66
66
|
# 从本地仓库安装(开发 / 调试):装出来是 link:,改 lib/*.js 重启即生效
|
|
@@ -180,8 +180,8 @@ dsh plugin --profile web remove @xia-sc/dsh-cc-studio # 卸载(同时移
|
|
|
180
180
|
## 开发与测试
|
|
181
181
|
|
|
182
182
|
```bash
|
|
183
|
-
npm test # 24 个文件、
|
|
184
|
-
node tests/tools-contract.test.mjs # 只跑 CC 工具链契约(
|
|
183
|
+
npm test # 24 个文件、987 项断言,全绿才算过
|
|
184
|
+
node tests/tools-contract.test.mjs # 只跑 CC 工具链契约(125 项)
|
|
185
185
|
node tests/group-layer-guard.test.mjs # 只跑卡组层的耦合守卫(16 项)
|
|
186
186
|
```
|
|
187
187
|
|
|
@@ -192,6 +192,8 @@ node tests/group-layer-guard.test.mjs # 只跑卡组层的耦合守卫(1
|
|
|
192
192
|
|
|
193
193
|
完整历史见 [CHANGELOG.md](./CHANGELOG.md)。最近几版大多是「另一个 LLM 以工具使用者身份跑回归」挖出来的问题:
|
|
194
194
|
|
|
195
|
+
- `0.11.1` **CC 预设对齐 dsh `0.2.1-rc.2` 内置 `standard`**:修掉 `tool-ralph` 漏抄 `disabled`(CC 模式一直多挂一个实验性长循环工具)、`skill-filesystem` / `tool-skill` 被误关(模型没有技能目录与加载器)、以及 `backgroundMode` 等已下线的配置键;补 `time-context`、`tool-web` 的 `fetch` 改回 `true`。`dshReleases` 补 `0.2.1-rc.2`(npm `dsh web` 隔离环境实测)。测试补 CHARX 导入全链路与「按 id 改世界书条目」的回归 → **987 项**。**重启 dsh(桌面端重启应用)生效**。
|
|
196
|
+
|
|
195
197
|
- `0.11.0` **新增 LLM 草稿锁(读写分离)**:LLM 创作期间工坊只读、载入/导入只进只读预览,不再覆盖未保存草稿;`cc_release_draft` 交还编辑权,锁 30 分钟无写入自动失效,设置页可关闭。**修复**:角色卡完成后主动交还锁(persona / `cc_validate` / 首次上锁三处引导)、客户端草稿来源 id 恢复失效;覆盖型载入/导入前自动备份到 `cc-drafts/backups/`。测试 864 → **959 项**。详细见 [CHANGELOG](./CHANGELOG.md)。
|
|
196
198
|
|
|
197
199
|
- `0.10.3` **多行文本被写成字面 `\n`**:用户实机报告(六步全链路 `valid: true`)发现经 `cc_patch_character` / `cc_patch_greetings` / `cc_patch_world` 写入的字符串,换行全部落盘成字面 `\` + `n`,导进 SillyTavern 显示成「说完这句话。\n\n下一段」。取证推翻了「工具多转义」的猜测:工具层往返测试证明真换行原样保留;会话日志里模型 18 次调用有 6 次在 JSON 里把换行写成 `\\n`(多转义一层),而 `alternate_greetings` / lorebook 却写对了 —— 是**模型输出不一致**。修法:写类工具统一 `textArg()` 解码字面 `\n` / `\r` / `\t`(多层转义最多 4 轮收敛),覆盖角色 / 问候语 / 世界书条目 / 书级元信息 / 共享书;工坊保存与导入路径不动。顺带修报告 P2(卡内 `token_budget` 默认 1200 → **2400**)与 P4(autoLorebook 的「力量体系」条目裸 `@@activate` → `@@activate 100`)。测试 858 → **864 项**。**重启 dsh 生效**;已存卡里已写坏的字段需重写。
|
package/lib/agent.js
CHANGED
|
@@ -23,7 +23,7 @@ const name = "dsh-cc-studio-agent";
|
|
|
23
23
|
// 由来:第五轮实测里测试者第一遍跑出「四项全无变化」,其实只是**没重启 dsh** —— LLM 侧完全无法
|
|
24
24
|
// 分辨「代码没改」和「改了但没加载」。有了这个字段,任何一次调用都能先确认自己测的是哪一版。
|
|
25
25
|
// 发版时与 package.json 的 version 同步。
|
|
26
|
-
const BUILD = "0.11.
|
|
26
|
+
const BUILD = "0.11.1";
|
|
27
27
|
const inject = ["tools", "agents"];
|
|
28
28
|
|
|
29
29
|
function nowSec(){ return Math.floor(Date.now()/1000); }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xia-sc/dsh-cc-studio",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "CCv3 角色卡工坊:融合工坊 + CC 模式 + JSON/PNG/CHARX + 中英双语(跟随全局)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
@@ -65,7 +65,8 @@
|
|
|
65
65
|
"0.1.6-alpha.2": "compatible",
|
|
66
66
|
"0.1.7-alpha.1": "compatible",
|
|
67
67
|
"0.1.7-rc.1": "compatible",
|
|
68
|
-
"0.2.0-rc.2": "compatible"
|
|
68
|
+
"0.2.0-rc.2": "compatible",
|
|
69
|
+
"0.2.1-rc.2": "compatible"
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
},
|
|
@@ -54,6 +54,12 @@
|
|
|
54
54
|
config:
|
|
55
55
|
maxBytes: 65536
|
|
56
56
|
|
|
57
|
+
# 0.2.1 对齐:time-context 从 host 层挪进预设行(dsh 0.2.1-rc.2 的内置 standard 有这一行)。
|
|
58
|
+
# 包 @deepseek-ai/dsh-time-context 在 dsh 0.1.6-alpha.2 的依赖里也存在,
|
|
59
|
+
# 且那一代 host 层没有挂它,所以旧版目录形态上补这一行不会重复注册、不会 broken。
|
|
60
|
+
- id: time-context
|
|
61
|
+
name: '@deepseek-ai/dsh-time-context'
|
|
62
|
+
|
|
57
63
|
# ── shell ───────────────────────────────────────────────────────────────────
|
|
58
64
|
|
|
59
65
|
# `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
|
|
@@ -104,11 +110,9 @@
|
|
|
104
110
|
# carries whatever the deployment registered globally (repository plugins).
|
|
105
111
|
- id: skill-filesystem
|
|
106
112
|
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
107
|
-
disabled: true
|
|
108
113
|
|
|
109
114
|
- id: tool-skill
|
|
110
115
|
name: '@deepseek-ai/dsh-tool-skill'
|
|
111
|
-
disabled: true
|
|
112
116
|
|
|
113
117
|
# 0.3.7 补回:内置 `standard` 自 0.1.6-alpha.2 起就带这一行,本预设初次拷贝时整行漏掉了
|
|
114
118
|
# (与 0.3.4 补回的 `present` 同类:不报错、不判 broken,只是少了能力)。
|
|
@@ -143,7 +147,7 @@
|
|
|
143
147
|
name: '@deepseek-ai/dsh-plan-mode'
|
|
144
148
|
config:
|
|
145
149
|
section: |
|
|
146
|
-
You are in plan mode. Stay in plan mode until
|
|
150
|
+
You are in plan mode. Stay in plan mode until the user approves your plan through exit_plan_mode or switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
|
|
147
151
|
|
|
148
152
|
Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
|
|
149
153
|
|
|
@@ -225,36 +229,12 @@
|
|
|
225
229
|
provider: spawn
|
|
226
230
|
toolName: subagent
|
|
227
231
|
modelSelectionSettings: true
|
|
228
|
-
backgroundMode: continuable
|
|
229
232
|
|
|
230
233
|
- id: tool-subagent-fork
|
|
231
234
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
232
235
|
config:
|
|
233
236
|
provider: fork
|
|
234
237
|
toolName: subagent_fork
|
|
235
|
-
backgroundMode: continuable
|
|
236
|
-
|
|
237
|
-
# Production dsh does not install these optional providers. Install the
|
|
238
|
-
# matching Bundle in this Profile and restart the Host, then copy this
|
|
239
|
-
# preset and remove `disabled` from the matching tool row. Host availability
|
|
240
|
-
# alone grants no tool.
|
|
241
|
-
- id: tool-subagent-codex
|
|
242
|
-
name: '@deepseek-ai/dsh-tool-subagent'
|
|
243
|
-
disabled: true
|
|
244
|
-
config:
|
|
245
|
-
provider: codex
|
|
246
|
-
toolName: subagent_codex
|
|
247
|
-
backgroundMode: one-shot
|
|
248
|
-
maxDepth: provider-managed
|
|
249
|
-
|
|
250
|
-
- id: tool-subagent-claude-code
|
|
251
|
-
name: '@deepseek-ai/dsh-tool-subagent'
|
|
252
|
-
disabled: true
|
|
253
|
-
config:
|
|
254
|
-
provider: claude-code
|
|
255
|
-
toolName: subagent_claude_code
|
|
256
|
-
backgroundMode: one-shot
|
|
257
|
-
maxDepth: provider-managed
|
|
258
238
|
|
|
259
239
|
# dsh 0.1.6-alpha.1: `dsh-workflow-worker-thread` is gone from the release;
|
|
260
240
|
# the workflow engine is now `dsh-workflow-ptc` (sandboxed Node PTC runtime,
|
|
@@ -270,12 +250,6 @@
|
|
|
270
250
|
- id: tool-workflow
|
|
271
251
|
name: '@deepseek-ai/dsh-tool-workflow'
|
|
272
252
|
|
|
273
|
-
- id: tool-ralph
|
|
274
|
-
name: '@deepseek-ai/dsh-tool-ralph'
|
|
275
|
-
config:
|
|
276
|
-
subagentProvider: spawn
|
|
277
|
-
maxRounds: 64
|
|
278
|
-
|
|
279
253
|
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
280
254
|
|
|
281
255
|
- id: tool-ask-user
|
|
@@ -291,7 +265,7 @@
|
|
|
291
265
|
- id: tool-web
|
|
292
266
|
name: '@deepseek-ai/dsh-tool-web'
|
|
293
267
|
config:
|
|
294
|
-
fetch:
|
|
268
|
+
fetch: true
|
|
295
269
|
searchTimeoutMs: 60000
|
|
296
270
|
|
|
297
271
|
# 0.3.4 补回:`present` 是 standard 一直有的行,本预设此前整行漏抄。
|
|
@@ -309,6 +283,16 @@
|
|
|
309
283
|
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
310
284
|
disabled: true
|
|
311
285
|
|
|
286
|
+
# ── 与 dsh 0.2.1-rc.2 内置 standard 的**有意差异**(下次升级 diff 别当成漏抄)──
|
|
287
|
+
# · `tool-schedule`:0.2.1 standard 有,但 `@deepseek-ai/dsh-tool-schedule` 在
|
|
288
|
+
# dsh ≤ 0.1.6-alpha.2 的依赖里不存在,而这份清单同时喂给目录形态(旧版);
|
|
289
|
+
# 非 disabled 行解析不到包会让**整个预设 broken**(unresolvableRows),
|
|
290
|
+
# 所以为兼容旧版不带这一行。CC 模式也不需要定时任务工具。
|
|
291
|
+
# · `tool-plugin-market`:0.2.1 standard 里是 disabled,但 0.1.6 没有
|
|
292
|
+
# `@deepseek-ai/dsh-plugin-market` 这个包;按家规「不拿 disabled 遮掩
|
|
293
|
+
# 一个已经不存在的包」,同样不带。
|
|
294
|
+
# 其余行与 standard 逐行对齐;本预设只保留 persona 定制与末尾的 cc-agent 行。
|
|
295
|
+
|
|
312
296
|
# ── CC 角色卡工坊(CC 模式专用) ───────────────────────────────────
|
|
313
297
|
- id: cc-agent
|
|
314
298
|
name: '@xia-sc/dsh-cc-studio/agent'
|
package/presets/cc.patch.yml
CHANGED
|
@@ -89,6 +89,12 @@
|
|
|
89
89
|
config:
|
|
90
90
|
maxBytes: 65536
|
|
91
91
|
|
|
92
|
+
# 0.2.1 对齐:time-context 从 host 层挪进预设行(dsh 0.2.1-rc.2 的内置 standard 有这一行)。
|
|
93
|
+
# 包 @deepseek-ai/dsh-time-context 在 dsh 0.1.6-alpha.2 的依赖里也存在,
|
|
94
|
+
# 且那一代 host 层没有挂它,所以旧版目录形态上补这一行不会重复注册、不会 broken。
|
|
95
|
+
- id: time-context
|
|
96
|
+
name: '@deepseek-ai/dsh-time-context'
|
|
97
|
+
|
|
92
98
|
# ── shell ───────────────────────────────────────────────────────────────────
|
|
93
99
|
|
|
94
100
|
# `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
|
|
@@ -139,11 +145,9 @@
|
|
|
139
145
|
# carries whatever the deployment registered globally (repository plugins).
|
|
140
146
|
- id: skill-filesystem
|
|
141
147
|
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
142
|
-
disabled: true
|
|
143
148
|
|
|
144
149
|
- id: tool-skill
|
|
145
150
|
name: '@deepseek-ai/dsh-tool-skill'
|
|
146
|
-
disabled: true
|
|
147
151
|
|
|
148
152
|
# 0.3.7 补回:内置 `standard` 自 0.1.6-alpha.2 起就带这一行,本预设初次拷贝时整行漏掉了
|
|
149
153
|
# (与 0.3.4 补回的 `present` 同类:不报错、不判 broken,只是少了能力)。
|
|
@@ -178,7 +182,7 @@
|
|
|
178
182
|
name: '@deepseek-ai/dsh-plan-mode'
|
|
179
183
|
config:
|
|
180
184
|
section: |
|
|
181
|
-
You are in plan mode. Stay in plan mode until
|
|
185
|
+
You are in plan mode. Stay in plan mode until the user approves your plan through exit_plan_mode or switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
|
|
182
186
|
|
|
183
187
|
Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
|
|
184
188
|
|
|
@@ -260,36 +264,12 @@
|
|
|
260
264
|
provider: spawn
|
|
261
265
|
toolName: subagent
|
|
262
266
|
modelSelectionSettings: true
|
|
263
|
-
backgroundMode: continuable
|
|
264
267
|
|
|
265
268
|
- id: tool-subagent-fork
|
|
266
269
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
267
270
|
config:
|
|
268
271
|
provider: fork
|
|
269
272
|
toolName: subagent_fork
|
|
270
|
-
backgroundMode: continuable
|
|
271
|
-
|
|
272
|
-
# Production dsh does not install these optional providers. Install the
|
|
273
|
-
# matching Bundle in this Profile and restart the Host, then copy this
|
|
274
|
-
# preset and remove `disabled` from the matching tool row. Host availability
|
|
275
|
-
# alone grants no tool.
|
|
276
|
-
- id: tool-subagent-codex
|
|
277
|
-
name: '@deepseek-ai/dsh-tool-subagent'
|
|
278
|
-
disabled: true
|
|
279
|
-
config:
|
|
280
|
-
provider: codex
|
|
281
|
-
toolName: subagent_codex
|
|
282
|
-
backgroundMode: one-shot
|
|
283
|
-
maxDepth: provider-managed
|
|
284
|
-
|
|
285
|
-
- id: tool-subagent-claude-code
|
|
286
|
-
name: '@deepseek-ai/dsh-tool-subagent'
|
|
287
|
-
disabled: true
|
|
288
|
-
config:
|
|
289
|
-
provider: claude-code
|
|
290
|
-
toolName: subagent_claude_code
|
|
291
|
-
backgroundMode: one-shot
|
|
292
|
-
maxDepth: provider-managed
|
|
293
273
|
|
|
294
274
|
# dsh 0.1.6-alpha.1: `dsh-workflow-worker-thread` is gone from the release;
|
|
295
275
|
# the workflow engine is now `dsh-workflow-ptc` (sandboxed Node PTC runtime,
|
|
@@ -305,12 +285,6 @@
|
|
|
305
285
|
- id: tool-workflow
|
|
306
286
|
name: '@deepseek-ai/dsh-tool-workflow'
|
|
307
287
|
|
|
308
|
-
- id: tool-ralph
|
|
309
|
-
name: '@deepseek-ai/dsh-tool-ralph'
|
|
310
|
-
config:
|
|
311
|
-
subagentProvider: spawn
|
|
312
|
-
maxRounds: 64
|
|
313
|
-
|
|
314
288
|
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
315
289
|
|
|
316
290
|
- id: tool-ask-user
|
|
@@ -326,7 +300,7 @@
|
|
|
326
300
|
- id: tool-web
|
|
327
301
|
name: '@deepseek-ai/dsh-tool-web'
|
|
328
302
|
config:
|
|
329
|
-
fetch:
|
|
303
|
+
fetch: true
|
|
330
304
|
searchTimeoutMs: 60000
|
|
331
305
|
|
|
332
306
|
# 0.3.4 补回:`present` 是 standard 一直有的行,本预设此前整行漏抄。
|
|
@@ -344,6 +318,16 @@
|
|
|
344
318
|
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
345
319
|
disabled: true
|
|
346
320
|
|
|
321
|
+
# ── 与 dsh 0.2.1-rc.2 内置 standard 的**有意差异**(下次升级 diff 别当成漏抄)──
|
|
322
|
+
# · `tool-schedule`:0.2.1 standard 有,但 `@deepseek-ai/dsh-tool-schedule` 在
|
|
323
|
+
# dsh ≤ 0.1.6-alpha.2 的依赖里不存在,而这份清单同时喂给目录形态(旧版);
|
|
324
|
+
# 非 disabled 行解析不到包会让**整个预设 broken**(unresolvableRows),
|
|
325
|
+
# 所以为兼容旧版不带这一行。CC 模式也不需要定时任务工具。
|
|
326
|
+
# · `tool-plugin-market`:0.2.1 standard 里是 disabled,但 0.1.6 没有
|
|
327
|
+
# `@deepseek-ai/dsh-plugin-market` 这个包;按家规「不拿 disabled 遮掩
|
|
328
|
+
# 一个已经不存在的包」,同样不带。
|
|
329
|
+
# 其余行与 standard 逐行对齐;本预设只保留 persona 定制与末尾的 cc-agent 行。
|
|
330
|
+
|
|
347
331
|
# ── CC 角色卡工坊(CC 模式专用) ───────────────────────────────────
|
|
348
332
|
- id: cc-agent
|
|
349
333
|
name: '@xia-sc/dsh-cc-studio/agent'
|