chat.nvim v1.8.0:自动重试、用户画像与定时任务重写
chat.nvim v1.8.0 正式发布。这个版本的核心主题是稳定性和个性化——让 AI 更不容易断、更懂你是谁。
自动重试:网络波动不再是死局
用 AI 最烦什么?请求发出去,网络抖了一下,直接报错,前功尽弃。
v1.8.0 新增了 LLM 请求自动重试机制。当遇到连接错误或超时时,chat.nvim 会自动重试,而不是直接把错误甩给用户。成功响应后重试计数自动归零。
这个改动看似简单,实际影响很大。尤其在移动网络或 Termux 环境下,网络波动是常态,自动重试意味着你不用每次断线都手动重新发送。
用户画像:让 AI 记住你是谁
每个用户的编程习惯、技术栈、偏好都不同。v1.8.0 引入了用户画像(人物画像) 功能,AI 可以主动记录和查询用户信息:
- 编程语言偏好
- 编辑器习惯
- 技术背景
- 工作方式
更关键的是,这个功能不局限于当前用户——对话中提到其他人时,AI 会主动查询对方的画像,提供更个性化的上下文感知响应。
画像以 Markdown 文件存储,结构清晰,易于维护。
定时任务架构重写
v1.7.0 引入了定时任务功能,v1.8.0 对其进行了全面重写。
旧架构存在一些设计问题,新版本改为独立 uv.timer 架构——每个任务一个独立定时器,到点才唤醒,不到点 CPU 零开销。同时新增了 skip_if_busy 选项:当 AI 正在处理请求时,周期任务会跳过本次触发,等下一个周期再试,避免在繁忙时打断正在进行的工作。
配合之前的防漂移机制和 30 天超长延时支持,定时任务现在更加健壮。
Markdown 渲染:代码高亮开箱即用
v1.8.0 为 result buffer 启用了 markdown filetype,并新增 render_markdown 配置选项。配合 render-markdown.nvim 插件,AI 回复中的标题、代码块、表格、列表都能得到原生渲染,阅读体验显著提升。
同时为 result 和 prompt 窗口增加了 signcolumn,恢复了标题徽标字符,禁用了行号显示——细节打磨,让界面更干净。
工具系统增强
write_file 新增 str_replace
write_file 工具新增 str_replace 操作,支持通过字符串匹配替换文件内容,无需指定行号。比原来的 replace 操作更灵活,尤其适合精确修改代码片段。
get_history 支持搜索
get_history 工具新增 search 参数,可以按关键词过滤历史消息。长会话中找特定内容不再需要翻页。
git_add 更健壮
修复了 git_add 在接收到字符串化 JSON 数组时的解析问题,路径处理更加可靠。
数据存储迁移
v1.8.0 将内存和会话存储从 stdpath('cache') 迁移到 stdpath('data')。
这个改动的原因很直接:cache 目录可能被系统清理工具自动清除,而 data 目录是持久的。会话数据和记忆是用户的重要资产,不应该因为系统清理而丢失。集成状态文件也统一移到了 chat.nvim/integration/ 目录下。
HTTP 稳定性修复
v1.8.0 修复了多个 HTTP 相关的稳定性问题:
- 防止 double-close:HTTP 服务在关闭时不再重复关闭连接
- 防止客户端挂起:route handler 出错时客户端不会无限等待
- MCP 错误处理:改善了 MCP 协议的错误处理逻辑
这些修复对 Nova(Android 客户端)用户尤其重要——手机网络环境复杂,HTTP 连接的健壮性直接影响体验。
会话管理改进
- 会话标题重命名:可以为会话设置自定义标题,方便区分
- 会话搜索显示项目名称:原有的
<leader>fr会话搜索现在会展示每个会话所属的项目名称,多项目并行时不再混淆 - picker 合并:原 chat_project source 已合并进 chat source,统一入口
完整更新日志
新功能
Bug 修复
除了前面提到的 HTTP 稳定性修复,v1.8.0 还解决了以下问题:
工具调用完整性:当上下文长度超限触发截断时,新增了 tool_call 与 tool_result 的配对验证,防止截断导致工具调用链断裂,进而引发 LLM 端的解析错误。
重试机制:成功收到响应后重试计数自动归零,确保后续请求不受之前重试历史的影响。
会话队列:修复了空闲会话队列定时器的延迟问题,避免不必要的等待。同时移除了回复中偶尔出现的重复代码块。
工具可靠性:git_add 在接收到字符串化的 JSON 数组时解析失败的问题已修复,路径处理更加健壮。
界面细节:恢复了窗口标题中的徽标字符,修正了显示异常。
此外,还修复了若干代码质量和安全问题,提升了整体代码健壮性。
重构
v1.8.0 的重构集中在架构简化和路径规范化两方面。
定时任务从原来的轮询架构重写为独立 uv.timer 架构,每个任务一个独立定时器,到点才唤醒。存储路径从 stdpath('cache') 迁移到 stdpath('data'),会话缓存也移到了独立的 sessions 子目录下,目录结构更加清晰。
picker 层面,原 chat_project source 合并进 chat source,减少了重复代码,统一了会话搜索的入口。HTTP routes 统一使用 response.send_raw,简化了响应处理逻辑。
升级方式
如果你已经安装了 chat.nvim,直接更新即可:
-- lazy.nvim
{
'wsdjeg/chat.nvim',
-- 更新到最新版
}
如果你是 Nova 用户,无需额外操作,服务端更新后自动生效。
写在最后
v1.8.0 是一个以稳定性和用户体验为核心的版本。自动重试让 AI 对话更抗网络波动,用户画像让 AI 更懂你,定时任务重写让自动化更可靠,Markdown 渲染让阅读更舒适。
感谢所有反馈问题的用户。如果你在使用中遇到问题或有功能建议,欢迎在 GitHub Issues 提交反馈。