很长一段时间,AI 一直是一个非常热门的话题。衍生出来的工具也非常的多,从我接触的顺序来看, 从最早的 tabline 补全到后来的 GitHub Copilot 补全。再到后来的 ChatGPT 以及之后来的各自类似的 Chat 工具。
前面我使用最多的还是网页版的 ChatGPT,使用过程中最大的一个问题就是请求结果渲染展示一直是有问题的。 尤其是让他展示 markdown 源码时。比如:

上述图片 Usage 实际上也在代码块里面是,但是由于 markdown 内还有代码块,导致解析展示出问题。
正是由于这个原因,我制作了 Neovim AI 聊天插件 chat.nvim,
我需要以纯文本展示请求结果的完整内容。
安装及配置 chat.nvim
使用任意插件管理器,比如 nvim-plug:
local deepseek_api_key = 'xxxxxxxxxxx'
local free_chatgpt_api_key = 'xxxxxxxxxxxxxxx'
require('plug').add({
{
'wsdjeg/chat.nvim',
depends = {
{
'wsdjeg/job.nvim', -- Required
'wsdjeg/picker.nvim', -- Optional but recommended
},
},
},
})
使用操作界面
chat.nvim 默认是上下分屏两个浮窗,分别为输入窗口和结果展示窗口。如图:

多 AI 提供商支持
chat.nvim 内置支持多种 AI 服务提供商:
- DeepSeek - DeepSeek AI
- GitHub AI - GitHub AI
- Moonshot - Moonshot AI
- OpenRouter - OpenRouter
- Qwen - Alibaba Cloud Qwen
- SiliconFlow - SiliconFlow
- Tencent Hunyuan - 腾讯混元
- BigModel - BigModel AI
- Volcengine - 火山引擎
- OpenAI - OpenAI
- LongCat - LongCat AI
- CherryIN - CherryIN AI
- YuanJing - 元境 AI
同时还支持自定义提供商,你可以创建 ~/.config/nvim/lua/chat/providers/<provider_name>.lua 来添加新的 AI 服务。
picker.nvim 集成
chat.nvim 自带了一些 picker.nvim 插件的拓展,目前支持的拓展有:
:Picker chat- 搜索历史对话
:Picker chat_provider- 搜索并切换 provider
:Picker chat_model- 搜索并切换当前 provider 提供的模型
内置工具支持
chat.nvim 支持丰富的内置工具,让 AI 可以直接与编辑器交互:
文件操作工具
- @read_file - 读取文件内容(支持指定行范围)
- @find_files - 搜索文件
- @search_text - 搜索文件内容(支持正则表达式、文件类型过滤等)
- @git_diff - 查看 git diff 信息
网页工具
- @web_search - 网络搜索(支持 Firecrawl、Google、SerpAPI)
- @fetch_web - 获取网页内容
记忆系统
chat.nvim 实现了三层记忆系统,灵感来自认知心理学:
- 工作记忆 (Working Memory) ⚡ - 当前会话的任务和决策(最高优先级)
- 日常记忆 (Daily Memory) 📅 - 临时任务和短期目标(7-30天后自动过期)
- 长期记忆 (Long-term Memory) 💾 - 永久知识存储(事实、偏好、技能)
相关工具:
- @extract_memory - 提取并存储记忆
- @recall_memory - 回忆相关信息
其他工具
- @set_prompt - 设置系统提示词
- @plan - 任务计划管理
- @zettelkasten_create - 创建笔记(需要 zettelkasten.nvim)
- @zettelkasten_get - 获取笔记(需要 zettelkasten.nvim)
会话管理
chat.nvim 提供了完整的会话管理功能:
:Chat- 打开当前会话:Chat new- 创建新会话:Chat prev/:Chat next- 切换会话:Chat clear- 清空当前会话:Chat delete- 删除当前会话:Chat save <path>- 保存会话到文件:Chat load <path>- 从文件或 URL 加载会话:Chat share- 分享会话到 pastebin:Chat preview- 在浏览器中预览会话

并行会话
chat.nvim 支持同时运行多个独立的聊天会话:
- 每个会话可以使用不同的 AI 模型
- 会话之间保持独立的对话历史和设置
- 使用
:Chat prev和:Chat next快速切换
IM 集成
chat.nvim 支持多种第三方聊天平台集成,可以将 Neovim 的 AI 对话能力扩展到各个平台:
| 平台 | 图标 | 双向通信 | 特点 |
|---|---|---|---|
| Discord | 💬 | ✅ 是 | 完整的机器人功能,会话绑定 |
| 飞书 | 🐦 | ✅ 是 | 飞书机器人,消息轮询 |
| 钉钉 | 📱 | ✅ 是* | Webhook(单向)或 API(双向) |
| 企业微信 | 💼 | ✅ 是* | 企业微信 Webhook 或 API |
| Telegram | ✈️ | ✅ 是 | Bot API,支持群组和私聊 |
Discord 集成

通过 Discord 集成,你可以:
- 在 Discord 频道中与 AI 助手交互
- 使用
:Chat bridge discord绑定当前会话 - 使用
/session命令确认绑定 - 通过提及机器人或回复消息来触发对话
飞书集成

飞书集成支持:
- 双向消息通信
- 自动轮询新消息
- 长消息支持(最多 30,720 字符)
消息同步
通过这些集成,可以实现 Neovim 与各平台的消息同步:

这些集成功能让 chat.nvim 成为一个多平台的 AI 对话中心,不仅可以在 Neovim 内使用,还可以作为各种聊天平台的智能助手。
HTTP API
chat.nvim 内置了 HTTP 服务器功能,提供 RESTful API 接口:
http = {
host = '127.0.0.1',
port = 7777,
api_key = 'your-secret-key',
}
API 端点
- POST / - 发送消息到指定会话
- GET /sessions - 获取所有活跃会话列表
- GET /session - 获取会话的 HTML 预览(需要
id参数)
使用示例
# 发送消息
curl -X POST http://127.0.0.1:7777/ \
-H "X-API-Key: your-secret-key" \
-H "Content-Type: application/json" \
-d '{"session": "my-session", "content": "Hello from curl!"}'
# 获取会话列表
curl -H "X-API-Key: your-secret-key" http://127.0.0.1:7777/sessions
这使得外部应用可以轻松集成 chat.nvim 的对话能力,比如 CI/CD 流水线、监控系统等。
快捷键
在输入窗口中:
<Enter>- 发送消息q- 关闭聊天窗口<Tab>- 切换输入和结果窗口Ctrl-C- 取消当前请求Ctrl-N- 新建会话r- 重试上次取消的请求alt-h/alt-l- 上一个/下一个会话
在结果窗口中:
q- 关闭聊天窗口<Tab>- 切换输入和结果窗口
总结
从最初为了解决 markdown 渲染问题而开发的聊天插件,到现在支持多种 AI 提供商、内置工具系统、三层记忆架构、多平台集成、HTTP API 等功能,chat.nvim 已经发展成为一个功能强大的 Neovim AI 助手。它不仅能帮助你在编辑器内高效地与 AI 对话,还能通过各种工具直接操作文件、搜索网络、管理记忆,真正成为了开发者的智能伙伴。
更多详细信息,请访问 chat.nvim GitHub 仓库。