Neovim AI agent done right
4.5k
Stars
222
Forks
43
Watchers
17
Issues
Neovim 的 AI 客户端,专为那些依然热爱编码的开发者打造。
项目变动非常频繁,请务必小心!
API 可能会随时消失或变更。很抱歉,这是一个 BETA 阶段的产品。
这个仓库是我探索如何将 AI 与传统编程相结合的实验场。
我坚信手动编码依然非常重要,而且目前我所知的最优秀的产品依然遵循这一原则(参见 OpenCode 与 Claude Code 的对比)。
AI Neovim 体验
99 是一个智能体(agentic)工作流,旨在将程序员现有的能力与 LLM 的强大功能融合。它不是为了取代程序员,而是为了增强程序员的能力。
目前,99 的方向是向智能体编程和信息呈现演进。起初,也就是在最初的 YouTube 视频中,重点在于替换特定的代码片段。随着我使用 99 的深入,我越发意识到它更好的应用场景是通过 search(搜索)和 work(工作)来实现。
{
"ThePrimeagen/99",
config = function()
local _99 = require("99")
-- 如果你想追踪请求记录,可以将其记录到文件中
-- 若要报告 bug,建议使用 99 内部提供的日志机制,而不是依赖此功能
-- 此处仅用于调试目的
local cwd = vim.uv.cwd()
local basename = vim.fs.basename(cwd)
_99.setup({
-- provider = _99.Providers.ClaudeCodeProvider, -- 默认: OpenCodeProvider
logger = {
level = _99.DEBUG,
path = "/tmp/" .. basename .. ".99.debug",
print_on_error = true,
},
-- 当设置的目录位于 CWD 之外时,诸如 claude code 或 opencode 之类的工具
-- 将会出现权限问题导致生成失败。请查阅工具文档以解决:
-- https://opencode.ai/docs/permissions/#external-directories
-- https://code.claude.com/docs/en/permissions#read-and-edit
tmp_dir = "./tmp",
--- 补全:提示缓冲区中的 #rules 和 @files
completion = {
-- 在我更好地理解这个问题之前,我将禁用这些功能。
-- cursor rules 内部也包含 application rules,这意味着我需要以不同的方式应用它们
-- cursor_rules = ""
--- 存放你自定义 SKILL.md 的文件夹列表
--- 预期格式:
--- /path/to/dir//SKILL.md
---
--- 示例:
--- 输入路径:
--- "scratch/custom_rules/"
---
--- 输出规则:
--- {path = "scratch/custom_rules/vim/SKILL.md", name = "vim"},
--- ... 该目录下的其他规则 ...
---
custom_rules = {
"scratch/custom_rules/",
},
--- 配置 @file 补全 (所有字段均为可选,具有合理的默认值)
files = {
-- enabled = true,
-- max_file_size = 102400, -- 字节,跳过大于此大小的文件
-- max_files = 5000, -- 总发现文件的上限
-- exclude = { ".env", ".env.*", "node_modules", ".git", ... },
},
--- 文件发现机制:
--- - 在 Git 仓库中: 使用 `git ls-files`,它会自动遵循 .gitignore
--- - 非 Git 仓库: 回退到文件系统扫描,并手动排除
--- - 两种方法都会在 gitignore 的基础上应用配置的 `exclude` 列表
--- 使用哪个自动补全引擎。如果不指定,默认为 native(内置)。
source = "native", -- "native" (默认), "cmp", 或 "blink"
},
--- 警告:如果你更改了 cwd,这很可能会失效
--- 我稍后会在后续更新中修复此问题
---
--- md_files 是一个文件列表,系统会根据发起请求的位置自动查找并添加这些文件。
--- 这意味着如果你在 /foo/bar/baz.lua 中,
--- 系统会自动查找:
--- /foo/bar/AGENT.md
--- /foo/AGENT.md
--- 前提是假设 /foo 是项目根目录(基于 cwd)
md_files = {
"AGENT.md",
},
})
-- take extr
99 是一个专为 Neovim 开发的 AI 编程辅助工具,旨在通过代理工作流将人工智能的能力融入程序员的日常开发中。该项目拒绝完全自动化编程,而是致力于通过增强开发者的手动编码效率来平衡代码质量与 LLM 的辅助效能。
项目支持基于自然语言的项目全局搜索,并将结果精准定位到 quickfix 列表以便快速查阅。支持对选中的代码块进行 AI 处理,并直接在编辑器中自动替换为优化后的内容。提供了一套完善的交互管理机制,允许用户随时停止进行中的 AI 请求、查看历史执行日志以及快速打开交互窗口。内置了灵活的扩展配置接口,确保用户能够根据个人编码习惯自定义 AI 的请求流程与执行逻辑。
适用于追求高性能编辑体验并希望通过 AI 辅助提高代码审查、重构与搜索效率的 Neovim 资深开发者。该工具特别适合在复杂的代码库中进行探索式开发,通过人机协作的方式快速定位问题并处理代码片段。