koishi-plugin-hds-interlude 0.1.3-beta1 → 0.1.3-beta4
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/BEGINNER_GUIDE.md +7 -5
- package/CONFIGURATION_GUIDE.md +58 -39
- package/README.md +27 -22
- package/command.md +26 -11
- package/docs/AGENCY_WINDOW.md +1 -1
- package/docs/ALTER_SYSTEM.md +1 -1
- package/docs/ARCHITECTURE.md +18 -4
- package/docs/CHANGELOG.md +30 -0
- package/docs/SECURITY.md +3 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +692 -68
- package/lib/meta.d.ts +1 -1
- package/lib/narrator.d.ts +36 -6
- package/lib/service.d.ts +63 -2
- package/lib/types.d.ts +57 -1
- package/package.json +1 -1
package/BEGINNER_GUIDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# HDS Interlude 新手引导
|
|
2
2
|
|
|
3
|
-
适用版本:`0.1.3-
|
|
3
|
+
适用版本:`0.1.3-beta4`
|
|
4
4
|
|
|
5
5
|
HDS Interlude 是 Koishi 的持续叙事聊天插件。插件使用共享主剧本保存角色状态、关系分支、已发生事件、待处理计划和长期记忆。用户消息会进入当前活动场景;主模型在同一次请求中续写已经发生的生活,并决定是否发送、延迟发送或暂不发送消息。实时写作读取一条按时间排序的活动场景记录:最近剧本文字、真实用户消息和已经成功投递的角色消息在同一条线上。剧本引子、场景外近期事实和长期记忆负责更早的历史。
|
|
6
6
|
|
|
@@ -20,10 +20,11 @@ HDS Interlude 是 Koishi 的持续叙事聊天插件。插件使用共享主剧
|
|
|
20
20
|
5. 保存配置后,在已授权私聊中执行:
|
|
21
21
|
|
|
22
22
|
```text
|
|
23
|
-
interlude.
|
|
23
|
+
interlude.doctor
|
|
24
|
+
interlude.story.start
|
|
24
25
|
```
|
|
25
26
|
|
|
26
|
-
Console 页面建议按以下顺序填写:`storyDefaults` → `model` → `onebot` → `sharedStory` → `runtime` → `agency` → `memory` → `alterSystem`。首次测试先完成模型、剧本起点和账号权限;网页观察、Embedding
|
|
27
|
+
Console 页面建议按以下顺序填写:`blindMode`(首次保持关闭)→ `storyDefaults` → `model` → `onebot` → `sharedStory` → `runtime` → `agency` → `memory` → `alterSystem`。首次测试先完成模型、剧本起点和账号权限;网页观察、Embedding、详细日志与失明模式可以之后再开。
|
|
27
28
|
|
|
28
29
|
6. 发送一条普通消息,确认模型调用、日志和消息投递正常。
|
|
29
30
|
|
|
@@ -172,6 +173,7 @@ sharedStory.participantContextLimit: 6
|
|
|
172
173
|
```yaml
|
|
173
174
|
runtime.captureDirectMessages: true
|
|
174
175
|
runtime.autoCreate: true
|
|
176
|
+
onebot.voiceTranscription.enabled: false # 使用 SnowLuma 私聊语音转写时改为 true
|
|
175
177
|
runtime.ignoreCommandMessages: true
|
|
176
178
|
runtime.userMessageDebounceSeconds: 2
|
|
177
179
|
runtime.cancelDelayedRepliesOnUserMessage: true
|
|
@@ -216,8 +218,8 @@ runtime.restWindows[].maxIntervalMinutes: 240
|
|
|
216
218
|
|
|
217
219
|
```yaml
|
|
218
220
|
memory.enabled: true
|
|
219
|
-
memory.sceneEntryThreshold:
|
|
220
|
-
memory.sceneCharacterThreshold:
|
|
221
|
+
memory.sceneEntryThreshold: 16
|
|
222
|
+
memory.sceneCharacterThreshold: 10000
|
|
221
223
|
memory.factLimit: 20
|
|
222
224
|
memory.activeConsequencesEnabled: true
|
|
223
225
|
memory.activeConsequencePromptLimit: 6
|
package/CONFIGURATION_GUIDE.md
CHANGED
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
# HDS Interlude 配置指南
|
|
2
2
|
|
|
3
|
-
适用版本:`0.1.3-
|
|
3
|
+
适用版本:`0.1.3-beta4`
|
|
4
4
|
|
|
5
5
|
第一次安装先看 `BEGINNER_GUIDE.md`。本文件严格按照 Koishi Console 的显示顺序说明当前字段;旧版本已经移除或隐藏的字段集中列在末尾,不再混入正常配置流程。
|
|
6
6
|
|
|
7
7
|
## Console 顺序
|
|
8
8
|
|
|
9
|
-
1. `
|
|
10
|
-
2. `
|
|
11
|
-
3. `
|
|
12
|
-
4. `
|
|
13
|
-
5. `
|
|
14
|
-
6. `
|
|
15
|
-
7. `
|
|
16
|
-
8. `
|
|
17
|
-
9. `
|
|
18
|
-
10. `
|
|
9
|
+
1. `blindMode`:失明模式
|
|
10
|
+
2. `storyDefaults`:剧本起点
|
|
11
|
+
3. `model`:模型与服务商
|
|
12
|
+
4. `onebot`:OneBot / NapCat 权限
|
|
13
|
+
5. `sharedStory`:共享剧本
|
|
14
|
+
6. `runtime`:对话与时间
|
|
15
|
+
7. `agency`:主体行动窗口
|
|
16
|
+
8. `memory`:连续性与记忆
|
|
17
|
+
9. `alterSystem`:临时氛围偏移
|
|
18
|
+
10. `browser`:只读网页观察
|
|
19
|
+
11. `logging`:日志与隐私
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
首次测试先完成 `storyDefaults`、`model`、`onebot`、`sharedStory` 和 `runtime`;`blindMode` 保持关闭。Embedding、网页观察、主动联系和内容日志应在基础私聊稳定后逐项开启。
|
|
21
22
|
|
|
22
|
-
## 1.
|
|
23
|
+
## 1. blindMode:失明模式
|
|
24
|
+
|
|
25
|
+
开启 `blindMode.enabled` 后,HDSI 不注册自己的管理指令,并静默拦截当前 Koishi 实例中所有已经识别的指令;普通聊天仍会进入叙事。HDSI 的普通运行日志、错误详情和消息预览都会隐藏,只按 `healthReportMinutes` 输出一次不含故事或账户内容的运行状态心跳;其它插件仍遵循各自的日志配置。
|
|
26
|
+
|
|
27
|
+
它适合追求高度沉浸感,并且模型、账号白名单和故事档案已经稳定正常的环境。关闭此模式需要在 Console 修改配置并重载插件;失明模式开启期间无法通过聊天指令恢复管理能力。旧 `blackBox` 配置仍可兼容读取,但 Console 只显示 `blindMode`。
|
|
28
|
+
|
|
29
|
+
## 2. storyDefaults:剧本起点
|
|
23
30
|
|
|
24
31
|
这些字段只在创建新主剧本时写入 Canon。修改 Console 不会自动重写已经存在的故事。
|
|
25
32
|
|
|
@@ -27,6 +34,7 @@
|
|
|
27
34
|
| --- | --- |
|
|
28
35
|
| `characterName` | 主角名称。 |
|
|
29
36
|
| `characterProfile` | 主角身份、性格、作息、习惯、压力和行为边界。 |
|
|
37
|
+
| `perspective` | 主角个体价值观 / 看待世界的方式。它是独立于 Canon 的外壳人格层:只在相关事件中自然影响判断,不是剧情主题、道德说教或逐话题审查。长期剧情可形成 `perspective` overlay。 |
|
|
30
38
|
| `userProfile` | 没有账号专属资料时使用的默认用户背景。 |
|
|
31
39
|
| `relationship` | 新参与者与主角的默认初始关系。 |
|
|
32
40
|
| `world` | 时间、地点、社会与现实规则。 |
|
|
@@ -35,13 +43,15 @@
|
|
|
35
43
|
| `style` | 当前故事文风,优先级高于全局 `model.stylePrompt`。 |
|
|
36
44
|
| `timezone` | IANA 时区,例如 `Asia/Shanghai`。主模型以该时区生成权威 `nowLocal`、当前时段和日照预期。 |
|
|
37
45
|
|
|
38
|
-
|
|
46
|
+
小幅补充无需维护。若大幅改变角色、Perspective、关系或世界前提,保存后执行对应的 `interlude.overlay.clear character|perspective|relationship|world`,避免旧 Overlay 与当前设定冲突。
|
|
47
|
+
|
|
48
|
+
`perspective` 是独立于 Canon 的主角外壳人格层,不会重写 `characterProfile`。Console 的 `storyDefaults.perspective` 会写入新主剧本;已有故事可通过 `interlude.setup {"perspective":"..."}` 一次性设置基础 Perspective,再让长期剧情形成其 overlay。
|
|
39
49
|
|
|
40
50
|
重载和长间隔不会沿用旧剧本中的钟点描述:当前 `nowLocal` 始终优先。时区无效时运行时回退到 UTC,因此发现上午/下午错误时应先检查这里是否为有效 IANA 名称。
|
|
41
51
|
|
|
42
|
-
##
|
|
52
|
+
## 3. model:模型与服务商
|
|
43
53
|
|
|
44
|
-
###
|
|
54
|
+
### 3.1 连接顺序
|
|
45
55
|
|
|
46
56
|
1. 将 `mode` 设为 `openai-compatible`。
|
|
47
57
|
2. 在 `providers` 添加服务商和 API Key。
|
|
@@ -50,7 +60,7 @@
|
|
|
50
60
|
|
|
51
61
|
`fallback` 不调用远程模型,只适合验证插件、数据库和命令是否安装成功。
|
|
52
62
|
|
|
53
|
-
###
|
|
63
|
+
### 3.2 providers
|
|
54
64
|
|
|
55
65
|
| 字段 | 说明 |
|
|
56
66
|
| --- | --- |
|
|
@@ -65,7 +75,7 @@
|
|
|
65
75
|
| `responseFormat` | 支持 JSON mode 时使用 `json-object`;否则用 `prompt-only`。 |
|
|
66
76
|
| `extraHeaders` / `extraBody` | 服务商明确要求时填写 JSON 对象。 |
|
|
67
77
|
|
|
68
|
-
###
|
|
78
|
+
### 3.3 models 与主叙事
|
|
69
79
|
|
|
70
80
|
`models` 的每一行包含 `id`、`label`、`enabled`、`providerId`、真实模型名、最大输出、超时和响应格式。专项功能填写的是预设 `id`,不是展示名称。
|
|
71
81
|
|
|
@@ -78,7 +88,7 @@
|
|
|
78
88
|
- `mainTimeout`:`0` 使用预设或服务商值
|
|
79
89
|
- `mainResponseFormat`
|
|
80
90
|
|
|
81
|
-
###
|
|
91
|
+
### 3.4 failover 与提示词
|
|
82
92
|
|
|
83
93
|
`failover.enabled` 控制失败切换;`strategy` 可选按顺序或轮询;`maxAttemptsPerProvider` 控制单服务尝试次数;`cooldownMinutes` 控制失败后的临时跳过。
|
|
84
94
|
|
|
@@ -89,7 +99,7 @@
|
|
|
89
99
|
- `fixedPrompt`:所有故事通用的长期约束。
|
|
90
100
|
- `stylePrompt`:全局文风。
|
|
91
101
|
|
|
92
|
-
###
|
|
102
|
+
### 3.5 vision、compaction、embedding
|
|
93
103
|
|
|
94
104
|
- `vision.enabled`:把当前私聊图片作为原生多模态输入;模型必须支持视觉。
|
|
95
105
|
- `compaction`:后台整理已发生剧本、事实和状态提案。可独立选择模型,并配置温度、top-p、输出、超时、响应格式和压缩提示词。
|
|
@@ -97,11 +107,11 @@
|
|
|
97
107
|
|
|
98
108
|
Embedding 地址留空时,插件会尝试从标准 `/chat/completions` 地址推导 `/embeddings`。非标准网关应填写完整地址。
|
|
99
109
|
|
|
100
|
-
##
|
|
110
|
+
## 4. onebot:OneBot / NapCat 权限
|
|
101
111
|
|
|
102
112
|
`onebot.enabled=true` 后采用显式白名单:`botAccounts` 或 `userAccounts` 为空都会拒绝对应账号。
|
|
103
113
|
|
|
104
|
-
###
|
|
114
|
+
### 4.1 botAccounts 与 userAccounts
|
|
105
115
|
|
|
106
116
|
- `botAccounts`:机器人 QQ、备注、启用状态。
|
|
107
117
|
- `userAccounts`:用户 QQ、主角称呼、稳定人物 ID、人物资料、初始关系、启用状态。
|
|
@@ -109,7 +119,7 @@ Embedding 地址留空时,插件会尝试从标准 `/chat/completions` 地址
|
|
|
109
119
|
|
|
110
120
|
同一现实人物的多个账号可复用 `personId`。不同人物必须分别填写资料和关系,不能把所有 QQ 当作同一关系分支。
|
|
111
121
|
|
|
112
|
-
###
|
|
122
|
+
### 4.2 groupChats
|
|
113
123
|
|
|
114
124
|
| 字段 | 说明 |
|
|
115
125
|
| --- | --- |
|
|
@@ -123,7 +133,16 @@ Embedding 地址留空时,插件会尝试从标准 `/chat/completions` 地址
|
|
|
123
133
|
|
|
124
134
|
群聊不再调用独立快速筛选模型。满足入口规则的消息在合并后直接交给主叙事,由主叙事决定是否输出 `groupReply`。
|
|
125
135
|
|
|
126
|
-
|
|
136
|
+
### 4.3 voiceTranscription:SnowLuma 私聊语音转写
|
|
137
|
+
|
|
138
|
+
| 字段 | 默认值 | 说明 |
|
|
139
|
+
| --- | --- | --- |
|
|
140
|
+
| `enabled` | `false` | 启用 SnowLuma `fetch_ptt_text`。仅处理当前私聊中的 QQ `record` 语音。 |
|
|
141
|
+
| `timeoutMs` | `20000` | 转写最大等待时间;超时后仍保留语音事实并继续本轮。 |
|
|
142
|
+
|
|
143
|
+
转写成功后,主模型收到的用户事件会带有 `[用户语音转写]` 标记,并和当前文本、图片一起构成同一个回合。该功能需要 SnowLuma 支持原始 OneBot `fetch_ptt_text` 动作;NapCat 或其它实现不支持时会安全降级。它不把音频文件或 base64 写入 HDSI 数据库。
|
|
144
|
+
|
|
145
|
+
## 5. sharedStory:共享剧本
|
|
127
146
|
|
|
128
147
|
当前运行时固定为“同一机器人账号一个活动主剧本”,因此不再显示旧版 `enabled` 开关。
|
|
129
148
|
|
|
@@ -136,14 +155,14 @@ Embedding 地址留空时,插件会尝试从标准 `/chat/completions` 地址
|
|
|
136
155
|
| `participantContextLimit` | 单次请求携带的其它参与者摘要数量。 |
|
|
137
156
|
| `managerAccounts` | 有权执行全局管理命令的 QQ;空表表示所有已授权用户。 |
|
|
138
157
|
|
|
139
|
-
##
|
|
158
|
+
## 6. runtime:对话与时间
|
|
140
159
|
|
|
141
|
-
###
|
|
160
|
+
### 6.1 消息合并、回复和失败恢复
|
|
142
161
|
|
|
143
162
|
| 字段 | 说明 |
|
|
144
163
|
| --- | --- |
|
|
145
164
|
| `captureDirectMessages` | 是否接管私聊。 |
|
|
146
|
-
| `autoCreate` |
|
|
165
|
+
| `autoCreate` | 没有故事时是否从当前 Console 档案自动启动;关闭时先执行 `interlude.doctor`,再由管理员执行 `interlude.story.start`。 |
|
|
147
166
|
| `ignoreCommandMessages` | 防止管理命令进入剧本。 |
|
|
148
167
|
| `userMessageDebounceSeconds` | 合并连续私聊的静默等待时间,默认 2 秒。 |
|
|
149
168
|
| `narrativeRetryDelaySeconds` / `narrativeRetryMaxAttempts` | 叙事服务失败后的重试节奏。 |
|
|
@@ -151,13 +170,13 @@ Embedding 地址留空时,插件会尝试从标准 `/chat/completions` 地址
|
|
|
151
170
|
| `minimumDelayedReplySeconds` / `maximumDelayedReplyMinutes` | 模型允许计划的延迟范围。 |
|
|
152
171
|
| `maxScriptCharacters` / `maxMessageCharacters` | 单回合剧本和单条可见消息的字符上限。 |
|
|
153
172
|
|
|
154
|
-
###
|
|
173
|
+
### 6.2 分段消息
|
|
155
174
|
|
|
156
175
|
`splitReplyMessages` 开启后,模型可以用 `messageSeparator`(默认 `<sep/>`)拆分聊天气泡。`typingBaseDelaySeconds`、`typingCharactersPerSecond` 和 `typingMaxDelaySeconds` 控制后续气泡的模拟输入时间。
|
|
157
176
|
|
|
158
177
|
主模型尚未提交第一条回复时,新消息会废弃旧请求,并把旧、新消息合并后重新写作,不再受固定秒数窗口限制。第一条回复已经提交后,新消息会取消剩余分段;未发送文字以 `interruptedOutgoingDrafts` 进入替代提示词,表示主角想发送但被新消息打断,不能视为已送达内容。
|
|
159
178
|
|
|
160
|
-
###
|
|
179
|
+
### 6.3 自动生活和主动联系
|
|
161
180
|
|
|
162
181
|
| 字段 | 说明 |
|
|
163
182
|
| --- | --- |
|
|
@@ -171,7 +190,7 @@ Embedding 地址留空时,插件会尝试从标准 `/chat/completions` 地址
|
|
|
171
190
|
| `proactiveWillingnessThreshold` | 主模型主动联系意愿门槛。 |
|
|
172
191
|
| `contextEntryLimit` / `memoryLimit` | 主叙事携带的近期条目和长期事实数量。 |
|
|
173
192
|
|
|
174
|
-
##
|
|
193
|
+
## 7. agency:主体行动窗口
|
|
175
194
|
|
|
176
195
|
Agency Window 只描述角色能否采取外部联系行动的现实条件,不描述情绪、关系阶段或联系风格。
|
|
177
196
|
|
|
@@ -186,9 +205,9 @@ Agency Window 包含 `activityLoad`、`privacy` 和 `deviceAccess`。自动生
|
|
|
186
205
|
|
|
187
206
|
`runtime.allowProactiveMessages=false` 时 Agency 不产生可见联系。`proactiveWillingnessThreshold`、白名单和单回合动作上限仍然是最终安全边界。Agency 不读取 Alter 数值,也不会影响文风。
|
|
188
207
|
|
|
189
|
-
##
|
|
208
|
+
## 8. memory:连续性与记忆
|
|
190
209
|
|
|
191
|
-
###
|
|
210
|
+
### 8.1 整理触发和预算
|
|
192
211
|
|
|
193
212
|
- `enabled`
|
|
194
213
|
- `backgroundIntervalMinutes`
|
|
@@ -199,13 +218,13 @@ Agency Window 包含 `activityLoad`、`privacy` 和 `deviceAccess`。自动生
|
|
|
199
218
|
- `factContentCharacters`
|
|
200
219
|
- `maxFactsPerStory` / `maxStoriesPerCompactionRun`
|
|
201
220
|
|
|
202
|
-
|
|
221
|
+
近期使用原始剧本;更早内容通过场景、剧情弧线和长期事实压缩。默认在 16 条未压缩条目或 10000 个字符达到其一时整理,短对话会保留更宽的连续回合缓冲。压缩只处理已经发生的内容,不会制造未来事件。
|
|
203
222
|
|
|
204
|
-
###
|
|
223
|
+
### 8.2 事实排序
|
|
205
224
|
|
|
206
225
|
`factImportanceWeight`、`factConfidenceWeight`、`factRecencyWeight`、`semanticWeight` 和 `unresolvedWeight` 共同决定旧事实进入主提示词的顺序。没有可用 Embedding 时语义分数自动退化为零。
|
|
207
226
|
|
|
208
|
-
###
|
|
227
|
+
### 8.3 剧情余波
|
|
209
228
|
|
|
210
229
|
- `activeConsequencesEnabled`
|
|
211
230
|
- `activeConsequencePromptLimit`
|
|
@@ -214,7 +233,7 @@ Agency Window 包含 `activityLoad`、`privacy` 和 `deviceAccess`。自动生
|
|
|
214
233
|
|
|
215
234
|
余波保存已经发生事件的短期影响,不是永久人格标签,也不会自行触发额外写作。
|
|
216
235
|
|
|
217
|
-
###
|
|
236
|
+
### 8.4 Overlay 演化与压缩
|
|
218
237
|
|
|
219
238
|
普通状态提案需满足置信度、至少三个独立剧本回合、至少两个日期以及同路径冷却。相关字段包括:
|
|
220
239
|
|
|
@@ -229,7 +248,7 @@ Agency Window 包含 `activityLoad`、`privacy` 和 `deviceAccess`。自动生
|
|
|
229
248
|
|
|
230
249
|
Overlay 压缩字段包括 `overlayCompressionEnabled`、近期保留天数、周/月窗口和摘要字符上限。管理员可使用 `interlude.overlay.status`、`interlude.overlay.compact` 和 `interlude.overlay.clear` 检查或维护。
|
|
231
250
|
|
|
232
|
-
##
|
|
251
|
+
## 9. alterSystem:临时氛围偏移
|
|
233
252
|
|
|
234
253
|
Alter 只衡量本轮新事件对整体氛围造成的净变化:正数偏严肃,负数偏轻松,范围 `-5..5`。
|
|
235
254
|
|
|
@@ -247,7 +266,7 @@ Alter 只衡量本轮新事件对整体氛围造成的净变化:正数偏严
|
|
|
247
266
|
|
|
248
267
|
达到阈值后,本轮先完成剧本、状态和可见消息;侧端分析在同一故事队列中后台运行,不阻塞当前回复。失败时保留累计值并进入五分钟冷却。完整算法见 `docs/ALTER_SYSTEM.md`。
|
|
249
268
|
|
|
250
|
-
##
|
|
269
|
+
## 10. browser:只读网页观察
|
|
251
270
|
|
|
252
271
|
需要同时启用 Koishi Puppeteer。插件只允许搜索或访问公开 HTTP(S) 页面,不登录、不填表、不下载、不发布内容,并拒绝 localhost、私网和不安全协议。
|
|
253
272
|
|
|
@@ -266,7 +285,7 @@ Alter 只衡量本轮新事件对整体氛围造成的净变化:正数偏严
|
|
|
266
285
|
|
|
267
286
|
`allow-immediate` 会为少数私聊额外执行一次观察并重新请求主叙事,因此延迟和费用都更高。首次测试使用 `deferred-only`。
|
|
268
287
|
|
|
269
|
-
##
|
|
288
|
+
## 11. logging:日志与隐私
|
|
270
289
|
|
|
271
290
|
| 字段 | 说明 |
|
|
272
291
|
| --- | --- |
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
HDS Interlude 是一个面向 Koishi 一对一与多参与者场景的持续叙事聊天框架。它让用户消息、角色的沉默、延迟回复、主动联系和自动推进,都成为同一段生活剧本中自然可见的部分,并由一次主叙事写作连贯地决定。
|
|
6
6
|
|
|
7
|
-
当前版本:`0.1.3-
|
|
7
|
+
当前版本:`0.1.3-beta4`(沉浸式失明模式与结构化投递一致性增强预发布版)。如需生产环境,建议先在独立 Koishi 实例中验证后再升级。
|
|
8
8
|
|
|
9
9
|
## 文档导航
|
|
10
10
|
|
|
@@ -38,16 +38,11 @@ HDSI 以主角为中心维护持续剧情状态:角色拥有日程、关系、
|
|
|
38
38
|
|
|
39
39
|
当前用户事件在本轮以“当前事件”身份出现一次;自动推进则以纯粹的生活推进展开。这个边界让旧消息保持历史位置,也让尚未投递的角色台词始终停留在“未说出口”的状态。
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### 固定阶段,连续生活
|
|
42
42
|
|
|
43
|
-
HDSI
|
|
43
|
+
HDSI 不以时间间隔切换写作尺度,而是按当前事件进入四种明确阶段:用户消息、对话后续、到期意图与独立生活推进。每一轮都从故事游标补写已经经过的时间,并以当前 `nowLocal` 结束;调度间隔只决定何时唤醒写作,不会预设剧情的密度、情绪或篇幅。
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
- **短间隔回合**:补充手头事务、微小情绪与对话余波。
|
|
47
|
-
- **中间隔回合**:允许日程、配角互动和未完成事项继续发展。
|
|
48
|
-
- **长间隔 / 自动推进**:补写角色已经经历的生活,并在有现实动机时产生延迟回复、提醒或主动联系。
|
|
49
|
-
|
|
50
|
-
时间尺度由真实时间差决定,剧情会沿着已经过去的时间自然补写,并把未来保留为尚待发生的可能性。
|
|
45
|
+
这让同一段生活能自然容纳即时对话、被打断的输入、承诺到期、安静的对话余波和较长的自动推进。未来内容始终以意图、计划或延迟动作保存,已经送达的私聊则同时保留在剧本与结构化投递记录中。
|
|
51
46
|
|
|
52
47
|
每次主请求都会同时发送 UTC 与故事本地时间,并将 `nowLocal` 的日期、时分秒、星期、时段和日照预期作为权威端点。重载或长间隔后的 continuity 用于衔接上次状态,当前时钟则为新一轮剧情提供准确锚点;例如 `Asia/Shanghai` 的 16:00 会按仍有日光的下午处理。
|
|
53
48
|
|
|
@@ -135,6 +130,7 @@ HDSI 按用途分层组织信息,让每次请求获得恰当的连续性,同
|
|
|
135
130
|
| 剧情引子 / 近期事实 | 正在处理的事、最近生活细节、关系余波和下一步线索。 |
|
|
136
131
|
| 长期事实 | 承诺、重要事件、稳定世界事实和未解决事项。 |
|
|
137
132
|
| Overlay | 角色性格、世界状态、关系等在长期剧情中渐进形成的非破坏性变化。 |
|
|
133
|
+
| Perspective | 主角独立于 Canon 的个体价值观 / 看待世界的方式;其 overlay 只在相关情境中细微影响判断。 |
|
|
138
134
|
| 意图 | 延迟回复、提醒、主动联系或后续处理计划。 |
|
|
139
135
|
|
|
140
136
|
较早的场景和 Overlay 会在后台分档压缩:保留因果、承诺、大事件与关系变化,减少重复性叙述。压缩以异步整理的方式运行,与用户回合的主叙事调用保持轻量协作。
|
|
@@ -145,6 +141,7 @@ HDSI 按用途分层组织信息,让每次请求获得恰当的连续性,同
|
|
|
145
141
|
|
|
146
142
|
```text
|
|
147
143
|
interlude.overlay.clear character
|
|
144
|
+
interlude.overlay.clear perspective
|
|
148
145
|
interlude.overlay.clear relationship
|
|
149
146
|
interlude.overlay.clear world
|
|
150
147
|
```
|
|
@@ -234,6 +231,10 @@ OneBot 模式采用显式白名单:启用后,绑定的机器人 QQ 账号和
|
|
|
234
231
|
|
|
235
232
|
动态 GIF、动态 WebP 与 APNG 可在 Puppeteer 可用时抽取代表帧后发送;安全读取条件不足时会跳过该图片。图片二进制保持在剧本、记忆与数据库之外,模型只接收已成功加载的视觉内容。
|
|
236
233
|
|
|
234
|
+
### QQ 语音转写(SnowLuma)
|
|
235
|
+
|
|
236
|
+
开启 `onebot.voiceTranscription.enabled` 后,SnowLuma 的私聊 `record` 语音会先通过 `fetch_ptt_text` 转为文字,再与同一条消息中的文字、图片合并为一个用户事件。转写失败、语音未进入 SnowLuma 缓存或当前 OneBot 实现不支持该动作时,插件仍会记录“收到未转写语音”的事实并继续处理;音频二进制与转写请求不会写入 HDSI 数据库。
|
|
237
|
+
|
|
237
238
|
### 网页观察
|
|
238
239
|
|
|
239
240
|
可选 Puppeteer 服务允许角色在剧情确有需要时请求有限的网页观察。插件通过协议、页面数量、内容长度与超时边界,提取公开页面文本作为本轮写作参考;网页观察聚焦于安全、有限的公开信息读取。
|
|
@@ -255,13 +256,13 @@ npm install koishi-plugin-hds-interlude@beta
|
|
|
255
256
|
使用本地预发布包时,可在 Koishi 实例目录执行:
|
|
256
257
|
|
|
257
258
|
```bash
|
|
258
|
-
npm install /absolute/path/to/koishi-plugin-hds-interlude-0.1.3-
|
|
259
|
+
npm install /absolute/path/to/koishi-plugin-hds-interlude-0.1.3-beta4.tgz
|
|
259
260
|
```
|
|
260
261
|
|
|
261
262
|
Windows 示例:
|
|
262
263
|
|
|
263
264
|
```powershell
|
|
264
|
-
npm install C:\dev\HDS-Interlude\plugins\hds-interlude\release\koishi-plugin-hds-interlude-0.1.3-
|
|
265
|
+
npm install C:\dev\HDS-Interlude\plugins\hds-interlude\release\koishi-plugin-hds-interlude-0.1.3-beta4.tgz
|
|
265
266
|
```
|
|
266
267
|
|
|
267
268
|
安装后重新加载 Koishi,再在 Console 启用插件。
|
|
@@ -282,14 +283,15 @@ OneBot / NapCat 未启动时可能出现 `ECONNREFUSED`,表示适配器正在
|
|
|
282
283
|
|
|
283
284
|
建议按以下顺序配置,以更快建立可验证的互动闭环:
|
|
284
285
|
|
|
285
|
-
1.
|
|
286
|
-
2.
|
|
287
|
-
3.
|
|
288
|
-
4.
|
|
289
|
-
5.
|
|
290
|
-
6.
|
|
291
|
-
7.
|
|
292
|
-
8.
|
|
286
|
+
1. **失明模式**:首次配置保持关闭;稳定运行后可开启以获得无命令、极少 HDSI 日志的沉浸式对话。
|
|
287
|
+
2. **基础设定**:主角、世界、配角、叙事风格、默认关系。
|
|
288
|
+
3. **模型中心**:先添加服务提供商,再添加可复用模型预设;主叙事、压缩、Embedding 和 Alter 分析按需选择模型预设。
|
|
289
|
+
4. **平台控制**:启用 OneBot 后填写机器人 QQ、私聊用户白名单;如需群聊,再添加群白名单。
|
|
290
|
+
5. **剧情节奏**:连续消息合并、自动推进、休息时段、延迟消息和主动联系意愿阈值。
|
|
291
|
+
6. **Agency Window**:日程负荷、隐私、设备和主动联系重查边界。
|
|
292
|
+
7. **记忆与上下文**:场景预算、压缩阈值、长期事实、Embedding 与 Overlay 整理策略。
|
|
293
|
+
8. **Alter System**:先使用默认动态阈值和权重;需要时单独选择低成本分析模型。
|
|
294
|
+
9. **可选能力**:视觉、Puppeteer、网页观察、日志级别和日志内容开关。
|
|
293
295
|
|
|
294
296
|
所有字段的解释、默认值和调整建议见 [配置说明](CONFIGURATION_GUIDE.md)。首次测试可直接跟随 [新手引导](BEGINNER_GUIDE.md)。
|
|
295
297
|
|
|
@@ -309,7 +311,7 @@ OneBot / NapCat 未启动时可能出现 `ECONNREFUSED`,表示适配器正在
|
|
|
309
311
|
| `interlude.memory.intents [limit]` | 查看延迟回复、提醒等待处理意图。 |
|
|
310
312
|
| `interlude.overlay.status` | 查看 Overlay 与候选状态。 |
|
|
311
313
|
| `interlude.overlay.compact` | 手动整理 Overlay。 |
|
|
312
|
-
| `interlude.overlay.clear <character\|relationship\|world\|all>` | 清除指定 Overlay 层。 |
|
|
314
|
+
| `interlude.overlay.clear <character\|perspective\|relationship\|world\|all>` | 清除指定 Overlay 层。 |
|
|
313
315
|
| `interlude.purge.range <from> <to>` | 删除指定时间段的剧本与相关数据。 |
|
|
314
316
|
| `interlude.purge.platform <platform>` | 删除指定平台的数据,例如 `sandbox` 或 `onebot`。 |
|
|
315
317
|
| `interlude.purge.all` | 删除全部 HDSI 剧本和记忆。 |
|
|
@@ -324,6 +326,10 @@ interlude.purge.range 2026-08-18T13:00:00+08:00 2026-08-19T02:00:00+08:00
|
|
|
324
326
|
|
|
325
327
|
## 日志与排查
|
|
326
328
|
|
|
329
|
+
### 失明模式
|
|
330
|
+
|
|
331
|
+
`blindMode.enabled=true` 会关闭 HDSI 管理指令、静默拦截当前 Koishi 实例中已解析的命令,并隐藏 HDSI 的普通运行日志与错误详情;系统只按 `blindMode.healthReportMinutes` 输出不含故事或账号内容的健康心跳。它适合希望对话保持高度沉浸、且模型与账号配置已经稳定正常的场景。失明模式只收束 HDSI 自身日志;其它插件仍遵循各自的日志配置。需要恢复管理时,请在 Console 关闭该开关并重载插件。
|
|
332
|
+
|
|
327
333
|
默认 `layered` 日志使用阶段标题、固定颜文字和树形字段展示一次任务的进展。`logging.colorTheme=dark` 使用深色界面适配的柔亮蓝绿、粉紫和暖金;`light` 使用白底清晰的深蓝、墨绿、深紫和赭金。Koishi Console 的主题由用户选择,因此可在插件中手动匹配;`logging.colors` 与 `logging.kaomoji` 也可按运维偏好切换。
|
|
328
334
|
|
|
329
335
|
```text
|
|
@@ -342,7 +348,7 @@ interlude.purge.range 2026-08-18T13:00:00+08:00 2026-08-19T02:00:00+08:00
|
|
|
342
348
|
|
|
343
349
|
建议排查顺序:
|
|
344
350
|
|
|
345
|
-
1.
|
|
351
|
+
1. 首次启动前使用 `interlude.doctor` 确认 Console 档案、白名单和模型是否已经就绪;关闭自动创建时再执行 `interlude.story.start`。
|
|
346
352
|
2. 使用 `interlude.context` 核对场景摘要、参与者状态与长期事实是否正确。
|
|
347
353
|
3. 查看模型调用日志,确认调用的提供商、模型预设和结构化输出是否成功。
|
|
348
354
|
4. 发生 SQLite `disk I/O error` 时,先确认 Koishi 数据库文件未被同步软件、备份软件、杀毒扫描或第二个 Koishi 进程占用;插件会对短暂失败进行串行化和退避重试,但无法修复外部文件锁或磁盘问题。
|
|
@@ -364,4 +370,3 @@ npm test
|
|
|
364
370
|
```
|
|
365
371
|
|
|
366
372
|
构建产物位于 `plugins/hds-interlude/lib`。发布前建议运行构建、测试和 `npm pack --dry-run`,确认包内包含 `lib` 与需要分发的文档。
|
|
367
|
-
|
package/command.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# HDS Interlude 管理员指令
|
|
2
2
|
|
|
3
|
-
适用版本:`0.1.3-
|
|
3
|
+
适用版本:`0.1.3-beta4`
|
|
4
4
|
## 使用前先看这里
|
|
5
5
|
|
|
6
6
|
- 新手安装和首次测试:`BEGINNER_GUIDE.md`
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
本文档说明 HDS Interlude 当前提供的 Koishi 指令。指令默认只在私聊中使用,并且会经过 OneBot/NapCat 白名单检查。
|
|
13
13
|
|
|
14
|
+
`blindMode.enabled=true` 时,本页全部指令以及当前 Koishi 实例的其它已解析指令都会被静默屏蔽;请在 Console 关闭失明模式并重载插件后再使用管理功能。
|
|
15
|
+
|
|
14
16
|
## 权限模型
|
|
15
17
|
|
|
16
18
|
管理员权限由 `sharedStory.managerAccounts` 控制:
|
|
@@ -43,7 +45,9 @@ sharedStory:
|
|
|
43
45
|
|
|
44
46
|
| 指令 | 权限 | 用途 |
|
|
45
47
|
| --- | --- | --- |
|
|
46
|
-
| `interlude.
|
|
48
|
+
| `interlude.doctor` | 白名单用户 | 检查当前 Console 档案、白名单、时区与主模型是否适合启动 |
|
|
49
|
+
| `interlude.story.start` | 管理员 | 确认后从 Console 档案启动第一份运行中故事 |
|
|
50
|
+
| `interlude.init [旧名称]` | 管理员 | 兼容别名;名称参数已忽略,请改用 `interlude.story.start` |
|
|
47
51
|
| `interlude.status` | 白名单用户 | 查看故事状态、运行游标、主动消息与 Agency Window |
|
|
48
52
|
| `interlude.setup <JSON>` | 管理员 | 修改当前故事的基础设定(Canon) |
|
|
49
53
|
| `interlude.pause` | 管理员 | 暂停自动推进、延迟处理和主动处理 |
|
|
@@ -62,7 +66,7 @@ sharedStory:
|
|
|
62
66
|
| `interlude.memory.cancel <编号>` | 管理员 | 取消一条等待中的意图 |
|
|
63
67
|
| `interlude.memory.patches [条数]` | 管理员 | 查看人物、关系和世界设定的演化提案 |
|
|
64
68
|
| `interlude.memory.reject <编号>` | 管理员 | 拒绝尚未应用的演化提案 |
|
|
65
|
-
| `interlude.overlay.clear <部分>` | 管理员 | 询问 y/n 后,只清理 character、relationship、world 或 all 对应的设定 overlay |
|
|
69
|
+
| `interlude.overlay.clear <部分>` | 管理员 | 询问 y/n 后,只清理 character、perspective、relationship、world 或 all 对应的设定 overlay |
|
|
66
70
|
| `interlude.overlay.status` | 管理员 | 查看当前 overlay、待积累提案和压缩归档数量 |
|
|
67
71
|
| `interlude.overlay.compact` | 管理员 | 只合并和压缩已应用的 overlay,不整理普通剧本记忆 |
|
|
68
72
|
| `interlude.database.clear` | 管理员 | 询问 y/n 后清空 HDSI 自有 SQLite 表;不会删除 Koishi 或其它插件数据 |
|
|
@@ -72,15 +76,25 @@ sharedStory:
|
|
|
72
76
|
|
|
73
77
|
## 详细用法
|
|
74
78
|
|
|
75
|
-
### `interlude.
|
|
79
|
+
### `interlude.doctor`
|
|
80
|
+
|
|
81
|
+
只读检查当前 Console 档案,不调用模型、不创建故事、不显示密钥。
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
interlude.doctor
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
它会展示主角、角色设定、Perspective、世界、时区、主模型、白名单、自动创建开关和已有故事状态。出现阻断项时先回到 Console 修正。
|
|
88
|
+
|
|
89
|
+
### `interlude.story.start`
|
|
76
90
|
|
|
77
|
-
|
|
91
|
+
从当前 Console 档案手动启动第一份运行中故事。命令会先展示档案预览并要求 `y/n` 确认;它不接受角色名或其它单项配置。
|
|
78
92
|
|
|
79
93
|
```text
|
|
80
|
-
interlude.
|
|
94
|
+
interlude.story.start
|
|
81
95
|
```
|
|
82
96
|
|
|
83
|
-
|
|
97
|
+
已有活动主剧本时不会覆盖或重建。`interlude.init` 保留为兼容别名;旧的名称参数会被忽略并提示迁移。
|
|
84
98
|
|
|
85
99
|
### `interlude.status`
|
|
86
100
|
|
|
@@ -117,7 +131,7 @@ interlude.setup {"world":"2026年上海的现实生活","style":"克制、具体
|
|
|
117
131
|
}
|
|
118
132
|
```
|
|
119
133
|
|
|
120
|
-
|
|
134
|
+
此指令是管理员的高级 JSON 修补工具,不属于首次配置流程;它修改当前故事设定,不会删除原始剧本、长期事实或关系分支。若只想改变某个 QQ 对应的人物资料,应修改 Console 中的 `onebot.userAccounts`。
|
|
121
135
|
|
|
122
136
|
### `interlude.pause` / `interlude.resume`
|
|
123
137
|
|
|
@@ -275,6 +289,7 @@ interlude.memory.reject 8
|
|
|
275
289
|
|
|
276
290
|
```text
|
|
277
291
|
interlude.overlay.clear character
|
|
292
|
+
interlude.overlay.clear perspective
|
|
278
293
|
interlude.overlay.clear relationship
|
|
279
294
|
interlude.overlay.clear world
|
|
280
295
|
interlude.overlay.clear all
|
|
@@ -365,8 +380,8 @@ interlude.purge.range 2026-08-14T09:00:00+08:00 2026-08-14T10:00:00+08:00
|
|
|
365
380
|
|
|
366
381
|
1. 在 Console 中配置 `model.providers`、`storyDefaults` 和 OneBot 白名单。
|
|
367
382
|
2. 将管理员 QQ 加入 `sharedStory.managerAccounts`。
|
|
368
|
-
3.
|
|
369
|
-
4.
|
|
383
|
+
3. 执行 `interlude.doctor` 检查 Console 档案。
|
|
384
|
+
4. 关闭自动创建时,发送 `interlude.story.start` 启动共享主剧本;开启自动创建时直接发送第一条私聊即可。
|
|
370
385
|
5. 用 `interlude.status` 确认故事状态和模型模式。
|
|
371
386
|
6. 用普通私聊测试主模型写作、沉默、延迟回复和多账号关系。
|
|
372
387
|
7. 用 `interlude.script`、`interlude.memory.facts`、`interlude.memory.intents` 和 `interlude.memory.patches` 审计当前状态。
|
|
@@ -378,7 +393,7 @@ interlude.purge.range 2026-08-14T09:00:00+08:00 2026-08-14T10:00:00+08:00
|
|
|
378
393
|
| 现象 | 检查项 |
|
|
379
394
|
| --- | --- |
|
|
380
395
|
| 提示没有管理权限 | 当前 QQ 是否在 `onebot.userAccounts`,以及是否在 `sharedStory.managerAccounts`。 |
|
|
381
|
-
| 提示没有故事 | 先执行 `interlude.
|
|
396
|
+
| 提示没有故事 | 先执行 `interlude.doctor`;随后使用 `interlude.story.start`,或开启 `runtime.autoCreate`。 |
|
|
382
397
|
| 指令被角色当作聊天 | 将 `runtime.ignoreCommandMessages` 设置为 `true`。 |
|
|
383
398
|
| `interlude.advance` 没有消息 | 模型完成了剧本补写,但当前没有生成可投递消息。 |
|
|
384
399
|
| `interlude.compact` 没有整理内容 | 当前未压缩条目或字符数未达到 `memory.sceneEntryThreshold` / `sceneCharacterThreshold`。 |
|
package/docs/AGENCY_WINDOW.md
CHANGED
package/docs/ALTER_SYSTEM.md
CHANGED
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 当前架构
|
|
2
2
|
|
|
3
|
-
适用版本:`0.1.3-
|
|
3
|
+
适用版本:`0.1.3-beta4`
|
|
4
4
|
|
|
5
5
|
## 核心原则
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ HDS Interlude 使用 `0.1.1-beta6` 验证过的自然语言连续性路线:近
|
|
|
12
12
|
|
|
13
13
|
| 文件 | 当前职责 |
|
|
14
14
|
| --- | --- |
|
|
15
|
-
| `src/index.ts` | Koishi 插件入口、Console Schema
|
|
15
|
+
| `src/index.ts` | Koishi 插件入口、Console Schema、失明模式命令屏蔽、命令和消息中间件 |
|
|
16
16
|
| `src/service.ts` | 故事与参与者、串行队列、持久化、调度、记忆、浏览器、Alter 和消息投递 |
|
|
17
17
|
| `src/alter.ts` | Alter 状态规范化、纯状态转移、动态阈值、权重和提示词投影 |
|
|
18
18
|
| `src/agency.ts` | 主体行动窗口、联系候选验证、容量矩阵、去重和重查时间 |
|
|
@@ -25,10 +25,10 @@ HDS Interlude 使用 `0.1.1-beta6` 验证过的自然语言连续性路线:近
|
|
|
25
25
|
|
|
26
26
|
## 主叙事数据流
|
|
27
27
|
|
|
28
|
-
1. 私聊或群聊事件先写入 `interlude_script_entry
|
|
28
|
+
1. 私聊或群聊事件先写入 `interlude_script_entry`;启用 SnowLuma 语音转写时,私聊 `record` 先转为带来源标记的文本,并与当前文字、图片合并为同一个事件。
|
|
29
29
|
2. 同一关系分支的连续消息在短时间内合并;过期模型结果不会落库。
|
|
30
30
|
3. 服务读取近期原始剧本、continuity、参与者状态、事实、意图、Overlay、网页观察和当前事件。
|
|
31
|
-
4.
|
|
31
|
+
4. 主模型返回非空 `script`、互动决定和允许的结构化副产物;空剧本被视为语义失败,用户回合保留为可重试任务。Alter 开启时同时返回本轮净变化分数。
|
|
32
32
|
5. 服务规范化所有模型字段,保存剧本和状态,再执行受权限和时间约束的消息投递。
|
|
33
33
|
6. 后台扫描处理自动生活推进、到期意图、记忆压缩、Overlay 压缩、网页观察和旧事实向量补齐。
|
|
34
34
|
|
|
@@ -44,15 +44,29 @@ Alter 达到阈值时,本轮只保存累计状态并安排后台分析。当
|
|
|
44
44
|
| 长期事实 | 可检索的承诺、事件、世界与关系事实 |
|
|
45
45
|
| active consequence | 已发生事件的短期余波,不重写 Canon |
|
|
46
46
|
| Overlay | 达到证据门槛后的稳定演化 |
|
|
47
|
+
| Perspective | 独立于 Canon 的外壳人格层,保存主角个体价值观与看待世界的方式;相关剧情长期积累出的 overlay 优先于基础 Perspective |
|
|
47
48
|
| Alter System | 当前氛围的临时惯性;不替代以上任何一层 |
|
|
48
49
|
| Agency Window | 日程、隐私和设备构成的外部行动容量;只约束联系行动,不控制文风或情绪 |
|
|
50
|
+
| 场景在场表 | 压缩时按来源条目确认的少量配角在场、离场或待会合状态;Canon 配角始终只是可用角色,不自动视为在场 |
|
|
51
|
+
| 自动投递摘要 | 仅后台自动回合读取的已完成沟通摘要,用于让下一次自动推进只表达新增进展 |
|
|
52
|
+
| 承诺回访 | 用户回合中说出口的“想想再答复”等未来承诺;复用 intent 表并要求可见履行、延期说明或取消说明 |
|
|
49
53
|
|
|
50
54
|
主动联系使用现有 intent 表形成闭环:生活剧本产生真实理由,Agency Window 判断立即联系、`proactive-check` 稍后重查或自然放下。重查时重新读取当前生活,不保存预写消息。关系身份会在后台以受控摘要提供,但原始私聊仍按共享开关隔离。
|
|
51
55
|
|
|
56
|
+
场景压缩可顺带更新最多八项在场状态,每项必须引用本次压缩中的真实剧本条目;没有证据的告别、抵达或重逢会被拒绝。自动投递摘要最多保留六项,并且只在 `advance` 与 `conversation-follow-up` 回合进入提示词;用户实时回合和普通到期意图不读取它。
|
|
57
|
+
|
|
58
|
+
承诺回访最多保留每位参与者两项待处理内容。它只在创建承诺的用户回合、用户后续消息和该承诺到期时进入提示词,携带事项、类型、时间和来源;普通自动推进不读取它。到期回合没有可见结果时,原 intent 会保留并延后,而不会静默完成。
|
|
59
|
+
|
|
60
|
+
Perspective 是独立于 Canon 的外壳人格层,基础文本与 overlay 分开保存。压缩模型只能按现有多回合、跨日期、证据与冷却门槛提出 `perspective` 状态变化;主模型只在当前事件确实相关时把它当作既定个人事实使用,不把它当成剧情主题或逐项审查清单。
|
|
61
|
+
|
|
52
62
|
## 共享剧本与隐私
|
|
53
63
|
|
|
54
64
|
同一机器人账号只保留一个活动主剧本。每个用户账号有独立参与者记录、关系和投递目标。默认不会把其它参与者的原始私聊内容发送给当前私聊主模型;后台生活只读取允许共享的摘要和全局后果。Alter 的侧端描述不得包含姓名、引用或私聊细节。
|
|
55
65
|
|
|
66
|
+
## 失明模式运行边界
|
|
67
|
+
|
|
68
|
+
`blindMode.enabled` 默认关闭。开启时,插件不注册 HDSI 管理指令,并在 Koishi 命令执行前静默截断当前实例中已识别的命令;普通聊天仍走原有叙事入口。HDSI 自身的运行日志、错误详情、剧本预览和模型侧调试会被收束为无内容的周期健康心跳,关闭开关并重载后恢复普通运维能力。旧 `blackBox` 配置仅保留兼容读取。
|
|
69
|
+
|
|
56
70
|
## 并发和持久化边界
|
|
57
71
|
|
|
58
72
|
同一故事的消息、到期意图、自动推进和压缩在单进程内串行。SQLite 写入另有全局写队列。当前架构不提供多进程分布式锁;多实例部署必须增加外部锁和版本检查。
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# 版本记录
|
|
2
2
|
|
|
3
|
+
## 0.1.3-beta4
|
|
4
|
+
|
|
5
|
+
- 新增 Console 首位的 `blindMode` 失明模式:HDSI 不注册管理指令,并在执行前静默拦截当前 Koishi 实例中已解析的命令;普通聊天仍进入叙事。旧 `blackBox` 配置保留兼容读取。
|
|
6
|
+
- 失明模式隐藏 HDSI 运行、错误、消息预览与模型侧调试记录,仅按可配置间隔输出无故事内容的健康心跳;其它插件日志保持各自配置。
|
|
7
|
+
- 对话后续阶段的已发送私聊现在要求与 `interaction.reply` 使用同一段文本,避免剧本写到投递动作而结构化回复仍为 `none`。
|
|
8
|
+
- README 改以“固定阶段、连续生活”说明写作机制:调度间隔只决定唤醒时机,不再定义不同的写作尺度。
|
|
9
|
+
|
|
10
|
+
## 0.1.3-beta3
|
|
11
|
+
|
|
12
|
+
- 自动推进中的已完成跨参与者消息现在与对应的即时 `crossConversationAction` 成对表达,并在剧本条目旁保存通过投递门槛的轻量动作回执。
|
|
13
|
+
- 私聊主叙事与对话后续将“此刻已发送”的剧本文字与 `interaction.reply` 对齐;考虑、草稿和输入状态保持为生活叙事的一部分,直到结构化回复承载实际消息。
|
|
14
|
+
- 收束固定主提示词中重复的传输说明,保持私聊、自动推进与多参与者动作的结构化边界清晰。
|
|
15
|
+
- 模型调用日志区分明确的 `none` 与缺失或无效的结构化回复,便于排查叙事动作和投递字段不一致的情况。
|
|
16
|
+
|
|
17
|
+
## 0.1.3-beta2
|
|
18
|
+
|
|
19
|
+
- 自动后台回合可保存已完成投递的紧凑行动摘要,下一次自动推进据此只表达新增进展;用户实时回合与普通到期意图不读取该摘要。
|
|
20
|
+
- 场景压缩新增来源校验的轻量在场表,记录少量配角的在场、离场或待会合状态,避免摘要凭空制造告别或让 Canon 配角默认在场。
|
|
21
|
+
- 新增绑定式承诺回访:角色向用户承诺“想想再答复”等未来回应时复用 intent 表登记,到期后要求可见履行、延期说明或取消说明;每位参与者最多保留两项,普通自动推进不加载该上下文。
|
|
22
|
+
- 新增独立 Perspective:主角个体价值观 / 看待世界的方式作为 Canon 之外的外壳人格层保存;其 overlay 复用现有证据化压缩演化,只在相关情境中细微影响主模型判断。
|
|
23
|
+
- 新增可选 SnowLuma 私聊语音转写:QQ `record` 语音通过 `fetch_ptt_text` 与当前文字、图片合并为一个用户事件;不支持、缓存缺失或失败时安全降级且不保存音频二进制。
|
|
24
|
+
- 启动流程改为 `interlude.doctor` 检查 Console 档案,再由 `interlude.story.start` 确认启动;`interlude.init` 保留兼容别名。
|
|
25
|
+
|
|
26
|
+
## 0.1.3-beta2-enhanced
|
|
27
|
+
|
|
28
|
+
- 修复主叙事返回合法 JSON 但 `script` 缺失、为空或只含空白时被当作成功的问题。
|
|
29
|
+
- 真实模型回合遇到空剧本会保留原故事游标;用户消息改走既有的持久化自动重试,后台回合留待下一次调度重新写作。
|
|
30
|
+
- 提高默认场景压缩阈值:未压缩条目由 `12` 调整为 `16`,字符数由 `8000` 调整为 `10000`,减少短对话期间的后台压缩调用。
|
|
31
|
+
- 补充空剧本语义完整性和新压缩默认值的回归测试。
|
|
32
|
+
|
|
3
33
|
## 0.1.3-beta1
|
|
4
34
|
|
|
5
35
|
- 新增轻量 Agency Window:只保存日程负荷、隐私、设备可用性、有效期和真实剧本来源,不与 Alter 情绪状态混合。
|