Files
xiaoli-cli/CHANGELOG.md
T

226 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 更新日志
所有重要更改都记录在此文件中。格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)。
---
## v5.4.0 (2026-05-09) — Release
### ✨ 新增功能
- **跨平台进程保护模块** (`xcli_core/process_protection.py`)
- **单实例保护** — 防止重复启动,Windows 使用命名 Mutex,macOS/Linux 使用 fcntl 文件锁(自动清理残留锁文件)
- **进程优先级提升** — Windows: `SetPriorityClass` (ABOVE_NORMAL/HIGH/REALTIME),macOS/Linux: `os.nice()` + `renice`
- **Windows PPL 风格保护** — `SetErrorMode` 抑制系统错误弹窗 (SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX)、`faulthandler` 崩溃堆栈捕获
- **POSIX 信号保护** — macOS/Linux 忽略 SIGHUP(终端关闭不退出)、注册 SIGTERM 优雅关闭、macOS 忽略 SIGPIPE
- **看门狗监控** — 后台线程监控父进程状态,父进程退出时自动清理并退出
- **关闭钩子系统** — 注册自定义清理函数,进程退出时自动执行
- **一键启用** — `enable_process_protection()` 单函数调用启用全部保护
- **`/protect` 命令** — CLI 中查看保护状态,`/protect test` 重新测试所有保护
### 改进
- `platform_utils.py` 新增 `is_process_running()`、`get_process_priority()`、`set_process_priority()` 跨平台工具函数
- `cli_base.py` 启动时自动初始化进程保护,退出时自动清理
- `cli_core.py` 启动 banner 显示保护状态图标(单实例/优先级/PPL/看门狗)
- 全版本号统一更新至 v5.4.0
---
## v5.2.0 (2026-05-08)
### ✨ 新增功能
- **插件内存管理器** (`plugin_memory_manager.py`) — TTL 自动淘汰 + 懒加载机制
- 后台线程定期扫描空闲插件,超过 TTL(默认 5 分钟)自动从内存卸载,释放资源
- AI 调用已卸载的插件时自动重新加载(懒加载),对用户完全透明
- 核心插件(`tool_search`)可钉住永不淘汰,保障基础功能可用
- 可配置参数:TTL 时间、最大空闲插件数、扫描间隔、钉住列表
- `/status` 命令和 TUI 侧栏实时显示内存管理状态(已加载/已卸载/统计)
- `search_tools` 支持搜索已卸载插件(使用缓存的元数据,无需加载实例)
### 统一插件格式
- **统一自研插件入口类名为 `Liugin`** — 18 个插件从 `class Plugin` 统一为 `class Liugin`
- 加载器保留 `Plugin` 回退兼容,第三方插件仍可用旧格式
- 测试块中 `Plugin()` 调用同步更新为 `Liugin()`
### TUI 修复
- **修复消息分类失效** — `_write_raw` 中空字符串 `'' in msg` 永远为 True,导致所有消息显示为工具成功样式;替换为正确的 emoji 标记(✅/❌/🤖)
- **修复侧栏切换失效** — Textual 无 `.visible` 布尔属性,改用 `has_class("hidden")` + CSS 类控制显隐
- **修复侧栏隐藏动画** — CSS `display: none` 阻止过渡动画,改用 `width: 0` + `opacity: 0` 方案
- **修复 TextArea 导入缺失** — `constants.py` 可用性检查未导入 `TextArea`、`Rule`
- **修复 `set_timer(0)` 崩溃** — 欢迎动画首行延迟为 0.0 导致 Textual 8.x 除零错误(`ZeroDivisionError`),使用 `max(0.01, delay)` 修复
### 改进
- `UnifiedToolManager` 重构:集成 `PluginMemoryManager`,所有工具访问统一走 `_ensure_loaded` 路径
- 新增 `get_all_tools_info()` 方法,系统提示词可列出所有注册工具(含已卸载)
- 新增 `get_tool_by_name()` / `memory_manager` 属性,兼容旧 `LiuginManager` 接口
---
## v5.1.4 (2026-04-29)
### 新增功能
- **桌面GUI自动化插件** (`gui_auto`, 20 操作) — 基于 Windows UI Automation (UIA) API,AI 可识别和操控桌面应用
- 元素树获取 (`snapshot`) — 获取整个屏幕或指定窗口的 UI 元素树,支持自定义遍历深度
- 元素交互 — 点击/右键/双击(名称模糊匹配 + 坐标点击),文本输入(中文 Unicode)、清空、发送按键
- 窗口管理 — 列出所有窗口 (`windows`)、聚焦指定窗口 (`focus`)
- 元素查询 — 查找/查找所有/详情/值/子树/存在检查/状态,共 8 个查询操作
- 高级功能 — 等待元素出现(带超时)、高亮闪烁元素(GDI 红色边框)、滚动
- MCP/FC 完整定义,AI 通过 Function Calling 直接调用,非 Windows 环境优雅降级
- **AI 生图插件** (`ai_image`) — 基于 ai.2x.nz 自然语言生图接口
- 自然语言描述 + 直接 Tag 双模式
- 工作流切换、画风选择、分辨率调整
- 异步生成 + WebSocket 进度推送
- 生成历史记录
- **Web UI 后端** (`webui_server.py`) — WebSocket 实时通信 + 静态文件服务
- 纯 Python 实现,基于 `websockets` 库
- 支持命令行参数 (`--port` / `--host`)
- 与前端 `webui.html` 配合,提供完整的浏览器端 AI 交互体验
### 改进
- **Web UI 前端重写** (`webui.html`) — 从纯静态页面升级为 WebSocket 实时交互
- 大厂设计感 UI,响应式布局
- 实时消息流、打字机效果
- 支持工具调用结果展示
### 文档
- 更新 README.md: 插件列表、项目结构、badge 版本号
- 更新 CHANGELOG.md: v5.1.4 完整变更记录
- 更新 HELP.md: 新增 GUI 自动化使用说明
### 测试
- 新增 gui_auto 插件 30 个单元测试(工具信息、MCP 定义、参数转换、错误处理、操作路由)
---
## v5.1.3 (2026-04-28)
### 新增功能
- **图像生成插件** (`image_generator`) — 基于 ai.2x.nz 的 ComfyUI 在线服务,自然语言/Tag 双模式,支持中文描述,28 个角色工作流可选,分辨率可调(最大 1344×1344)
- **记忆系统插件** (`memory_plugin`) — 包装 `xcli_core/memory.py` 的完整记忆工具,AI 可写日记、读日记、搜索记忆、管理聊天记录、操作长期记忆 MEMORY.md
- **AI 编程助手横评页面** (`compare.html`) — 7 款工具(Claude Code / Codex CLI / Gemini CLI / Aider / Copilot CLI / 小狸 / TG HELPER)25+ 维度同口径对比
### 修复
- 修复记忆系统插件(`Liugin` 类在 `xcli_core/memory.py` 中定义但未被插件管理器加载)导致 AI 无法调用记忆工具的问题,新增 `plugins/memory_plugin.py` 包装层
### 文档
- 全面更新 README.md 至 v5.1.3
- 新增记忆系统、Clawli 远程模式、MCP 协议支持、定时任务、系统通知等功能说明
- 更新插件列表:15 个 → 17 个(+image_generator, +memory_plugin)
- 更新操作数:141 → 141+
- 补充 MCP 协议支持说明(17 个插件全部实现 MCP 定义)
- 补充插件开发文档中 `Liugin` / `Plugin` 双协议说明
### 贡献者
- 感谢 **艾轮 卧壳** 对本版本的贡献 🖤
---
## v5.1.2 (2026-04-26)
### 新增功能
- **自动语法检查系统** — 编辑操作(edit/multi/insert/delete_lines/create/write/append)完成后自动检查代码语法,通过显示 ✓,失败显示详细错误信息(行号、列号、错误描述)
- **主动语法检查** — 新增 `syntax_check <文件>` / `check <文件>` 操作,AI 可随时主动检查任意文件语法
- **多语言支持** — 语法检查覆盖 Python (ast.parse + py_compile)、JavaScript、TypeScript、JSON、YAML、TOML、HTML/XML (标签匹配)、CSS (括号匹配)、Shell (bash -n)、SQL
- **Diff 弹窗** — 每次编辑操作完成后自动弹出新终端窗口,显示修改前/修改后的完整内容(带行号)、diff 差异、新增/删除行数统计。支持 `diff_popup on/off` 开关,默认开启。兼容 Windows (cmd)、macOS (Terminal.app)、Linux (gnome-terminal/xterm/konsole 等)
- **默认模型更新** — Ollama 默认模型从 qwen2.5 更新为 gemma4:31b
- **Web UI** — 新增纯静态 HTML 界面 (`webui.html`),无需后端,浏览器直接打开。包含对话界面(气泡+快捷指令+打字动画)、代码编辑器(行号+Tab+Ctrl+S)、文件浏览器、系统状态面板、引擎/工具一览、实时日志
- **TUI 动画系统** — 为 TUI 模式添加流畅动画效果,包括启动过渡、消息淡入、光标呼吸等微交互
- **TUI 多行输入** — 支持 Shift+Enter 换行输入,长 prompt 不再受限于单行,编辑体验大幅提升
- **Windows EXE 启动器** — `launcher.exe` 一键启动,无需预装 Python 环境,解压即用
- **Gitee Go CI 流水线** — 新增 `.gitee/pipeline.yml`,支持 Gitee 平台自动化构建与测试
### 修复
- 修复 TUI 模式下部分终端不支持 256 色导致渲染异常的问题
- 修复 `launcher.py` 在 Python 3.12 环境下 `datetime.utcnow()` 弃用警告
- 修复 Gitee Go 流水线 YAML 格式错误导致 CI 失败的问题
- 修复插件加载时 `__pycache__` 缓存文件干扰模块发现的边界情况
### 优化
- TUI 渲染性能优化,减少不必要的屏幕重绘,输入响应延迟降低约 40%
- 启动器依赖检测逻辑重构,离线环境下启动速度提升 2-3 秒
- 终端宽度适配优化,80 列窄终端下不再出现排版错乱
- 移除全局 emoji 依赖,适配无 emoji 字体的终端环境
### 文档
- 全面更新 README.md / README.en.md 版本标识至 v5.1.2
- 更新 CHANGELOG.md 补充 v5.1.2 变更记录
### 贡献者
- 感谢 **艾轮 卧壳** 对本版本的贡献 🖤
---
## v5.1.1 (2026-04-26)
### 新增功能
- **浏览器自动化插件** (`browser_auto`) — 基于 Playwright 的无头浏览器操控,31 个操作:导航/交互/截图/JS 执行/PDF/cookies
- **子 Agent 系统** (`sub_agent`) — 多 Agent 并行协作,spawn/list/status/result/send/kill,独立任务分配与结果回收
- **统一安全层** (`safety.py`) — AI 风险识别 + 三模式切换(普通/人工/无限制),所有工具调用前统一拦截检查
- **OpenAI 兼容引擎** (`openai_engine`) — 支持 DeepSeek、Grok、硅基流动、本地 vLLM 等所有 OpenAI 格式 API
- **自动化测试套件** — 113 个 pytest 用例,覆盖全部 15 个插件 + 引擎 + 核心模块
- **CI 工作流** — GitHub Actions: 语法检查 + ruff lint + pytest (Python 3.10/3.11/3.12 矩阵) + 项目结构验证
### 重构
- **插件大优化** — 17 个插件 → 15 个,5689 行 → 4309 行
- `code_editor` + `code_search` → `code_editor`(编辑+搜索统一)
- `git_tools` + `git_workflow` → `git_tools`(基础+工作流统一)
- `auto_engineer` + `project_analyzer` → `auto_engineer`(质量+分析统一)
- 删除 `scheduler.py`(空文件)
- **引擎精简** — 移除 7 个旧引擎(MiMo/GLM/QwQ/讯飞/iFlow/MaaS/SDK_openAI),保留 ollama + 新增 openai
- **启动器重写** — `launcher.py` 从 1741 行精简到 666 行,修复重复方法和硬编码引擎名
- **cmd_executor 跨平台** — 移除 Windows-only 限制,支持 Linux/macOS/Windows
### 修复
- 修复 `code_editor` 的 `diff_text` 解析器被 `split(maxsplit=2)` 拆坏分隔符的问题
- 修复 `cmd_executor` 中坏掉的 `from ai_cli import` 循环导入
- 修复 `launcher.py` 中两个重复的 `run()` 和 `show_final_result()` 方法
### 文档
- 全面更新 README.md / README.en.md 适配 v5.1.1
- 新增 `config.json.example` 配置模板
---
## v5.0.0 (2026-04-25)
### 新增功能
- **TUI v2** — 全新 TUI 界面,暗色主题 + 现代布局
- **完整 MCP 协议支持** — 为所有插件添加 MCP (Model Context Protocol) 定义
- **代码统计 Skill** (`code_stats`) — 新增 Skill 协议示例
- **工程化自动化插件** — 新增 `auto_engineer`、`project_analyzer`、`git_workflow`
- **任务调度器** (`scheduler`) — 定时任务支持
### 架构改进
- **重写代码沙箱** — 全新的安全沙箱实现,支持超时控制和资源限制
- **完整测试套件** — 192 个测试用例,覆盖核心功能
---
## v3.6.0-release (2026-04-25)
### 新增功能
- **精准代码编辑器** (`code_editor`) — 搜索替换、批量编辑、diff 对比
- **代码搜索理解** (`code_search`) — 跨文件搜索、正则匹配、符号提取
- **Git 版本控制** (`git_tools`) — 完整 Git 操作支持
- **TUI 默认模式** — 图形化界面为默认启动方式
### 架构重构
- 拆分 `ai_cli.py`(3860行)为模块化 `xcli_core/` 包
- 新增入口点: `python ai_cli.py`
---
## v3.5 (2026-02-12)
- 初始开源版本