Commit Graph

4668 Commits

Author SHA1 Message Date
minecraft1024a
c6e9d572a5 feat(cross_context): 实现按互通组名称获取聊天记录
新增 `get_chat_history_by_group_name` API,允许插件按名称获取指定互通组的聊天记录。此功能增强了插件的上下文感知能力,使其能够利用跨群聊的对话历史。

主要变更:
- 在 `cross_context_api.py` 中添加了 `get_chat_history_by_group_name` 函数。
- Maizone 插件现在利用此 API 来获取跨群聊的上下文,以生成更相关的说说内容。
- 调整了配置文件模板,以反映新的互通组配置方式。
2025-11-19 22:57:41 +08:00
Furina-1013-create
156662014b fix: 修复 graph_nodes 表 weight 字段缺失问题
- 在 GraphNodes 模型中添加 weight 字段,设置默认值为 1.0
- 修复 Hippocampus.py 中插入 GraphNodes 时缺少 weight 字段的问题
- 解决 sqlite3.IntegrityError: NOT NULL constraint failed: graph_nodes.weight 错误
2025-11-19 22:57:40 +08:00
tt-P607
a5b5cdddb1 fix(qzone): 修复子评论回复逻辑
移除手动构造的@提醒内容,改为通过传递 `parent_tid` 参数来正确指定父评论。
这利用了平台原生的回复机制,可以更可靠地实现回复和提醒功能。
2025-11-19 22:57:39 +08:00
tt-P607
c76fddd928 fix(api): 修复 reply_to_platform_id 可能未定义的问题 2025-11-19 22:57:38 +08:00
Windpicker-owo
96c7bd753f 加入breaking启用配置 2025-11-19 22:57:36 +08:00
Windpicker-owo
461296e5c3 删除无用函数 2025-11-19 22:57:33 +08:00
雅诺狐
e4f8edd7ba 遥测 2025-11-19 22:57:33 +08:00
minecraft1024a
e9b3125d4a feat(cross_context): 支持私聊和群聊混合的上下文共享
本次更新扩展了跨上下文共享功能,使其不再局限于群聊之间,现在可以支持群聊与私聊的混合共享。

主要变更:
- 将 `cross_context.groups` 的 `chat_ids` 配置格式从一维字符串列表(仅群号)更新为二维列表 `[["type", "id"], ...]`,其中 `type` 可以是 "group" 或 "private"。
- 更新了 `cross_context_api` 以正确处理新的配置格式,使其能够识别并获取私聊和群聊的消息历史。
- 相应地更新了配置文件模板 `bot_config_template.toml` 以反映新的配置格式和功能。

BREAKING CHANGE: `cross_context.groups` 的 `chat_ids` 配置格式已更改。旧的一维群号列表格式不再受支持,用户需要按照 `[["type", "id"], ...]` 的新格式更新其配置文件才能使用此功能。
2025-11-19 22:57:32 +08:00
minecraft1024a
b8d31207cb refactor(chat): 抽象化跨群聊上下文构建逻辑
将 `build_cross_context` 方法的实现委托给 `cross_context_api`。
这简化了 `prompt_utils` 中的代码,将复杂的上下文构建逻辑(包括获取其他群聊、根据模式获取和格式化消息)封装到专用的API中,提高了代码的模块化和可维护性。
2025-11-19 22:57:29 +08:00
minecraft1024a
db9bc2f701 refactor(chat): 简化响应处理逻辑
- 移除 `send_response` 方法中多余的 `reply_to_str` 参数
- 调整 `text_to_stream` 调用,不再传递消息数据作为回复目标
- 确保 `handle_message_storage` 的 `reason` 参数始终为字符串
2025-11-19 22:57:27 +08:00
minecraft1024a
4b965c300e refactor(main): 移除多余的ImportError异常处理 2025-11-19 22:57:27 +08:00
minecraft1024a
f8c7acea58 refactor(memory): 使用模拟对象替代条件判断来处理禁用的内存系统
通过引入一个`MockHippocampusManager`类,当内存系统在配置中被禁用时,它将提供一个与真实管理器接口相同的模拟对象。这消除了在代码中散布的多个`if global_config.memory.enable_memory:`条件检查。

这种重构简化了`MainSystem`类中的初始化和任务调度逻辑,使得代码更加清晰和易于维护,因为现在可以无条件地调用内存系统的方法,而不用担心它是否被启用。
2025-11-19 22:57:27 +08:00
Windpicker-owo
da170e0bad 修复模板deepseek baseurl不正确的问题 2025-11-19 22:57:26 +08:00
Windpicker-owo
cc54450a3d 修复导入问题 2025-11-19 22:57:26 +08:00
Windpicker-owo
d307893887 升级ada插件,现在插件与ada程序完全同步 2025-11-19 22:57:26 +08:00
Windpicker-owo
93fbc31662 fix(chat): 优化breaking模式下的兴趣值累积逻辑
重构heartFC_chat中的消息处理机制,使用累积兴趣值替代最近三次记录来判断是否进入breaking模式。主要变更包括:

- 将breaking模式判断基于累积兴趣值而非最近3次记录
- 在消息成功处理时重置累积兴趣值
- 调整阈值计算方式,使用聊天频率进行动态调整
- 修复send_api中的消息查找函数,提高回复消息匹配准确性

这些改动提高了对话节奏控制的稳定性,使breaking模式触发更加合理。
2025-11-19 22:57:25 +08:00
Windpicker-owo
e6adfffa84 更新版本 2025-11-19 22:57:25 +08:00
Windpicker-owo
a20dbbdfcb typing和防炸 2025-11-19 22:57:24 +08:00
Windpicker-owo
51aad4f952 迁移:1f91967(remove:移除willing系统,移除reply2,移除能量值,移除reply_to改为message) 2025-11-19 22:57:24 +08:00
Windpicker-owo
57ba493a74 fix:修复图片识别爆炸 2025-11-19 22:57:22 +08:00
tt-P607
109631e6a1 emmm,总之大概也许这一版比较稳定,用就对了😋 2025-11-19 22:57:19 +08:00
tt-P607
2abec18610 fix(qzone): 修复评论回复逻辑以确保正确触发@提醒
- 修改 topicId 格式使用标准评论格式而非针对特定评论
- 在回复内容中明确标示回复对象 "@用户名:"
- 优化 paramstr 参数确保触发@提醒机制
- 添加详细注释说明修复目的
2025-11-19 22:57:17 +08:00
Windpicker-owo
91454fe576 fix: at和回复只显示qq号的问题 2025-11-19 22:57:13 +08:00
Windpicker-owo
766a20191b 优化s4u提示词结构,修复复读问题 2025-11-19 22:57:10 +08:00
ikun-11451
4f78c9e12d 将自述文件中的windows部署教程链接更正喵~ 2025-11-19 22:57:09 +08:00
Windpicker-owo
3660d72d3e 迁移:4b59eda(feat:修改focus value的用途) 2025-11-19 22:57:09 +08:00
Windpicker-owo
0810682c3f 迁移:1515cef(fix:必要性修复) 2025-11-19 22:57:08 +08:00
Furina-1013-create
d2609ee382 注释掉一个为了适配ui日志然后出现的一个过于刷屏日志的代码段 2025-11-19 22:57:08 +08:00
Windpicker-owo
8b82f4f5aa 迁移:a247be0(ref:彻底合并normal和focus,完全基于planner决定target message) 2025-11-19 22:57:07 +08:00
Windpicker-owo
780cfbd7df feat(chat): refactor logging and integrate no_reply system action
将日志前缀管理集中到context,新增willing_manager依赖,并把no_reply提升为系统级可用动作

- CycleProcessor 统一改从 context 获取 log_prefix
- HeartFChatting 引入 willing_manager
- ResponseHandler _send_response -> send_response 去下划线统一对外接口
- ActionPlanner 将 no_reply 添加至 current_available_actions
2025-11-19 22:57:06 +08:00
tt-P607
2dbce6a738 feat(chat): 添加图片消息判断工具函数
增加 `is_image_message` 函数,用于根据消息字典的内容判断该消息是否为图片类型。这有助于在处理不同消息类型时,能够准确识别并分流图片消息。
2025-11-19 22:57:03 +08:00
Windpicker-owo
d86cfa90ad 迁移:3804124,9e9e796
(feat:将no_reply内置、fix:优化reply,填补缺失值)
2025-11-19 22:56:51 +08:00
tt-P607
3db6ce86ca fix(maizone): 修复回复评论时的主题ID和父评论ID
根据企鹅空间的最新接口变更,修复了回复评论时 `topicId` 的构造方式,并为子回复添加了 `parent_tid` 参数,以确保能够正确地回复到指定的父评论。
2025-11-19 22:56:11 +08:00
Windpicker-owo
e9dde311ed fix 2025-11-19 22:56:10 +08:00
tt-P607
2f1dcee7cb refactor(maizone): 优化回复跟踪服务和实现子回复
对 `maizone_refactored` 插件进行多项重构和功能改进:

1.  **依赖注入 `ReplyTrackerService`**:
    -   在 `plugin.py` 中创建 `ReplyTrackerService` 的单例,并将其注入到 `QZoneService` 中。
    -   这确保了整个插件共享同一个回复记录实例,避免了之前在 `QZoneService` 内部创建实例导致的状态不一致问题。

2.  **增强 `ReplyTrackerService` 的健壮性**:
    -   增加了对 `replied_comments.json` 文件加载时的数据验证和错误处理,包括处理空文件和JSON解析错误。
    -   实现了损坏文件的自动备份机制。
    -   采用原子化写入操作(先写临时文件再重命名),防止在保存过程中因意外中断导致数据文件损坏。
    -   改进了日志记录,提供了更清晰的加载、保存和清理过程信息。

3.  **实现真正的子回复(盖楼)功能**:
    -   修改了 `QZoneService` 中 `_reply` 方法的请求参数,特别是 `topicId` 和 `paramstr`,并添加了 `parent_tid`,以实现对特定评论的直接回复,而不是简单地在说说下发表新评论。

4.  **优化评论处理逻辑**:
    -   移除了在处理新评论前对已记录回复进行验证的步骤,简化了逻辑,直接检查评论是否已被回复。
2025-11-19 22:56:10 +08:00
Windpicker-owo
6cf59deef3 迁移:69a855d(feat:保存关键词到message数据库) 2025-11-19 22:56:10 +08:00
Windpicker-owo
276c08224e 迁移:685c759 (feat:将no_reply功能移动到主循环中) 2025-11-19 22:56:09 +08:00
Windpicker-owo
5db580a4b5 增加注释 2025-11-19 22:56:08 +08:00
Windpicker-owo
55d6ec4cd9 添加动作修改计时 2025-11-19 22:56:08 +08:00
tt-P607
f120cd94d7 feat(plugin_system): 实现 on_plugin_loaded 异步钩子
在插件成功加载和注册后,添加一个新的生命周期钩子 `on_plugin_loaded`。

此钩子允许插件在加载完成后执行异步的初始化任务,例如建立数据库连接、加载数据或启动后台服务。通过使用 `asyncio.create_task`,确保了钩子的执行不会阻塞插件的加载流程,从而提高了系统的响应性和健壮性。
2025-11-19 22:56:07 +08:00
Windpicker-owo
b3b8fa0cbf 移除无用md 2025-11-19 22:56:07 +08:00
Windpicker-owo
337682e1e3 refactor(napcat-adapter): remove test handler and restructure plugin initialization
移除APITestHandler测试类,将插件初始化逻辑重构为独立的事件注册方法,更新日志配置以支持napcat适配器模块。这些更改清理了测试代码并改进了插件架构的清晰度。
2025-11-19 22:56:07 +08:00
minecraft1024a
8800e1c16c docs: 优化 README.md 的排版和格式
- 移除多余的空行,使整体布局更紧凑
- 调整了标题和章节之间的间距
- 新增了 QQ 交流群的链接,方便用户交流
2025-11-19 22:56:07 +08:00
minecraft1024a
9aa288d3b9 feat(chat): 在主动思考时默认选取最新消息作为目标
当主动思考的 `target_message` 为 `None` 时,系统现在会自动获取聊天流中的最新一条消息作为默认的目标消息。

这确保了即使在没有明确指定目标消息的情况下,主动思考也能够针对最近的上下文执行动作,从而提高了交互的连续性和相关性。
2025-11-19 22:56:06 +08:00
minecraft1024a
50a458b9e1 refactor(context): 将能量值和睡眠压力状态持久化到数据库
将HFC上下文中的能量值(energy_value)和睡眠压力(sleep_pressure)的状态管理从本地文件存储(local_storage)迁移到主数据库。

这一重构的主要改动包括:
- 在`ChatStreams`数据库模型中添加`energy_value`和`sleep_pressure`字段。
- 更新`ChatStream`类,使其能够加载和保存这两个新字段。
- 移除`HfcContext`中原有的基于`local_storage`的加载和保存逻辑,改为直接通过`ChatStream`实例进行状态读写。
- 在`EnergyManager`中,每当能量或睡眠压力发生变化时,调用`save_context_state()`方法,确保状态能够实时持久化。

此举统一了应用的状态管理方式,提高了数据的可靠性和一致性,并为后续在多实例或分布式环境下部署应用奠定了基础。
2025-11-19 22:56:06 +08:00
minecraft1024a
72706f15ef refactor(schedule): 将日程生成转为后台异步任务
将即时日程生成的操作从直接调用修改为提交到异步任务管理器执行。这避免了在主流程中等待耗时较长的日程生成过程,改善了请求响应速度。

为此,新增了 `OnDemandScheduleGenerationTask` 类来封装按需生成日程的后台任务逻辑。
2025-11-19 22:56:05 +08:00
minecraft1024a
f2ee93bbee refactor(schedule): 优化月度计划与日程的生成逻辑
将月度计划和每日日程的生成流程从异步非阻塞任务改为同步阻塞模式。这确保了在需要计划数据时,生成过程会先完成,从而避免了因数据未及时生成而导致的潜在问题。

主要变更:
- `ScheduleManager`: 在加载日程失败或数据不存在时,直接调用并等待日程生成,而不是创建一个后台任务。
- `ScheduleManager`: 当日程生成过程中发现月度计划不足时,会直接调用并等待月度计划生成完成,然后再继续。
- `MonthlyPlanManager`: 简化了生成逻辑,移除了原有的非阻塞触发方法 `trigger_generate_monthly_plans`,统一为同步执行的 `generate_monthly_plans`。
- `monthly_plan_db`: 在查询月度计划时增加了按创建时间降序排序,以支持更可靠地删除多余计划。
- `main.py`: 移除了对已不存在的 `ImportError` 的处理。
2025-11-19 22:56:04 +08:00
minecraft1024a
dfbe30f7e6 chore: 调整日志级别和更新默认配置
- 将事件注册成功的日志级别从INFO调整为DEBUG,以减少不必要的日志输出。
- 修正`maizone_refactored`插件中图片目录路径的表示方法,使用`.as_posix()`确保跨平台兼容性。
- 将备用Cookie获取服务的默认主机地址从一个具体的IP(`172.20.130.55`)更改为`127.0.0.1`,这更符合本地开发的通用配置。
2025-11-19 22:56:02 +08:00
Windpicker-owo
fe472dff60 修复代码格式和文件名大小写问题 2025-11-19 22:55:55 +08:00
Windpicker-owo
a187130613 refactor(chat): 简化SmartPrompt系统架构,移除缓存机制和依赖检查 2025-11-19 22:54:35 +08:00