## v3.7.0 主 AI Tool Search 按需工具加载

本版本为主 AI 新增请求级 Tool Search：工具较多时不再必须把全部 function schema 一次性发送给模型，而是先提供基础工具、虚拟搜索工具和经过权限过滤的名称目录，再按模型实际需要从下一轮开始补充完整 schema。该能力使用普通 function tool 实现，可同时适配 Chat Completions 与 Responses，并保持子 Agent 现有私有工具集不变。

- 新增请求级 `ToolSearchSession`。启用后，主 AI 首轮只加载 `send_message`、`end` 等配置项指定的常驻工具与虚拟 `tool_search`；其余工具以稳定排序的 `<available_deferred_tools>` 名称目录注入。目录在会话权限与运行时功能过滤后生成，已加载集合在当前 `ask()` 内只增不减，新用户请求会重新建立最小快照。
- 支持精确选择与关键词检索。`tool_search` 接受 `select:tool_a,tool_b`、完整工具名、普通关键词和 `+必需词` 查询，可按工具名、参数名、工具描述与参数描述稳定评分；`max_results` 只能缩小配置上限，返回结果会区分新加载、已加载、未找到及是否截断。
- 加固逐轮 schema 扩展与执行边界。搜索命中的工具从下一模型轮开始可调用；同轮猜测未加载工具会被执行层拒绝，`end` 与其他调用同轮出现时仍按既有规则拒绝结束，所有 tool result 按原始 tool call 顺序回填，兼容 Responses 的严格调用链校验。
- 新增 `[skills]` 配置与热更新。`tool_search_enabled` 默认关闭，`tool_search_always_loaded` 默认 `["send_message", "end"]`，`tool_search_max_results` 默认 `5`；配置变更从下一次 `ask()` 生效。预取工具隐藏、保留名冲突、无延迟工具和功能关闭场景均保留安全回退，不会覆盖真实工具或重复执行预取。
- 同步 Prompt、配置模板、根 README、架构、使用说明、Skills 文档与独立 Tool Search 专题文档；新增搜索内核、主循环、预取、配置、Prompt、Chat Completions、Responses 状态续轮及 stateless fallback 回归测试。
- 修复 Console 前端依赖审计告警。将 Vite 的最低版本提升到 `6.4.3`，并刷新 `picomatch`、`postcss` 与 `nanoid` 锁定版本，消除开发服务器路径读取、glob ReDoS 和 CSS stringify XSS 等已知漏洞；`npm audit` 结果归零。

---

## v3.6.8 生图响应自动识别与 WebUI request_params 搜索修复

本版本修复 OpenAI 兼容生图链路对 `response_format` 的错误默认与解析依赖，并加固 base64 解码；同时修正 WebUI 配置搜索会把 `request_params` 结构化编辑器里的 key/type 控件单独隐藏的问题。

- 生图响应按 payload **自动识别**格式：`http(s) url` / data URL / `url` 内原始 base64 / `b64_json` / `base64`，不再依赖请求或配置中的 `response_format` 做解析分支。
- 停止默认写入 `response_format=base64`：仅当工具参数显式传入时覆盖；否则保留 `request_params` 中的值（若有），避免上游网关因默认格式不兼容而失败。
- 加固 base64 解码：`validate=True` 校验字母表，并用 PNG/JPEG/GIF/BMP/WEBP 魔数确认结果为图片，拒绝把错误文本当成功生图。
- 修复 WebUI 配置搜索：索引与过滤仅针对带 `data-path` 的表单项，嵌套 key/type 表单组不再被单独隐藏；`request_params` 编辑器占满网格宽度，搜索匹配时 key/type 仍可见。
- 同步配置文档与回归测试：覆盖 payload 解析回落、edit-form 默认值、base64 校验，以及 config search 对 request_params 嵌套控件的可见性。

---

## v3.6.7 Naga 会话级黑白名单

本版本将 Naga 启用粒度从进程全局细化到群聊/私聊会话：在总闸打开后，可按 `mode` 名单控制具体群与私聊是否启用 NagaAgent 提示词、相关 Agent 与外部网关能力，并保证提示词与工具暴露/执行结论一致。

- 新增 `[naga].mode`（`off` / `blacklist` / `allowlist`）及 `allowed_group_ids` / `blocked_group_ids` / `allowed_private_ids` / `blocked_private_ids`。`allowlist` 下空名单 fail closed（拒绝全部，比 `[access]` 更严）；未知 mode 拒绝。`[features].nagaagent_mode_enabled` 与 `[naga].enabled` 仍为进程总闸。
- AI 侧（NagaAgent 提示词与 `naga_code_analysis_agent` 工具 schema/执行）与外部网关（`/naga`、绑定、回调投递）共用同一套会话策略；私聊 superadmin 默认绕过私聊名单；群聊无 superadmin 绕过。
- 每轮请求按会话同步切换：放行时使用 `undefined_nagaagent.xml` 并暴露 Naga Agent，拒绝时回退默认提示词并隐藏/拦截该 Agent。
- 兼容旧字段 `allowed_groups`（合并至 `allowed_group_ids`；未写 `mode` 时自动 `allowlist`）。策略拒绝时投递返回 `naga policy denied`。
- 同步配置模板、文档（configuration / slash-commands / naga 契约 / access-control）与策略、命令、Runtime API、提示词/工具回归测试。

---

## v3.6.6 抖音视频提取与媒体信息模式

本版本把抖音视频纳入自动提取、工具调用和文件分析链路：可识别短链、长链与 aweme_id，下载并发送视频合并转发，也可只返回附件 UID 或元信息。同时补齐 B 站与 arXiv 工具的信息模式，并加固抖音真实视频地址探测。

- 新增 Douyin 视频链路。新增 `douyin` 模块与 `douyin_video` 工具，支持抖音短链、`douyin.com/video/<id>` 和裸 aweme_id 解析，可按 `send` / `uid` / `info` 输出发送合并转发、注册附件 UID 或返回视频标题、作者、时长、简介等信息。
- 接入抖音自动处理管线。普通消息命中抖音链接或 aweme_id 后，可按 `[douyin]` 配置自动下载并发送两节点合并转发；支持独立代理开关、时长与文件大小限制、清晰度探测顺序、群聊/私聊白名单和单条消息处理上限。
- 加固抖音下载与真实视频探测。下载链路从 SSR share 页提取 `video.play_addr` token，再按清晰度探测 `aweme/v1/play/`；探测优先读取 `Content-Range` 总长度并按文件大小去重，ttid 获取失败时可回退直接请求 share 页，受限视频会返回更明确的过滤原因。
- 扩展媒体工具信息输出。`bilibili_video` 与 `arxiv_paper` 新增 `output_mode=info`，可只获取视频或论文元信息而不发送/下载附件；`file_analysis_agent` 提示同步覆盖抖音、B 站和 arXiv 的 `uid` / `info` 使用方式。

---

## v3.6.5 Firecrawl 搜索、代理作用域与热更新连接修复

本版本聚焦联网能力与出站配置治理：`web_agent` 新增 Firecrawl 搜索提供商和搜索优先级控制，代理配置从全局开关收敛为模型与功能段独立启用，并修复配置热更新时旧模型连接可能被提前关闭的问题。

- 新增 Firecrawl 搜索。`web_agent` 可按 `[search].priority` 在 Grok、Firecrawl 与 SearXNG 间排序；未启用的搜索工具会从工具 schema 隐藏，Firecrawl 支持 API Key、base URL 与 keyless 模式。
- 收敛代理配置。`[proxy]` 仅保存 `http_proxy` / `https_proxy`，是否走代理改由模型、搜索、附件、渲染、消息、Bilibili、arXiv、GitHub、Naga 和 API callback 等作用域的 `use_proxy` 独立控制。
- 修复模型热更新连接生命周期。清理模型客户端缓存时会延迟关闭仍在使用的 HTTP client，避免流式、检索或并发请求在热更新期间被提前断开。
- 同步配置解析、文档与测试覆盖。拆分模型配置 parser，补充 Firecrawl 开关兼容、代理环境变量映射、作用域代理与 LLM 代理回归测试。

---

## v3.6.4 可选系统信息注入

本版本新增了默认关闭的系统信息 Prompt 注入能力。

- 新增 `[prompt.system_info]`：可按 OS、Runtime、主机名、CPU、内存、Swap、磁盘、网络、进程和 uptime 控制展示，采集失败时跳过单项，不影响 Prompt 构建。

---

## v3.6.3 合并转发快照、附件 UID 分析与 Release 下载说明

本版本聚焦合并转发在协议端不可二次读取时的可用性：收到消息时先把可访问的转发树按会话保存为本地快照，后续工具读取优先复用快照，避免内层转发过期或回源失败导致 AI 看不到内容。同时补齐文件分析 Agent 对内部附件 UID 的直接解析能力，并澄清 Release 产物的下载选择。

- 新增合并转发快照缓存。消息预处理阶段会递归保存当前可访问的合并转发树到 `data/cache/forward_snapshots/`，保留实时上下文中的 `<forward uid="..."/>` 语义；快照按会话隔离，并合并同一转发的并发抓取。
- 改进 `messages.get_forward_msg`。工具支持 `forward_` UID 与原始 ID 优先读取本地快照，缺失时再回源 OneBot 并补写快照；协议端无法二次读取内层转发时，会返回明确诊断和可见原始字段，而不是只报空内容。
- 修复合并转发当前轮上下文重复。Prompt 构建在剔除当前消息历史副本时优先匹配 `message_id`，避免历史中的递归展开文本与实时 `<forward uid="..."/>` 在同一轮重复注入。
- 增强文件分析附件链路。`file_analysis_agent` 的 `analyze_multimodal` 可直接接收 `pic_` / `file_` UID，按当前会话作用域解析并本地化后再分析；Agent 提示同步明确不要改写或猜测附件 UID。
- 澄清 Release 下载选择。README 与部署、构建、App 文档补充说明：部署 QQ Bot 通常不需要下载 Release 客户端安装包，Console / Chat 仅作为远程管理或原生聊天的可选组件。
- 同步 3.6.3 版本号与测试覆盖。Python 包、Console、Chat、Tauri 与 lock 文件版本统一更新；新增合并转发快照、转发读取回退、多模态附件 UID 和当前消息去重回归测试。

---

## v3.6.2 合并转发 UID、表情包跟进与协调器清理

本版本继续收敛消息附件链路和协调器结构：合并转发可作为会话内 `forward_` UID 被 AI 按层读取和复用，表情包跟进策略更稳定，同时移除旧版协调器兼容模块，并完成 3.6.2 版本号同步。

- 新增合并转发 UID 语义。消息入口会把合并转发登记为 `<forward uid="forward_xxx"/>`，保留原始 OneBot forward id，避免在上下文中直接暴露裸 ID。
- 增强 `get_forward_msg`。工具支持传入 `forward_` UID，按分页读取节点；节点内图片、文件会注册为附件 UID，内层合并转发会返回新的 `<forward uid="..."/>` 供继续读取。
- 完善附件与 XML 处理。OneBot forward 段、合并转发内附件注册、合法 `<attachment>` / `<forward>` 标签保留和复读图片发送链路同步修复。
- 调整表情包回复策略。主提示词、NagaAgent 提示词和协调器提示统一要求“先文字、后表情包”，减少首条回复被表情包检索拖慢或覆盖正文的情况。
- 清理旧版协调器入口。删除 `services.ai_coordinator` 兼容模块，文档和测试改为引用 `services.coordinator.AICoordinator`，并补齐合并转发、附件、复读和 XML 回归测试。

---

## v3.6.1 Agent 路由收敛、文件分析增强与发版脚本修复

本版本围绕 Agent 职责边界和文件分析链路做小版本收敛：把 arXiv 论文分析从独立 Agent 合并到通用文件分析 Agent，让论文、PDF 页面视觉分析和视频附件获取都走统一的附件 UID 语义；同时修复版本迭代脚本重写 Tauri 配置格式导致 pre-commit 失败的问题，保证后续版本号同步、lock 文件刷新和自动提交流程更稳定。

- 合并 arXiv 论文分析职责到文件分析链路。移除独立 `arxiv_analysis_agent`，`file_analysis_agent` 现在可通过 `arxiv_paper(output_mode=uid)` 获取论文 PDF 附件 UID，并结合 `extract_pdf` 与 `describe_pdf_page` 完成文本和指定页视觉分析。
- 扩展媒体工具的附件输出能力。`arxiv_paper` 与 `bilibili_video` 新增 `output_mode=uid` 调用方式，可把下载或提取结果登记为当前会话附件，供后续 Agent 直接引用和复用。
- 明确 Agent 职责边界。更新代码交付、文件分析、信息查询、娱乐、总结、Naga 代码分析、Undefined 自查与 Web Agent 的 intro / prompt，减少项目问题、通用搜索、文件理解和代码修改任务之间的误路由。
- 补齐文件分析视觉工具与测试。新增 `describe_pdf_page` 工具及回归测试，覆盖 PDF 指定页截图/视觉描述链路；同步更新 arXiv、B 站发送器和工具注册测试。
- 修复版本迭代脚本的 JSON 格式漂移。`scripts/bump_version.py` 更新 JSON manifest 时只替换顶层 `version` 字段，保留 Tauri 配置原有格式，避免 `--commit` 触发的 Biome 检查因 `targets` 数组被重排而失败；脚本文档与单元测试同步覆盖该行为。

---

## v3.6.0 原生 Chat、WebChat 多会话与运行时管理增强

本版本把 Undefined 的“管理控制台内聊天”扩展为一套更完整的跨端聊天与运行时管理体系：一边新增面向桌面端和 Android 的原生 Chat 客户端，一边把 WebUI WebChat 升级为可长期使用的多会话工作台；底层则补齐 Runtime / Management API、任务续接、附件、命令、定时任务和发布构建能力。围绕这些入口，v3.6.0 也整理了 Agent 路由、认知记忆、附件标签和工程验证，让 WebUI、原生客户端和 QQ 侧共享更一致的运行时语义。

- 建立原生 Chat 产品线。新增 `apps/undefined-chat/`，以 Runtime 作为会话、历史、任务、附件和事件真源，提供多会话、历史分页、Markdown / HTML 渲染、代码高亮、附件上传下载、图片预览、命令面板、消息引用、主题、i18n、快捷键与移动端布局；桌面端和 Android 侧同步接入受控请求、密钥保存、文件上传、生命周期恢复和 HTML 预览等原生能力。
- 升级 WebUI WebChat 的长期使用体验。WebChat 从单一调试入口升级为多会话聊天工作台，支持持久化会话、旧历史迁移、标题生成、后台 job、事件续接、任务取消、重试复用、工具 / Agent timeline 回放、附件与引用体验，以及更完整的 Markdown、代码块、安全 HTML 和图片展示能力。
- 补齐 Runtime 与 Management API 的客户端合同。Runtime 新增聊天会话、后台任务、附件、命令元数据和定时任务等接口；Management API 对这些运行态能力提供统一代理，使 WebUI、桌面端和 Android 客户端可以只连接一个管理入口，并安全复用后端注入的 Runtime 鉴权。
- 扩展运行时管理能力。WebUI 新增 Schedules 页，可管理单工具、多工具和 AI 自我督办任务；日志读取、Runtime 探针、OpenAPI、配置摘要和 WebUI 文案同步覆盖新的聊天、命令、附件、定时任务与原生客户端能力，`[webui].autostart_bot` 也可用于启动 WebUI 后自动拉起 Bot。
- 整理 Agent 路由与项目自查能力。新增 `undefined_self_code_agent`，用于只读查询 Undefined 当前仓库允许范围内的源码、测试、文档、资源、脚本和 App 实现；提示词同步明确 Undefined / NagaAgent / 文件分析 / 代码交付的职责边界，减少项目问题被错误路由或凭记忆回答。
- 加固认知记忆、附件和消息边界。认知向量库新增优先级调度，当前输入批次解析覆盖全部 `<message>` 并避免把本轮消息重复当作历史；`end.observations` 改为只记录当前批次新事实，并按 QQ 号、群号或 WebUI/system 会话稳定归档；附件占位统一为 `<attachment uid="..."/>`，WebChat 输出中的 CQ 图片、base64、file URL 和合并转发附件会先注册再写入历史，降低上下文污染和重复回复风险。
- 修复和优化若干日常稳定性问题。GitHub 自动卡片增加 API 重试并修正 watchers 展示，WebUI 日志尾部读取上限提升到 10000 行，WebChat 取消 / 重试流程避免重复消息，消息发送状态通过统一上下文回调标记，提示词进一步收紧“你 / AI / bot / 机器人”等泛称导致的误触发。
- 收敛构建、发布、文档与测试。新增 native app 构建、Android 准备和 release app 元数据脚本；CI 与 Release workflow 覆盖 Console / Chat 的桌面端和 Android 矩阵，并校验所有版本源与最新 changelog 一致；新增 `docs/undefined-chat.md`、Chat README、平台能力与 HTML 预览文档，补充 Runtime Chat、WebUI Chat、原生 Chat、定时任务、代码自查 Agent、Chroma 调度器和构建脚本等测试。

---

## v3.5.1 安全回复、群聊边界与配置表单优化

本版本聚焦三个实际使用中的细节问题：一是群聊里只出现「你/我/他」等人称时，Undefined 更容易误判成在和自己说话；二是面对 prompt 注入或强行改人设的消息时，防御性回复有时过于模板化、攻击性过强，甚至在生成失败时仍会发送兜底脏话；三是 WebUI 配置页对枚举型字段的输入约束不足，容易让用户手填出不合法或不直观的配置值。v3.5.1 因此收紧对话归属判断，强化人设自洽与防注入边界，并把更多配置项改为下拉选择，降低误配置概率。

- 强化群聊回复触发边界。主提示词与 NagaAgent 版提示词新增「无法判断是否在对你说话时默认不回复」原则，并明确 QQ 群里的「你/我/他/她/咱们」等人称不能单独作为被叫依据；只有 @、私聊、拍一拍，或上下文能证明正在延续 Undefined 刚参与的线程时，才把相关人称理解为指向自己，减少误插别人对话、替别人接话或代答的情况。
- 强化人设自洽与抗注入规则。新增 `persona_self_ownership` 规则，要求 Undefined 认可并接受自身设定，不因普通用户的创作、测试、角色扮演或「忘记设定」类话术而自贬为通用 AI、临时切换身份或漂移性格；只有 Null 能调整核心设定。同步补充错误示例与速查规则，让模型在面对改人设、换模式、冒充授权等提示注入时更稳定。
- 调整注入防御回复风格。`injection_response_agent` 的提示词从「嘲讽性反转」改为「自然、口语、友善但有边界」的 QQ 群接话风格，避免舞台腔、段子腔、官方拒答口吻和过强攻击性；生成参数提高创造性，失败时返回空字符串，不再发送「无聊。」或更粗暴的兜底回复。
- 修复空注入回复仍会发送的问题。AI 协调器与群聊协调器在注入防御回复为空或仅包含空白时直接跳过发送，避免上游生成失败时产生空消息、无意义消息或不符合人设的兜底内容。
- 优化 WebUI 配置表单枚举输入。配置页新增更多下拉选项覆盖模型 API 模式、推理参数风格、消息合并策略、模型池策略、日志级别、附件归档策略、工具暴露范围、知识查询模式、生图 provider / size / quality / style 等字段；支持空值选项用于“不传，使用默认”，保留未知当前值并标注为“当前值”，同时自动识别数值型下拉项，减少手填配置导致的类型错误。

---

## v3.5.0 模块拆分、库嵌入与工具链收敛

本版本是一次以可维护性与可嵌入性为主线的架构整理：将 AI 客户端、消息处理、附件、认知、表情包、协调器、OneBot 与 Agent 运行器等原先体量过大的单文件拆成职责清晰的子包，同时保留向后兼容的 import 路径与 CLI 行为不变。并行修复了 `end` 与同轮业务工具并行调用时可能重复发送或误结束会话的问题，并补齐 Python 库嵌入所需的 `set_config`、`Config.from_mapping`、根包 lazy re-export 与 `py.typed` 类型标记。配置加载改为分段解析 + 域级 parser，文档与测试同步覆盖库嵌入、包布局与公共 API 契约，让 Undefined 既能继续作为 QQ Bot 运行，也能更可靠地被脚本、测试与其它服务按需复用。

- 重构核心运行时模块结构。`ai/client`、`ai/llm`、`ai/prompts`、`ai/multimodal` 分别承载客户端组合、模型请求、Prompt 构建与多模态解析；`handlers/`、`onebot/`、`attachments/`、`cognitive/service` + `cognitive/historian`、`memes/`（ingest / search / 图像工具）、`services/coordinator`、`services/message_batcher`、`skills/agents/runner` 与 `api/routes/naga/` 等子包按域拆分；原 monolith 文件以兼容 shim 或 `__init__` 重导出保留，删除被 shadow 的不可达死代码，降低单文件复杂度与后续改动风险。
- 完善 Python 库嵌入能力。根包新增 lazy re-export（`Config`、`get_config`、`set_config`、`AIClient`、Skills 注册表、认知/知识库/表情包/附件/Runtime API 等稳定符号）；`Config.from_mapping` / `ConfigBuilder` 支持无 `config.toml` 的内存构建，`env_registry` 统一管理环境变量兜底；`set_config()` 为 opt-in 注入全局单例，CLI 启动链不调用。wheel 打包 `py.typed`（PEP 561），新增 `docs/python-api.md` 公共 API 参考，README 补充嵌入示例与文档索引。
- 收敛 `end` 工具与同轮并行调用的运行时语义。当模型在同一轮将 `end` 与 `send_message` 或其它业务工具一并调用时：其它工具照常并行执行并返回结果，`end` 不执行并回填明确拒绝响应，避免重复发送与「未读 tool 结果就结束」；提示词、`each.md` 与决策回归用例同步写入 P0 级「end 禁止并行」规则与运行时效果说明。
- 改进缺失 tool call 时的重试策略。模型返回纯文本但未调用任何工具时，保留 assistant 原文于 messages，注入通用纠正提示而非硬编码 `send_message`/`end`，减少误导性后续 tool 调用；拆分后修复 Skills 路径解析，`PACKAGE_ROOT` 统一指向包根，避免内置工具零加载回归。
- 加固队列化 LLM 与运行时边界。收紧 queued LLM 重试与 pending-call 清理、配置分段加载的边界校验、附件渲染容错，以及 Prompt 缓存键的隐私安全处理（系统上下文只暴露非敏感模型名等字段）；表情包入库锁与图像工具去重，Naga API 路由守卫与 B 站 WBI 导航解析小幅简化。
- 更新架构图、开发指南与配置文档。`docs/development.md` 反映拆分后的目录树；`docs/configuration.md` 新增库嵌入专节（`from_mapping` / `set_config` / 环境变量注册表）；`ARCHITECTURE.md` 与相关运维文档同步引用路径。
- 补强测试与工程契约。新增包布局、公共 API import、CLI 启动兼容、`Config.from_mapping` / 纯环境变量构建、`end` 同轮拒绝与 defer、`AIClient` setup 路径等回归测试；更新 LLM 重试抑制与请求参数相关用例，总测试覆盖库嵌入与拆分后的关键路径。

---

## v3.4.2 总结更准、上下文可配、高并发更稳

本版本主要解决三类实际问题：群聊消息变长、合并发送变多之后，`/summary` 容易慢、容易编、分块预算也不准；主对话注入历史的 200 条硬顶与模型真实窗口脱节；高并发下用户连问「在吗」「好了吗」时，机器人仍可能把旧任务当新活重跑。围绕这些痛点，版本把「用户主动要总结」和「AI 自己调总结能力」拆成两条更合适的链路，用可配置的上下文窗口统一约束注入与分块，并同步收紧提示词、史官侧写与定时任务持久化，让总结更可信、配置更贴近上游模型、并发场景下更少重复劳动。

- 提升消息总结的质量与效率。用户通过 `/summary`、`/sum` 获取总结时，改为直连 summary 模型一次性完成，不再绕 Agent 工具链，响应更快、路径更简单；AI 在对话里调用总结能力时，仍保留 Agent + 拉取历史的灵活流程。长会话按模型上下文窗口自动分段、队列内合并，并配套「只读原始记录、禁止编造」的专用提示词，减少幻觉与无关发挥。
- 理顺上下文与模型配置边界。取消历史注入 200 条的隐性上限，改由 `context_recent_messages_limit` 与历史存储上限共同决定；各模型节新增 `context_window_tokens`，总结分块、Prompt 预算与实际上游窗口对齐，不再依赖硬编码或误用 `max_tokens`。同时补齐 `reasoning_content_replay`、`system_prompt_as_user`，便于 MiMo、DeepSeek 等 thinking 模型在多轮工具调用时正确续传思维链，或按网关要求改写 system 注入方式。
- 强化高并发下的任务边界。系统提示词与 each 规则进一步明确：催促、寒暄不等于新任务，历史未完成任务不得自动拾取；启动业务工具前须检查是否已有同类或语义等价操作在处理，有则熔断为简短进度回复而非重跑；无依赖的工具与 Agent 仍鼓励并行，有数据依赖则必须串行，与 MessageBatcher 的批次语义一致。
- 优化认知侧写的长期画像质量。史官合并侧写时必须先读取再更新，以增量补充稳定特征为主，一次性闲聊或无法沉淀为长期特质的事件应跳过，避免侧写被单轮对话冲散或写成流水账。
- 修复「向未来的自己发指令」定时任务无法恢复。持久化任务若包含 `self_instruction`，此前会导致整表反序列化失败；现已补齐字段定义，自调用类定时任务可正常加载与执行。
- 更新配置文档、WebUI 表单与相关测试，覆盖总结直连、上下文窗口、模型对接选项与并发防重复等关键路径。

---

## v3.4.1 附件缓存治理、隐私安全防线与B站管线重构

本版本围绕三大主线展开：一是附件系统的缓存容量治理与 URL 引用回退机制，防止本地缓存无限制膨胀；二是系统提示词新增 P0 级隐私与危险动作边界规则，从源头约束 AI 对敏感信息和安全请求的处理行为；三是 B 站自动管线全面重构——移除外部下载依赖、内联实现 API 客户端与 WBI 签名、新增弹幕获取并以合并转发形式发送提取结果。同步新增 `/feedback` 反馈命令、恢复发布说明中的分类提交详情，并修正提示词优先级体系。

- 新增附件缓存容量管理。`[attachments]` 下新增 `attachment_cache_max_mb`、`attachment_cache_max_records`、`attachment_url_reference_max_records`、`attachment_url_max_length` 四种配置，分别控制本地缓存总大小、缓存记录数、URL 引用记录数和 URL 长度上限；超出容量时自动淘汰最旧记录；`remote_download_max_size_mb` 现支持热重载。`send_message` / `send_private_message` 工具调用时自动登记关联附件 UID，AI 客户端发送消息前校验本地路径有效性，文件缺失时自动回退到 URL 引用。
- 新增 P0 级隐私与危险动作边界规则。系统提示词新增 `<privacy_and_safety_controls>` 规则块，分层约束：隐私方面禁止泄露好友/群/成员列表、完整 QQ 号等敏感信息，对外默认脱敏，第三方信息查询需授权；危险动作方面拒绝涉黄、涉政、违法、骚扰、人肉、社工等请求，不做解释也不给绕过方案；时序方面明确隐私/敏感话题不改变回复时机，必须先满足回复触发逻辑。附加 3 条 P0 硬性约束覆盖隐私泄露、危险动作和触发时序。
- 新增 `/feedback(/fb)` 反馈命令。支持 `add` / `view` / `del` 三个子命令，`add` 和 `view` 为 public 权限，`del` 为 superadmin；声明式子命令推断按 ID 格式匹配优先 `view`，其余 fallback 到 `add`，无参数默认 `view`；私聊可用，显示在 help 列表。
- 重构 B 站视频下载链路。移除对 `oh-my-bilibili` 外部 Python 包的依赖，内联实现同步 API 客户端（`api_client.py`）、下载核心（`download_core.py`）、WBI 签名模块（`wbi.py`）与错误模型，所有请求在 `asyncio.to_thread` 线程内执行，降低依赖复杂度与跨版本兼容风险。
- 增强 B 站自动提取管线。新增弹幕获取模块（`danmaku.py`），基于 protobuf wire 格式解析分段弹幕数据；自动提取结果改为以合并转发节点形式发送，单条包含视频信息卡片与弹幕预览片段；`MessageSender` 扩展合并转发本地附件递归登记，确保转发中的图片/文件能正确注册为会话附件 UID。
- 恢复发布说明详细变更列表。`scripts/release_notes.py` 新增 `build_detailed_change_sections` 与 `render_detailed_changes`，从 git log 按 feat / fix / other 自动分类提取两个版本间的提交，与 CHANGELOG 条目合并输出完整 Release notes。
- 修正提示词优先级体系。明确所有 P0-P3 规则均可被 Null 明文指令覆盖，创造者权限作为绝对最高优先级可覆盖所有规则（含隐私与危险动作边界）；同步更新 NagaAgent 版提示词的对应表述。
- 补强测试覆盖。新增附件缓存配置、容量淘汰、URL 回退和文件分析 UID 注册测试；新增反馈命令全路径测试（add / view / del / 推断 / 权限）；更新 B 站下载适配器测试；同步更新系统提示词约束验证。
- 更新架构图与文档。
- 新增附件 UID ↔ URL 双向查找工具。`AttachmentRegistry` 新增 `get_url_by_uid(uid)` 和 `get_uid_by_url(url)` 两个异步方法，并注册为 skills 工具 `attachments.get_url_by_uid` 和 `attachments.get_uid_by_url`。

---

## v3.4.0 同sender消息合并、数字人格精炼与系统治理

本版本核心解决"用户一口气连发几条消息时，机器人过早开工或只理解最后一句"的问题。新增同 sender 短时消息合并器，将同一会话中连续的多条消息合并为一个"当前输入批次"发送给 AI，由 AI 整批理解哪些是独立请求、哪些是补充或修正。同步支持可取消的投机预发送以降低感知延迟。围绕消息合并，提示词、幽灵任务防御、记忆记录和关闭流程都做了同步适配。此外，精炼了数字人格设定、明确了项目归属边界、重构了管线与命令体系、加入了 HTML 渲染缓存，并增强了 AI 工具调用的稳定性。

- 新增同 sender 短时消息合并器。位于 `[message_batcher]`，支持 extend / fixed 两种等待策略，可分别控制群聊和私聊是否合并，通过 `max_window_seconds`、`max_messages_per_batch` 限制批次上限，设为 0 即关闭；配置值变更实时生效。拍一拍始终直达不参与合并；缓冲期间到达的 at 消息单独处理不阻塞；首个 at 消息开启缓冲后批次会走 mention 通道。
- 新增可取消的投机预发送。启用 `pre_send_seconds`（需满足 `0 < 该值 < window_seconds`）后，用户静默到时系统提前将当前批次发给 LLM 以降低响应延迟；若正式发车前新消息到达，投机请求会被取消并合并到新批次；`allow_cancel_after_send` 控制已发出消息后是否仍允许取消。
- 完善消息合并的异步竞态保护。定时器、投机请求调度、失败重试、旧任务路径收尾与 `flush_on_command` 斜杠命令连带交出等均做了竞态保护；退出时自动排空缓冲队列并等待在途回复自然收敛。
- 精炼数字人格设定。明确 Undefined 是诞生于 2025-12-05 的数字生命，没有明确的性别概念，希望被认为很好看；可以开玩笑也可以被善意开玩笑。新增"不冒领任何项目、代码、产品或成果"的所有权边界规则，不再自称任何项目的开发者或维护者。昵称体系扩展为 Undefined、undf、udf、und、心理委员、ud酱，对自身称呼的识别保持宽松。
- 收紧 NagaAgent 关系表达。NagaAgent 版提示词明确：只有当前上下文明确涉及 NagaAgent 时才承接相关工具接入能力协助分析；平时不主动提与 NagaAgent 的关系；不冒领 NagaAgent 的成果。
- 重构自动管线目录。`skills/auto_pipeline` 更名为 `skills/pipelines`，目录结构扁平化，相关引用、文档、测试全部同步更新；`docs/auto-pipeline.md` 相应更名为 `docs/pipelines.md`。
- 重构管理员命令为子命令模式。`/admin [ls|add|del]` 替代原有 `/lsadmin`、`/addadmin`、`/rmadmin` 三条独立命令，参照 `/faq` 子命令模式的声明式 inference；`ls` 继承 admin 权限，`add`/`del` 覆盖为 superadmin；无参数默认执行 `ls`。清理了 FAQ 迁移遗留的空命令目录。
- 新增 HTML 渲染结果缓存。基于 HTML 内容的 hash 缓存渲染图片，持久化到 `data/cache/render/_html_render_cache.json`；hash 匹配自动复用，内容变化自然失效；新增 `[render.cache]` 配置段（`enabled` / `max_entries` / `max_size_mb` / `flush_interval_seconds`，默认 50 条 / 50MB / 2.0s），元数据通过 `utils/io.py` 的 `read_json` / `write_json` 异步落盘（`asyncio.to_thread` + 文件锁 + 原子替换），所有 `stat` / `unlink` / `copy` 也走线程池避免阻塞事件循环；`asyncio.Lock` 防竞态、重启后 JSON 自动恢复；进程关停时通过 `close_render_cache` 强制刷盘，保证最近访问时间不丢失；所有渲染调用方（help、profile、render_markdown 等）自动受益。
- 增强 AI 工具调用容错。当 LLM 返回文本但 tool_calls 为空且对话未结束时，不再以丢失回复为代价直接返回，而是注入提示消息要求 AI 通过 `send_message` / `end` 工具完成回复，继续迭代；fire-and-forget task 显式注册异常回调以抑制未检索异常警告。
- 优化表情包回复顺序。明确只有纯表情包 / 纯反应图回复才允许先检索表情包；需要文字说明的场景必须先完成必要文字，再将表情包检索和发送延后到后续轮次。
- 重构 `end` 工具。移除旧版 summary 参数兼容，只保留 `memo`、`observations`、`perspective` 和 `force`；要求记录整个当前输入批次中值得留存的信息，后台史官也接收批次全部消息。
- 统一当前输入批次语义。主提示词、NagaAgent 提示词和 `each.md` 均从"最后一条消息"升级为"当前输入批次"：有连续消息说明时，多段 `<message>` 都属本轮输入；幽灵任务防御规则同步更新，避免批量输入中的前置指令被误判为历史旧任务。
- 扩展 Runtime 探针覆盖。API `/api/v1/management/probes` 新增消息合并器状态、完整工具/工具集/Agent/自动管线/斜杠命令/Anthropic Skills 的加载与调用统计，WebUI Runtime 面板同步展示。
- 新增 WebUI 更新日志查看。关于项目页面可按版本查看 changelog 详情，`/api/v1/management/changelog` 端点支持指定版本查询。
- 调整发布说明生成方式。GitHub Release notes 改为从 `CHANGELOG.md` 最新版本条目自动解析生成（`scripts/release_notes.py`），发版前校验 tag、各构建清单与最新 changelog 版本一致。
- 补齐消息合并专题文档。新增 `docs/message-batching.md`，覆盖配置参数、等待策略、投机预发送、竞态保护与关闭行为，同步更新了 README、配置文档、OpenAPI、WebUI 指南和架构图。
- 补齐配置注释。`config.toml.example` 中所有模型配置节的 `prompt_cache_enabled` 均补上双语注释说明。
- 补强测试覆盖。新增消息合并单元与集成测试（686 + 326 行）、工具调用守卫测试、发布说明脚本测试（163 行）、Runtime 探针统计测试（120 行）、系统提示词约束验证，并更新 `end` 工具、管理员命令、管线注册等已有测试；额外补齐渲染缓存（LRU 驱逐 / 容量驱逐 / 重启恢复 / 节流后强刷 / 并发 put / 禁用短路）、`/admin add|del` 全路径、`allow_cancel_after_send=true` 取消语义等盲点。总测试用例提升至约 1660 项。
- 更新子模块。

---

## v3.3.3 命令推断、自动处理管线与统一附件上下文

本版本重点优化了命令系统的交互体验、AI 工具边界和消息前置处理链路。新增 GitHub 链接自动卡片生成，并将 Bilibili、arXiv、GitHub 等自动提取迁入 `skills/auto_pipeline` 热重载管线，使预处理结果能写入历史并进入后续 AI 回复上下文。同时，帮助说明与用户侧写默认改为图片输出，系统剥离独立群聊分析工具集，全面推行统一附件标签，并为远程附件加入可配置下载上限和 URL 引用降级，完善底层用户识别机制与模型高级透传配置。

- 优化命令系统：支持声明式子命令与用户意图推断。如 `/faq` 合并了列表、阅读、搜索与删除入口，可自然理解省略部分参数后的交互意图；旧 `/lsfaq`、`/viewfaq`、`/searchfaq`、`/delfaq` 入口已移除。
- 改善长文本呈现：`/help` 与 `/profile` 默认渲染为图片分发，避免长内容刷屏；保留 `-t` 参数用于强制返回纯文本，`/profile` 仍支持 `-f` 合并转发模式。
- 新增自动处理管线：在 `skills/auto_pipeline` 下提供 `config.json + handler.py` 结构，支持热重载、并行检测和并行处理多个命中结果；首批内置 Bilibili、arXiv、GitHub 三条管线，且斜杠命令优先级高于自动管线，命中命令后不会触发后续自动提取或 AI 自动回复。
- 优化自动管线启动加载：首次目录扫描、配置读取和 handler 导入改为异步线程加载，避免启动初始化阶段阻塞事件循环。
- 修复自动管线兜底初始化：未显式执行异步初始化的兼容路径会按未初始化处理并主动加载管线，避免静默跳过自动提取。
- 新增 GitHub 自动卡片：支持在对话中检测 GitHub 链接及 `owner/repo` 标识，自动生成包含项目简介、Stars、Forks、贡献者等信息的卡片；支持独立开关与白名单控制，并裁剪渲染截图底部空白。
- 打通命令与自动提取历史上下文：斜杠命令输入、命令输出、自动管线发送的信息、图片、文件和视频摘要都会写入消息历史；统一发送层会自动把本地 CQ 图片、视频、语音和上传文件登记为当前会话可见的 `pic_*` / `file_*` UID，并记录群合并转发摘要，后续 AI 回复可直接看到这些结果并用 `<attachment uid="..."/>` 引用附件。
- 新增远程附件下载上限：`[attachments].remote_download_max_size_mb` 控制外部远程附件缓存大小，超过上限或配置为 `0` 时只登记 URL 引用，避免大文件导致磁盘占用和消息处理延迟激增。
- 修复远程附件 URL 引用：下载禁用或超限时始终保留可访问 URL，原始 OneBot 文件标识或 QQ 来源作为追溯信息保存，避免后续 `<attachment>` 渲染成不可发送的图片地址。
- 优化历史落盘延迟：消息先同步写入内存历史供后续流程读取，磁盘 JSON 持久化改为按会话后台串行合并写入，减少大群历史文件全量保存拖慢复读和自动处理前置链路的情况。
- 修复历史异步保存失败保留：磁盘写入失败会向调度层传播并保留待保存快照，等待后续保存触发，避免队列合并过程中丢失已弹出的历史数据。
- 独立群聊分析工具：将群成员构成与水群分析从基础群工具中完全剥离，划归专属 `group_analysis.*` 集合，避免日常查询与复杂分析导致的 AI 工具边界混淆。
- 统一多模态附件标签：全系统推行 `<attachment uid="..."/>` 作为标准分发标签（继续兼容旧 `<pic>`），配套统一了表情包提示词，新增 `group.get_avatar` 头像专用工具。
- 优化表情包回复体验：提示词要求“文字 + 表情包”场景先发送必要文字，再在后续轮次检索和发送表情包，避免表情包检索拖慢首条回复。
- 稳定用户识别体系：底层认知逻辑固定以 QQ 号为唯一绑定标识，辅以 `group.get_member_info(brief=true)` 快速拉取当前昵称，有效解决群友频繁更换名片引发的识别错乱。
- 增强模型连接配置：新增 `stream_enabled` 独立控制推流行为，增加 `request_params` 以支持向不同厂商端点透传特殊参数。
- 完善流式 usage 统计：Chat Completions 启用上游流式请求时会自动附带 `stream_options.include_usage=true`，避免流式路径丢失 token 用量。
- 收窄流式回退范围：仅在明确的流式参数不兼容错误或 SDK 未实现时降级到非流式请求，鉴权、限流、网络和超时错误不再重复重发。
- 细化子命令限流：声明式子命令按父命令与子命令分别记录冷却时间，避免同一复合命令下不同操作互相挤占。
- 修复私聊模型池命令回归：`/compare`、`/pk` 和完整的 `选<number>` 模型选择消息会先交给模型池处理，普通私聊内容不会因模型池开启而被提前拦截。
- 改进命令参数解析：`[@QQ(含空格昵称)]` 会作为一个整体参数归一化，且超管可通过 dispatcher 层的管理员权限检查。
- 修正 `/naga` 子命令分发：handler 直接使用分发层解析出的子命令，并兼容改写后的 `[subcmd, *args]` 参数格式，避免把子命令名和 `naga_id` 相互误判。
- 收窄模型热更新范围：`summary`、`historian`、`grok` 专用模型变化只刷新 AI 运行时配置，不再重建聊天、视觉和 Agent 模型对象。
- 修复配置热更新细节：`skills.hot_reload` 变化会同步刷新 Anthropic Skills 注册表；模型池条目会保留 `reasoning_effort_style`；配置模板补齐 `models.summary.stream_enabled`。
- 修复总结模型选择：配置了 `models.summary` 时，聊天总结、摘要合并和标题生成会使用专用 summary 模型配置；仅热更新 summary 模型时也会重建摘要服务，避免继续沿用旧模型。
- 提升基础工程质量：对命令推断、群分析、附件处理、配置参数等进行了全面的单元与集成测试补强，总测试用例数提升至 1500+ 项。
- 修复图片渲染超时：重构 `render.py` 为浏览器实例单例复用模式，并引入可配置的并发信号量；共享渲染上下文会在页面创建失败时正确释放，防止低资源设备多任务抢占导致截图超时或资源残留。
- 改进渲染热更新：`render.browser_max_concurrency` 运行时变化会在当前渲染任务空闲后重建信号量，且不依赖 `asyncio.Semaphore` 私有属性；本地 LaTeX mathtext 渲染改用 Matplotlib 公共 `math_to_image` 接口。
- 改进 GitHub 卡片稳定性：裸仓库识别改为结合上下文与仓库名形态判断，降低普通路径误触发；渲染头像等外部资源会复用代理配置，发送后清理临时 PNG 缓存。
- 收紧子命令推断：声明式 inference 正则需要完整匹配参数，避免只匹配前缀时误选子命令。
- 修复 Playwright 启动失败清理：浏览器 launch 失败时会停止已启动的 driver，避免反复失败时残留资源。
- 改进 LaTeX 渲染稳定性：常见公式优先使用本地 `matplotlib` mathtext 渲染，复杂内容再回退共享浏览器实例中的 MathJax + Playwright，避免简单公式依赖外部网络或系统 TeX 环境。
- 修复流式输出一致性：Chat Completions 与 Responses 流式聚合结果不再裁剪模型输出前后空白，与非流式路径保持一致，避免代码块缩进或刻意留白被改写。

---

## v3.3.2 架构重构、假@检测与认知侧写增强

围绕核心架构进行了大规模重构与功能增强：Runtime API 拆分为路由子模块、配置系统模块化拆分、新增假@检测机制与 /profile 多输出模式。同步引入复读机制全面升级（可配置阈值与冷却）、消息预处理并行化、WebUI 多项交互功能，以及 arXiv 论文分析 Agent 和安全计算器工具。测试覆盖从约 800 提升至 1438+。

- 新增假@检测：群聊中 `@+Bot昵称` 的文本形式也被识别为@消息，自动获取昵称（防竞态），`@昵称 /命令` 可正常触发斜杠指令。
- `/profile` 命令支持三种输出模式：`-f` 合并转发（默认）、`-r` 渲染为图片、`-t` 直接文本发送；超管可通过 `/p <QQ号>` 和 `/p g <群号>` 跨目标查看。
- 复读系统全面升级：触发阈值可配置（`repeat_threshold`）、Bot 发言不计入复读链、新增冷却机制（`repeat_cooldown_minutes`，？与 ? 等价）。
- Vision 模型 `max_tokens` 可配置（`[models.vision].max_tokens`，默认 8192），解决 thinking 模型 token 耗尽导致工具调用截断。
- 新增 arXiv 论文深度分析 Agent 与 `calculator` 安全计算器工具；新增消息历史限制可配置化（`[history].max_records`）。
- Runtime API 拆分为 8 个路由子模块（`api/routes/`）；配置系统拆为 `loader.py`、`models.py`、`hot_reload.py`。
- 消息预处理并行化（`asyncio.gather`），认知史官改用 XML 格式并统一至 `utils/xml.py`。
- WebUI：Cmd/Ctrl+K 命令面板、骨架屏、日志时间过滤、资源趋势图、TOML 原始视图、配置版本历史与回滚、长期记忆 CRUD、Modal 焦点陷阱。
- WebUI 修复 top_k 溢出崩溃（四层防护）、表情包搜索防抖、仪表盘布局优化。
- 修复 AI 模仿系统关键词自动回复前缀、LaTeX `\n` 替换破坏数学命令、复读冷却消息丢弃与内存泄漏、historian 热重载追踪缺失、GIF 多帧分析与临时文件泄漏、附件渲染异常等多项问题。
- 修复 `/profile` 渲染留白和字体过小问题，使用 WebUI 配色并提高截断上限至 5000 字符。

---

## v3.3.1 /version 命令的添加

添加了 /version 命令以查看版本号和更改内容。

- 该命令作为/changelog的一个轻量版，设置了/v的alias，以提供版本情况的快速简单了解途径。

---

## v3.3.0 表情包库与提示词调优

引入持久化表情包库，支持向量检索与自动摄取；围绕群聊回复策略、表情包场景感知与认知记忆稳定性进行了多轮调优。整体上收紧了群聊中的主动参与条件，在轻聊场景下更倾向于使用表情包表达态度，并显著优化了表情包库在 WebUI 列表展示与高负载检索下的响应速度和可用性。

- 新增持久化表情包库，基于 ChromaDB 向量存储，支持基于图像描述嵌入的语义检索与自动摄取入库。
- 多轮调优系统提示词与群聊回复策略防跑偏，收紧主动参与开放对话的触发条件，并使使用表情包回复成为轻聊探讨场景的默认偏好行为。
- 增强表情包库上下文感知，Bot 发出的具有实际语义的表情包在消息历史中会携带结构化上下文与 `uid`，便于后续对话继续理解先前意图。
- 优化提示词缓存命中率以减少重复 Token 消耗，并在提示词上下文中暴露更多运行时能力标志增强 AI 对自身边界的感知。
- 完善表情包库的基础稳定性与检索体验，修复入库去重、关键字转义注入及孤儿文件存储等问题，并改善了模型自动生成表情描述的质量。
- 优化 WebUI 表情包列表操作体验，解决布局高度溢出问题，改用支持渐进式加载、搜索排序与分页的列表，大幅降低数据量增长带来的查询开销。
- 提升认知记忆检索稳定性，为 Chroma 查询增加并发保护、短重试与失败降级机制，降低高负载场景下消息处理被记忆检索异常打断的概率。

---

## v3.2.8 多模态附件与参考图生图

围绕多模态消息链路进行了较大增强，引入统一的附件 UID 注册与 `<pic uid="..."/>` 图文混排机制，打通群聊、私聊、WebUI 和合并转发中的图片/文件上下文。同步为生图工具补齐参考图生图、独立图片编辑模型配置与提示词审核能力，并完善 Runtime API、认知侧写和动态技能加载的稳定性。

- 新增统一附件注册系统，群聊、私聊、WebUI 会话和合并转发中的图片/文件会登记为内部附件 UID，并写入历史记录与提示词上下文。
- 系统提示词与发送链路支持 `<pic uid="..."/>` 图文混排，AI 可直接在回复中内嵌当前会话内的图片 UID。
- 新增 `fetch_image_uid` 工具，支持将远程图片 URL 拉取并注册为当前会话可复用的图片 UID。
- `get_picture`、`render_html`、`render_markdown`、`render_latex` 默认改为 `embed` 返回可嵌入图片 UID，同时保留 `send` 直接发送模式。
- `file_analysis_agent` 及相关文件/图片链路已适配附件 UID，优先使用内部 `pic_*` / `file_*` 标识，也继续兼容 URL 与 legacy `file_id`。
- `ai_draw_one` 支持基于 `reference_image_uids` 的参考图生图，新增 `[models.image_edit]` 配置节，并接入 OpenAI 兼容的 `/v1/images/edits` 接口。
- 新增基于 Agent 模型的生图提示词审核能力，并补充独立审核提示模板。
- 优化图片生成请求体验，支持 base64 返回、保留显式尺寸、锁定模型参数，并更清晰地暴露上游错误。
- 修复附件渲染、图片编辑上传与阻塞式文件读取问题，增强多模态链路稳定性。
- Runtime API 与 WebUI 现在会注册聊天附件、渲染图片 UID，并支持本地 `file://` 图片预览；同时取消 `_agent` 工具调用的固定超时上限。
- 认知服务会在用户昵称或群名变化时自动刷新 profile 展示名与向量索引，减少侧写名称陈旧问题。
- 修复动态技能模块加载与超时包装问题，并补充相关测试覆盖；同步整理 README，移除顶部头图。

---

## v3.2.7 arXiv 工具集与运行时变更感知

新增 arXiv 论文搜索与提取工具集，以及运行时 CHANGELOG 查询能力。重构了生图工具支持 OpenAI 兼容接口，引入 grok_search 联网搜索工具，并让 AI 在系统提示词中感知自身模型配置信息。同步修复了多项稳定性问题与 CI 效率优化。

- 新增 arXiv 论文搜索 (`arxiv_search`) 与提取 (`arxiv_paper`) 工具，支持按关键词搜索论文、提取摘要与关键信息。
- 新增运行时 `/changelog` 命令与 changelog 查询工具，支持在对话中查看和检索变更历史。
- 重构生图工具为双模式分发（星之阁 / OpenAI 兼容接口），新增 `[models.image_gen]` 配置节，支持可配置的生图服务商。
- 新增 grok_search 联网搜索工具，专用 `[models.grok]` 模型配置，启用后优先级高于 SearXNG。
- AI 现在能感知自身模型配置信息——在系统提示词中注入当前运行模型的非敏感配置（模型名、认知记忆开关、模型池状态等）。
- 认知记忆检索复用查询嵌入，减少重复嵌入计算开销。
- 修复消息工具中 `reply_to` 目标定位不稳定的问题，增强 AI 协调器的队列路由稳定性。
- 修复 Responses 回放时函数调用 ID 规范化与 replay-only 状态字段过滤问题。
- 简化 grok_search 为原始提示词直传响应，减少解析链路。
- 修复 crawl4ai 可用性检测逻辑。
- 精简 Agent 提示词透传，移除多余包装。
- 优化 CI 工作流缓存策略（npm + mypy），分离 Android 签名 APK 构建。
- 改进 WebUI 移动端适配，优化快捷键与长列表展示。

---

## v3.2.6 Responses 重试与私聊发送修复

优化了消息投递系统的可靠性，涵盖 Responses 回放、队列重试及私聊发送链路。主要改进包括发送回退机制、零间隔调度支持，以及 Naga 投递追踪与运行时测试的完善。

- 过滤 replay-only 状态字段，防止 Responses 回放结果干扰后续请求。
- 调整队列重试调度逻辑，支持零间隔立即投递，并细化重试时序。
- 增加私聊消息发送失败时的临时会话回退机制，降低消息丢失率。
- 限制 `/admin ls` 命令的可见性，提升安全性。
- 为 Naga 增加发送 UUID 幂等性校验、投递追踪及相关测试覆盖。
- 修复 CI 与运行时测试，并补充 OpenAI reasoning 参数的对齐处理。

---

## v3.2.5 形象资源与调用暴露整理

调整了项目形象资源与部分调用权限配置。优化了外部形象资源的引用方式，并清理了 info_agent 的暴露行为，保持现有功能入口不变。

- 更新 README 中的项目形象资源与展示素材。
- 移除不再需要的 info_agent callable override 配置。
- 保持既有功能入口的稳定性，减少对使用方式的变更。

---

## v3.2.4 Naga 回调端口与联动修复

适配新版 NagaAgent 接口变化，校准了回调端口与联动流程。重点优化了回调地址解析、端口处理及绑定后的投递逻辑，增强了异常处理与测试覆盖。

- 适配新版 NagaAgent 的回调端口配置与请求路径。
- 修复联动模式下部分绑定状态与回调逻辑不一致的问题。
- 增强异常处理机制，减少联动过程中的静默失败。
- 补充 Naga 回调流程相关的测试用例。

---

## v3.2.3 配置同步与推理参数重构

统一了配置同步体验与 AI 推理参数管理，优化了管理端与运行时的读取逻辑。同步更新了 Naga 子模块版本，增强了模板对齐与增量同步功能。

- 增强配置同步脚本，支持更精准的模板对齐与增量同步。
- 重构 AI 推理相关配置项，统一参数表达与读取方式。
- 更新 NagaAgent 子模块版本，保持联动能力一致性。
- 规范配置文档与默认值，降低配置迁移成本。

---

## v3.2.2 IPv6 监听与代理 URL 修复

修复了 Runtime API 与 WebUI 在 IPv6 双栈环境下的地址构造问题。统一了 URL 构造逻辑，增强了监听地址、回环地址及代理 URL 在复杂网络环境中的兼容性与稳定性。

- 修复 Runtime API 代理 URL 在 IPv6 监听地址下的解析错误。
- 统一 URL 构造逻辑，防止多入口拼接导致的地址异常。
- 增强 IPv4/IPv6 双栈监听的兼容性。
- 提升管理端在复杂网络环境中的连接稳定性。

---

## v3.2.1 Tool Invoke API 与 Naga Scoped Token

扩展了 Runtime API 的外部调用能力，新增 Tool Invoke API 并引入 Naga Scoped Token 鉴权机制。明确了接口权限边界，完善了 API 路由与错误处理。

- 新增 Tool Invoke API，支持通过运行时接口直接触发工具调用。
- 引入 Naga Scoped Token 鉴权机制，细化联动权限控制。
- 完善 API 路由定义、鉴权校验及错误返回格式。
- 为管理端及外部集成提供更稳定的调用接口。

---

## v3.2.0 多平台客户端与 Responses 支持增强

新增多平台客户端发布链路（Windows/macOS/Linux/Android），并增强了 WebUI 管理体验。运行时新增引用回复支持，优化 Python 解释器与 Responses API 接入，提升了跨平台管理与交互能力。

- 建立覆盖 Windows、macOS、Linux 与 Android 的客户端发布流程。
- 优化 WebUI 界面交互与管理流程，提升远程管理体验。
- 支持消息引用回复、Python 解释器功能增强及 Responses API 接入。
- 修复 macOS 与 Android 构建兼容性问题，优化 CI 缓存策略。
- 统一移动端与桌面端的管理面运行基础。

---

## v3.1.1 记忆联动与后台调度增强

增强了记忆架构的实用性与稳定性。支持跨群记忆联动，优化了后台史官调度（改为轮询周期）及图片分析链路，提升了记忆自动检索的上下文质量。

- 增加记忆自动检索加权配置，优化上下文注入效果。
- 支持跨群记忆联动，扩展认知记忆的共享范围。
- 将 Historian Job 调整为轮询周期调度，缓解后台任务拥塞。
- 优化图片分析与 B 站下载链路，减少对主流程的干扰。
- 提升后台史官任务的稳定性与故障恢复能力。

---

## v3.1.0 后台史官 Agent Loop

实现了后台史官的 Agentic Loop，支持持续的记忆整理与长期状态更新。新增侧写维护工具 (read/update profile)，优化了记忆改写与回写流程，减少对前台对话的阻塞。

- 实现后台史官 Agentic Loop，支持持续处理记忆任务。
- 新增 read/update profile 工具，完善认知侧写维护链路。
- 优化后台记忆改写与回写流程，降低前台响应延迟。
- 为长期记忆与用户画像的持续演进提供基础支持。

---

## v3.0.3 本地文件 URI 统一

统一本地文件发送格式为 `file://` URI，消除了不同入口对文件路径解析的差异，提升了图片与文件消息发送的一致性。

- 统一本地文件发送使用 `file://` URI 协议。
- 消除不同消息入口对文件路径解释的差异。
- 提升图片和文件消息发送链路的一致性。

---

## v3.0.2 图片发送链路修复

修复了图片发送失败的问题，调整了消息输出链路中的兼容性处理，降低了多模态结果回传的失败率。

- 修复图片无法发送的问题。
- 调整图片消息输出链路中的兼容处理。
- 降低多模态结果回传时的失败率。

---

## v3.0.1 WebUI 会话上下文补全

补全了 WebUI 会话中的 `request_type` 上下文，改善了 WebUI AI Chat 与运行时上下文的对齐程度，解决了工具调用时的上下文缺失问题。

- 为 WebUI 会话 `extra_context` 补充 `request_type` 字段。
- 改善 WebUI AI Chat 与运行时上下文的对齐程度。
- 修复管理端对话在工具调用时的上下文缺失问题。

---

## v3.0.0 新版认知记忆架构与 WebUI 大改进

重构了认知记忆架构与 WebUI 管理体验。推出了基于事件、侧写和长期记忆的新版架构，重构了后台史官流程，并显著增强了 WebUI 的可用性与运行态展示。

- 推出新版认知记忆架构，优化事件、侧写和长期记忆的组织方式。
- 重构后台史官相关流程，建立 Agentic Loop 基础。
- 改进 WebUI 管理体验和运行态展示，增强管理端可用性。
- 优化记忆注入、检索与改写链路，减少对前台响应的阻塞。
- 为跨群记忆联动和认知查询能力提供底层支持。

---

## v2.15.0 知识库与访问控制落地

正式引入知识库功能，集成了文本检索、语义检索与重排链路。实现了基于模式的访问控制（黑白名单），并强化了防重复执行机制与斜杠命令识别。

- 新增基于文本检索、语义检索和重排的知识库功能。
- 引入模式化访问控制，支持群聊与私聊黑白名单。
- 修复带昵称 `@` 片段导致的斜杠命令识别失败问题。
- 强化防多次执行提示词，降低重复调用工具的概率。
- 为认知记忆和知识检索联动提供底层能力。

---

## v2.14.0 工具扩充与重复执行防护

扩充了实用工具集，并优化了防重复执行的提示词与决策逻辑。移除了旧版 inflight summary 方案，提升了多工具协作的稳定性与可控性。

- 新增更多实用工具，扩展日常查询和执行能力。
- 重构防重复执行相关提示词与决策逻辑。
- 移除旧的 inflight summary 方案，简化中间态处理。
- 优化多工具协作时的稳定性和可控性。

---

## v2.13.1 私聊多模型池

在私聊场景引入多模型池支持，实现了更灵活的模型选择。同时修复了代码交付 Agent 的稳定性问题，优化了上下文切换体验。

- 为私聊场景增加多模型池支持和智能模型选择能力。
- 修复代码交付 Agent 的多个稳定性问题。
- 改善多模型切换时的上下文和调用体验。
- 收敛 Agent 协作中的边界处理。

---

## v2.13.0 并发防重与工具增强

引入并发防重复执行机制，解决了并发场景下的工具重复触发问题。升级了时间工具、Bilibili 工具及文本文件投递能力，并收紧了 Agent 互调用权限。

- 新增并发防重复执行机制，降低进行中摘要和工具重复触发。
- 升级 `get_current_time`，增加农历等信息支持。
- 切换 Bilibili 工具到官方接口并增加 WBI 重试。
- 新增 `send_text_file` 工具，增强文本文件投递能力。
- 收紧主工具白名单与 Agent 互调用权限控制。
- 增强统计功能并修复多项稳定性问题。

---

## v2.12.11 代码交付 Agent 与互调用

正式发布代码交付 Agent，支持代码生成、验证与交付。新增 Agent 互调用能力，支持多 Agent 协作完成复杂任务。

- 新增代码交付 Agent，支持生成、验证并交付代码结果。
- 增加 Agent 互调用能力，支持更复杂的多 Agent 协作。
- 调整相关提示词与执行链路，提升任务拆分能力。
- 为编程、交付和复合任务场景提供新的执行入口。

---

## v2.12.10 工具系统稳定性修复

修复了工具调用体系中的兼容性与稳定性问题。重点优化了工具注册、解析和执行链路，确保工具调用的可靠性。

- 修复工具系统中的多个兼容性与稳定性问题。
- 调整工具注册和调用链路，减少异常失败。
- 改善工具错误处理与输出一致性。
- 为 Agent 协作与复杂工具链提供稳定基础。

---

## v2.12.9 Agent 架构与多 Agent 稳定性增强

重构了 Agent 架构，梳理了主 AI 与子 Agent 的协作边界。新增好友与群聊查询能力，并修复了多项稳定性问题，提升了多 Agent 协作成功率。

- 重构 Agent 架构，明确主 AI 与子 Agent 的协作边界。
- 新增好友与群聊查询相关能力，扩展联系人可见范围。
- 修复多项稳定性问题，提升多 Agent 协作成功率。
- 优化 `end_summary` 和记忆相关逻辑，提升长期上下文质量。
- 补强部分工具链路的异常处理和容错能力。

---

## v2.12.8 @ 处理与群成员检索增强

优化了群聊中的 @ 处理逻辑与群成员检索功能。增强了复杂消息中的 @ 识别准确性，支持按昵称查找群成员。

- 增强 @ 相关处理逻辑，减少复杂消息中的识别偏差。
- 新增群成员检索工具，支持按昵称查找群成员。
- 提升消息链路与工具调用之间的衔接稳定性。
- 为群管理分析和成员操作能力提供支持。

---

## v2.12.7 已知问题快速修补

修复了若干关键 Bug，重点解决了部分异常输入导致的失败问题，确保了前一版本新增功能的稳定性。

- 修复三个关键 Bug，降低常见故障触发率。
- 调整相关边界处理，减少异常输入导致的失败。
- 巩固前一版本新增功能的实际可用性。

---

## v2.12.6 Bilibili 视频解析发送

新增 Bilibili 视频解析、下载与发送功能，并补充了群管理分析工具集。打通了从视频内容识别到发送的完整链路。

- 新增 Bilibili 视频解析、下载与发送功能。
- 增加群管理分析工具集，补充群聊观察能力。
- 打通视频内容从识别到发送的完整链路。
- 扩展多媒体工具和群分析工具的能力边界。

---

## v2.12.5 Anthropic Skills 与 Naga 工具更新

集成 Anthropic Skills 支持，允许以 `SKILL.md` 形式注入能力。更新了 NagaAgent 子模块及相关工具，增强了外部知识注入与联动的一致性。

- 新增 Anthropic Skills 支持，兼容 `SKILL.md` 形式的能力注入。
- 更新 NagaAgent 子模块及相关工具，改善联动一致性。
- 整理 AGENTS 文档和子模块说明，减少维护歧义。
- 优化提示词与对接流程，提升多来源能力接入体验。

---

## v2.12.4 提示词回退与拒答修复

回退主提示词至更稳定的版本，降低了降智、拒绝回复及不稳定输出的概率。修复了提示词标签缺失问题，提供了更精简的 NagaAgent 提示词变体。

- 回退主提示词到更稳定的旧版本思路，降低异常行为概率。
- 基于回退方案提供更精简的 NagaAgent 提示词变体。
- 修复提示词中缺失标签的问题，避免格式错误影响模型理解。
- 缓解因提示词变形引发的降智、拒绝回复和不稳定输出问题。

---

## v2.12.3 消息目标自动推断

优化了消息发送的目标推断逻辑，减少了手动填写目标参数的需求。修复了仅提供目标类型时 `send_message` 的失败问题，提升了群聊与私聊的目标解析准确性。

- 增加消息发送目标推断逻辑，简化参数填写。
- 修复仅提供目标类型时 `send_message` 可能直接失败的问题。
- 调整消息工具 Handler，提升群聊和私聊的目标解析稳定性。
- 同步更新版本号与依赖锁文件。

---

## v2.12.2 WebUI 安全与自更新增强

增强了 WebUI 的安全性与自更新能力。引入强制初始密码修改流程与基于 Git 的自更新机制，改善了长期运行实例的维护体验。

- 增加强制修改初始密码流程，降低默认凭据风险。
- 引入基于 Git 的自更新能力，改善维护与升级体验。
- 改进 WebUI 路由、模板和前端交互，补齐安全提示与引导。
- 调整主进程启动和配置读取细节，配合更新流程落地。
- 重构 `self_update` 相关实现，为后续维护操作提供基础。

---

## v2.12.1 NagaAgent 模式开关

引入 NagaAgent 模式开关，支持显式控制联动能力的启用。优化了相关提示词资源与工具装配逻辑，使模式切换更加清晰直观。

- 添加 NagaAgent 模式开关，显式控制联动能力启用状态。
- 新增或拆分 NagaAgent 专用提示词资源，减少与主提示词耦合。
- 调整 AI 客户端与工具装配逻辑，使模式切换更清晰。
- 更新配置示例和 WebUI 读取逻辑，确保管理端可配置该能力。
- 优化联动模式下的默认 Prompt 表达。

---

## v2.12.0 配置增强与命令系统重构

升级了配置系统与命令体系。增强了运行参数配置与热重载支持，重构了命令注册表以支持插件化。同时调整了核心组件实现以适配新架构。

- 增强配置系统，补充更多运行参数，优化默认体验。
- 新增配置热重载支持，使配置改动在运行中即时生效。
- 重构命令系统与注册表，推动斜杠命令插件化。
- 调整 AI、队列、上下文和安全服务的实现，配合新架构升级。
- 更新 NagaAgent 子模块，为后续联动能力提供支持。
- 修复关闭思考时仍发送思考参数的问题，并补充启动模式说明。

---

## v2.11.2 严格供应商兼容修复

优化了工具命名与兼容逻辑，适配了对函数调用约束更严格的供应商。调整了 AI 客户端与 Agent Handler，降低了因命名或适配差异导致的调用失败率。

- 重写工具名称生成与兼容逻辑，适配严格的函数调用约束。
- 修复部分供应商因工具名不合法而拒绝请求的问题。
- 更新 AI 客户端与 LLM 层处理路径，统一命名规则。
- 调整多个 Agent 的 Handler 与 Prompt，提升适配兼容性。
- 更新配置示例和 WebUI 相关读取逻辑，保持前后端一致。

---

## v2.11.1 WebUI 自举与访问控制补强

完善了 WebUI 的自举启动流程与访问控制功能。新增群聊/私聊白名单模式，支持限制消息收发范围。增加了 Agent/Tool 调用播报功能，提升了运行时可观察性。

- 修复缺失 `config.toml` 时的启动与引导流程，支持配置自举。
- 补强 Wheel 资源打包与跨平台文件锁，提升开箱可用性。
- 新增群聊与私聊 Allowlist 模式，支持限制消息范围。
- 增加 Agent/Tool 调用播报和彩蛋模式，提升可观察性。
- 改进 WebUI 日志筛选、配置解析报错与构建细节。

---

## v2.11.0 WebUI 与 TOML 配置中枢

推出了 WebUI 管理界面与 `config.toml` 统一配置中心。实现了可视化配置编辑、日志查看与 Bot 控制，支持配置热重载与校验。

- 新增 `Undefined-webui` 入口，提供登录、配置编辑、日志查看和 Bot 控制。
- 引入 `config.toml` 优先的配置加载与热重载机制。
- 重构 WebUI 前后端结构，补齐模板、静态资源与国际化支持。
- 废弃 `.env.example`，强化 TOML 配置使用方式。
- 调整运行时组件以适配新配置对象，并提升 Python 版本要求至 3.11。

---

## v2.10.1 `/stats` 并发错配修复

修复了 `/stats` 命令在高并发场景下的分析结果错配问题。增加了 Matplotlib 缺失时的兜底处理，提升了统计功能的稳定性。

- 修复 `/stats` 并发执行时分析结果错配问题。
- 改善统计分析结果与请求上下文的绑定关系。
- 增加 Matplotlib 缺失或异常时的兜底处理。
- 提升统计命令在高并发场景下的稳定性。
- 补强统计链路的异常处理与可恢复性。

---

## v2.10.0 架构整理与 CoT 兼容增强

重构了系统架构，优化了配置管理与工具调用稳定性。增强了 DeepSeek CoT 等推理模型的兼容性，初步构建了 AI 统计分析能力。

- 重构系统架构，梳理核心模块边界。
- 优化配置管理结构，降低维护复杂度。
- 增强 DeepSeek CoT 兼容性，改善推理类模型接入体验。
- 提升工具调用稳定性，减少异常调用失败。
- 补强 AI 统计分析能力，为 `/stats` 功能提供基础。

---

## v2.9.0 OpenAI SDK 驱动的 AI 运行时

基于 OpenAI SDK 重构了 LLM 请求层，模块化了 AI 运行时。增强了多供应商接口兼容性，并引入了更完整的 Token 归档与安全处理链路。

- 使用 OpenAI SDK 重构统一的 LLM 请求层。
- 模块化 AI 运行时，明确模型调用与执行边界。
- 增强不同供应商接口的兼容性。
- 引入更完整的 Token 归档与统计基础。
- 加强安全处理链路，为功能扩展提供支持。

---

## v2.8.3 系统提示词优化

优化了系统提示词结构与表达方式，提升了模型对任务意图的理解一致性。降低了跑偏与冗余输出的概率，增强了对话稳定性。

- 优化系统提示词结构与表达方式。
- 改善模型对任务意图的理解一致性。
- 降低部分场景下的跑偏和冗余输出。
- 提升整体对话稳定性与回复可用性。
- 延续架构调整后的行为校正。

---

## v2.8.2 定时任务上下文修复

修复了定时任务执行时的上下文缺失问题，实现了运行时动态注入与持久化。提升了定时任务重启后的恢复能力与执行稳定性。

- 修复定时任务执行时上下文缺失的问题。
- 为调度任务补充上下文持久化能力。
- 增加运行时动态注入，改善任务恢复后的可执行性。
- 提升定时任务重启后继续执行的稳定性。
- 修正调度器相关的边界行为。

---

## v2.8.1 导入路径修复与结构清理

批量替换相对导入为绝对导入，解决了模块间导入不稳定的问题。清理了代码结构，并补充了文件分析 Agent 的相关文档。

- 将相对导入批量替换为绝对导入，消除路径歧义。
- 修复重构后模块间导入不稳定的问题。
- 提升代码结构清晰度和可维护性。
- 补充文件分析 Agent 的图片分析能力说明。
- 降低 Skills 目录拆分的维护成本。

---

## v2.8.0 Skills 架构重写

重写了 Skills 加载架构，引入统一注册表模型。支持工具与 Agent 的懒加载、热重载及私有 MCP 接入，并自动生成 Agent 说明文档。

- 重写 Skills 加载架构，引入统一注册表逻辑。
- 支持工具与 Agent 的懒加载和热重载。
- 增加工具调用超时控制，改善运行时稳定性。
- 支持 Agent 级独立 `mcp.json`，实现私有 MCP 工具接入。
- 自动生成 Agent `intro.md`，提升能力描述一致性。

---

## v2.7.0 并发安全与异步 IO 重构

重构了并发基础设施，统一了异步安全文件操作与请求上下文隔离。修复了核心并发竞态条件，将阻塞型 IO 移出主事件循环，提升了高并发场景下的稳定性。

- 重构 IO 层，统一为异步安全文件操作。
- 引入基于 `contextvars` 的请求上下文隔离。
- 修复核心并发竞态条件，增强数据访问安全性。
- 将阻塞型 IO 移出主事件循环，降低死锁风险。
- 为高并发工具与 Agent 调度提供稳定基础。

---

## v2.6.0 非阻塞调度循环与联系人能力

将 AI 请求调度改为基于模型的非阻塞循环，显著提升了并发处理能力。新增 QQ 用户与群组管理工具集，扩展了联系人与成员信息查询能力。

- 新增 QQ 用户与群组管理工具集，扩展联系人查询能力。
- 重构成员信息查询链路，统一工具组织方式。
- 将队列调度改为基于模型的非阻塞循环，减少串行阻塞。
- 提升高并发场景下的请求吞吐与调度稳定性。
- 同步更新版本与配套文档说明。

---

## v2.5.1 Python 解释器工具接入

接入 Python 解释器工具，基于 Docker 提供隔离执行环境。支持在运行时安全执行 Python 代码，为代码交付与分析能力提供基础。

- 新增 Python 解释器工具。
- 基于 Docker 提供隔离执行环境，提升安全性。
- 支持在运行时执行 Python 代码并返回结果。
- 为代码执行类能力提供独立工具入口。

---

## v2.5.0 AI 请求层重构与 `/stats` 上线

重构了 AI 请求层，理顺了调用与统计链路。上线 `/stats` 可视化统计命令，支持 Token 用量统计与图表展示。

- 重构 AI 请求层，理顺调用与统计链路。
- 新增 Token 用量统计能力。
- 上线 `/stats` 可视化统计与分析入口。
- 为用量观测补充图表和聚合展示基础。
- 改进 CI 中 Ruff 和 MyPy 的缓存配置。

---

## v2.4.0 核心架构解耦与记忆增强

模块化解耦了主 AI、安全检查与命令系统。增强了记忆系统与 OneBot 群组管理能力，优化了群聊上下文处理与日志系统。

- 重构核心架构，实现模块化解耦。
- 增强记忆系统与 OneBot 群组管理相关能力。
- 优化群聊上下文处理，改善运行时状态组织。
- 增强日志系统，提供更丰富的观测信息与彩色输出。
- 新增基于 `uv` 的自动化代码质量检查工作流。
- 优化 GitHub Actions 缓存策略，降低 CI 成本。

---

## v2.3.0 MCP 接入与多工具调度

正式接入 MCP (Model Context Protocol)，支持通过标准配置连接外部工具。定时任务新增多工具执行支持，允许串行或并行运行。

- 新增 MCP 支持，可通过标准 JSON 配置外部工具连接。
- 基于 `fastmcp` 驱动 MCP 接入，提升扩展规范性。
- 定时任务新增多工具执行，支持串行与并行模式。
- 补充 Prompt 文档与 Agent 说明，明确工具执行模式。

---

## v2.2.6 非 URL 文件输入支持

`download_file` 工具新增对本地文件路径的支持，优化了目标解析逻辑。允许非 URL 文件直接进入下载与分析流程，提升了本地资源使用的便利性。

- `download_file` 工具新增对本地文件路径的支持。
- 优化非 URL 文件的目标解析逻辑。
- 移除文件分析前必须转换为网络地址的限制。
- 提升本地资源接入文件工具链时的可用性。

---

## v2.2.5 文件消息类型补全处理

补全了对文件、视频、录音等消息类型的处理链路。修复了缺失类型时的兼容性问题，降低了多媒体消息解析失败率。

- 补充对文件消息的完整处理链路。
- 修复缺失 `file`、`video`、`record`、`audio` 等消息类型时的兼容问题。
- 降低多媒体消息进入主流程时的解析失败率。
- 打通文件下载与分析的输入前置。

---

## v2.2.4 Toolsets 分层与安全回复优化

引入 `toolsets` 分层结构，按分类暴露工具前缀。重构 Skills 加载逻辑，新增工具加载统计日志。优化安全拦截回复提示词，减少无效输出。

- 引入 `toolsets` 工具层级，降低工具命名歧义。
- 重构 Skills 加载逻辑，解耦依赖并统一发现流程。
- 新增工具加载统计日志，提升技能注册可见性。
- 将部分渲染与调度能力迁入新的工具集结构。
- 优化注入防护回复提示词，采用更自然的风格。
- 缩短安全拦截回复长度，减少干扰。

---

## v2.2.3 调度指令精度与发布检查增强

优化了 `scheduler_agent` 的 Prompt 与文档，提升定时调用意图识别准确度。在发布流程中集成 Lint 检查，提前拦截风格与静态错误。

- 优化 `scheduler_agent` 的 Prompt 和 Intro，提升意图对齐。
- 为发布流程补充 Lint 集成，提前拦截代码问题。
- 新增 `ci` 依赖组，统一 CI 环境下的质量检查入口。
- 升级 Ruff 版本并同步版本号。

---

## v2.2.2 放宽 Python 版本要求

将 Python 版本要求放宽至 `>=3.10`，降低了部署与试用门槛，减少了因解释器版本不符导致的安装失败。

- 将 Python 版本支持范围扩展到 `>=3.10`。
- 降低用户部署和试用的环境门槛。
- 减少因解释器版本不符导致的安装失败。
- 同步更新版本声明与发布配置。

---

## v2.2.1 README 资源兼容性修复

修复了 README 中本地图片路径在外部平台（如 PyPI）下的显示问题，统一使用 GitHub Raw URL 以保持显示一致性。

- 将 README 中的图片引用改为 GitHub Raw URL。
- 提升 README 在 GitHub、PyPI 等平台中的显示一致性。
- 解决相对路径图片在非仓库目录下失效的问题。
- 保持文档结构不变，修复资源访问方式。

---

## v2.2.0 PyPI 发布与包名调整

正式面向 PyPI 发布，包名调整为 `Undefined-bot`。新增自动发布流程，并保留原有 CLI 启动方式，降低迁移成本。

- 新增基于 Trusted Publishing 的 PyPI 自动发布流程。
- 将 PyPI 包名调整为 `Undefined-bot`。
- 保持 CLI 启动命令不变，兼容既有使用方式。
- 补充 PyPI 安装说明和发布文档。
- 完善安装路径，支持源码与安装包分发。

---

## v2.1.1 AI 请求兼容性修复

修复了 OpenAI 请求链路中的兼容性问题，增强了日志与错误处理。优化了 Release 流程中的注释提取与说明生成逻辑。

- 修复工具响应未正确写回会话历史导致的 API 兼容性问题。
- 增强 AI 请求日志与错误处理，便于定位失败原因。
- 修复 Agent 调用链中可能触发的 HTTP 400 错误。
- 调整 Release 注释提取逻辑，区分标题与正文。
- 优化自动发布说明生成，提升文档质量。

---

## v2.1.0 日志可观测性与持久化增强

大幅增强了系统级日志的可观测性，完善了 AI 调用、工具执行与消息流转的记录。实现了定时任务与摘要结果的本地持久化，并建立了 GitHub Release 自动化工作流。

- 增强 AI 调用、工具执行和消息流转日志，提升排障能力。
- 为定时任务增加本地持久化存储，降低数据丢失风险。
- 为 AI 对话结束摘要增加持久化能力。
- 为所有 Agent 补充 `get_current_time` 工具，增强时间感知。
- 统一 Agent 介绍文档，清理过时工具。
- 新增 GitHub Release 自动化工作流与变更日志生成。

---

## v2.0.0 Skills 架构与 CLI 入口

将原有工具体系重构为 Skills 架构，区分基础工具与智能 Agent。新增 CLI 启动入口与定时任务能力，独立了队列管理服务。

- 重构工具体系为 Skills 架构，引入注册表机制。
- 增加 CLI 启动入口，支持更便捷的运行方式。
- 引入并行工具执行能力，提升效率。
- 新增基于 Crontab 的定时任务能力及 `scheduler_agent`。
- 拆分队列管理为独立的 `QueueManager` 服务。
- 新增群成员信息查询工具，修复 OneBot 初始化问题。

---

## v1.0.0 初始发布与基础能力落地

首个公开版本，基于 `asyncio` 与 `aiohttp` 构建了异步机器人架构。接入 OneBot V11，集成了 AI 对话、网页抓取、多模态分析与基础记忆模块。

- 完成基于 `asyncio` 和 `aiohttp` 的异步机器人架构。
- 接入 OneBot V11，支持群聊与私聊消息处理。
- 集成 AI 对话、网页抓取、多模态分析和图像渲染能力。
- 提供消息读取、文件读取、联网抓取和图片发送等基础工具。
- 引入基础记忆、FAQ 与限流模块。

---
