8027 Commits

Author SHA1 Message Date
minecraft1024a
125c283d65 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-05 19:15:18 +08:00
minecraft1024a
b8bbd7228f feat(plugin): 调整插件路由前缀以避免组件冲突
将插件组件的路由前缀从 `/plugins/{plugin_name}` 修改为 `/plugins/{plugin_name}/{component_name}`。

此项更改旨在解决单个插件注册多个路由组件时可能出现的路径冲突问题,确保每个组件都拥有唯一的 API 端点。

此外,为了支持新的前端开发环境,已将端口 11451 和 3001 添加到 CORS 允许源列表中。

BREAKING CHANGE: 插件 API 的 URL 结构已发生变更。所有对插件接口的调用都需要更新为新的 `/plugins/{plugin_name}/{component_name}` 格式。
2025-12-05 19:15:14 +08:00
Eric-Terminal
5f2bf2f8f4 chore: add objgraph>=3.6.2 to dependencies 2025-12-05 19:01:54 +08:00
tt-P607
fa8555aeb7 docs(prompt): 完善用户资料工具使用指南
加强了 `UserProfileTool` 文档字符串中的规则,以确保语言模型捕获的数据更高质量、更准确。

此更改引入了明确且严格的标准,规定什么构成有效的 `alias`(别名)、`preference`(偏好)和 `key_info`(关键信息)。目标是防止模型将对话噪音、主观解读或临时互动存储为真实用户数据。

- **别名(Alias):** 必须是明确说明的昵称,不得为临时或开玩笑的称呼。
- **偏好(Preference):** 限于现实世界的爱好和兴趣,不包括对话中的动态内容。
- **关键信息(Key Info):** 限于客观且可验证的事实,不包括主观感受或关系描述。
2025-12-05 02:58:59 +08:00
tt-P607
5ecfb01552 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-05 02:15:59 +08:00
tt-P607
6081eeafea fix(prompt): 加强指令以防止伪造 @ 提及
大型语言模型(LLM)有时会在回复中生成无法使用的 `@username` 提及,这些提及以纯文本形式出现,造成不佳的用户体验。

此次提交更新了提示模板,更明确、强烈地禁止生成包含 `@` 符号的任何文本。新的指令还解释了模型 *为什么* 不能创建真实的提及,说明这是系统级显示格式,模型无法复制。这应当消除伪造提及的生成。
2025-12-05 02:15:14 +08:00
Windpicker-owo
06a45b3639 refactor: 移除对 MySQL 的支持,更新文档和配置以仅支持 SQLite 和 PostgreSQL 2025-12-04 23:30:43 +08:00
Windpicker-owo
63cb81aab6 fix: 更新配置文件,禁用身份压缩以提高回复性能
refactor: 移除日志信息以简化回复和响应动作
2025-12-04 22:49:56 +08:00
Windpicker-owo
2e7b434537 refactor: 使用异步生成器迁移到事件驱动模型以进行聊天流管理
- 用异步生成器替换了无限循环任务,以处理聊天流事件。
引入了`ConversationTick`数据模型来表示会话事件。
- 更新了`StreamLoopManager`,以使用新的基于生成器的方法来管理聊天流。
- 在聊天流处理过程中增强了错误处理和日志记录功能。
- 改进了聊天流的生命周期管理,包括启动和停止方法。
- 删除了与之前的循环工作线程实现相关的遗留代码。
2025-12-04 22:40:12 +08:00
Windpicker-owo
1dfa44b32b fix(config): 更新版本号至 0.13.1-alpha.1 2025-12-04 22:04:27 +08:00
Windpicker-owo
43e25378c8 feat(napcat): 添加事件处理过滤机制,支持黑白名单功能 2025-12-04 21:33:50 +08:00
Windpicker-owo
53bb77686b Revert "feat(chromadb): 添加全局锁以保护 ChromaDB 操作,确保线程安全"
This reverts commit e7cb04bfdd.
2025-12-04 21:04:55 +08:00
tt-P607
f5cf0faeb0 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-04 19:29:09 +08:00
tt-P607
7f0494cbc3 Revert "feat(core): 实现死锁检测器并改进 LLM 消息拆分 本次提交引入了两个主要增强功能:在 StreamLoopManager 中增加死锁检测机制以提高系统稳定性,以及对 Kokoro Flow Chatter (KFC) 的消息拆分策略进行调整,以生成更自然、更贴近人类的对话。 **StreamLoopManager 中的死锁检测:** - 新的死锁检测器现在会定期运行,监控所有活动消息流。 - 它会跟踪每个消息流的最后活动时间,并标记任何超过两分钟未活动的流为潜在死锁。 - 这种主动监控有助于识别和诊断可能卡住的消息流,防止系统整体冻结。 - 为了避免在长时间等待(例如等待用户回复或长时间 LLM 生成)期间出现误报,消息流循环现在即使在睡眠或处理阶段也会定期更新其活动时间戳。 **KFC 中的消息拆分优化:** - 自动,响应后处理器中的基于规则的消息拆分器已被禁用。- 消息拆分的责任现在完全交由大型语言模型(LLM)处理。- 系统提示已更新,明确指示LLM使用多个 reply 操作,将长响应拆分为更短、更自然的段落,模仿真实的人类消息模式。- 此更改允许进行更加上下文感知和情感适宜的消息分段,从而提供更具吸引力的用户体验。**VectorStore 的异步安全性:**- 所有对同步 ChromaDB 库的调用现在都被封装在 asyncio.to_thread() 中。这可以防止阻塞主 asyncio 事件循环,而这正是新检测器设计用来捕获的潜在死锁来源。"
This reverts commit f489020a12.
2025-12-04 19:26:31 +08:00
tt-P607
12e66a328c feat(chatter): 通过更严格、更抽象的规则增强用户印象生成
生成用户印象的提示已被大幅优化,以提高一致性、质量和情感深度。

之前的指导可能导致生成的印象过于字面化,更像聊天记录而非个性档案。同时也缺乏保留之前确认信息的强规则。

此次更新引入了几个关键变化:
- 增加了一条高优先级规则以保持已有确认的事实,例如性别,防止其被覆盖。
- 将核心任务重新定义为捕捉“抽象的感觉”和“个性轮廓”,而非详细的“肖像”。
- 明确禁止具体细节,如姓名、特定事件或行动,以强制实现更高层次的抽象。
- 鼓励采用更具印象派风格、诗意的写作方式,以更好地传达用户的气质和互动氛围。

这些变化旨在生成更稳定、情感共鸣且历久弥新的用户档案。
2025-12-04 19:23:32 +08:00
Windpicker-owo
e7cb04bfdd feat(chromadb): 添加全局锁以保护 ChromaDB 操作,确保线程安全 2025-12-04 18:58:07 +08:00
Windpicker-owo
0949e7fa3f Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-04 18:34:44 +08:00
Windpicker-owo
cc91e1a2a5 feat(exception-handling): 增强全局异常处理,添加线程和 asyncio 异常捕获 2025-12-04 18:34:37 +08:00
tt-P607
45a7b1f048 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-04 14:10:27 +08:00
tt-P607
daf6b51763 feat(chatter): 改进用户资料管理和主动跟进
此提交对两个核心聊天组件进行了重大增强:用户资料工具和主动思维逻辑。

在用户资料工具(`affinity_flow_chatter`)中:
- 用基于操作的系统(添加、删除、替换)替换了对别名和偏好的简单字符串替换,以实现更精细的控制。
- 实现了动态分阶段关系评分模型,其变化幅度取决于当前的关系水平,使关系进展更为真实。
- 重新设计了印象生成提示,引导大语言模型生成更多叙述性、散文风格的用户描述。
- 添加了数据质量过滤器,以拒绝模糊的关键信息,并防止高质量的现有数据被低质量更新覆盖。

在主动聊天(`kokoro_flow_chatter`)中:
- 引入了新的 `followup_count` 来跟踪用户静默期间实际发送的消息数量。
- 这个计数现在用于超时提示中,以向大型语言模型提供更清晰的信号,显示它已经提示用户的次数,从而防止过度跟进。
2025-12-04 14:09:24 +08:00
拾风
c80a4dda80 Merge pull request #23 from MoFox-Studio/copilot/sub-pr-21
docs: 添加 v0.13.0 版本更新日志文档
2025-12-04 09:31:21 +08:00
copilot-swe-agent[bot]
caf3bf704a docs: 添加 v0.13.0 版本更新日志文档
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
2025-12-04 01:29:10 +00:00
copilot-swe-agent[bot]
db49fbd471 Initial plan 2025-12-04 01:23:11 +00:00
Windpicker-owo
4e0012dba9 fix(config): 更新版本号为 0.13.0 2025-12-04 09:11:21 +08:00
Windpicker-owo
9084a123ce Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-04 09:09:14 +08:00
Windpicker-owo
d12a5745d5 feat(requirements): 添加 sqlalchemy 依赖以支持数据库操作 2025-12-04 09:09:06 +08:00
拾风
3293e2601f Merge pull request #22 from MoFox-Studio/copilot/sub-pr-21
fix(bot): address ruff linting warnings for code quality
2025-12-04 09:06:46 +08:00
copilot-swe-agent[bot]
9e9a7c6237 fix(bot): improve code quality by addressing ruff linting warnings
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
2025-12-04 01:04:40 +00:00
copilot-swe-agent[bot]
77a10e5484 Initial plan 2025-12-04 00:57:07 +00:00
tt-P607
22767ce234 feat(context): 为大语言模型提供过去网页搜索的上下文记忆
此更改使聊天机器人能够记住并引用过去网页搜索的相关信息,从而显著提高响应质量和连贯性。

系统不再将每个查询视为孤立事件,而是在生成新响应之前,对之前的 `web_search` 结果缓存进行向量相似度搜索。如果发现过去的相关信息,会自动作为“相关历史搜索结果”注入到大语言模型的提示中。

这使模型能够立即访问相关背景信息,避免对已经讨论过的主题重复搜索。

为了支持这一新功能:
- 对 `web_search` 工具的提示进行了改写,以通过确保结果被高效缓存和调用,鼓励大语言模型更频繁地使用它。
- 重要工具结果(如网页搜索)的预览长度已增加
2025-12-04 04:12:36 +08:00
tt-P607
f519f87884 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-04 03:19:59 +08:00
tt-P607
d466ddaec8 refactor(search): 将 Exa 引擎迁移到 search_and_contents API
此提交将 Exa 搜索引擎更新为使用 `search_and_contents` 方法,而不是之前的 `search` 方法。

`search_and_contents` 端点更高效,并且可以直接提供高亮片段。此更改用更具上下文感知的高亮替代了对摘要的依赖,从而显著提高了搜索结果的质量和相关性。
2025-12-04 03:19:52 +08:00
Windpicker-owo
4a75b3c0ea feat(notice): 增加消息摘要提取功能并优化表情回复处理 2025-12-03 23:35:59 +08:00
Windpicker-owo
d59946ce48 fix(config): 调整缓存和思考时间配置以优化性能 2025-12-03 21:30:47 +08:00
tt-P607
7c35c0a0f5 refactor(profile): 重构用户分析工具以实现更严格的现实分析
用户分析工具的内部逻辑和提示已显著优化,以生成更准确的长期用户印象并更真实地计算情感变化。

- 工具描述现在鼓励更频繁使用以实现实时更新,而不仅仅是重大事件。
- 印象生成提示增强以区分用户实际性格和讨论的虚构内容(如游戏剧情)。
- 写作指南严格要求创建长期抽象印象,避免短期对话记录。
- 情感变化规则变得极其严格,将变化范围缩小到±0.02,并强调大多数互动应导致零变化以反映关系建立的缓慢性。
- `history_ttl`减少为1,符合新理念的更频繁、轻量级更新。
2025-12-03 19:39:35 +08:00
tt-P607
973d1ad66d perf(memory): 微调了一下记忆裁判的提示词 2025-12-03 17:31:51 +08:00
tt-P607
2c8ec89546 文档忘记删了 2025-12-03 17:05:44 +08:00
tt-P607
cba6d34197 Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev 2025-12-03 17:02:39 +08:00
tt-P607
2671a6e7e5 feat(profile):对用户关系和分析系统进行重构,采用结构化数据和异步更新
此提交完全重写了用户关系和分析系统,创建了一个更强大、详细和响应式的框架。旧系统已被弃用,取而代之的是一个集中式的`UserRelationships`模型。

主要变更:

1.  &zwnj;**增强数据库模型(`UserRelationships`):**&zwnj;
    - 添加`impression_text`用于长期、叙述式印象。
    - 引入`key_facts`(JSON)存储结构化数据如生日、工作和位置。
    - 添加`relationship_stage`跟踪关系进展(如陌生人、朋友、挚友)。
    - 添加`first_met_time`和`last_impression_update`的时间戳。

2.  &zwnj;**重设计`UserProfileTool`:**&zwnj;
    - 工具的用途被限定为仅捕捉重要新信息,防止用于小聊。
    - 更新现在在后台异步处理,确保机器人回复不被延迟。
    - 引入`key_info_type`和`key_info_value`参数供LLM提交结构化事实。

3.  &zwnj;**复杂的印象和情感逻辑:**&zwnj;
    - 关系追踪LLM现在分析最近聊天历史生成更丰富、更上下文的印象。
    - 用渐进的`affection_change`(最大±0.03)取代直接情感分数设置,使关系发展更真实。

4.  &zwnj;**数据源整合:**&zwnj;
    - `RelationshipFetcher`重构为仅依赖`UserRelationships`表作为唯一数据源。
    - 简化`get_user_relationship` API并移除其缓存,确保分析的实时数据访问。

破坏性变更:`UserProfileTool`已重设计,新增参数(`key_info_type`、`key_info_value`)并改变用途。移除`affection_score`参数。此外,`get_user_relationship`数据库API签名简化为仅接受`user_id`。
2025-12-03 16:53:40 +08:00
Windpicker-owo
55919f90db feat(context_builder): 更新记忆块构建逻辑,添加查询文本获取策略以提升记忆检索效果
feat(prompt_builder): 扩展上下文数据构建,支持会话和情况类型参数以优化提示词生成
2025-12-03 14:30:40 +08:00
tt-P607
39c52490d9 feat(chatter): 整合工具使用并增强主聊天流程中的上下文
此提交为聊天系统引入了若干重大增强,以提高回应质量、上下文感知能力和角色一致性。

**Kokoro 流程中的工具整合:**
- 在主聊天提示中新增了一个 `tool_info` 上下文块。
- `KFCContextBuilder` 现在通过 `ToolExecutor` 执行工具后再生成回复,使聊天模型能够感知实时信息和操作。

**以角色为驱动的用户画像:**
- `update_user_profile` 工具被重构为两阶段过程。工具使用模型提供一个简单的“印象提示”,专门的 `relationship_tracker` 模型将其扩展为丰富且符合角色的一致印象。
- 工具使用提示已更新,明确指示模型在生成工具参数时保持机器人的角色。

**记忆系统改进:**
- 记忆检索判定提示已更新,更加主动地获取长期记忆,目标是为了提供更丰富的上下文。- 记忆查询现在从最近的一组消息中生成,而不是单条消息,从而提高检索的相关性。**其他更改:** - 在上下文构建过程中添加了性能时间日志,以识别瓶颈。- 在响应过滤中进行了小修复,以清理特定前缀,如“,说:”。
2025-12-03 14:04:29 +08:00
Windpicker-owo
a36e2fdf92 feat(set_emoji_like): 添加群聊检查,确保表情回应动作仅在群聊中有效 2025-12-03 13:55:37 +08:00
Windpicker-owo
6233e27d46 fix(message_handler): 修复全局封禁用户列表的用户ID处理方式,确保ID为字符串格式 2025-12-03 13:48:15 +08:00
Windpicker-owo
fe48b8cc71 feat(prompt): 添加安全互动准则块以增强用户交互安全性 2025-12-03 13:33:43 +08:00
Windpicker-owo
c1da7452d6 feat(interest): 增加LLM兴趣标签生成时的超时设置,确保初始化阶段不因超时失败 2025-12-03 13:22:07 +08:00
Windpicker-owo
16afd8f6ff feat(filter): 添加无意义消息过滤功能以优化表达学习效果 2025-12-03 13:13:41 +08:00
Windpicker-owo
a9fc842287 feat(expression): 添加解析聊天流配置和获取相关聊天ID的功能以支持共享组训练 2025-12-03 12:48:31 +08:00
Windpicker-owo
1acead1f9d feat(cache): 添加 LRU 淘汰机制和缓存大小限制以优化内存使用 2025-12-03 11:42:38 +08:00
Windpicker-owo
d5e6746a21 fix(stream): 修复 Chatter 处理标志的假死状态并增强并发保护 2025-12-02 23:11:29 +08:00
tt-P607
9a5ae357b5 fix(chatter): 防止 Chatter 和 ProactiveThinker 之间的竞争条件
可能会发生竞争条件,即 ProactiveThinker 在用户发送消息的同时选择一个会话进行主动操作。这将导致 Chatter 和 ProactiveThinker 同时处理该会话,从而产生重复或冲突的响应。

该提交引入了两部分修复:
1. Chatter 现在在接收到消息后会立即更新会话的 `last_activity_at`。这相当于一个软锁,表明该会话正在被主动处理。
2. ProactiveThinker 会在执行操作前对会话状态进行最终检查。如果会话不再处于 `WAITING` 状态,它会中止操作,让位给 Chatter。
2025-12-02 16:38:42 +08:00