© 2026FindAgent  · @simprr
返回列表
T

ThePrimeagen/99

Neovim AI agent done right

⭐

4.5k

Stars

🔱

222

Forks

👁

43

Watchers

📋

17

Issues

Lua创建于 2025/11/22更新于 今天
在 GitHub 上查看
README
由 Gemini 翻译整理

99

Neovim 的 AI 客户端,专为那些依然热爱编码的开发者打造。

如果你是从 YouTube 视频 来的

项目变动非常频繁,请务必小心!

警告 :: API 目前处于变动中

API 可能会随时消失或变更。很抱歉,这是一个 BETA 阶段的产品。

项目方向

这个仓库是我探索如何将 AI 与传统编程相结合的实验场。

我坚信手动编码依然非常重要,而且目前我所知的最优秀的产品依然遵循这一原则(参见 OpenCode 与 Claude Code 的对比)。

警告

  1. 目前提示词(Prompts)是临时的,未来有巨大的改进空间。
  2. 虽然官方处于 beta 阶段,但 API 仍可能变动,尽管目前阶段变动可能性已较低。

99

AI Neovim 体验

_99

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
贡献者
TS0crAjaTb
项目信息
默认分支master
License未指定
创建时间2025/11/22
最近更新今天
GAI 中文摘要

99 是一个专为 Neovim 开发的 AI 编程辅助工具,旨在通过代理工作流将人工智能的能力融入程序员的日常开发中。该项目拒绝完全自动化编程,而是致力于通过增强开发者的手动编码效率来平衡代码质量与 LLM 的辅助效能。

项目支持基于自然语言的项目全局搜索,并将结果精准定位到 quickfix 列表以便快速查阅。支持对选中的代码块进行 AI 处理,并直接在编辑器中自动替换为优化后的内容。提供了一套完善的交互管理机制,允许用户随时停止进行中的 AI 请求、查看历史执行日志以及快速打开交互窗口。内置了灵活的扩展配置接口,确保用户能够根据个人编码习惯自定义 AI 的请求流程与执行逻辑。

适用于追求高性能编辑体验并希望通过 AI 辅助提高代码审查、重构与搜索效率的 Neovim 资深开发者。该工具特别适合在复杂的代码库中进行探索式开发,通过人机协作的方式快速定位问题并处理代码片段。