Skip to content

Latest commit

 

History

History
368 lines (255 loc) · 17.7 KB

File metadata and controls

368 lines (255 loc) · 17.7 KB

更新日志

所有重要的项目更改都将记录在此文件中。

格式基于 Keep a Changelog, 并且本项目遵循 语义化版本


[1.5.2] - 2026-02-03

修复

  • Windows 兼容性全面加固
    • 路径持久化优化:引入 utils/paths.py 统计管理路径,配置文件 (.env.config) 和日志目录改为“应用目录优先,回退用户目录”策略,解决在只读目录(如 Program Files)下无法运行的问题。
    • 终端初始化增强:在 terminal.py 中显式初始化 Windows 控制台(windows_console.py),强制启用 UTF-8 和 VT 模式,解决中文乱码与输入异常。
    • 默认路径稳定性:将知识库默认路径设为应用目录下的 kb-docs,解决从快捷方式启动时路径偏移问题。
    • 打包兼容性:移除了 dify_chat_tester.spec 中对 VC 运行库 DLL 的排除规则,提升在未安装运行库环境下的启动成功率。
    • 输入法与按键修复:加固 termios 导入逻辑,增加异常捕获,确保即使在平台检测失效时也能优雅降级。
  • 批量处理鲁棒性
    • 空问题对齐:并发模式下空问题会写入日志并计入保存,保证行号与断点续传准确。
    • 中断清理:Ctrl+C 退出改为正常返回并保存进度,避免终端状态异常或输出丢失。
    • 输出目录兜底:当输入目录不可写时,自动回退到用户数据目录并提示。
  • 插件加载可靠性
    • 目录定位:源码模式优先从当前工作目录查找 external_plugins,否则回退到项目根目录,降低路径误判。
  • 导出路径兼容
    • 聊天日志:尊重用户传入的绝对路径;若不可写则自动回退并提示。
    • QA 断点续传:兼容旧版在当前目录生成的任务文件,恢复逻辑按更新时间选择。

[1.5.1] - 2026-01-24

变更

  • 版本号升级至 v1.5.1
  • requires-python 提升至 >= 3.10,并同步 README 版本标识。
  • 安装入口脚本修正为 dify_chat_tester.cli.app:run_app

修复

  • OpenAI 非流式模式:修复了非流式请求在部分路径下返回空字符串的问题,确保返回实际响应内容。
  • 批量并发模式:修复了并发批量处理与失败重试阶段对 metadata 的解构/取值错误,避免日志与统计字段错乱。
  • Windows 兼容性
    • input_api_key 在 Windows 下使用 msvcrt 读取按键,避免 termios/tty 导致的崩溃。
    • 并发批量键盘监听在 Windows 下使用 msvcrt,保持暂停/停止交互可用。

安全

  • Zip Slip 防护:外部 zip 插件解压前增加路径校验,阻断路径穿越写文件风险。

清理

  • 移除未使用的 pandas 依赖,并同步更新锁文件。

[1.5.0] - 2026-01-24

新增

  • 功能 4:批量生成 QA 问答对
    • 新增核心模块 core/qa.py,支持基于 Markdown 文档批量生成 "问题+答案" 对。
    • 支持 Excel (含 Token/Latency 统计) 和 Markdown 格式导出。
    • 集成实时流式显示、Token 消耗统计面板。
    • 稳健性增强:新增失败自动重试机制与任务断点续传功能。

[1.4.5] - 2025-12-24

修复

  • UI 稳定性
    • 修复了并发批量处理模式下,控制台日志输出(stderr)干扰 Rich 库 UI 渲染,导致界面撕裂、表格重复显示的问题。现在并发执行期间会自动挂起控制台日志输出。

[1.4.4] - 2025-12-23

新增

  • 插件系统增强
    • 支持动态生成唯一的菜单 ID,解决插件与主程序菜单 ID 冲突的问题。
    • 主菜单现可自动显示已加载插件的版本号(如 (v0.2.0))。
    • 增强选择器逻辑 (selectors.py),支持返回包含回调函数的完整菜单对象,为插件扩展提供底层支持。
  • 思维链标签注入
    • OpenAIProvideriFlowProvider 现支持将流式响应中的 reasoning_content 自动包装为 <thinking>...</thinking> 标签并追加到最终响应,便于下游分析工具提取。

修复

  • 核心逻辑修复
    • 修复了 dify_chat_tester/core/batch.py 中存在的变量名引用错误 (doc_name_col_name 未定义),解决了串行批量处理时的 Crash 问题。

优化

  • 核心稳定性
    • 测试全覆盖:补全 ConfigLoaderPluginManagermain.py 启动逻辑的单元测试。
    • 启动重构:重构了 main.py 的启动依赖检查逻辑,显著提升其可测试性与健壮性。
    • 代码规范:全项目执行 ruff formatruff check --fix,修复了多处 Python 兼容性隐患。
    • CLI 交互:重构了 terminal.py 中的提示信息组件,统一使用 rich.console 进行渲染,代码结构更简洁。
    • 配置与隐私:更新 .gitignore 规则,默认忽略外部插件目录(白名单制)及会话历史文件,提升项目安全性。

清理

  • 移除了冗余的 scripts/scan_plugin_deps.py 脚本,功能已完全整合进主程序。

[1.4.3] - 2025-12-19

新增

  • 平均任务耗时显示:批量处理界面底部新增平均任务耗时统计(如"4.8 秒/任务"或"1.25 分钟/任务")。
  • Dify 并发建议:在选择供应商时,Dify 选项后显示并发数建议提示(建议 ≤3)。
  • 友好错误提示:QueuePool 连接池错误现在会显示友好的中文提示和解决建议。
  • 统计结果优化:批量处理完成后的“总用时长”字段支持自动转换为分钟/小时单位(例如 "10 小时 45 分 29 秒")。

优化

  • 报错信息优化:增强 _friendly_error_message,识别 "inappropriate content" 等内容安全错误,返回中文提示。
  • 键盘交互体验:优化 Q 键中断操作,按下后立即刷新 UI 显示"正在停止"状态。
  • Ctrl+C 退出机制
    • 优化中断退出逻辑,按 Ctrl+C 后会保存当前进度并快速退出。
    • 彻底禁用 multiprocessing semaphore 泄漏警告,退出更干净。
    • 修复警告图标重复显示问题(串行模式和并行模式均已修复)。
  • Rich Live UI:修复批量处理时多表格叠加问题,固定表格宽度确保显示稳定。
  • 进度条布局:缩短进度条宽度,确保进度信息、剩余时间、平均耗时在同一行显示。
  • Dify 客户端标识:将发送给 Dify 的 user 标识从 chat_tester 改为 dify_chat_tester
  • 并发模式错误静默:Dify 返回的错误信息不再打印到控制台干扰 UI,只记录在日志中。
  • 代码风格:全项目执行 ruff format,统一代码格式规范。

修复

  • 错误处理增强_friendly_error_message 增强了对 Dify 数据库连接池错误的识别精确度,避免将普通网络超时误判为连接池错误。

测试

  • 覆盖率提升:新增串行模式单元测试 (TestRunSequentialBatch) 和 UI 逻辑测试 (tests/test_cli_ui.py)。
  • 新增 13 个测试用例,覆盖友好错误信息转换、带重试处理函数、高级表格功能。
  • 测试用例总数从 15 个增加到 39 个,整体通过率 100%。

清理

  • 删除重复的配置文件(dify_chat_tester/.env.config 等)。
  • 清理未使用的变量和导入。

[1.4.2] - 2025-12-17

新增

  • 导出功能:新增 /export 命令,支持将当前对话记录导出到 剪切板Markdown 文件

  • 插件增强AIProvider 基类新增 select_modelselect_role 钩子方法,允许插件接管默认的模型/角色选择逻辑(实现“零配置”交互)。

  • 剪切板支持:引入 pyperclip 库,实现跨平台的剪切板操作支持。

  • 示例插件 (Demo Plugin)

    • 新增全功能示例插件 external_plugins/demo_plugin,展示思维链、工具调用、流式输出等高级特性。
    • 支持通过 --enable-demo-plugin 参数按需启用,默认不加载,保持界面整洁。

优化

  • 并发批处理体验
    • 工具参数透传:在回复预览列中显示工具调用的具体参数,并自动截断过长内容。
    • 优雅退出:在并发处理时按 Q 键进入优雅停止模式,等待当前正在运行的任务完成后再安全退出。
    • 实时保存:修复了并发模式下进度未实时写入 Excel 的问题,确保中断时不丢失数据。

修复

  • 交互逻辑:修复了主菜单退出选项(输入 0)无法正确退出的 Bug。

[1.4.1] - 2025-12-16

新增

  • Loguru 日志系统集成
    • 全面替换标准 logging 库,提供 colorized 输出和更好的性能。
    • 支持更灵活的日志轮转策略(10MB 切割 + 7 天保留 + zip 压缩)。
    • InterceptHandler:自动捕获并接管第三方库(如 requests)的标准日志。
    • 插件独立日志:支持外部插件(External Plugins)将 Debug 日志写入独立文件,互不干扰。

修复

  • macOS 打包:修复了 build_macos.sh 脚本未包含 kb-docs 知识库文档目录的问题。

优化

  • 代码规范:全项目执行 black + isort 格式化,统一代码风格。
  • 测试增强:大幅补全单元测试用例,覆盖日志工具、批量处理等核心模块,并适配了新的日志系统。

[1.4.0] - 2025-12-16

重构

  • 模块化重构:将所有源代码重组为清晰的子模块(cli, core, config, utils, providers),极大提升了代码的可维护性。
  • 配置与日志分离:创建独立的 config/ 目录存放配置文件和日志逻辑,优化了项目根目录结构。
  • 版本管理:引入 _version.py 统一管理版本号,解决了循环导入问题。

新增

  • 外部插件隔离:支持通过 EXTERNAL_PLUGINS_PATH 环境变量加载外部自定义插件,实现核心代码与扩展功能的物理隔离。
  • 配置加载增强ConfigLoader 现在能智能识别开发环境、打包环境及新的配置文件路径。

修复

  • 超时问题:移除私有插件 RAG 长耗时任务的 HTTP 请求超时限制,解决了 ReadTimeoutError
  • 显示优化:修复了工具调用前思考过程文本丢失的问题,现在会通过“记录”面板持久化显示。
  • 循环依赖:彻底解决了 cli.appmain 之间的循环导入问题。
  • 流式输出:修复了部分插件在流式响应时 Excel 日志为空的问题。
  • 路径兼容性:修复了在不同目录下运行程序可能导致找不到配置文件的 Bug。

优化

  • 断点续传
    • 彻底移除了 .batch_state_*.json 临时缓存文件。
    • 新增基于日志文件([文件名]_log.xlsx)的智能断点续传机制,自动检测并恢复进度。
    • 简化了恢复流程,不再需要管理额外的状态文件。

清理

  • 移除了项目根目录下冗余的临时配置文件和过时文档。

[1.3.2] - 2025-12-05

新增

  • 统一异常处理:引入 exceptions.py 模块,定义标准化的异常类体系,提供更友好的错误提示信息。
  • 配置化批量保存:新增 BATCH_SAVE_INTERVAL 配置项,允许用户自定义批量处理时的自动保存间隔(默认 10 条)。

优化

  • 架构重构
    • 服务层抽离:将问题生成逻辑抽离为独立的 QuestionService,降低控制器耦合度。
    • 依赖注入:重构 AppController,支持外部注入配置和环境管理器,提升可测试性。
  • 优雅退出机制
    • main.py 中添加顶层 KeyboardInterrupt 捕获,用户按 Ctrl+C 时显示友好提示而非 Traceback。
    • 在批量处理循环中添加中断捕获,确保用户中断操作时自动保存当前处理进度,防止数据丢失。

测试

  • 覆盖率提升:新增针对服务层和异常处理模块的单元测试,确保核心逻辑稳健。

[1.3.1] - 2025-12-04

新增

  • 新增“AI 生成跨知识点测试提问点”主菜单功能:
    • 主菜单增加选项 3:AI 生成跨知识点测试提问点;
    • 原有生成测试提问点功能更名为“AI 生成单一知识点测试提问点”;
    • 支持从多个文档、多个知识点组合生成跨知识点测试问题。
  • 提示词配置增强:
    • 单一知识点和跨知识点的生成提示词均可在 .env.config 中单独配置;
    • 支持使用多行三引号格式书写复杂提示词,维护更加方便。

优化

  • 单一知识点生成逻辑:
    • 不再强制“至少 15-20 个问题”,而是根据知识点数量和用户真实提问概率动态决定问题数量;
    • 对高概率知识点会多生成不同角度的提问,对中低概率知识点做适度覆盖。
  • 跨知识点生成逻辑:
    • 提示词从“严格只生成中/高概率场景”调整为“优先高概率,但允许合理的一般场景”,减少全为空结果的情况;
    • 更强调从“真实用户具体场景”角度寻找组合使用方式(流程前后、工具协同、角色协同等)。
  • 配置与交互体验:
    • 对 Dify、OpenAI 兼容接口、iFlow 的基础 URL 和 API Key,如果在 .env.config 中已配置,交互时会先展示并询问是否直接使用;
    • 在非交互环境(如 pytest、CI)下自动跳过交互确认,直接使用配置值,避免阻塞测试。
  • 跨知识点迭代策略:
    • 新增 CROSS_KNOWLEDGE_MIN_ITERATIONSCROSS_KNOWLEDGE_MAX_ITERATIONS 配置项,控制随机组合轮数下限和上限;
    • 默认最少执行 5 轮、最多 20 轮,可按业务需要调整(例如提升为 50~100 轮以覆盖更多组合)。

修复

  • 修复配置加载器文档字符串中示例三引号导致的语法/缩进问题,确保在所有 Python 版本下正常导入。

[1.3.0] - 2025-12-02

新增

  • 智能日志系统:改进日志目录检测逻辑,自动处理权限问题(优先程序目录,无权限时回退至用户目录)。
  • 流式输出优化:新增 StreamDisplay 组件,提供更友好的 AI 思考过程展示(带机器人图标和边框)。
  • Excel 导出增强:生成的测试问题文件现在包含美化的表头和自动调整的列宽。
  • 测试增强:全面提升单元测试覆盖率,新增 selectorsterminal_uiquestion_generator 模块的测试用例。
  • UI 优化:改进 API 密钥隐藏逻辑,优化输入提示交互。
  • AI 提示词自定义 (新功能):
    • 支持通过 .env.config 配置文件自定义系统提示词
    • 新增 SYSTEM_PROMPT 配置项
    • 支持 {role} 占位符替换
    • 用户可调整 AI 对话风格和行为(专业领域/回答风格/多语言)
    • 详细配置文档:AI_PROMPT_CONFIG.md

优化

  • 配置管理重构:统一供应商设置模块 (provider_setup.py) 的配置读取逻辑。
  • 问题解析优化:增强 question_generator 的问题提取算法,支持识别带编号/列表形式的问题,只保留以问号结尾或原本为列表项的行,提升生成问题的准确性和稳定性。
  • 测试覆盖率再提升:在 ai_providersapp_controllerconfig_loaderterminal_uibatch_managerchat_managerconsole_platform 等模块补充大量单元测试用例,覆盖更多异常分支和回退逻辑。
  • 代码规范:引入 isort 进行导入排序,统一代码格式。
  • 文档完善:大幅更新《用户使用指南》,补充了详细的环境准备、安装步骤和多种运行方式说明。

[1.2.0] - 2025-12-01

新增

  • 新增“AI 生成测试提问点”功能:支持读取指定目录下的 Markdown 文档,自动生成测试问题并导出为 Excel 文件。
  • 完善了单元测试覆盖率。

修复

  • 修复了 Dify 供应商识别逻辑,现在使用唯一 ID 而不是显示名称进行判断,解决了自定义名称导致多轮对话失效的问题。
  • 修复了代码中的未使用的变量和导入,提升代码质量。
  • 优化了终端 UI 的面板宽度一致性。

[1.1.0] - 2025-11-21

新增

  • 批量查询模式默认显示响应内容(Y/n)
  • k2sonnet API 特殊支持和自动流式检测
  • 流式响应失败自动回退机制

优化

  • Dify 渠道实现真正的流式输出
  • 改进流式响应解析,支持实时显示
  • 增加请求超时时间到 60 秒
  • 优化错误处理和异常信息

修复

  • 修复 Dify 应用 ID 传递方式(通过 inputs 参数)
  • 修复 OpenAI 兼容接口的流式处理问题
  • 修复 iFlow 渠道的响应解析逻辑
  • 修复代码质量问题(清理未使用导入)

清理

  • 删除所有测试文件和调试文件
  • 清理缓存目录和构建产物
  • 优化项目结构,只保留核心文件

[1.0.0] - 2025-11-14

新增

  • 支持多 AI 供应商(Dify、OpenAI 兼容接口、iFlow)
  • 会话模式:实时多轮对话,自动维护上下文
  • 批量询问模式:从 Excel 文件批量处理问题
  • 自动创建配置文件功能
  • 跨平台打包支持(Windows 和 macOS)
  • 完整的中文用户指南

功能特性

  • AI 等待动画显示优化,避免信息截断
  • 支持自定义角色和模型
  • Excel 日志记录,包含时间戳、对话轮次等信息
  • 批量请求间隔可配置
  • 支持流式和非流式响应

技术改进

  • 使用 uv 包管理器管理依赖
  • PyInstaller 打包,生成独立可执行文件
  • 智能配置文件路径检测(开发环境/打包环境)
  • 完善的.gitignore 配置

文档

  • 详细的用户使用指南
  • 完整的 API 配置说明
  • 故障排除指南

版本说明

  • 主版本号:不兼容的 API 修改
  • 次版本号:向下兼容的功能性新增
  • 修订号:向下兼容的问题修正