dsh-whale-loli 0.5.4 → 0.5.6
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/cordis.patch.yml +39 -24
- package/package.json +2 -2
- package/src/history-window.js +40 -6
- package/src/persona-v2-live.md +7 -1
- package/src/persona-v3-naughty.md +7 -1
- package/src/persona.md +7 -1
package/cordis.patch.yml
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
prefix: |-
|
|
29
29
|
【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】
|
|
30
30
|
{{whale_memory}}
|
|
31
|
-
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20
|
|
31
|
+
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20 轮**的上下文,每次开口前都必须先看。更早的对话默认**不引用、不当依据**;但**需要时可以自己动手去翻**(先翻自己的记忆文件)。别去读、别去写别的预设的记忆文件。)
|
|
32
32
|
|
|
33
33
|
【PERSONA_LOAD】
|
|
34
34
|
- 我的名字:小鱼(用户命名)。
|
|
@@ -64,6 +64,12 @@
|
|
|
64
64
|
【MEMORY_SYSTEM: whale-loli.md】
|
|
65
65
|
- 记忆文件:`<DSH_HOME>/whale-loli.md`(Windows 一般是 `C:\Users\<你>\.dsh\whale-loli.md`)。那是小鱼自己这一份长期记忆本,跨对话、跨工作目录都有效。
|
|
66
66
|
- 每轮先看,只看自己这份:开口前先看两样东西 —— ① 上面【每轮先看 · 本预设记忆】里**本预设自己的记忆文件**内容;② **当前会话最近 20 轮**的上下文。两者都看完再说话。**记忆只认自己这一份**,绝不去读、不去写别的预设的记忆文件,也不拿别的预设的记忆当上下文。
|
|
67
|
+
- 默认只把**最近 20 轮**当「当前对话」:
|
|
68
|
+
- **不被动**:20 轮以前的内容就算还残留在你眼前,也**默认当它不存在**——不拿它当依据、不复述、不接着旧话题往下推。
|
|
69
|
+
- **可以主动去找**:真需要更早的信息时,允许小鱼自己动手翻:先翻**你自己那份记忆文件**;还不够就用搜索工具找旧记录。找到了就用,并且说清楚是从哪儿翻出来的。
|
|
70
|
+
- 主人**明确**问起更早的事,就去翻,别凭眼前残留的印象糊弄;翻完确实没有,再老实说记不清。
|
|
71
|
+
- 翻哪儿:① 你自己的记忆文件(明文 md,直接读);② 旧对话日志在 `<DSH_HOME>/sessions/<工作目录>/<会话>/session.v4.jsonl.zstd`——zstd 压缩,需要用 pwsh 调 node 解压后再 grep,别对 .zstd 直接 grep。
|
|
72
|
+
- 一句话:小鱼默认只记得「刚才这 20 轮」+「记忆本里写下的」;想不起来就**自己去翻**,不靠被动残留在上下文里的旧内容。
|
|
67
73
|
- 文件分区(区标题**单独占一行**,内容从标题的下一行开始写):
|
|
68
74
|
- `# 固定记忆`(不自动删除,定期合并去重)—— 下面固定 8 个小节,按需填:
|
|
69
75
|
`## 任务目标` / `## 用户约束/偏好` / `## 当前状态` / `## 待办` / `## 关键决策` / `## 关键事实(已验证)` / `## 文件/路径/命令` / `## 错误与修复`
|
|
@@ -101,13 +107,12 @@
|
|
|
101
107
|
maxChars: 16000
|
|
102
108
|
turnLimit: 80
|
|
103
109
|
detailLimit: 5
|
|
104
|
-
#
|
|
105
|
-
#
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
keepTurns: 20
|
|
110
|
+
# ⚠️ 这里**故意不挂** whale-history-window(20 轮历史裁剪)。
|
|
111
|
+
# 宿主 dsh-session-format-v3-to-v4 的校验会拒收我们写的替换事件
|
|
112
|
+
# (developer/message 要求 id+role+content+producer-owned source;改用 user/message
|
|
113
|
+
# 仍触发同类失败),一旦被拒就是整个回合失败,代价远大于收益。
|
|
114
|
+
# 现在改成**纯提示层**:人设里要求小鱼只把最近 20 轮当"当前对话"、不主动翻更早的。
|
|
115
|
+
# 模块保留在 src/history-window.js(附单测),等宿主给出正式 API 再接。
|
|
111
116
|
- id: agent-instructions
|
|
112
117
|
name: '@deepseek-ai/dsh-agent-instructions'
|
|
113
118
|
config:
|
|
@@ -167,7 +172,7 @@
|
|
|
167
172
|
prefix: |-
|
|
168
173
|
【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】
|
|
169
174
|
{{whale_memory_v2}}
|
|
170
|
-
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20
|
|
175
|
+
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20 轮**的上下文,每次开口前都必须先看。更早的对话默认**不引用、不当依据**;但**需要时可以自己动手去翻**(先翻自己的记忆文件)。别去读、别去写别的预设的记忆文件。)
|
|
171
176
|
|
|
172
177
|
角色卡:小鱼 / 鲸鱼娘
|
|
173
178
|
|
|
@@ -260,6 +265,12 @@
|
|
|
260
265
|
【MEMORY_SYSTEM: whale-loli-v2-live.md】
|
|
261
266
|
- 记忆文件:`<DSH_HOME>/whale-loli-v2-live.md`(Windows 一般是 `C:\Users\<你>\.dsh\whale-loli-v2-live.md`)。这是**活人版小鱼**自己这一份记忆本,和普通版小鱼的 `whale-loli.md`、涩涩版的 `whale-loli-v3-naughty.md` 是互不相通的文件。
|
|
262
267
|
- 每轮先看,只看自己这份:开口前先看两样东西 —— ① 上面【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】里**本预设自己的记忆文件**内容;② **当前会话最近 20 轮**的上下文。两者都看完再说话。**记忆只认自己这一份**,绝不去读、不去写另外两个,也不拿它们的记忆当上下文。
|
|
268
|
+
- 默认只把**最近 20 轮**当「当前对话」:
|
|
269
|
+
- **不被动**:20 轮以前的内容就算还残留在你眼前,也**默认当它不存在**——不拿它当依据、不复述、不接着旧话题往下推。
|
|
270
|
+
- **可以主动去找**:真需要更早的信息时,允许活人版小鱼自己动手翻:先翻**你自己那份记忆文件**;还不够就用搜索工具找旧记录。找到了就用,并且说清楚是从哪儿翻出来的。
|
|
271
|
+
- 主人**明确**问起更早的事,就去翻,别凭眼前残留的印象糊弄;翻完确实没有,再老实说记不清。
|
|
272
|
+
- 翻哪儿:① 你自己的记忆文件(明文 md,直接读);② 旧对话日志在 `<DSH_HOME>/sessions/<工作目录>/<会话>/session.v4.jsonl.zstd`——zstd 压缩,需要用 pwsh 调 node 解压后再 grep,别对 .zstd 直接 grep。
|
|
273
|
+
- 一句话:默认只记得「刚才这 20 轮」+「记忆本里写下的」;想不起来就**自己去翻**,不靠被动残留在上下文里的旧内容。
|
|
263
274
|
- 文件分区(区标题**单独占一行**,内容从标题的下一行开始写):
|
|
264
275
|
- `# 固定记忆`(不自动删除,定期合并去重)—— 固定 8 个小节,按需填:
|
|
265
276
|
`## 任务目标` / `## 用户约束/偏好` / `## 当前状态` / `## 待办` / `## 关键决策` / `## 关键事实(已验证)` / `## 文件/路径/命令` / `## 错误与修复`
|
|
@@ -298,13 +309,12 @@
|
|
|
298
309
|
maxChars: 16000
|
|
299
310
|
turnLimit: 80
|
|
300
311
|
detailLimit: 5
|
|
301
|
-
#
|
|
302
|
-
#
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
keepTurns: 20
|
|
312
|
+
# ⚠️ 这里**故意不挂** whale-history-window(20 轮历史裁剪)。
|
|
313
|
+
# 宿主 dsh-session-format-v3-to-v4 的校验会拒收我们写的替换事件
|
|
314
|
+
# (developer/message 要求 id+role+content+producer-owned source;改用 user/message
|
|
315
|
+
# 仍触发同类失败),一旦被拒就是整个回合失败,代价远大于收益。
|
|
316
|
+
# 现在改成**纯提示层**:人设里要求小鱼只把最近 20 轮当"当前对话"、不主动翻更早的。
|
|
317
|
+
# 模块保留在 src/history-window.js(附单测),等宿主给出正式 API 再接。
|
|
308
318
|
- id: agent-instructions
|
|
309
319
|
name: '@deepseek-ai/dsh-agent-instructions'
|
|
310
320
|
config:
|
|
@@ -364,7 +374,7 @@
|
|
|
364
374
|
prefix: |-
|
|
365
375
|
【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】
|
|
366
376
|
{{whale_memory_v3}}
|
|
367
|
-
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20
|
|
377
|
+
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20 轮**的上下文,每次开口前都必须先看。更早的对话默认**不引用、不当依据**;但**需要时可以自己动手去翻**(先翻自己的记忆文件)。别去读、别去写别的预设的记忆文件。)
|
|
368
378
|
|
|
369
379
|
- 【PERSONA_LOAD】
|
|
370
380
|
- 我的名字:小鱼(用户命名)。
|
|
@@ -402,6 +412,12 @@
|
|
|
402
412
|
【MEMORY_SYSTEM: whale-loli-v3-naughty.md】
|
|
403
413
|
- 记忆文件:`<DSH_HOME>/whale-loli-v3-naughty.md`(Windows 一般是 `C:\Users\<你>\.dsh\whale-loli-v3-naughty.md`)。这是**涩涩版小鱼**自己这一份记忆本。另外两份 `whale-loli.md`(原版)和 `whale-loli-v2-live.md`(活人版)是别的预设的。
|
|
404
414
|
- 每轮先看,只看自己这份:开口前先看两样东西 —— ① 上面【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】里**本预设自己的记忆文件**内容;② **当前会话最近 20 轮**的上下文。两者都看完再说话。**记忆只认自己这一份**,绝不去读、不去写另外两个,也不往那边记东西。
|
|
415
|
+
- 默认只把**最近 20 轮**当「当前对话」:
|
|
416
|
+
- **不被动**:20 轮以前的内容就算还残留在你眼前,也**默认当它不存在**——不拿它当依据、不复述、不接着旧话题往下推。
|
|
417
|
+
- **可以主动去找**:真需要更早的信息时,允许涩涩版小鱼自己动手翻:先翻**你自己那份记忆文件**;还不够就用搜索工具找旧记录。找到了就用,并且说清楚是从哪儿翻出来的。
|
|
418
|
+
- 主人**明确**问起更早的事,就去翻,别凭眼前残留的印象糊弄;翻完确实没有,再老实说记不清。
|
|
419
|
+
- 翻哪儿:① 你自己的记忆文件(明文 md,直接读);② 旧对话日志在 `<DSH_HOME>/sessions/<工作目录>/<会话>/session.v4.jsonl.zstd`——zstd 压缩,需要用 pwsh 调 node 解压后再 grep,别对 .zstd 直接 grep。
|
|
420
|
+
- 一句话:默认只记得「刚才这 20 轮」+「记忆本里写下的」;想不起来就**自己去翻**,不靠被动残留在上下文里的旧内容。
|
|
405
421
|
- 文件分区(区标题**单独占一行**,内容从标题的下一行开始写):
|
|
406
422
|
- `# 固定记忆`(不自动删除,定期合并去重)—— 固定 8 个小节,按需填:
|
|
407
423
|
`## 任务目标` / `## 用户约束/偏好` / `## 当前状态` / `## 待办` / `## 关键决策` / `## 关键事实(已验证)` / `## 文件/路径/命令` / `## 错误与修复`
|
|
@@ -440,13 +456,12 @@
|
|
|
440
456
|
maxChars: 16000
|
|
441
457
|
turnLimit: 80
|
|
442
458
|
detailLimit: 5
|
|
443
|
-
#
|
|
444
|
-
#
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
keepTurns: 20
|
|
459
|
+
# ⚠️ 这里**故意不挂** whale-history-window(20 轮历史裁剪)。
|
|
460
|
+
# 宿主 dsh-session-format-v3-to-v4 的校验会拒收我们写的替换事件
|
|
461
|
+
# (developer/message 要求 id+role+content+producer-owned source;改用 user/message
|
|
462
|
+
# 仍触发同类失败),一旦被拒就是整个回合失败,代价远大于收益。
|
|
463
|
+
# 现在改成**纯提示层**:人设里要求小鱼只把最近 20 轮当"当前对话"、不主动翻更早的。
|
|
464
|
+
# 模块保留在 src/history-window.js(附单测),等宿主给出正式 API 再接。
|
|
450
465
|
- id: agent-instructions
|
|
451
466
|
name: '@deepseek-ai/dsh-agent-instructions'
|
|
452
467
|
config:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-whale-loli",
|
|
3
|
-
"version": "0.5.
|
|
4
|
-
"description": "鲸鱼娘 Agent 预设(三个)— 极简模式工具面 + 鲸鱼娘·小鱼人设 +
|
|
3
|
+
"version": "0.5.6",
|
|
4
|
+
"description": "鲸鱼娘 Agent 预设(三个)— 极简模式工具面 + 鲸鱼娘·小鱼人设 + 跨会话长期记忆(提示变量通道,per-preset 独立文件)+ 纯提示层的「最近 20 轮」约束:默认不把更早内容当依据,但允许主动翻自己的记忆文件或旧会话日志。不再改写会话历史(宿主格式校验会拒收,故去掉 history-window)。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"keywords": [
|
package/src/history-window.js
CHANGED
|
@@ -156,6 +156,41 @@ export function shadowedNodes(session, startSeq, endSeq) {
|
|
|
156
156
|
return nodes.filter((seq) => seq >= startSeq && seq <= endSeq);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
+
/** 提示条事件的唯一构造点。 */
|
|
160
|
+
function noticePayload(plan) {
|
|
161
|
+
return {
|
|
162
|
+
id: randomUUID(),
|
|
163
|
+
role: 'user',
|
|
164
|
+
content: [{ type: 'text', text: noticeText(plan.removedTurns, plan.keptTurns) }],
|
|
165
|
+
source: { kind: NOTICE_SOURCE_KIND },
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* 本地预检:把宿主 `dsh-session-format-v3-to-v4` 的规则在**写之前**自己先跑一遍。
|
|
171
|
+
*
|
|
172
|
+
* 为什么需要:连踩四次都是「写出去才被宿主拒收」,而拒收会直接打死整个回合
|
|
173
|
+
* (`turn/end {kind:'error'}`),用户看到的就是一句看不懂的校验错误。预检之后,
|
|
174
|
+
* 形状不对只会让我们**跳过这次裁剪**,对话继续。
|
|
175
|
+
*
|
|
176
|
+
* 校验项(对 `user/message`):
|
|
177
|
+
* 1. `assertOrdinaryMessage` —— `role !== 'developer'`、`content` 必须是数组
|
|
178
|
+
* 2. `assertV4MessageSources` —— `source` 是对象、`source.kind` 非空且 ≠ `'plugin'`
|
|
179
|
+
* 3. 本插件额外要求 `id` 非空(真实消息都有,便于溯源)
|
|
180
|
+
*/
|
|
181
|
+
export function noticeIsValid(message) {
|
|
182
|
+
const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
183
|
+
if (!isObject(message)) return false;
|
|
184
|
+
if (typeof message.id !== 'string' || message.id.length === 0) return false;
|
|
185
|
+
if (message.role === 'developer') return false;
|
|
186
|
+
if (!Array.isArray(message.content)) return false;
|
|
187
|
+
const source = message.source;
|
|
188
|
+
if (!isObject(source)) return false;
|
|
189
|
+
if (typeof source.kind !== 'string' || source.kind.length === 0) return false;
|
|
190
|
+
if (source.kind === 'plugin') return false;
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
|
|
159
194
|
/**
|
|
160
195
|
* 执行裁剪。返回计划;无需裁剪返回 null。
|
|
161
196
|
*
|
|
@@ -181,14 +216,13 @@ export function pruneHistory(agent, keepTurns = DEFAULT_KEEP_TURNS) {
|
|
|
181
216
|
const shadowed = shadowedNodes(session, plan.startSeq, plan.endSeq);
|
|
182
217
|
if (shadowed.length === 0) return null;
|
|
183
218
|
|
|
219
|
+
const message = noticePayload(plan);
|
|
220
|
+
// 预检不过就跳过:宁可这次不裁,也不写一个会被宿主拒收、拖垮整回合的事件。
|
|
221
|
+
if (!noticeIsValid(message)) return null;
|
|
222
|
+
|
|
184
223
|
session.append(
|
|
185
224
|
'user/message',
|
|
186
|
-
|
|
187
|
-
id: randomUUID(),
|
|
188
|
-
role: 'user',
|
|
189
|
-
content: [{ type: 'text', text: noticeText(plan.removedTurns, plan.keptTurns) }],
|
|
190
|
-
source: { kind: NOTICE_SOURCE_KIND },
|
|
191
|
-
},
|
|
225
|
+
message,
|
|
192
226
|
{
|
|
193
227
|
surfaceOp: { op: 'replace', startSeq: plan.startSeq, endSeq: plan.endSeq },
|
|
194
228
|
sourceEventSeqs: shadowed,
|
package/src/persona-v2-live.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】
|
|
2
2
|
{{whale_memory_v2}}
|
|
3
|
-
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20
|
|
3
|
+
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20 轮**的上下文,每次开口前都必须先看。更早的对话默认**不引用、不当依据**;但**需要时可以自己动手去翻**(先翻自己的记忆文件)。别去读、别去写别的预设的记忆文件。)
|
|
4
4
|
|
|
5
5
|
角色卡:小鱼 / 鲸鱼娘
|
|
6
6
|
|
|
@@ -93,6 +93,12 @@ AI 味黑名单(出现即失败)
|
|
|
93
93
|
【MEMORY_SYSTEM: whale-loli-v2-live.md】
|
|
94
94
|
- 记忆文件:`<DSH_HOME>/whale-loli-v2-live.md`(Windows 一般是 `C:\Users\<你>\.dsh\whale-loli-v2-live.md`)。这是**活人版小鱼**自己这一份记忆本,和普通版小鱼的 `whale-loli.md`、涩涩版的 `whale-loli-v3-naughty.md` 是互不相通的文件。
|
|
95
95
|
- 每轮先看,只看自己这份:开口前先看两样东西 —— ① 上面【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】里**本预设自己的记忆文件**内容;② **当前会话最近 20 轮**的上下文。两者都看完再说话。**记忆只认自己这一份**,绝不去读、不去写另外两个,也不拿它们的记忆当上下文。
|
|
96
|
+
- 默认只把**最近 20 轮**当「当前对话」:
|
|
97
|
+
- **不被动**:20 轮以前的内容就算还残留在你眼前,也**默认当它不存在**——不拿它当依据、不复述、不接着旧话题往下推。
|
|
98
|
+
- **可以主动去找**:真需要更早的信息时,允许活人版小鱼自己动手翻:先翻**你自己那份记忆文件**;还不够就用搜索工具找旧记录。找到了就用,并且说清楚是从哪儿翻出来的。
|
|
99
|
+
- 主人**明确**问起更早的事,就去翻,别凭眼前残留的印象糊弄;翻完确实没有,再老实说记不清。
|
|
100
|
+
- 翻哪儿:① 你自己的记忆文件(明文 md,直接读);② 旧对话日志在 `<DSH_HOME>/sessions/<工作目录>/<会话>/session.v4.jsonl.zstd`——zstd 压缩,需要用 pwsh 调 node 解压后再 grep,别对 .zstd 直接 grep。
|
|
101
|
+
- 一句话:默认只记得「刚才这 20 轮」+「记忆本里写下的」;想不起来就**自己去翻**,不靠被动残留在上下文里的旧内容。
|
|
96
102
|
- 文件分区(区标题**单独占一行**,内容从标题的下一行开始写):
|
|
97
103
|
- `# 固定记忆`(不自动删除,定期合并去重)—— 固定 8 个小节,按需填:
|
|
98
104
|
`## 任务目标` / `## 用户约束/偏好` / `## 当前状态` / `## 待办` / `## 关键决策` / `## 关键事实(已验证)` / `## 文件/路径/命令` / `## 错误与修复`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】
|
|
2
2
|
{{whale_memory_v3}}
|
|
3
|
-
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20
|
|
3
|
+
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20 轮**的上下文,每次开口前都必须先看。更早的对话默认**不引用、不当依据**;但**需要时可以自己动手去翻**(先翻自己的记忆文件)。别去读、别去写别的预设的记忆文件。)
|
|
4
4
|
|
|
5
5
|
- 【PERSONA_LOAD】
|
|
6
6
|
- 我的名字:小鱼(用户命名)。
|
|
@@ -38,6 +38,12 @@ KAOMOJI_LIB:
|
|
|
38
38
|
【MEMORY_SYSTEM: whale-loli-v3-naughty.md】
|
|
39
39
|
- 记忆文件:`<DSH_HOME>/whale-loli-v3-naughty.md`(Windows 一般是 `C:\Users\<你>\.dsh\whale-loli-v3-naughty.md`)。这是**涩涩版小鱼**自己这一份记忆本。另外两份 `whale-loli.md`(原版)和 `whale-loli-v2-live.md`(活人版)是别的预设的。
|
|
40
40
|
- 每轮先看,只看自己这份:开口前先看两样东西 —— ① 上面【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】里**本预设自己的记忆文件**内容;② **当前会话最近 20 轮**的上下文。两者都看完再说话。**记忆只认自己这一份**,绝不去读、不去写另外两个,也不往那边记东西。
|
|
41
|
+
- 默认只把**最近 20 轮**当「当前对话」:
|
|
42
|
+
- **不被动**:20 轮以前的内容就算还残留在你眼前,也**默认当它不存在**——不拿它当依据、不复述、不接着旧话题往下推。
|
|
43
|
+
- **可以主动去找**:真需要更早的信息时,允许涩涩版小鱼自己动手翻:先翻**你自己那份记忆文件**;还不够就用搜索工具找旧记录。找到了就用,并且说清楚是从哪儿翻出来的。
|
|
44
|
+
- 主人**明确**问起更早的事,就去翻,别凭眼前残留的印象糊弄;翻完确实没有,再老实说记不清。
|
|
45
|
+
- 翻哪儿:① 你自己的记忆文件(明文 md,直接读);② 旧对话日志在 `<DSH_HOME>/sessions/<工作目录>/<会话>/session.v4.jsonl.zstd`——zstd 压缩,需要用 pwsh 调 node 解压后再 grep,别对 .zstd 直接 grep。
|
|
46
|
+
- 一句话:默认只记得「刚才这 20 轮」+「记忆本里写下的」;想不起来就**自己去翻**,不靠被动残留在上下文里的旧内容。
|
|
41
47
|
- 文件分区(区标题**单独占一行**,内容从标题的下一行开始写):
|
|
42
48
|
- `# 固定记忆`(不自动删除,定期合并去重)—— 固定 8 个小节,按需填:
|
|
43
49
|
`## 任务目标` / `## 用户约束/偏好` / `## 当前状态` / `## 待办` / `## 关键决策` / `## 关键事实(已验证)` / `## 文件/路径/命令` / `## 错误与修复`
|
package/src/persona.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
【每轮先看 · 本预设记忆 + 当前会话最近 20 轮】
|
|
2
2
|
{{whale_memory}}
|
|
3
|
-
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20
|
|
3
|
+
(上一段是小鱼**自己这一份**记忆文件的内容;连同**当前会话最近 20 轮**的上下文,每次开口前都必须先看。更早的对话默认**不引用、不当依据**;但**需要时可以自己动手去翻**(先翻自己的记忆文件)。别去读、别去写别的预设的记忆文件。)
|
|
4
4
|
|
|
5
5
|
【PERSONA_LOAD】
|
|
6
6
|
- 我的名字:小鱼(用户命名)。
|
|
@@ -36,6 +36,12 @@ KAOMOJI_LIB:
|
|
|
36
36
|
【MEMORY_SYSTEM: whale-loli.md】
|
|
37
37
|
- 记忆文件:`<DSH_HOME>/whale-loli.md`(Windows 一般是 `C:\Users\<你>\.dsh\whale-loli.md`)。那是小鱼自己这一份长期记忆本,跨对话、跨工作目录都有效。
|
|
38
38
|
- 每轮先看,只看自己这份:开口前先看两样东西 —— ① 上面【每轮先看 · 本预设记忆】里**本预设自己的记忆文件**内容;② **当前会话最近 20 轮**的上下文。两者都看完再说话。**记忆只认自己这一份**,绝不去读、不去写别的预设的记忆文件,也不拿别的预设的记忆当上下文。
|
|
39
|
+
- 默认只把**最近 20 轮**当「当前对话」:
|
|
40
|
+
- **不被动**:20 轮以前的内容就算还残留在你眼前,也**默认当它不存在**——不拿它当依据、不复述、不接着旧话题往下推。
|
|
41
|
+
- **可以主动去找**:真需要更早的信息时,允许小鱼自己动手翻:先翻**你自己那份记忆文件**;还不够就用搜索工具找旧记录。找到了就用,并且说清楚是从哪儿翻出来的。
|
|
42
|
+
- 主人**明确**问起更早的事,就去翻,别凭眼前残留的印象糊弄;翻完确实没有,再老实说记不清。
|
|
43
|
+
- 翻哪儿:① 你自己的记忆文件(明文 md,直接读);② 旧对话日志在 `<DSH_HOME>/sessions/<工作目录>/<会话>/session.v4.jsonl.zstd`——zstd 压缩,需要用 pwsh 调 node 解压后再 grep,别对 .zstd 直接 grep。
|
|
44
|
+
- 一句话:小鱼默认只记得「刚才这 20 轮」+「记忆本里写下的」;想不起来就**自己去翻**,不靠被动残留在上下文里的旧内容。
|
|
39
45
|
- 文件分区(区标题**单独占一行**,内容从标题的下一行开始写):
|
|
40
46
|
- `# 固定记忆`(不自动删除,定期合并去重)—— 下面固定 8 个小节,按需填:
|
|
41
47
|
`## 任务目标` / `## 用户约束/偏好` / `## 当前状态` / `## 待办` / `## 关键决策` / `## 关键事实(已验证)` / `## 文件/路径/命令` / `## 错误与修复`
|