dlants/magenta.nvim
A tool-use-focused LLM plugin for neovim.
magenta.nvim – Neovim 内的 AI 增强编程
是什么 – 一个 Neovim 插件,允许你直接从编辑器与 Anthropic 的 LLM(Claude)对话。它将模型视为一个 代理:你可以下达指令,查看其完整提示,编辑其输出,并让插件将这些编辑反馈给模型。目标是在你熟悉的 Vim 工作流内,实现流畅的“开发者 ↔ AI”循环。
核心理念
- 透明的代理交互 – 所有提示、工具调用和令牌使用情况均可见。你可以在应用更改前编辑模型建议的修改。
- 编辑描述语言(EDL) – 一种用于描述编辑(插入、替换、删除)的微型 DSL,相比发送原始文本差异,其令牌效率高得多。
- 操作系统级沙箱 – 使用 Anthropic 的
sandbox-runtime(macOS 上为 Seatbelt,Linux 上为 bubblewrap)以可配置的文件系统和网络权限运行工具命令,减少意外凭证泄露。 - Docker 子代理 – 在 Docker 容器中启动隔离的代理,实现并行、无需监督的工作(例如在独立分支上进行重型 linting 或代码生成)。
- 线程级缓冲区 – 每个对话线程都位于独立的 Neovim 缓冲区中,让你像处理普通文件一样进行导航、跳转列表和选择线程。
- 声明式 UI – 一种类似 React 的 VDOM 系统,在缓冲区内部渲染丰富 UI(可展开部分、审批对话框、提示音等)。
- 可自定义代理 – 系统提示为
~/.magenta/agents/(或.magenta/agents/)下的纯 Markdown 文件,因此你无需修改 Lua/TS 代码即可创建新个性。 - 智能缓存与自动压缩 – 增量摘要机制通过准确计数令牌并在需要时压缩历史记录,使长对话保持低成本。
如何使用
- 安装插件(通过
lazy.nvim或 Neovim 内置包管理器)并运行npm run build生成dist/magenta.mjs。 - 配置一个指向 Anthropic 模型(例如
claude-opus-4-8)的 配置文件。README 提供了最小的 Luasetup调用示例。 - 打开聊天侧边栏(
<leader>mt)并输入以@开头的命令(例如@file: src/main.rs将文件添加到上下文,@fork分支线程,@fast使用更便宜的模型)。 - 模型在缓冲区中回复;你可以编辑其建议的更改,下一轮将你编辑的差异发送回模型。
- 可选工具:Docker 子代理、沙箱控制的 shell 命令、PDF 阅读、网络搜索等,可通过
@命令或内置工具菜单调用。
安装片段
-- lazy.nvim 示例
return {
"dlants/magenta.nvim",
lazy = false,
build = "npm run build",
opts = {},
}
或使用 README 中描述的 Neovim 原生 pack 管理器。
配置亮点
- 配置文件 – 定义模型、提供者、API 密钥环境变量,以及可选的快速/思考模型。
- 项目设置 – 每个仓库的
.magenta/options.json可覆盖配置文件、自动添加上下文文件,并设置技能目录。 - 技能 – 注入项目特定知识到代理的 Markdown 文件。
- 沙箱策略 – 精细调整代理可访问的文件系统路径或网络主机;正则表达式模式会触发审批提示(默认阻止
git push)。 - MCP 服务器 – 可选的远程工具服务器,用于扩展功能。
为何重要
- 将整个 AI 辅助工作流保留在 Neovim 内,避免切换到外部 CLI 或 Web UI 的上下文切换。
- 提供对模型行为的细粒度控制,这在编辑器侧 AI 插件中极为罕见。
- EDL DSL 降低令牌使用量,使昂贵的 Claude 模型在大型修改中更具成本效益。
- 透明 UI 和测试驱动架构使插件对贡献者友好且易于上手。
状态 – 活跃维护中(更新记录至 2026 年 4 月)。主要支持 Anthropic;其他提供者目前已被移除。
进一步阅读 – 在 Neovim 中运行 :help magenta.nvim,查看仓库的 doc/ 文件,以及 README 顶部链接的作者博客文章。
相关
- 项目
- 项目
- 项目
- 项目
- 项目