Neovim AI 插件更新:MCP 支持、异步工具、多模型接入
chat.nvim 的一周开发记录
最近一周给 chat.nvim 加了一些新功能,记录一下。
主要更新
mcp 支持
其实一直想支持 mcp(model context protocol),这次终于实现了。
mcp 可以让 ai 连接外部工具,比如文件系统、数据库、自定义 api 之类的。配置也简单:
require('chat').setup({
mcp = {
servers = {
my_tool = {
command = "path/to/server",
args = {"--option", "value"}
}
}
}
})
目前支持 stdio 和 streamable_http 两种传输方式。还在探索更多可能性,欢迎提建议。
异步工具
之前 git_diff、fetch_web、search_text 这些工具会阻塞编辑器,体验不太好。
这次改成了异步执行,不用等了。也可以按 ctrl-c 取消。
实现方式是工具返回 { jobid = <number> },session 会跟踪这些异步任务。感兴趣的可以看源码。
新增几个 ai 提供商
社区有人问能不能支持这个支持那个,所以加了:
-
• anthropic(claude) -
• gemini -
• ollama(本地运行)
ollama 挺实用的,公司代码不放心传到云端的可以用本地模型。
新工具:git_log
之前只有 git_diff,现在加了 git_log。
@git_log since="1 week ago" -- 最近一周
@git_log path="./src/main.lua" -- 某个文件
@git_log grep="fix" author="username" -- 搜索提交
本来是自己用着方便,想着也许别人也用得上。
一些小改进
-
• find_files改用 ripgrep 了,更快 -
• 标题加了图标,看起来清楚点 -
• 显示缓存的 token 数量和比例(用 anthropic api 的话能省点钱) -
• 高亮可以配置了
性能方面
-
• session 缓存用 lazy iterator,遍历大量 session 时省内存 -
• 消息队列的定时器改成按需启停
都是些细节优化。
想法
做这个插件初衷就是自己想用个好用的 ai chat 工具,顺便练练 lua。
这次更新主要解决了几个痛点:阻塞问题、工具扩展性、多模型支持。
还有很多想做的:
-
• 更好的多轮对话管理 -
• 支持更多文件类型 -
• 自定义 prompt template -
• …
如果有建议或者发现问题,欢迎提 issue 或 pr。
安装
{
'wsdjeg/chat.nvim',
config =function()
require('chat').setup()
end
}
GitHub: https://github.com/wsdjeg/chat.nvim
就是这些,感谢关注。
夜雨聆风