Conversation
…` and `ruff.toml` / `pyproject.toml` 与 `ruff.toml` 中 Python 目标版本不一致 (#65) * fix(config): 统一 Python 目标版本配置 (#61) - 修复问题: 修正 `ruff.toml` 与 `pyproject.toml` 中的版本声明不一致 * 将 `target-version` 从 "py312" 更新为 "py314" * 确保 Ruff 的 `pyupgrade` 规则能正确识别 Python 3.14 的新特性 * refactor(core): 升级类型注解语法并修复异常捕获格式 - 重构优化: 移除 `typing_extensions` 依赖并采用 Python 3.10+ 原生语法 * 将 `from typing_extensions import deprecated` 替换为 `from warnings import deprecated` * 将 `Optional["ClassName"]` 重构为 `ClassName | None` * 将 `ClassVar[dict[str, "ClassName"]]` 等字符串前向引用移除 - 修复问题: 修正多处不符合 PEP 654 的异常捕获语法 * 将 `(OSError, PermissionError)` 元组形式改为 `OSError, PermissionError` 逗号分隔形式 * 涉及文件:`src/core/file_tracker.py`, `src/workspace/tools/stat_tool.py`, `src/workspace/tools/regex_search_tool.py`, `src/workspace/tools/exact_search_tool.py` * ci(github): 将 CI 工作流 Python 版本升级至 3.14 - 重构优化: 更新 GitHub Actions 配置以匹配项目目标环境 * 将 `actions/setup-python` 中的 `python-version` 从 '3.12' 修改为 '3.14' * 涉及任务:`Setup Python` (构建与测试阶段)
* fix(tools): 修复 to_doc 方法生成的 XML 标签不匹配问题 (#62) - 修复问题: 修正 base_tool.py 中工具文档生成逻辑的标签闭合错误 * 将 to_doc 方法末尾硬编码的 `</tool>` 标签更正为动态变量 `</func_name>` * 确保生成的 XML 结构与 `<func_name>` 开始标签正确配对 * fix(tools): 更新 base_tool 单元测试以匹配 XML 标签修正 - 修复问题: 同步测试用例中的断言逻辑以适配 `to_doc` 方法的修复 * 将 `test_base_tool.py` 中验证文档结尾的断言从 `</tool>` 修改为 `</func_name>` * 确保测试能正确校验工具描述、参数及闭合标签的正确性
* ref(tools): 移除工具结果收集中的冗余判空逻辑 - 重构优化: 简化 `add` 方法实现 * 删除对 `self.consumes` 和 `self.results` 字典键存在性的显式检查 * 依赖 `defaultdict(list)` 的默认行为自动处理缺失键 * ref(workspace): 移除多处工具中冗余的路径存在性检查 (#60) - 重构优化: 简化文件路径验证逻辑 * 删除 `stat_tool.py` 中 `target_path.exists()` 的显式判断及返回 `ToolErrorResponse` 的代码 * 删除 `regex_search_tool.py` 中 `search_path.exists()` 的显式判断及返回 `ToolErrorResponse` 的代码 * 删除 `exact_search_tool.py` 中 `search_path.exists()` 的显式判断及返回 `ToolErrorResponse` 的代码 * 依赖 `self.workspace.path_validator.validate(path)` 在路径无效时抛出异常,无需手动拦截
- 重构优化: 消除代码重复并统一文件读取元数据记录逻辑 * 从`read_tool.py`中移除重复的`_record_read_meta`方法实现 * 从`read_lines_tool.py`中移除重复的`_record_read_meta`方法实现 * 在`base_tool.py`中添加`_record_read_meta`私有方法,调用`FileTracker.get_file_meta`获取元数据 * 新实现通过`self.workspace.db.record_file_read`记录文件的相对路径、修改时间、大小及校验和
…ndling / 消除代码重复并统一异常处理 (#54, #58) (#76) * fix(tools): 修复代码重复问题 (#54) (#58) - 将 _validate_mtime 和 _generate_diff 方法从 EditTool 和 WriteTool 移至基类 BaseTool,消除重复代码 - 在 BaseTool 中添加 handle_tool_exceptions 装饰器,统一处理工具方法的异常 - 使用装饰器替换所有工具类中的四段式异常处理代码: - edit_tool.py, write_tool.py, read_tool.py, read_lines_tool.py - ls_tool.py, glob_tool.py, stat_tool.py, regex_search_tool.py - exact_search_tool.py, symbol_ref_tool.py - 移除工具类中无用的导入和重复代码 * refactor(workspace/tools): 移除路径验证器依赖并统一文档标点 - 重构优化: 清理冗余导入,将路径校验逻辑移至基类或调用方 * `symbol_ref_tool.py` 移除 `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `ls_tool.py` 移除 `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `read_tool.py` 移除 `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `stat_tool.py` 移除 `ToolErrorResponse`, `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `glob_tool.py` 移除 `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `read_lines_tool.py` 移除 `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `regex_search_tool.py` 移除 `PathNotFoundError`, `WorkspaceBoundaryError` 导入 * `exact_search_tool.py` 移除 `ToolErrorResponse`, `PathNotFoundError`, `WorkspaceBoundaryError` 导入 - 文档更新: 修正 docstring 标点符号规范 * `_validate_mtime` 方法注释由中文句号改为英文句点 * `handle_tool_exceptions` 装饰器注释由中文句号改为英文句点
- 新增功能: 实现二进制文件检测工具与扩展逻辑 * 新增 `src/utils/binary_detector.py` 模块,定义 `BINARY_EXTENSIONS` 常量集合 (包含 exe, dll, zip, png 等 100+ 扩展名) * 新增 `is_binary_file(path, encoding)` 函数,采用“扩展名匹配” + “内容解码校验”双重策略判断文件类型 * 检测逻辑支持读取前 512 字节并检查 null 字节 (`\x00`) 及 UTF-8 解码失败情况 - 修复问题: 在核心读写工具中集成二进制保护逻辑 * `read_tool.py`: 在 `read()` 方法调用 `is_binary_file` 拦截,返回明确错误提示 * `read_lines_tool.py`: 在 `read_lines()` 方法中增加相同拦截逻辑 * `write_tool.py`: 在写入前通过 `is_binary_file` 检查,阻止对 `.png`, `.exe` 或含二进制内容的文件进行覆盖 * `edit_tool.py`: 在 `edit()` 方法中增加检查,禁止修改二进制文件 * `audit_committer.py`: 在 `commit()` 流程中添加最终安全网,即使快照已批准,若检测到二进制文件则标记为 `REJECTED` - 文档更新: 补充单元测试验证防护有效性 * 新增 `tests/utils/test_binary_detector.py` 覆盖扩展名大小写、空文件、无效编码序列等边界场景 * 新增 `tests/workspace/tools/test_binary_protection.py` 验证 read/write/edit/commit 工具在遇到二进制文件时的拒绝行为 * 更新 `tests/core/test_audit_committer.py` 增加针对二进制文件提交的测试用例
Co-authored-by: Suntion <149924916+SunYanbox@users.noreply.github.com> Co-authored-by: Adithya Raj <adithyaraj.kanayamkott@gmail.com>
* docs(version): 升级 Python 版本要求至 3.14 - 破坏性变更: 更新最低 Python 版本限制 * `pyproject.toml` 中 `requires-python` 从 `>=3.12` 变更为 `>=3.14` * `README.md` 和 `README_ZH.md` 中的前置条件及技术栈说明同步更新为 `Python >= 3.14` - 文档更新: 同步项目版本号与依赖信息 * 项目版本从 `0.2.0` 提升至 `0.3.0` * 所有 README 文件中的版本标识符及 Python 环境要求保持一致 * docs(readme): 更新文档以包含版本历史记录文件 - 新增功能: 在 README 文件中添加 CHANGELOG 文件说明 * 在 docs/目录结构描述中新增 `CHANGELOG.md` 和 `CHANGELOG_ZH.md` 条目 * 同步中英文 README 文件的目录树展示内容
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.