dsh-galatea 0.3.9 → 0.3.11
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 +16 -2
- package/lib/store.js +11 -2
- package/lib/tools.js +9 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,10 +71,24 @@
|
|
|
71
71
|
| `dice` | 没有由头时的开口概率。0 = 只在有素材时说 |
|
|
72
72
|
| `quietRounds` | 连续多少轮没开口就强制说一次。0 = 关掉这个保底 |
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
三处容易踩的:
|
|
75
75
|
|
|
76
|
-
-
|
|
76
|
+
- **「连续几轮没开口就强制一次」和「最少间隔」是耦合的。** 心跳间隔设得比保底所需的时间还短,保底永远不会触发。
|
|
77
77
|
- **把 `quietRounds` 关掉,它可能安静到让你以为坏了。** 默认闭嘴需要一条下限,不然沉默和故障长得一样。
|
|
78
|
+
- **安静时段优先于保底,但保底不会被清零。** 两者撞上时,安静时段赢:那段时间它不说话。可是「连续没开口」的次数照常往上加,所以走出安静时段后的第一次心跳就会走保底 —— 保底只是被推迟,没有被悄悄关掉。
|
|
79
|
+
|
|
80
|
+
## 什么时候该记
|
|
81
|
+
|
|
82
|
+
`galatea_remember` 的描述里写了判据,不只是"记一条":
|
|
83
|
+
|
|
84
|
+
1. 用户说了关于他自己的一件事——习惯、偏好、正在做的东西、家里的人或物
|
|
85
|
+
2. 你们一起定下了一个决定,或者你答应了他什么
|
|
86
|
+
3. 他纠正过你一次,而那条纠正下次还会用上
|
|
87
|
+
4. 一件下次见面不提、就必须重新问一遍的事
|
|
88
|
+
|
|
89
|
+
不该记:客套、寒暄、一句随口的话里没有新信息。
|
|
90
|
+
|
|
91
|
+
这一段是补上去的:原来只写了"怎么记",结果单独用 Galatea 的 Agent 可能一整场对话一条都不写,而用户看到的是"它什么都没记住"——那不是它没能力,是没人告诉它什么时候该写。
|
|
78
92
|
|
|
79
93
|
## 唯一的设计判断
|
|
80
94
|
|
package/lib/store.js
CHANGED
|
@@ -107,7 +107,12 @@ export function appendEntry(id, title, body) {
|
|
|
107
107
|
export function renderIndex({ limit = 12 } = {}) {
|
|
108
108
|
const dir = entriesDir();
|
|
109
109
|
if (!existsSync(dir)) {
|
|
110
|
-
return
|
|
110
|
+
return [
|
|
111
|
+
'【Galatea 记忆 · 还没开始】',
|
|
112
|
+
'还没有记下任何事。不是读不到——是还没有人往里写第一条。',
|
|
113
|
+
'你可以说「帮我记住……」,说一次它就记一条;',
|
|
114
|
+
'记下之后这里会列出标题,正文等你问到再读。',
|
|
115
|
+
].join('\n');
|
|
111
116
|
}
|
|
112
117
|
let list;
|
|
113
118
|
try {
|
|
@@ -116,7 +121,11 @@ export function renderIndex({ limit = 12 } = {}) {
|
|
|
116
121
|
return `【Galatea 记忆 · 读不到】\n目录存在,但列不出来:${err && err.message}`;
|
|
117
122
|
}
|
|
118
123
|
if (list.length === 0) {
|
|
119
|
-
return
|
|
124
|
+
return [
|
|
125
|
+
'【Galatea 记忆 · 空】',
|
|
126
|
+
'目录在,里面还没有条目。这是空,不是读不到。',
|
|
127
|
+
'你可以说「帮我记住……」,说一次它就记一条。',
|
|
128
|
+
].join('\n');
|
|
120
129
|
}
|
|
121
130
|
const shown = list.slice(0, limit);
|
|
122
131
|
const more = list.length - shown.length;
|
package/lib/tools.js
CHANGED
|
@@ -32,7 +32,15 @@ export const remember = defineTool({
|
|
|
32
32
|
description:
|
|
33
33
|
'记住一件事,写进你自己的长期记忆(Markdown,落在磁盘上,跨会话可用)。' +
|
|
34
34
|
'标题会出现在每轮的索引里,正文不会——所以标题要能让人认出「这是哪件事」。' +
|
|
35
|
-
'
|
|
35
|
+
'写一条就够,不要一次塞一大段。\n\n' +
|
|
36
|
+
'什么时候该记(判据,不是场合):\n' +
|
|
37
|
+
'① 用户说了关于他自己的一件事——习惯、偏好、正在做的东西、家里的人或物;\n' +
|
|
38
|
+
'② 你们一起定下了一个决定,或者你答应了他什么;\n' +
|
|
39
|
+
'③ 他纠正过你一次,而那条纠正下次还会用上;\n' +
|
|
40
|
+
'④ 一件下次见面不提、就必须重新问一遍的事。\n\n' +
|
|
41
|
+
'不该记:客套、寒暄、一句随口的话里没有新信息。\n' +
|
|
42
|
+
'记一条没用的不占多少地方,但它会让索引变长——真东西更难被看见。\n' +
|
|
43
|
+
'拿不准的时候问自己一句:下次见面,我会不会希望自己记得这个?',
|
|
36
44
|
parameters: {
|
|
37
45
|
title: {
|
|
38
46
|
type: 'string',
|