Skip to content

96 feature rename tool callsargs hash to kwargs and drop old data#105

Merged
SunYanbox merged 3 commits into
developfrom
96-feature-rename-tool_callsargs_hash-to-kwargs-and-drop-old-data
May 3, 2026
Merged

96 feature rename tool callsargs hash to kwargs and drop old data#105
SunYanbox merged 3 commits into
developfrom
96-feature-rename-tool_callsargs_hash-to-kwargs-and-drop-old-data

Conversation

@SunYanbox
Copy link
Copy Markdown
Owner

fix #96 and #104

SunYanbox added 3 commits May 3, 2026 08:13
- 破坏性变更: 数据库表结构变更,`tool_calls` 表的 `args_hash` 列被重命名为 `kwargs`,旧数据已被清空。用户需确保应用版本与数据库模式同步,旧数据无法直接迁移。
- 重构优化: 修改了 `_migrate_args_hash_to_kwargs` 迁移逻辑以处理列重命名和数据清理。更新了 `add_tool_call` 方法的签名,将参数 `args_hash` 替换为 `kwargs`,并同步修改了底层 SQL 插入语句的列名映射。
- 破坏性变更: `tool_registry` 模块的 `_compute_args_hash` 方法已被移除,替换为 `_compute_kwargs_json`。数据库写入逻辑不再传递哈希字符串,而是传递经过处理的 JSON 字符串,需确保数据库层已同步更新以接收新格式数据。
- 重构优化: 引入 `truncate_string` 工具函数,在序列化前对长度超过 256 字符的字符串值进行截断处理(追加 "..." 后缀),防止长文本导致数据库存储异常。
- 代码清理: 移除未使用的 `hashlib` 导入,替换为 `copy` 和自定义的 `string_snapshot` 模块,简化了参数计算逻辑并提升了数据可读性。
- 修复问题: 解决多线程测试场景下的数据库连接未关闭导致的 ResourceWarning
  * 在 `tests/core/test_database_manager.py` 的 `write_session` 函数中增加 `finally` 块
  * 调用 `db.close()` 确保每个线程在异常或正常退出时主动关闭数据库连接
- 重构优化: 完善测试隔离机制以确保单例状态纯净并释放底层资源
  * 在 `tests/core/test_tool_registry.py` 的 `isolate_tool_registry` fixture 中引入 `DatabaseManager` 模块
  * 在测试清理阶段显式调用 `DatabaseManager.reset_instances()` 重置单例实例
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

1 participant