Skip to content

v0.3.0

Choose a tag to compare

@yuunnn-w yuunnn-w released this 05 May 12:33
· 11 commits to main since this release

[0.3.0] - 2026-05-05

新增功能

  • 新增工具 execute_python:基于 RustPython 解释器执行 Python 代码,支持本地文件系统访问。具备 stdout/stderr 捕获、超时控制(1-30秒)、自动末行表达式求值、__working_dir 全局变量注入等特性。文件系统访问默认禁用(沙箱模式);该工具本身是安全工具,默认启用。
  • 完整的 Python 标准库支持:在 rustpython-stdlib 中启用 host_env 和 ssl-rustls 特性,使网络模块(socket、urllib、http、ssl)在沙箱模式和文件系统模式下均可用。
  • 内置 HTTP 请求能力:基于 urllib 的 HTTP 请求现在可在 Python 解释器内直接使用,无需外部依赖。
  • 4 个新工具(总计 25 个):
    • clipboard:跨平台剪贴板操作(read_text、write_text、read_image、clear),基于 arboard
    • archive:ZIP 归档操作(create、extract、list、append),支持可配置压缩级别,基于 zip
    • diff:高级差异比较工具,支持 4 种模式(compare_text、compare_files、directory_diff、git_diff_file)和 4 种输出格式(unified、side_by_side、summary、inline),基于 similar
    • note_storage:AI 短期内存便签本,30 分钟无操作自动清空。支持 create、list、read、update、delete、append、search
  • 工具预设:6 种预定义工具配置(minimal、coding、document、data_analysis、system_admin、full_power),一键启用
    • 新增 REST API:GET /api/tool-presets、GET /api/tool-presets/current、POST /api/tool-presets/apply/{name}
    • WebUI 侧边栏增加预设面板及当前预设指示器
  • 批量工具启用:POST /api/tools/batch-enable 批量启用/禁用多个工具
    • WebUI 侧边栏增加"全部启用"和"全部禁用"按钮
  • 内存便签系统:集成到 ServerState 的临时便签存储,30 分钟无操作自动清理
  • 新增依赖:arboard = "3.6"、zip = "8.6"、similar = "3.1"

安全

  • execute_python 默认以沙箱模式运行(文件系统访问禁用)。该工具本身是安全工具,默认启用。如需开启文件系统访问,请通过 WebUI 谨慎启用。
  • Python 沙箱加固:将模块黑名单策略替换为文件系统函数拦截策略。保留 os 模块可用性,使网络标准库模块(socket、urllib、http)能够正常工作,但所有 os 文件系统函数(open、listdir、mkdir、remove、rename、stat、walk 等)在沙箱模式下被阻塞。subprocess 和 ctypes 仍作为安全基线被阻止。启用文件系统访问时,open() 和 os 文件系统函数均被限制在工作目录内。
  • HTTP SSRF 防护:新增 IPv4 映射 IPv6 地址拦截(::ffff:127.0.0.1),禁用自动重定向,并为全局 HTTP 客户端配置连接超时和连接池限制。
  • 命令执行安全:超时后通过 Child::kill() 终止子进程,而非仅取消等待。新增命令长度限制(10,000 字符)。注入检测新增换行符(\n、\r`),并正确处理引号内的反斜杠转义。
  • 文件操作加固:重命名操作通过 ensure_path_within_working_dir 校验目标路径。跨文件系统移动时自动回退到复制+删除。消除 TOCTOU 竞态条件,移除 copy/move/delete/rename 前的预检查,直接依赖操作系统错误返回。
  • 哈希流式计算:大文件哈希改用 8KB 分块读取,避免一次性加载整个文件导致 OOM。
  • 文件大小限制:file_write 新增 100MB 内容限制,image_read 新增 50MB 限制。
  • 敏感信息过滤:env_get 对包含 SECRET、PASSWORD、TOKEN、KEY 的环境变量进行黑名单过滤。
  • archive 工具通过 ensure_path_within_working_dir 校验所有路径
  • diff 工具的 compare_files 和 directory_diff 模式限制在工作目录内
  • note_storage 数据完全临时(仅内存存储),30 分钟无操作后自动清空

修复

  • 崩溃修复:修复 json_query、file_read(highlight_line)、http_request、execute_command 中的 UTF-8 截断 panic,使用 char_indices() 安全边界检测。
  • 计算器正确性:拒绝尾部多余 token(如 (1+2))),修复一元运算符链(+-5),对负数的非整数次幂返回错误而非 NaN。
  • file_read offset_chars:续读提示现在正确报告字符偏移量,不再混淆字节长度。
  • file_search 性能:每次搜索只编译一次正则表达式;max_results 在遍历过程中强制执行,避免读取不必要的文件。
  • file_edit CRLF 处理:行替换、插入、删除模式现在保留 Windows \r\n 换行符。
  • 损坏符号链接检测:file_stat 和 path_exists 使用 symlink_metadata(),正确将损坏的符号链接报告为存在。
  • git_ops 路径处理:从 GIT_WORK_TREE 和 GIT_DIR 环境变量中去除 Windows UNC 前缀(\\?\),使 git 能正确识别仓库路径。
  • Web API 错误码:REST 端点现在返回正确的 HTTP 状态码 —— 工具不存在返回 404,配置参数无效返回 400,内部错误返回 500 —— 不再全部返回 500。
  • Web 静态文件:未知的 /api/* 路由现在返回正确的 404,不再回退到 SPA 的 index.html。

变更

  • md5 依赖替换为 md-5(RustCrypto),支持流式哈希计算。
  • datetime 改为使用系统本地时区,不再硬编码中国/北京 UTC+8。
  • system_info 使用 available_memory() 替代 free_memory(),内存使用率更准确。
  • process_list 内存单位从 KB 修正为 MB。
  • dir_list 按 size/modified 排序时复用预缓存的元数据,避免重复 stat 系统调用。
  • 默认 working_dir "." 现在启动时自动解析为实际当前工作目录。
  • default_disable_tools 现在包含 archive。
  • 更新现有工具描述,提升清晰度和一致性。
  • execute_python 在 list_tools() 中的描述不再被覆盖;保留完整详细描述。