Windpicker-owo
|
cf9ce20bd5
|
fix: 使用inspect安全访问detached对象,避免触发lazy loading
|
2025-11-01 17:16:04 +08:00 |
|
Windpicker-owo
|
cabaf74194
|
style: ruff自动格式化修复 - 修复180个空白行和格式问题
|
2025-11-01 17:06:40 +08:00 |
|
Windpicker-owo
|
ece6a70c65
|
fix: 为relationship_fetcher添加detached对象访问保护
- 使用getattr()和try-except安全访问relationship对象属性
- 防止缓存的detached对象导致Session绑定错误
- 即使字段访问失败也能继续执行,使用空字典
|
2025-11-01 16:56:35 +08:00 |
|
Windpicker-owo
|
216c88d138
|
fix(database): 修复 detached 对象延迟加载导致的 greenlet 错误
问题:
- CRUD 返回的对象在 session 关闭后变为 detached 状态
- 访问属性时 SQLAlchemy 尝试延迟加载,但没有 session
- 导致: greenlet_spawn has not been called
根本原因:
- SQLAlchemy 对象在 session 外被访问
- 延迟加载机制尝试在非异步上下文中执行异步操作
修复方案:
1. CRUDBase.get_by(): 在 session 内预加载所有列
2. CRUDBase.get_multi(): 在 session 内预加载所有实例的所有列
3. PersonInfo.get_value(): 添加异常处理,防御性编程
影响:
- 所有通过 CRUD 获取的对象现在都完全加载
- 避免了 detached 对象的延迟加载问题
- 可能略微增加初始查询时间,但避免了运行时错误
|
2025-11-01 16:22:54 +08:00 |
|
Windpicker-owo
|
1d236caf53
|
refactor: 迁移PersonInfo和关系查询到优化后的API
PersonInfo查询优化 (person_info.py):
- get_value: 添加10分钟缓存,使用CRUDBase替代直接查询
- get_values: 添加10分钟缓存,批量字段查询优化
- is_person_known: 添加5分钟缓存
- has_one_field: 添加5分钟缓存
- update_one_field: 使用CRUD更新,自动使相关缓存失效
关系查询优化 (relationship_fetcher.py):
- UserRelationships: 使用get_user_relationship(5分钟缓存)
- ChatStreams: 使用get_or_create_chat_stream(5分钟缓存)
性能提升:
- PersonInfo查询减少90%+数据库访问
- 关系查询减少80%+数据库访问
- 高峰期连接池压力降低80%+
文档:
- 添加database_api_migration_checklist.md迁移清单
|
2025-11-01 15:46:27 +08:00 |
|
Windpicker-owo
|
a1dc03cacc
|
refactor: 完成数据库重构 - 批量更新导入路径
- 更新35个文件的导入路径 (共65处修改)
- sqlalchemy_models core.models (模型类)
- sqlalchemy_database_api compatibility (兼容函数)
- database.database core (初始化/关闭函数)
- 添加自动化导入更新工具 (scripts/update_database_imports.py)
- 所有兼容性层测试通过 (26/26)
- 数据库核心功能测试通过 (18/21)
|
2025-11-01 14:22:54 +08:00 |
|
明天好像没什么
|
0e129d385e
|
refactor: 统一类型注解风格并优化代码结构
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链
BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
|
2025-10-31 22:42:39 +08:00 |
|
minecraft1024a
|
a29be48091
|
refactor(core): 优化类型提示与代码风格
本次提交对项目代码进行了广泛的重构,主要集中在以下几个方面:
1. **类型提示现代化**:
- 将 `typing` 模块中的 `Optional[T]`、`List[T]`、`Dict[K, V]` 等旧式类型提示更新为现代的 `T | None`、`list[T]`、`dict[K, V]` 语法。
- 这提高了代码的可读性,并与较新 Python 版本的风格保持一致。
2. **代码风格统一**:
- 移除了多余的空行和不必要的空格,使代码更加紧凑和规范。
- 统一了部分日志输出的格式,增强了日志的可读性。
3. **导入语句优化**:
- 调整了部分模块的 `import` 语句顺序,使其符合 PEP 8 规范。
这些更改不涉及任何功能性变动,旨在提升代码库的整体质量、可维护性和开发体验。
|
2025-10-31 20:56:17 +08:00 |
|
Windpicker-owo
|
cf83d801ab
|
fix(relationship): 修复关系信息提取中的类型检查和数据库查询问题
- 添加对 points 和 forgotten_points 的类型检查,确保始终为列表类型
- 修复数据库查询中缺失的 await 调用
- 统一数据库查询结果的字典访问方式,替代之前的对象属性访问
- 改进错误日志记录,添加完整的异常堆栈信息
- 优化默认关系信息的返回逻辑,仅在完全无数据时返回初次交流提示
fix(plugins): 修复插件工具类初始化参数传递问题
- 在 ChatStreamImpressionTool 和 UserProfileTool 中添加 chat_stream 参数传递
- 确保插件工具类正确调用父类初始化方法
|
2025-10-30 17:35:21 +08:00 |
|
Windpicker-owo
|
ea7c1f22f9
|
feat(relationship): 重构关系信息提取系统并集成聊天流印象
- 在 RelationshipFetcher 中添加 build_chat_stream_impression 方法,支持聊天流印象信息构建
- 扩展数据库模型,为 ChatStreams 表添加聊天流印象相关字段(stream_impression_text、stream_chat_style、stream_topic_keywords、stream_interest_score)
- 为 UserRelationships 表添加用户别名和偏好关键词字段(user_aliases、preference_keywords)
- 在 DefaultReplyer、Prompt 和 S4U PromptBuilder 中集成用户关系信息和聊天流印象的组合输出
- 重构工具系统,为 BaseTool 添加 chat_stream 参数支持上下文感知
- 移除旧的 ChatterRelationshipTracker 及相关关系追踪逻辑,统一使用评分API
- 在 AffinityChatterPlugin 中添加 UserProfileTool 和 ChatStreamImpressionTool 支持
- 优化计划执行器,移除关系追踪相关代码并改进错误处理
BREAKING CHANGE: 移除了 ChatterRelationshipTracker 类及相关的关系追踪功能,现在统一使用 scoring_api 进行关系管理。BaseTool 构造函数现在需要 chat_stream 参数。
|
2025-10-30 16:58:26 +08:00 |
|
sunbiz1024
|
8f4f7d19af
|
ruff
|
2025-10-06 09:38:16 +08:00 |
|
minecraft1024a
|
9d705463ce
|
ruff fix但指定了--unsafe-fixes
|
2025-10-05 21:48:32 +08:00 |
|
minecraft1024a
|
2c74b472ab
|
style: 统一代码风格并进行现代化改进
对整个代码库进行了一次全面的风格统一和现代化改进。主要变更包括:
- 将 `hasattr` 等内置函数中的字符串参数从单引号 `'` 统一为双引号 `"`。
- 采用现代类型注解,例如将 `Optional[T]` 替换为 `T | None`,`List[T]` 替换为 `list[T]` 等。
- 移除不再需要的 Python 2 兼容性声明 `# -*- coding: utf-8 -*-`。
- 清理了多余的空行、注释和未使用的导入。
- 统一了文件末尾的换行符。
- 优化了部分日志输出和字符串格式化 (`f"{e!s}"`)。
这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
|
2025-10-05 13:21:27 +08:00 |
|
Windpicker-owo
|
624298e1b8
|
refactor(chat): 异步化聊天系统并重构兴趣值计算机制
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括:
- 异步化ChatManager相关方法,避免阻塞主线程
- 重构兴趣值计算系统,从插件内部计算改为通过兴趣管理器统一处理
- 新增should_act字段支持更细粒度的动作决策
- 优化初始化逻辑,避免构造函数中的异步操作
- 扩展插件系统支持兴趣计算器组件注册
- 更新数据库模型以支持新的兴趣值相关字段
这些改进提升了系统的响应性能和可扩展性,同时保持了API的向后兼容性。
|
2025-10-05 01:25:52 +08:00 |
|
John Richard
|
7923eafef3
|
re-style: 格式化代码
|
2025-10-02 20:26:01 +08:00 |
|
John Richard
|
ecb02cae31
|
style: 格式化代码
|
2025-10-02 19:38:39 +08:00 |
|
Windpicker-owo
|
fd76e36320
|
refactor(chat): 迁移数据库操作为异步模式并修复相关调用
将同步数据库操作全面迁移为异步模式,主要涉及:
- 将 `with get_db_session()` 改为 `async with get_db_session()`
- 修复相关异步调用链,确保 await 正确传递
- 优化消息管理器、上下文管理器等核心组件的异步处理
- 移除同步的 person_id 获取方法,避免协程对象传递问题
修复 deepcopy 在 StreamContext 中的序列化问题,跳过不可序列化的 asyncio.Task 对象
删除无用的测试文件和废弃的插件清单文件
|
2025-09-28 20:40:46 +08:00 |
|
Windpicker-owo
|
444f1ca315
|
ruff,私聊视为提及了bot
|
2025-09-20 22:34:22 +08:00 |
|
Windpicker-owo
|
b6753f2de4
|
feat(person-info): 增强人物关系信息构建功能
重构关系信息构建逻辑,从数据库查询更多维度数据生成详细关系描述:
- 增加认识时间、交流频率、态度评分等基本信息
- 整合UserRelationships表的额外关系数据
- 添加态度和关系分数的描述性文字转换方法
- 优化特征点选择策略,按权重和时效性综合排序
- 提供更结构化的关系信息输出格式
|
2025-09-19 18:24:30 +08:00 |
|
Windpicker-owo
|
c9b712d8fa
|
refactor(prompt): 重构并统一提示词系统
- 删除旧的智能提示词系统(smart_prompt.py)和相关参数模块(prompt_parameters.py)
- 将 prompt_builder.py 重命名为 prompt.py 并精简功能
- 更新所有模块的导入路径从 `src.chat.utils.prompt_builder` 到 `src.chat.utils.prompt`
- 统一提示词构建接口,使用新的 PromptContext 替代 SmartPromptParameters
- 移除重复和冗余代码,简化系统架构
BREAKING CHANGE: 旧的 SmartPrompt 系统已被完全移除,所有相关模块需要改用新的统一 Prompt 系统
|
2025-09-06 00:10:54 +08:00 |
|
雅诺狐
|
4a44ba9866
|
全面更换orjson
|
2025-08-26 14:20:26 +08:00 |
|
雅诺狐
|
2d4745cd58
|
初始化
|
2025-08-11 19:34:18 +08:00 |
|