Neovim AI agent done right
4.7k
Stars
247
Forks
43
Watchers
25
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",
--- Completions: Prompt buffer 中的 #rules 和 @files
completion = {
-- 我将暂时禁用这些功能,直到我更好地理解它
-- Cursor 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",
},
})
99 是一个专为 Neovim 设计的 AI 辅助编程插件,旨在通过代理式工作流将大语言模型的强大能力与程序员的手动编码过程完美融合。该项目不追求完全自动化替代,而是侧重于通过智能化的搜索与辅助工具来增强开发者的编程效率。
项目支持基于自然语言的项目全局搜索,并将结果自动整理到快速修复列表中。提供视觉模式交互,能够直接对选中的代码块进行 AI 处理并完成替换。内置任务管理与会话控制功能,支持快速停止所有运行中的 AI 请求以保持环境纯净。具备完善的日志查看系统,方便开发者实时跟踪插件的交互与运行轨迹。
该项目适用于偏好使用 Neovim 进行开发,并希望在保持核心编码掌控权的同时,利用 AI 提升项目理解与代码重构效率的开发者。它特别适合在大型代码库中进行复杂搜索、快速定位问题以及进行日常的代码辅助编写场景。