Commit Graph

27 Commits

Author SHA1 Message Date
tt-P607
b5342376eb feat(affinity_flow_chatter): 重构计划器以支持多动作并优化思考逻辑
本次提交对亲和流聊天器(AFC)的计划与决策核心进行了重大重构和功能增强,旨在提升其响应的灵活性、鲁棒性和可观测性。

主要变更包括:

1.  **多动作支持与解析重构**:
    -   `PlanFilter` 现在能够正确解析并处理 LLM 返回的动作列表(`"actions": [...]`),而不仅限于单个动作,这使得机器人能够执行更复杂的组合行为。
    -   增强了动作解析的鲁棒性,当找不到 `target_message_id` 时会优雅降级(如 `reply` 变为 `no_action`),并会根据当前实际可用的动作列表对 LLM 的选择进行验证。

2.  **提示词工程与思考模式优化**:
    -   重新设计了核心 Planner 提示词,将 `thinking` 字段定义为“思绪流”,引导 LLM 生成更自然、更符合角色的内心独白,而非简单的决策理由,从而提升决策质量和角色扮演的沉浸感。
    -   强制要求 LLM 为需要目标消息的动作提供 `target_message_id`,提高了动作执行的准确性。

3.  **上下文构建与鲁棒性增强**:
    -   在 `PlanFilter` 中增加了上下文回退机制,当内存中缺少历史消息时(如冷启动),会自动从数据库加载最近的消息记录,确保决策所需上下文的完整性。
    -   简化了提供给 LLM 的未读消息格式,移除了兴趣度分数等内部信息,并加入了用户昵称,使其更易于理解和处理。

4.  **可观测性与日志改进**:
    -   在 AFC 的多个关键节点(消息接收、决策、动作执行)增加了彩色的详细日志,使其决策流程像 HFC 一样清晰可见,极大地方便了调试。
    -   将系统中多个模块(视频分析、兴趣度匹配、情绪管理)的常规日志级别从 `INFO` 调整为 `DEBUG`,以减少在生产环境中的日志噪音。

5.  **动作描述优化**:
    -   优化了 `set_emoji_like` 和 `emoji` 等动作的描述,使其意图更清晰,帮助 LLM 做出更准确的动作选择。
2025-11-19 23:08:45 +08:00
tt-P607
0c7780f8f8 fix: 修复表情动作模型调用并完善视频分析结果存储
- 表情动作: 将模型调用从 `planner` 切换到 `utils`,以使用更合适的模型进行表情推荐。
- 视频分析: 增加检查逻辑,仅当分析成功且结果不为错误提示时,才将结果存入数据库,防止存储无效记录。
2025-11-19 23:08:04 +08:00
Windpicker-owo
df3c616d09 ruff,私聊视为提及了bot 2025-11-19 23:07:30 +08:00
minecraft1024a
f842c43ab0 ruff 2025-11-19 23:05:47 +08:00
tt-P607
8f7867c937 fix(emoji): 修正对同步函数的 await 调用
`get_recent_emojis` 和 `add_emoji_to_history` 函数已被重构为同步方法。本次提交移除了对这两个函数不必要的 `await` 调用,以修复由此引发的 `TypeError`。
2025-11-19 23:05:22 +08:00
tt-P607
26b9d02476 fix(core): 修正因异步改造遗漏的 await 调用
在最近的数据库异步化重构后,部分函数的调用处忘记添加 `await` 关键字,导致协程未被正确执行。

本次提交修复了以下模块中的问题:
- `ExpressionLearner`
- `ChatMessageBuilder`
- `EmojiAction
2025-11-19 23:05:22 +08:00
tt-P607
dedd06efdc refactor(core): 适配核心数据获取与消息构建函数的异步调用
在数据库交互层异步化后,多个相关的数据获取和消息构建函数(如 `build_readable_messages`)也转为异步实现。本次提交在所有调用点添加了 `await` 关键字,以适应这一变化。

此外,本次提交还包含以下修复:
- 在主动思考模块中增加了对规划器返回无效动作的检查,避免后续流程出错。
- 修正了日志记录中错误的上下文变量引用。
2025-11-19 23:05:11 +08:00
tt-P607
2f90f69135 feat(emoji): 避免发送近期使用过的表情包以减少重复
为了提升表情包发送的自然度和多样性,引入了表情包历史记录机制。

该功能通过以下方式工作:
- 在选择表情包之前,系统会获取当前会话最近发送过的表情包记录。
- 从候选表情包池中过滤掉这些近期已使用过的表情,从而鼓励使用更多不同的表情。
- 当一个表情包成功发送后,其描述会被添加到历史记录中,用于未来的筛选。
2025-11-19 23:01:03 +08:00
tt-P607
c6634b5e99 fix(emoji): 优化表情包描述匹配并修复潜在错误
- 改进在描述模式下选择表情包的匹配算法,从精确匹配改为更灵活的包含匹配和关键词匹配,显著提高匹配成功率。
- 初始化 `chosen_emotion` 变量,以避免在某些逻辑分支下因变量未定义而引发错误。
- 统一并简化了发送表情包后记录到prompt中的提示语,使其更加通用和简洁。
2025-11-19 23:00:27 +08:00
minecraft1024a
6ecb7a7d6a feat(emoji): 新增表情选择模式并重构选择逻辑
引入了两种表情选择模式,允许用户通过配置决定表情选择的行为:
- **emotion**: 基于情感标签进行选择,利用LLM根据对话上下文挑选最合适的情感。
- **description**: 基于表情的详细描述进行选择,让LLM从描述列表中挑选最匹配的表情。

此项重构将原有的单一选择逻辑拆分为两种独立的模式,并为每种模式优化了相应的提示词(Prompt)和处理流程,提高了表情选择的灵活性和准确性。同时,在配置文件中添加了`emoji_selection_mode`选项以支持此新功能。
2025-11-19 23:00:23 +08:00
minecraft1024a
f0fd4959eb feat(emoji): 记录表情包发送状态
在表情包发送成功或失败后,分别记录操作信息。这有助于更好地追踪和调试表情包功能的状态,两行就应该能解决重复发送的问题了,遥遥领先!
2025-11-19 23:00:09 +08:00
minecraft1024a
c81721ff5c refactor(emoji): 重构表情发送逻辑为基于情感标签选择
重构了`emoji`动作的实现,将原有的LLM选择表情描述的逻辑,改为先由LLM根据聊天内容和理由选择一个最匹配的“情感标签”,然后再从该标签下的表情库中随机选择一个进行发送。

主要变更:
- 移除原有的表情抽样、编号和LLM选择编号的复杂流程。
- 引入基于`emotion`元数据的情感标签映射。
- 更新LLM的Prompt,使其专注于选择情感标签而非具体表情。
- 简化了代码逻辑,移除了不再需要的历史记录队列和相关配置项。
- 如果表情没有情感标签或LLM调用失败,则回退到随机发送。
2025-11-19 23:00:09 +08:00
tt-P607
795613604d feat(emoji): 优化表情选择逻辑并引入上下文数量限制
重构了内置插件中的表情发送逻辑,以提高选择的准确性和效率。

旧的机制依赖于预设的情感标签,这可能不准确或缺失。新的实现改为让 LLM 直接从一部分随机抽样的表情包描述中进行选择,这使得决策更贴近上下文。

主要变更:
- 将基于情感标签的选择改为基于表情包描述的选择,使表情推荐更精准。
- 新增 `max_context_emojis` 配置项,用于控制每次传递给 LLM 的表情包候选项数量,从而减少 token 消耗并提高响应速度。
2025-11-19 23:00:01 +08:00
tt-P607
20ce6612d1 feat(emoji): 引入表情发送历史以避免重复发送
为了提升表情发送的自然性和多样性,本次更新引入了发送历史记录机制,并优化了选择逻辑。

- 新增一个长度为4的双端队列,用于存储最近发送过的表情哈希,以避免在短期内重复。
- 修改LLM提示,要求其返回一个包含3个最匹配情感的有序列表,以提供更多候选表情。
- 重构选择逻辑:在LLM推荐或随机选择时,会优先选取未在最近历史中出现过的表情。
- 仅当所有候选表情都已在近期发送过时,才会退回至在完整表情库中进行选择。
2025-11-19 22:59:40 +08:00
tt-P607
e568a7e439 fix(chat): 修复空消息引用并调整动作处理逻辑
- 在 `DefaultReplyer` 中增加了对 `reply_message` 的空值检查,以避免在无回复上下文时引发错误。
- 在 `ActionPlanner` 中将 'do_nothing' 添加到非目标动作列表中,以正确处理此新增的无操作指令。
- 将 `EmojiAction` 使用的 LLM 模型从 'utils_small' 更新为 'planner',以适应模型配置的变更。
2025-11-19 22:59:39 +08:00
tt-P607
47ee2ba693 feat(planner): 重构动作规划器以支持组合动作和概率性表情
重写了 Planner 的主 Prompt,引导 LLM 将回复(reply)视为主动作,将表情(emoji)等视为辅助动作,从而更好地生成组合动作,使响应更生动。

- 移除了旧的“100%概率动作强制添加”逻辑,并替换为新的“概率性表情”机制。现在,当生成回复时,会根据配置的概率(emoji_chance)自动附加一个 emoji 动作。
- 改进了 emoji 动作的情感匹配逻辑,从精确匹配改为模糊匹配,提高了根据 LLM 输出找到合适表情的成功率。
- 修复了随机类型动作在激活概率计算时的一个边界条件问题。
2025-11-19 22:59:38 +08:00
tt-P607
227ef1af52 feat(actions): 支持同时进行回复与其他动作
重构了动作执行流程,以支持更丰富的多动作组合,例如在发送文本回复的同时发送一个表情。

主要变更:
- **执行流程**: 在 `CycleProcessor` 中,将动作分为“回复”和“其他”两类。系统会先串行执行回复动作,再并行执行所有其他动作,确保了核心回复的优先性。
- **规划逻辑**: 在 `Planner` 中优化了提示词,并增加后处理步骤,以鼓励并确保在回复时触发补充性动作(如100%概率的emoji)。
- **emoji动作**: 重构了表情选择逻辑,现在会评估所有可用的表情,而不仅仅是随机抽样,提高了选择的准确性。
- **修复**: 修复了 `ActionModifier` 中随机激活概率为100%的动作可能不触发的bug。
2025-11-19 22:59:33 +08:00
Windpicker-owo
f5fa235823 迁移napcat插件至built_in 2025-11-19 22:58:32 +08:00
Windpicker-owo
8b82f4f5aa 迁移:a247be0(ref:彻底合并normal和focus,完全基于planner决定target message) 2025-11-19 22:57:07 +08:00
Windpicker-owo
d86cfa90ad 迁移:3804124,9e9e796
(feat:将no_reply内置、fix:优化reply,填补缺失值)
2025-11-19 22:56:51 +08:00
Windpicker-owo
fe472dff60 修复代码格式和文件名大小写问题 2025-11-19 22:55:55 +08:00
minecraft1024a
824ef0ad02 refactor(core_actions): 移除 AntiInjectorSkipListCommand
精简了核心操作插件,移除了未使用的 `AntiInjectorSkipListCommand` 组件,以简化代码和配置。
2025-11-19 22:46:09 +08:00
Furina-1013-create
6af2716e0e 修复Action组件可用性和实现消息驱动思考循环
Action组件修复:
- 在core_actions插件中正确注册reply动作
ps:这个优先还是使用之前系统原有的reply,新增这个仅作为回退使用

- 更新_manifest.json、config.toml和plugin.py

- 解决no_reply和reply动作不可用问题(关于这个我觉得是之前的那个在focus模式下设置了提及/@ 必回然后移除动作的先后顺序这一块有问题)

大C发力了,今天有一点感冒所以停止思考这一块()
2025-11-19 22:45:56 +08:00
tt-P607
3e20d11eec <Thinking>
我需要分析这个git diff,并生成一个与之前完全不同的commit message。

让我先分析变更内容:

1. **主要变更**:
   - 在 `anti_injector.py` 中添加了新的 `auto` 处理模式
   - 添加了命令跳过列表功能 (`command_skip_list`)
   - 重构了反注入管理命令,从独立插件移动到核心动作插件
   - 更新了配置文件以支持新功能
   - 在插件管理器中添加了跳过列表刷新逻辑

2. **之前的commit message重点**:
   - 强调了"advanced anti-injection capabilities"
   - 重点描述了"intelligent 'auto' mode"
   - 提到了"command skip list"
   - 强调了"dynamically assesses threats"
   - 提到了"refactored and integrated into core actions plugin"

3. **我需要完全不同的角度**:
   - 可以从架构重构的角度
   - 可以从用户体验改进的角度
   - 可以从系统集成的角度
   - 可以从性能优化的角度

让我从**系统架构优化和插件整合**的角度来写这个commit message,重点强调:
- 插件系统的重构和整合
- 管理命令的迁移和统一
- 跳过机制的实现
- 自动化决策系统的引入

这样就能避免使用之前message中的关键词和结构。
</Thinking>

refactor(plugins): 重构反注入插件架构并优化命令管理体系

将反注入管理功能从独立插件迁移至核心动作模块,实现更好的系统集成。新增智能跳过机制,允许已注册的插件命令绕过检测流程,有效减少误判。同时引入自适应处理策略,系统可根据威胁评估结果自主选择最适当的响应方式。

插件管理器现已集成自动刷新功能,确保跳过列表与插件状态保持同步。配置系统扩展支持多种跳过模式和自定义规则,提升了整体可维护性和用户体验。
ps:谢谢雅诺狐姐姐投喂的提交喵^ω^
2025-11-19 22:44:03 +08:00
SengokuCola
0f6ed0fe02 ref:重构关系系统第一步,拆除impression,采用不同属性交叉评分呢 2025-08-12 01:38:19 +08:00
SengokuCola
3804124df8 fix:优化reply,填补缺失值,youhualog 2025-08-11 00:19:31 +08:00
SengokuCola
9e9e79694a feat:将no_reply内置 2025-08-10 22:12:56 +08:00