内容提要
chat.nvim v1.10.0 发布,重点优化 token 消耗与数据清洁。新增懒加载工具发现机制:默认仅发送 essential 工具和 find_tool,其余工具由 AI 按需查询激活,激活状态每回合清空,并具备自愈机制防止中断。同时支持 write_file 行尾格式、Markdown 感知分块、HTTP API 增强、脏工作区提醒,并修复多处 UTF-8 与集成问题。
延伸解读
懒加载如何省 token
chat.nvim 内置工具已有几十个,但每次对话通常只用几个。v1.10.0 默认只发送 essential 工具集(5个)和 find_tool,其余工具由 AI 按需查询激活。激活状态每回合清空,只存内存。这样每轮请求只携带当下需要的 schema,避免为未使用的工具支付 token 费用。
自愈机制保障可靠性
工具调用循环可能因请求中断或 Neovim 重启而中断,导致 AI 正在用的工具不在 essential 中。scan_history_tool_names 会扫描当前回合历史,将已调用过的工具重新纳入请求,直到遇到纯文本回复才清空。这确保了中断恢复后工具调用循环能继续,不会卡死。
配置与回退
懒加载默认开启,无需配置。用户可自定义 tools.essential 列表,将常用工具常驻,例如 git_status、git_diff。若想恢复旧行为,设置 tools.lazy = false 即可全量发送所有工具 schema。这种灵活性让用户根据自身使用习惯平衡 token 消耗与便利性。
其他实用改进
write_file 新增 fileformat 参数,支持 unix/dos/mac 行尾,避免 Windows 项目 CRLF 被改为 LF。Markdown 感知分块器防止代码块或表格被切断。HTTP API 新增 /skills 和 /logs 端点,/sessions 返回 token 用量。脏工作区自动 nudge 提醒 AI 处理未提交改动。
Q&A
chat.nvim v1.10.0 的懒加载工具发现机制是什么?
懒加载工具发现是 v1.10.0 的核心功能,默认只发送 essential 工具集(5个)和 find_tool,其余工具由 AI 按需通过 find_tool 查询激活。激活状态每回合清空,并具备自愈机制防止中断。
为什么 chat.nvim 要引入懒加载工具发现?
因为内置工具已有几十个,每次请求所有工具的 JSON schema 都会塞进请求体,但一次对话往往只用三五个,其余 schema 浪费 token 且每轮计费。懒加载能砍掉冗余 schema,节省 token。
find_tool 是如何工作的?
find_tool 内嵌全部工具的实时目录,AI 用名称或关键词查询:精确名称匹配返回完整 schema 并激活工具;唯一部分匹配直接返回 schema;多个候选返回列表;无匹配返回全目录;查询 list/all/catalog 或留空返回全目录。MCP 工具也在目录中。
懒加载工具的激活状态是如何管理的?
激活状态是回合制的:用户提问后请求只带 essential 和 find_tool;AI 查询 find_tool 激活所需工具;AI 调用工具完成任务;AI 输出纯文本回复后,通过 on_progress_done 清空已激活工具。状态只存内存,不落盘。
如果请求中断或 Neovim 重启,懒加载工具会怎样?
有自愈机制:scan_history_tool_names 会扫描会话历史,把当前回合内调用过的工具重新纳入请求,确保中断恢复后工具调用循环可以继续,不会因工具不在 essential 中而报错。
如何配置 chat.nvim 的懒加载工具?
默认开箱即用,无需配置。可通过 tools.lazy = true 开启(默认),自定义 tools.essential 列表(如加入 git_status、git_diff)。设 tools.lazy = false 可回退到全量发送。
v1.10.0 在 UTF-8 卫生方面做了哪些改进?
在请求链路上做了四道清洗:sessions 清理消息内容非法 UTF-8;providers 请求体编码前 sanitize;tools 清洗 MCP 工具 schema;find_tool 目录简介按 UTF-8 边界截断,避免多字节字符撕裂。
v1.10.0 还有哪些其他新特性?
包括:write_file 支持 fileformat 参数(unix/dos/mac);Markdown 感知消息分块器(7个IM集成共享);HTTP API 增强(/skills、/logs、/sessions 用量统计);脏工作区自动 nudge;两个 skill 重命名(/toggle-force-push、/nvim-messages)。