乐于分享
好东西不私藏

Neovim AI 插件更新:MCP 支持、异步工具、多模型接入

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_difffetch_websearch_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


就是这些,感谢关注。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Neovim AI 插件更新:MCP 支持、异步工具、多模型接入

猜你喜欢

  • 暂无文章