minecraft1024a
c3e4091bc2
feat(prompt): 为提示词组件提供注入目标上下文
...
为了让单个提示词组件在注入到不同目标时能够有不同的行为,现在向组件的执行上下文中传递当前注入的目标提示词名称 (`target_prompt_name`)。
这使得组件可以根据注入点动态调整其生成的内容。例如,一个工具列表组件在注入到 planner prompt 和 reflection prompt 时可以提供不同详尽程度的列表。
主要变更:
- `BasePrompt` 初始化时接收 `target_prompt_name`。
- `PromptComponentManager` 在应用注入规则时会传递此参数。
- `add_injection_rule` 方法现在支持批量添加规则,以简化注册流程。
BREAKING CHANGE: `PromptComponentManager.add_injection_rule` 中 `content_provider` 的函数签名已更改,现在需要接受第二个参数 `target_prompt_name: str`。
旧签名: `async def provider(params: PromptParameters) -> str`
新签名: `async def provider(params: PromptParameters, target_prompt_name: str) -> str
2025-11-19 23:37:50 +08:00
copilot-swe-agent[bot]
f8e58ef229
fix: 修复代码质量问题 - 更正异常处理和导入语句
...
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com >
2025-11-19 23:35:35 +08:00
Windpicker-owo
01d754d5f9
feat(memory-graph): Step 1 - 集成记忆工具到插件系统
...
完成记忆系统工具的插件化集成:
1. 创建记忆工具适配器 (memory_plugin_tools.py)
- CreateMemoryTool: 创建新记忆
- LinkMemoriesTool: 关联两条记忆
- SearchMemoriesTool: 搜索相关记忆
- 适配 BaseTool 接口,支持 LLM 调用
2. 创建全局 MemoryManager 单例 (manager_singleton.py)
- initialize_memory_manager(): 初始化全局实例
- get_memory_manager(): 获取单例实例
- shutdown_memory_manager(): 关闭管理器
- 线程安全的单例模式
3. 创建记忆系统插件 (plugins/memory_graph_plugin/)
- MemoryGraphPlugin: 插件主类
- 自动注册3个记忆工具到系统
- on_plugin_loaded(): 初始化 MemoryManager
- on_unload(): 清理资源
4. 修复类型问题
- ToolParamType.OBJECT STRING (JSON格式)
- ToolParamType.NUMBER FLOAT
- attributes 参数支持 JSON 字符串解析
- 修复 min_importance None 比较错误
5. 添加集成测试 (test_plugin_integration.py)
- 测试工具导入和定义
- 测试 MemoryManager 初始化
- 测试工具执行(创建、搜索记忆)
- 测试单例模式
测试结果: 所有测试通过
LLM 现在可以通过工具调用主动管理记忆!
2025-11-19 23:32:07 +08:00
明天好像没什么
3db00aa8f3
ruff归零
2025-11-19 23:31:42 +08:00
tt-P607
ef460f5c74
chore(bilibli): 默认禁用bilibli插件
2025-11-19 23:31:23 +08:00
Windpicker-owo
6a592e221b
fix(plugin): 禁用hello_world_plugin以防止意外启用
...
fix(replyer): 修改提示信息中的“这句话”为“这条消息”以提高表达准确性
2025-11-19 23:30:29 +08:00
明天好像没什么
5638076328
refactor: 统一类型注解风格并优化代码结构
...
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-11-19 23:30:26 +08:00
tt-P607
a2c53fd54e
chore(bilibli): 默认禁用bilibili插件
2025-11-19 23:30:22 +08:00
Windpicker-owo
f34c71966e
feat(proactive-thinking): 利用聚焦能量增强能量计算和调度
...
-重构关系EnergyCalculator,使用聊天流兴趣评分代替用户关系评分
-更新主动思维调度器,使用聊天流中的焦点能量进行间隔计算
-通过更详细的信息改进整个主动思维系统的日志记录
-将chat_stream参数添加到插件工具构造函数中,以更好地处理上下文
-增强调度和事件处理中的错误处理和调试信息
这些变化通过以下方式改善了主动思维系统:
1.使用聊天流中的实时焦点能量,而不是静态用户关系评分
2.根据当前对话参与度提供更准确和动态的日程安排
3.添加全面的日志记录,以便更好地进行调试和监控
4.通过工具中的chat_stream参数确保正确的上下文传播
2025-11-19 23:27:19 +08:00
明天好像没什么
f5e82685a0
feat(plugin): 集成 MCP 协议支持并优化代码风格
...
- 新增 fastmcp 依赖,支持通过 Streamable HTTP 连接外部工具服务器
- 在 component_registry 与 tool_api 中实现 MCP 工具加载、注册及调用链路
- 补充 README 中的 MCP 特性说明
- 统一修复多处 import 顺序、空行、引号及类型注解,提升代码整洁度
- 在 pyproject.toml 中忽略 PERF203 规则,允许循环内异常处理
- 优化语音缓存与本地 ASR 调用逻辑,减少冗余代码
2025-11-19 23:27:03 +08:00
minecraft1024a
87f88c5913
refactor(plugin): 统一插件日志记录器为 get_logger
...
将 hello_world_plugin 中直接使用 `logging` 模块的方式,改为从 `src.common.logger` 导入并使用 `get_logger`。
这确保了插件日志与核心应用日志格式和配置的一致性,便于集中管理和问题排查。同时,此举也修正了 Pylance 关于导入顺序的警告。
2025-11-19 23:25:05 +08:00
minecraft1024a
92f5f9bbd9
feat(plugin_system): 引入高级Prompt注入规则系统以取代旧注入点机制
...
引入了一套全新的、基于规则的Prompt注入系统,以取代原有的 `injection_point` 机制。这套新系统提供了更强大、更灵活的Prompt内容注入能力。
主要变更包括:
- **引入 `InjectionRule` 和 `InjectionType`**:定义了注入规则的数据结构和注入类型(如 `PREPEND`, `APPEND`, `REPLACE`, `REMOVE`, `INSERT_AFTER`),允许插件开发者精确控制注入行为。
- **重构 `PromptComponentManager`**:核心逻辑从简单地拼接字符串 (`execute_components_for`) 重构为按优先级应用注入规则 (`apply_injections`),支持正则表达式匹配和更复杂的注入操作。
- **向后兼容**:`PromptInfo` 中增加了兼容逻辑,能自动将旧的 `injection_point` 定义转换为新的 `injection_rules`,确保现有插件无需立即修改即可正常工作。
- **更新 `BasePrompt`**:废弃了 `injection_point` 属性,并推荐使用新的 `injection_rules` 属性。
- **更新示例插件**:`hello_world_plugin` 已更新,展示了新注入规则的使用方法。
BREAKING CHANGE: `BasePrompt` 中的 `injection_point` 属性已被废弃。虽然目前存在向后兼容逻辑,但未来版本将移除该属性。所有Prompt组件都应迁移至使用 `injection_rules` 以获得更强的控制力和未来的兼容性。
2025-11-19 23:24:45 +08:00
minecraft1024a
f1dfe64f88
chore: 代码格式化与类型注解优化
...
对项目中的多个文件进行了代码风格调整和类型注解更新。
- 使用 ruff 工具对代码进行自动格式化,主要包括:
- 统一 import 语句的顺序和风格。
- 移除未使用的 import。
- 调整代码间距和空行。
- 将部分 `Optional[str]` 和 `List[T]` 等旧式类型注解更新为现代的 `str | None` 和 `list[T]` 语法。
- 修复了一些小的代码风格问题,例如将 `f'...'` 更改为 `f"..."`。
2025-11-19 23:24:42 +08:00
minecraft1024a
0917318cbd
feat(plugin): 引入Prompt组件系统以实现动态Prompt注入
...
引入了一个新的插件组件类型 `BasePrompt`,允许插件动态地向核心Prompt模板中注入额外的上下文信息。该系统旨在提高Prompt的可扩展性和可定制性,使得开发者可以在不修改核心代码的情况下,通过插件来丰富和调整模型的行为。
主要变更包括:
- **`BasePrompt` 基类**: 定义了Prompt组件的标准接口,包括 `execute` 方法用于生成注入内容,以及 `injection_point` 属性用于指定目标Prompt。
- **`PromptComponentManager`**: 一个新的管理器,负责注册、分类和执行所有 `BasePrompt` 组件。它会在构建核心Prompt时,自动查找并执行相关组件,将其输出拼接到主Prompt内容之前。
- **核心Prompt逻辑更新**: `src.chat.utils.prompt.Prompt` 类现在会调用 `PromptComponentManager` 来获取并注入组件内容。
- **插件系统集成**: `ComponentRegistry` 和 `PluginManager` 已更新,以支持 `BasePrompt` 组件的注册、管理和统计。
- **示例插件更新**: `hello_world_plugin` 中增加了一个 `WeatherPrompt` 示例,演示了如何创建和注册一个新的Prompt组件。
- **代码重构**: 将 `PromptParameters` 类从 `prompt.py` 移动到独立的 `prompt_params.py` 文件中,以改善模块化和解决循环依赖问题。
2025-11-19 23:23:28 +08:00
minecraft1024a
2e1ca1ac78
ruff ci
2025-11-19 23:23:02 +08:00
Windpicker-owo
963bcd19e1
feat(action): 重构 Action 激活机制并添加 go_activate() 方法
...
引入新的 Action 激活机制,允许通过重写 go_activate() 方法来自定义激活逻辑。提供了三个工具函数:
- _random_activation(): 随机概率激活
- _keyword_match(): 关键词匹配激活
- _llm_judge_activation(): LLM 智能判断激活
主要变更:
- 在 BaseAction 中添加 go_activate() 抽象方法和相关工具函数
- 更新 ActionModifier 使用新的激活判断逻辑
- 在 hello_world_plugin 中添加新的激活方式示例
- 更新文档说明新的激活机制
- 保持向后兼容,旧的激活类型配置仍然可用
BREAKING CHANGE: Action 激活判断现在通过 go_activate() 方法进行,旧的激活类型字段已标记为废弃但仍然兼容
2025-11-19 23:22:46 +08:00
雅诺狐
635a39fa5a
refactor: 清理项目结构并修复类型注解问题
...
修复 SQLAlchemy 模型的类型注解,使用 Mapped 类型避免类型检查器错误
- 修正异步数据库操作中缺少 await 的问题
- 优化反注入统计系统的数值字段处理逻辑
- 添加缺失的导入语句修复模块依赖问题
2025-11-19 23:20:11 +08:00
minecraft1024a
2a89efe47a
ruff fix但指定了--unsafe-fixes
2025-11-19 23:19:42 +08:00
minecraft1024a
7426c7ae55
refactor(video): 视频分析模块重构为纯 inkfox 实现
...
将视频分析模块 `utils_video.py` 完全重构,移除旧的 rust_video 模块和 Python/OpenCV 降级实现,统一使用 `inkfox.video` 库提供的 Rust 扩展能力。
主要变更:
- **依赖简化**: 移除对 `rust_video` 和 `opencv-python` 的依赖,仅依赖 `inkfox`。
- **代码重构**: 删除大量冗余代码,包括旧的 Rust 模块接口、Python 降级逻辑、复杂的并发控制和多种抽帧模式。
- **性能统一**: 关键帧提取统一使用 `inkfox.video.extract_keyframes_from_video`,确保所有环境下的性能一致性。
- **逻辑简化**: 简化了缓存逻辑、并发控制和配置项,使代码更清晰、更易于维护。
- **API 统一**: `_select_model` 和 `_execute_request` 方法调用更新,以适应 `LLMRequest` 的最新接口。
- **文档更新**: 更新了模块文档字符串,以反映新的实现和功能。
2025-11-19 23:18:28 +08:00
minecraft1024a
cd84373828
style: 统一代码风格并进行现代化改进
...
对整个代码库进行了一次全面的风格统一和现代化改进。主要变更包括:
- 将 `hasattr` 等内置函数中的字符串参数从单引号 `'` 统一为双引号 `"`。
- 采用现代类型注解,例如将 `Optional[T]` 替换为 `T | None`,`List[T]` 替换为 `list[T]` 等。
- 移除不再需要的 Python 2 兼容性声明 `# -*- coding: utf-8 -*-`。
- 清理了多余的空行、注释和未使用的导入。
- 统一了文件末尾的换行符。
- 优化了部分日志输出和字符串格式化 (`f"{e!s}"`)。
这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
2025-11-19 23:18:16 +08:00
minecraft1024a
9175207e79
refactor(plugin_system): 引入 PluginMetadata 替代 manifest.json
...
将插件元数据定义从外部 `_manifest.json` 文件迁移到插件 `__init__.py` 文件中的 `__plugin_meta__` 变量。此举简化了插件加载流程,减少了文件I/O,并使元数据与插件代码更紧密地耦合。
主要变更:
- 引入 `PluginMetadata` 数据类来标准化插件元数据。
- 插件基类 `PluginBase` 现在直接接收 `PluginMetadata` 对象,不再负责解析 JSON 文件。
- 插件管理器 `PluginManager` 调整加载逻辑,从插件模块的 `__plugin_meta__` 属性获取元数据。
- 删除了 `manifest_utils.py` 及其相关的验证和版本比较逻辑,简化了依赖关系。
- 更新了所有内置插件,以采用新的元数据定义方式,并删除了它们各自的 `_manifest.json` 文件。
BREAKING CHANGE: 插件加载机制已改变。所有插件必须在其 `__init__.py` 中定义一个 `__plugin_meta__` 变量,该变量是 `PluginMetadata` 类的实例,并移除旧的 `_manifest.json` 文件。
2025-11-19 23:17:29 +08:00
John Richard
a79253c714
re-style: 格式化代码
2025-11-19 23:13:20 +08:00
minecraft1024a
418f92d636
refactor(plugins): 将多个社交互动插件整合到 social_toolkit_plugin
...
将 `set_emoji_like`, `at_user`, `poke`, `reminder`, 和 `set_typing_status` 等多个独立的内置插件的功能进行重构和整合,统一归入一个新的 `social_toolkit_plugin` 插件中。
这次重构旨在:
- 减少插件数量,简化插件管理和维护。
- 整合相似的功能(如用户互动、提醒等),提高代码复用性。
- 为未来添加更多社交互动功能提供一个统一的框架。
2025-11-19 23:11:15 +08:00
minecraft1024a
9422d1d547
revert 1a24233b86deb0c4d8446ff31c072ea4b18572aa中的plugin.py
2025-11-19 23:08:53 +08:00
tt-P607
42645972e4
feat(core): 实现消息异步处理并引入LLM驱动的智能表情回应
...
本次更新对系统核心处理流程和插件功能进行了重要升级,主要包含以下两方面:
1. **消息处理异步化**:
- 在 `main.py` 中引入了 `asyncio.create_task` 机制,将每条消息的处理过程包装成一个独立的后台任务。
- 这解决了长时间运行的AI或插件操作可能阻塞主事件循环的问题,显著提升了机器人的响应速度和系统稳定性。
- 为后台任务添加了完成回调,现在可以详细地记录每个消息处理任务的成功、失败或取消状态及其耗时,便于监控和调试。
2. **`set_emoji_like` 插件智能化**:
- 为 `set_emoji_like` 插件增加了LLM驱动的表情选择功能。当动作指令未指定具体表情时,插件会自动构建包含聊天上下文、情绪和人设的提示,请求LLM选择一个最合适的表情进行回应。
- 为支持此功能,对AFC规划器的提示词进行了优化,为LLM提供了更清晰的参数示例和规则,提高了动作生成的准确性。
此外,为了统一日志规范,将 `[所见]` 消息接收日志集中到 `bot.py` 中,确保在任何过滤逻辑执行前记录所有收到的消息,并移除了插件中重复的日志。
2025-11-19 23:08:52 +08:00
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
minecraft1024a
f842c43ab0
ruff
2025-11-19 23:05:47 +08:00
minecraft1024a
901c86dcd6
refactor(set_emoji_like): 使用 send_command 方法发送表情回应
...
将原先直接调用底层 `adapter_command_to_stream` 的方式重构为使用封装好的 `self.send_command` 辅助方法。
此次重构简化了动作实现代码,提高了可读性,并更好地封装了命令发送的逻辑。
2025-11-19 23:05:43 +08:00
雅诺狐
a82c16852f
refactor(chat): 优化自消息处理逻辑和回复目标选择机制
...
- 添加自消息阻断机制,避免机器人回复自己的消息
- 重构回复目标选择逻辑,优先选择非机器人用户的消息作为回复目标
2025-11-19 23:05:18 +08:00
雅诺狐
229d47d79b
refactor(db): 修正SQLAlchemy异步操作调用方式
...
移除session.add()方法的不必要await调用,修正异步数据库操作模式。主要变更包括:
- 将 `await session.add()` 统一改为 `session.add()`
- 修正部分函数调用为异步版本(如消息查询函数)
- 重构SQLAlchemyTransaction为完全异步实现
- 重写napcat_adapter_plugin数据库层以符合异步规范
- 添加aiomysql和aiosqlite依赖支持
2025-11-19 23:05:17 +08:00
tt-P607
65087b8c98
回退“feat: 实现KEYWORD_OR_LLM_JUDGE激活类型”
2025-11-19 23:01:17 +08:00
tt-P607
c64a1f8ea5
feat(tarots): 新增塔罗牌占卜插件
...
新增了一个功能完备的塔罗牌占卜插件,为机器人增加了娱乐和互动能力。
主要功能包括:
- **自然语言交互**:通过 Action 响应用户的抽牌请求,并由大模型进行个性化解牌。
- **多牌组与牌阵**:内置B站幻星集、经典韦特和东方塔罗牌组,支持单张、圣三角等多种牌阵。
- **智能图片缓存**:自动从网络下载并缓存卡牌图片,具备完整性校验和代理支持,提升响应速度。
- **管理指令**:提供 `/tarots` 指令,方便管理员一键缓存所有图片和切换当前使用的牌组。
2025-11-19 23:01:15 +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
f297eed9bb
ada现在支持接收贴表情消息
2025-11-19 22:59:14 +08:00
Furina-1013-create
5254d4c0f1
是谁改模板配置文件不改版本号我不说()
2025-11-19 22:59:12 +08:00
Windpicker-owo
f5fa235823
迁移napcat插件至built_in
2025-11-19 22:58:32 +08:00
minecraft1024a
2e436dff33
rrrrrrrrrrrrrruuuuuuuuuuuuuuuuuuuuffffffffffffffffffffffffff
2025-11-19 22:57:45 +08:00
minecraft1024a
d66e04baff
chore: format code and remove redundant blank lines
...
This commit applies automated code formatting across the project. The changes primarily involve removing unnecessary blank lines and ensuring consistent code style, improving readability and maintainability without altering functionality.
2025-11-19 22:57:44 +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
91454fe576
fix: at和回复只显示qq号的问题
2025-11-19 22:57:13 +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
Windpicker-owo
fe472dff60
修复代码格式和文件名大小写问题
2025-11-19 22:55:55 +08:00
Windpicker-owo
c4a4fc53cc
ruff
2025-11-19 22:54:32 +08:00
Windpicker-owo
f386ce01ec
ruff
2025-11-19 22:54:31 +08:00
Windpicker-owo
b4f8b27ea5
修复ada插件
2025-11-19 22:54:30 +08:00
Windpicker-owo
913ea4ebe2
test
2025-11-19 22:54:30 +08:00
Windpicker-owo
efd55016bd
更新todo
2025-11-19 22:54:30 +08:00
Windpicker-owo
c9b9d7ee03
ruff
2025-11-19 22:54:29 +08:00
minecraft1024a
50da9d90ab
ruff ci
2025-11-19 22:54:09 +08:00