ErisPulse-QvQChat 2.0.0__tar.gz

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.
@@ -0,0 +1,464 @@
1
+ Metadata-Version: 2.4
2
+ Name: ErisPulse-QvQChat
3
+ Version: 2.0.0
4
+ Summary: ErisPulse QvQChat 智能对话模块 - 多AI协同智能体
5
+ Author-email: wsu2059q <wsu2059@qq.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2025 wsu2059q
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: homepage, https://github.com/wsu2059q/ErisPulse-AIChat
29
+ Requires-Python: >=3.9
30
+ Description-Content-Type: text/markdown
31
+ License-File: LICENSE
32
+ Requires-Dist: openai>=1.0.0
33
+ Dynamic: license-file
34
+
35
+ # QvQChat 智能对话模块
36
+
37
+ ## 简介
38
+
39
+ QvQChat 是一个基于多AI协同的智能对话模块,采用"普通群友模式",让AI像真人一样自然参与聊天。
40
+
41
+ ### 核心特性 ⭐
42
+
43
+ - **AI自主决策**:无需命令格式,直接用自然语言交互
44
+ - **记忆自然融合**:询问"你记得我的生日吗",AI根据记忆自然回答
45
+ - **配置简化**:只需配置dialogue的API密钥,其他AI自动复用
46
+ - **窥屏模式**:群聊默默观察,适时回复(默认3%回复率)
47
+ - **多模态支持**:支持图片理解(需要gpt-4o等视觉模型)
48
+
49
+ ### 与传统AI助手的区别
50
+
51
+ | 特性 | 传统AI助手 | QvQChat |
52
+ |------|-------------|----------|
53
+ | 回复方式 | 积极回复每条消息 | AI智能判断,适当回复 |
54
+ | 记忆方式 | 用户显式查询 | 记忆自然融入对话 |
55
+ | 对话风格 | 正式、格式化 | 随意、无格式 |
56
+ | 群聊行为 | 积极参与 | 窥屏模式,更像真人 |
57
+
58
+ ## 快速开始
59
+
60
+ ### 第一步:获取API密钥
61
+
62
+ 访问 [OpenAI API Keys](https://platform.openai.com/api-keys) 创建API密钥。
63
+
64
+ ### 第二步:配置文件
65
+
66
+ 首次运行后会自动生成 `config.toml`,或者参考 `config.example.toml` 创建配置。
67
+
68
+ **最小配置(必需)**:
69
+ ```toml
70
+ [QvQChat]
71
+ bot_nicknames = ["你的机器人名字"]
72
+ bot_ids = ["你的机器人ID"]
73
+
74
+ [QvQChat.dialogue]
75
+ base_url = "https://api.openai.com/v1"
76
+ api_key = "sk-your-actual-api-key-here"
77
+ model = "gpt-4o" # 建议使用支持视觉的模型
78
+ ```
79
+
80
+ ### 第三步:安装
81
+
82
+ ```bash
83
+ ep install AIChat
84
+ ```
85
+
86
+ ### 第四步:配置机器人识别
87
+
88
+ 编辑 `config.toml`:
89
+ ```toml
90
+ [QvQChat]
91
+ bot_nicknames = ["AI助手", "小B"] # 文本匹配
92
+ bot_ids = ["123456789"] # @匹配
93
+ ```
94
+
95
+ ## 功能说明
96
+
97
+ ### 1. AI智能决策(普通群友模式)⭐
98
+
99
+ QvQChat 完全由AI进行所有决策,更像真正的群友:
100
+
101
+ #### 📊 两大决策
102
+ 1. **是否回复** - AI根据对话上下文判断
103
+ 2. **是否记忆** - AI自动判断什么值得记住
104
+
105
+ #### 🔍 AI回复判断标准
106
+
107
+ **会回复的情况**:
108
+ - ✅ 用户在向你提问(直接或间接)
109
+ - ✅ 用户提到你的名字,需要回应
110
+ - ✅ 对话正在讨论你感兴趣或了解的话题
111
+ - ✅ 适当的幽默回应可以活跃气氛
112
+ - ✅ 之前提到的事情有更新或结论
113
+
114
+ **不会回复的情况**:
115
+ - ❌ 普通打招呼("在吗"、"大家好")
116
+ - ❌ 表情符号、纯表情回复
117
+ - ❌ 简单的"好的"、"嗯"、"收到"
118
+ - ❌ 与你无关的话题讨论
119
+ - ❌ 连续短时间内多次回复(显得不自然)
120
+
121
+ #### 📝 AI记忆判断标准
122
+
123
+ **会记住的情况**:
124
+ - ✅ 对方的个人信息:生日、重要日期、工作、学校
125
+ - ✅ 对方的喜好:爱吃的、不爱吃的、兴趣爱好
126
+ - ✅ 对方的习惯:作息时间、运动习惯、特殊习惯
127
+ - ✅ 对方的重要关系:家人、伴侣、好朋友
128
+ - ✅ 对方最近的状态:生病、忙碌、考试、搬家
129
+ - ✅ 对方的目标和计划:要考试、要旅行、要找工作
130
+
131
+ **不会记住的情况**:
132
+ - ❌ 日常闲聊:"在吗"、"大家好"、"哈哈哈"
133
+ - ❌ 简单回应:"好的"、"嗯"、"收到"、"知道了"
134
+ - ❌ 表情包、纯表情消息
135
+ - ❌ 一次性话题:"今天天气不错"、"这菜不错"
136
+ - ❌ 纯粹吐槽、发泄(无具体信息)
137
+ - ❌ 对你的评价(除非重要)
138
+ - ❌ 已经说过很多次的事情
139
+
140
+ ### 2. 多AI协同
141
+
142
+ | AI类型 | 用途 | 必需 | 默认复用dialogue |
143
+ |--------|--------|--------|-----------------|
144
+ | dialogue | 对话AI | ✅ | - |
145
+ | intent | 意图识别 | ✅ | ✅ |
146
+ | intent_execution | 意图执行(系统操作) | ✅ | ✅ |
147
+ | memory | 记忆提取 | ❌ | ✅ |
148
+ | reply_judge | 回复判断(私聊) | ❌ | ✅ |
149
+ | vision | 图片分析 | ❌ | ✅ |
150
+
151
+ **说明**:未配置API密钥的AI会自动复用dialogue的配置。
152
+
153
+ ### 3. 智能记忆管理
154
+
155
+ #### 工作原理
156
+ ```
157
+ 用户发送消息
158
+
159
+ [dialogue AI] 对话回复
160
+
161
+ [多AI协同] 判断是否值得记忆
162
+ ├─ 使用 dialogue AI 分析对话价值
163
+ └─ 评估是否影响后续对话
164
+
165
+ [memory AI] 提取关键信息
166
+ ├─ 严格提取标准(个人偏好、重要日期、任务等)
167
+ ├─ 过滤无关信息(闲聊、问候、表情等)
168
+ └─ 去重检查(避免重复记忆)
169
+
170
+ 保存到长期记忆
171
+ ```
172
+
173
+ #### 记忆使用
174
+
175
+ **自然融入对话**(推荐):
176
+ ```
177
+ 用户:你记得我的生日吗?
178
+ AI:是的,我记得你的生日是6月15日。
179
+ ```
180
+
181
+ **用户主动要求记忆**:
182
+ ```
183
+ 用户:记住这件事,我下周五生日
184
+ AI:好的,我会记住你下周五生日。✅
185
+ ```
186
+
187
+ **删除记忆**:
188
+ ```
189
+ 用户:忘记这件事
190
+ AI:我会帮你删除相关记忆。
191
+ ```
192
+
193
+ #### 记忆存储
194
+
195
+ - **私聊**:只存用户个人记忆
196
+ - **群聊**:用户个人记忆 + 群记忆(混合模式)
197
+ - **群记忆模式**:
198
+ - `mixed`:保存发送者记忆 + 群公共上下文(默认)
199
+ - `sender_only`:只保存发送者的个人记忆
200
+
201
+ ### 4. 意图执行(自然语言操作)
202
+
203
+ 无需命令格式,直接用自然语言描述操作:
204
+
205
+ | 操作 | 示例 |
206
+ |------|--------|
207
+ | 添加记忆 | "记住这件事" |
208
+ | 删除记忆 | "忘记这件事"、"删掉这条记忆" |
209
+ | 修改群提示词 | "把群提示词改成XX" |
210
+ | 修改群记忆模式 | "群记忆模式改成混合模式" |
211
+ | 清除会话 | "清除会话"、"清空对话历史" |
212
+ | 导出记忆 | "导出我的记忆" |
213
+
214
+ ### 5. 图片理解
215
+
216
+ - **直接传递**:dialogue AI支持视觉功能(如gpt-4o)时,图片直接传给AI
217
+ - **自动回退**:模型不支持视觉时,自动跳过图片,只处理文字
218
+ - **视觉AI备用**:如果配置了vision AI,先用vision分析再传给dialogue
219
+
220
+ ### 6. 窥屏模式(群聊)
221
+
222
+ 群聊默认启用窥屏模式,更像真人参与:
223
+
224
+ | 参数 | 默认值 | 说明 |
225
+ |------|----------|------|
226
+ | enabled | true | 启用窥屏模式 |
227
+ | default_probability | 0.03 | 默认回复概率(3%) |
228
+ | mention_probability | 0.8 | 被@时回复概率(80%) |
229
+ | keyword_probability | 0.5 | 匹配关键词时回复概率(50%) |
230
+ | question_probability | 0.4 | 提问时回复概率(40%) |
231
+ | min_messages_between_replies | 15 | 两次回复之间至少间隔多少条消息 |
232
+ | max_replies_per_hour | 8 | 每小时最多回复次数 |
233
+
234
+ ## 配置说明
235
+
236
+ ### 完整配置
237
+
238
+ ```toml
239
+ [QvQChat]
240
+ # 基础配置
241
+ max_history_length = 20
242
+ min_reply_interval = 10
243
+ bot_nicknames = ["AI助手"]
244
+ bot_ids = ["123456789"]
245
+
246
+ # 窥屏模式配置
247
+ [QvQChat.stalker_mode]
248
+ enabled = true
249
+ default_probability = 0.03
250
+ mention_probability = 0.8
251
+ keyword_probability = 0.5
252
+ question_probability = 0.4
253
+ min_messages_between_replies = 15
254
+ max_replies_per_hour = 8
255
+
256
+ # 对话AI(必需)
257
+ [QvQChat.dialogue]
258
+ base_url = "https://api.openai.com/v1"
259
+ api_key = "sk-your-actual-api-key-here"
260
+ model = "gpt-4o"
261
+ temperature = 0.7
262
+ max_tokens = 500
263
+
264
+ # 意图识别AI(必需,会自动复用dialogue配置)
265
+ [QvQChat.intent]
266
+ api_key = "" # 留空则使用dialogue配置
267
+ model = "gpt-3.5-turbo"
268
+ temperature = 0.1
269
+ max_tokens = 500
270
+
271
+ # 意图执行AI(必需,会自动复用dialogue配置)
272
+ [QvQChat.intent_execution]
273
+ api_key = ""
274
+ model = "gpt-3.5-turbo"
275
+ temperature = 0.3
276
+ max_tokens = 1000
277
+
278
+ # 记忆AI(可选,会自动复用dialogue配置)
279
+ [QvQChat.memory]
280
+ api_key = ""
281
+ model = "gpt-3.5-turbo"
282
+ temperature = 0.3
283
+ max_tokens = 1000
284
+
285
+ # 回复判断AI(可选,会自动复用dialogue配置)
286
+ [QvQChat.reply_judge]
287
+ api_key = ""
288
+ model = "gpt-3.5-turbo"
289
+ temperature = 0.1
290
+ max_tokens = 100
291
+
292
+ # 视觉AI(可选,会自动复用dialogue配置)
293
+ [QvQChat.vision]
294
+ api_key = ""
295
+ model = "gpt-4o"
296
+ temperature = 0.3
297
+ max_tokens = 300
298
+ ```
299
+
300
+ ### 运行时配置
301
+
302
+ 运行时自动生成群和用户配置(无需手动配置):
303
+
304
+ ```toml
305
+ # 群配置
306
+ [QvQChat.groups."123456789"]
307
+ system_prompt = "这个群是技术交流群"
308
+ memory_mode = "mixed" # mixed | sender_only
309
+ enable_memory = true
310
+ model_overrides = {}
311
+
312
+ # 用户配置
313
+ [QvQChat.users."user_id"]
314
+ style = "友好"
315
+ preferences = {}
316
+ ```
317
+
318
+ ## 使用示例
319
+
320
+ ### 日常对话
321
+
322
+ ```
323
+ 用户:在吗?
324
+ AI:[不回复,保持安静]
325
+
326
+ 用户:你觉得这个怎么样?
327
+ AI:我觉得挺好的。[偶尔回复,自然参与]
328
+
329
+ 用户:@机器人 今天的天气怎么样?
330
+ AI:今天天气不错,适合出去玩。[被@时高概率回复]
331
+ ```
332
+
333
+ ### 记忆相关
334
+
335
+ ```
336
+ 用户:你记得我的生日吗?
337
+ AI:是的,我记得你的生日是6月15日。[记忆自然融入对话]
338
+
339
+ 用户:记住这件事,我下周五要考试
340
+ AI:好的,我会记住你下周五要考试。[用户主动要求记忆]
341
+
342
+ 用户:忘记这件事
343
+ AI:我会帮你删除相关记忆。
344
+ ```
345
+
346
+ ### 图片理解
347
+
348
+ ```
349
+ 用户:[发送图片] 这是什么?
350
+ AI:这是一张猫的照片,看起来很可爱。[dialogue AI直接理解图片]
351
+ ```
352
+
353
+ ### 系统操作
354
+
355
+ ```
356
+ 用户:清除会话
357
+ AI:好的,已清除当前会话历史。[intent_execution AI执行]
358
+
359
+ 用户:把群提示词改成你是一个专业的技术顾问
360
+ AI:已将群提示词更新为:你是一个专业的技术顾问。
361
+
362
+ 用户:群记忆模式改成sender_only
363
+ AI:已将群记忆模式更改为仅发送者模式。
364
+ ```
365
+
366
+ ## 故障排除
367
+
368
+ ### 问题1:API错误 401 - Invalid token
369
+
370
+ **原因**: API密钥未配置或配置错误
371
+
372
+ **解决方法**:
373
+ 1. 检查 `config.toml` 中 `[QvQChat.dialogue.api_key]` 是否已填入正确的API密钥
374
+ 2. 确保API密钥格式为 `sk-...` 开头
375
+ 3. 验证API密钥是否有效(访问 OpenAI 控制台检查)
376
+
377
+ ### 问题2:所有AI均未配置API密钥
378
+
379
+ **原因**: 首次运行,未进行配置
380
+
381
+ **解决方法**:
382
+ 1. 复制 `config.example.toml` 为 `config.toml`
383
+ 2. 将其中的 `sk-your-api-key-here` 替换为实际API密钥
384
+ 3. 配置 `bot_nicknames` 和 `bot_ids`
385
+ 4. 重启程序
386
+
387
+ ### 问题3:部分AI功能不可用
388
+
389
+ **原因**: 只配置了对话AI,其他AI未配置
390
+
391
+ **影响**:
392
+ - 仅对话AI配置: 基本对话功能正常,记忆会使用dialogue AI
393
+ - dialogue AI不支持视觉: 无法理解图片内容
394
+
395
+ **解决方法**: 为对应AI配置API密钥,或留空自动复用dialogue配置。
396
+
397
+ ### 问题4:AI不回复任何消息
398
+
399
+ **可能原因**:
400
+ 1. 窥屏模式概率过低(可调高 default_probability)
401
+ 2. bot_ids/bot_nicknames 未正确配置
402
+ 3. API密钥无效或过期
403
+
404
+ **检查方法**:
405
+ 1. 查看日志中的AI判断结果
406
+ 2. 确认机器人ID和昵称正确
407
+ 3. 测试API连接
408
+
409
+ ### 问题5:记忆不准确或过多
410
+
411
+ **解决方法**:
412
+ 1. 调整记忆AI的temperature(降低会更严格)
413
+ 2. 清理冗余记忆(通过意图执行删除)
414
+ 3. 检查记忆提取标准(在handler._extract_and_save_memory中)
415
+
416
+ ## 架构文档
417
+
418
+ 详细的架构说明、组件设计和数据流请查看 [ARCHITECTURE.md](ARCHITECTURE.md)。
419
+
420
+ ## 开发与贡献
421
+
422
+ 欢迎参与 QvQChat 的开发!详细的贡献指南请查看 [ARCHITECTURE.md](ARCHITECTURE.md) 中的"贡献指南"章节。
423
+
424
+ ### 快速开发设置
425
+
426
+ ```bash
427
+ # 1. Fork 项目
428
+ git clone https://github.com/your-username/ErisPulse-AIChat.git
429
+ cd ErisPulse-AIChat
430
+
431
+ # 2. 安装依赖
432
+ pip install -e .
433
+
434
+ # 3. 运行测试
435
+ python -m ErisPulse-AIChat
436
+ ```
437
+
438
+ ### 核心组件
439
+
440
+ | 组件 | 文件 | 职责 |
441
+ |------|--------|------|
442
+ | Main | Core.py | 模块入口、事件处理、消息路由 |
443
+ | Config | config.py | 配置管理、配置继承 |
444
+ | AI Manager | ai_client.py | AI客户端管理、统一调用接口 |
445
+ | Intent | intent.py | 意图识别、意图路由 |
446
+ | Handler | handler.py | 意图处理、对话处理、记忆提取 |
447
+ | Memory | memory.py | 记忆管理、会话历史 |
448
+ | State | state.py | 状态管理、主题跟踪 |
449
+
450
+ ## 依赖
451
+
452
+ - Python >= 3.9
453
+ - openai >= 1.0.0
454
+ - ErisPulse SDK
455
+
456
+ ## 许可证
457
+
458
+ MIT License - 详见 [LICENSE](LICENSE) 文件
459
+
460
+ ## 联系方式
461
+
462
+ - 作者:wsu2059q
463
+ - 邮箱:wsu2059@qq.com
464
+ - GitHub:https://github.com/wsu2059q/ErisPulse-AIChat
@@ -0,0 +1,19 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ ErisPulse_QvQChat.egg-info/PKG-INFO
5
+ ErisPulse_QvQChat.egg-info/SOURCES.txt
6
+ ErisPulse_QvQChat.egg-info/dependency_links.txt
7
+ ErisPulse_QvQChat.egg-info/entry_points.txt
8
+ ErisPulse_QvQChat.egg-info/requires.txt
9
+ ErisPulse_QvQChat.egg-info/top_level.txt
10
+ QvQChat/Core.py
11
+ QvQChat/__init__.py
12
+ QvQChat/ai_client.py
13
+ QvQChat/commands.py
14
+ QvQChat/config.py
15
+ QvQChat/handler.py
16
+ QvQChat/intent.py
17
+ QvQChat/memory.py
18
+ QvQChat/state.py
19
+ QvQChat/utils.py
@@ -0,0 +1,2 @@
1
+ [erispulse.module]
2
+ QvQChat = QvQChat:Main
@@ -0,0 +1 @@
1
+ openai>=1.0.0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 wsu2059q
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.