[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-David-Kunz--gen.nvim":3,"tool-David-Kunz--gen.nvim":64},[4,17,25,39,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":10,"last_commit_at":23,"category_tags":24,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":26,"name":27,"github_repo":28,"description_zh":29,"stars":30,"difficulty_score":10,"last_commit_at":31,"category_tags":32,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[33,34,35,36,14,37,15,13,38],"图像","数据工具","视频","插件","其他","音频",{"id":40,"name":41,"github_repo":42,"description_zh":43,"stars":44,"difficulty_score":45,"last_commit_at":46,"category_tags":47,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[14,33,13,15,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":45,"last_commit_at":54,"category_tags":55,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74939,"2026-04-05T23:16:38",[15,33,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":45,"last_commit_at":62,"category_tags":63,"status":16},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70626,"2026-04-05T22:51:36",[15,14,13,36],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":78,"owner_url":80,"languages":81,"stars":86,"forks":87,"last_commit_at":88,"license":89,"difficulty_score":45,"env_os":90,"env_gpu":91,"env_ram":92,"env_deps":93,"category_tags":100,"github_topics":78,"view_count":10,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":101,"updated_at":102,"faqs":103,"releases":134},3012,"David-Kunz\u002Fgen.nvim","gen.nvim","Neovim plugin to generate text using LLMs with customizable prompts","gen.nvim 是一款专为 Neovim 编辑器设计的插件，旨在让用户直接在代码编辑环境中调用大语言模型（LLM）生成文本。它解决了开发者在编写代码、撰写文档或重构逻辑时，无需切换窗口即可快速获取 AI 辅助的需求，极大地提升了工作流的连贯性与效率。\n\n这款工具特别适合习惯使用命令行和键盘操作的开发者及技术写作者。其核心亮点在于高度的可定制性与对本地部署的支持：gen.nvim 默认对接 Ollama 服务，允许用户运行如 Llama 3.2、Mistral 等本地模型，既保护了数据隐私，又降低了使用成本。用户可以通过预设或自定义提示词（Prompt）灵活控制生成内容，支持语法修正、代码解释、功能增强等多种场景。\n\n此外，gen.nvim 提供了丰富的交互选项，包括浮动窗口、分屏显示等多种结果展示模式，并支持多轮对话上下文记忆，让用户能像聊天一样连续追问。配合简洁的快捷键配置，无论是快速润色一段注释，还是基于现有代码生成新功能，都能轻松完成。对于追求高效、私密且可完全掌控 AI 工具的极客用户而言，gen.nvim 是一个轻量而强大的得力助手。","# gen.nvim\n\nGenerate text using LLMs with customizable prompts\n\n\u003Cdiv align=\"center\">\n\n![gen_nvim](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FDavid-Kunz_gen.nvim_readme_40bf1a46dcdf.png)\n\n\u003C\u002Fdiv>\n\n## Video\n\n\u003Cdiv align=\"center\">\n\n[![Local LLMs in Neovim: gen.nvim](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FDavid-Kunz_gen.nvim_readme_1935bfc030e6.jpg)](https:\u002F\u002Fyoutu.be\u002FFIZt7MinpMY?si=KChSuJJDyrcTdYiM)\n\n\u003C\u002Fdiv>\n\n## Requires\n\n- [Ollama](https:\u002F\u002Follama.ai\u002F) with an appropriate model, e.g. [`llama3.2`](https:\u002F\u002Follama.com\u002Flibrary\u002Fllama3.2), [`mistral`](https:\u002F\u002Follama.ai\u002Flibrary\u002Fmistral), etc.\n- [Curl](https:\u002F\u002Fcurl.se\u002F)\n\n## Install\n\nInstall with your favorite plugin manager, e.g. [lazy.nvim](https:\u002F\u002Fgithub.com\u002Ffolke\u002Flazy.nvim)\n\nExample with Lazy\n\n```lua\n-- Minimal configuration\n{ \"David-Kunz\u002Fgen.nvim\" },\n\n```\n\n```lua\n\n-- Custom Parameters (with defaults)\n{\n    \"David-Kunz\u002Fgen.nvim\",\n    opts = {\n        model = \"mistral\", -- The default model to use.\n        quit_map = \"q\", -- set keymap to close the response window\n        retry_map = \"\u003Cc-r>\", -- set keymap to re-send the current prompt\n        accept_map = \"\u003Cc-cr>\", -- set keymap to replace the previous selection with the last result\n        host = \"localhost\", -- The host running the Ollama service.\n        port = \"11434\", -- The port on which the Ollama service is listening.\n        display_mode = \"float\", -- The display mode. Can be \"float\" or \"split\" or \"horizontal-split\" or \"vertical-split\".\n        show_prompt = false, -- Shows the prompt submitted to Ollama. Can be true (3 lines) or \"full\".\n        show_model = false, -- Displays which model you are using at the beginning of your chat session.\n        no_auto_close = false, -- Never closes the window automatically.\n        file = false, -- Write the payload to a temporary file to keep the command short.\n        hidden = false, -- Hide the generation window (if true, will implicitly set `prompt.replace = true`), requires Neovim >= 0.10\n        init = function(options) pcall(io.popen, \"ollama serve > \u002Fdev\u002Fnull 2>&1 &\") end,\n        -- Function to initialize Ollama\n        command = function(options)\n            local body = {model = options.model, stream = true}\n            return \"curl --silent --no-buffer -X POST http:\u002F\u002F\" .. options.host .. \":\" .. options.port .. \"\u002Fapi\u002Fchat -d $body\"\n        end,\n        -- The command for the Ollama service. You can use placeholders $prompt, $model and $body (shellescaped).\n        -- This can also be a command string.\n        -- The executed command must return a JSON object with { response, context }\n        -- (context property is optional).\n        -- list_models = '\u003Comitted lua function>', -- Retrieves a list of model names\n        result_filetype = \"markdown\", -- Configure filetype of the result buffer\n        debug = false -- Prints errors and the command which is run.\n    }\n},\n```\n\nHere are all [available models](https:\u002F\u002Follama.com\u002Flibrary).\n\nAlternatively, you can call the `setup` function:\n\n```lua\nrequire('gen').setup({\n  -- same as above\n})\n```\n\n\n\n## Usage\n\nUse command `Gen` to generate text based on predefined and customizable prompts.\n\nExample key maps:\n\n```lua\nvim.keymap.set({ 'n', 'v' }, '\u003Cleader>]', ':Gen\u003CCR>')\n```\n\nYou can also directly invoke it with one of the [predefined prompts](.\u002Flua\u002Fgen\u002Fprompts.lua) or your custom prompts:\n\n```lua\nvim.keymap.set('v', '\u003Cleader>]', ':Gen Enhance_Grammar_Spelling\u003CCR>')\n```\n\nAfter a conversation begins, the entire context is sent to the LLM. That allows you to ask follow-up questions with\n\n```lua\n:Gen Chat\n```\n\nand once the window is closed, you start with a fresh conversation.\n\nFor prompts which don't automatically replace the previously selected text (`replace = false`), you can replace the selected text with the generated output with `\u003Cc-cr>`.\n\nYou can select a model from a list of all installed models with\n\n```lua\nrequire('gen').select_model()\n```\n\n## Custom Prompts\n\n[All prompts](.\u002Flua\u002Fgen\u002Fprompts.lua) are defined in `require('gen').prompts`, you can enhance or modify them.\n\nExample:\n```lua\nrequire('gen').prompts['Elaborate_Text'] = {\n  prompt = \"Elaborate the following text:\\n$text\",\n  replace = true\n}\nrequire('gen').prompts['Fix_Code'] = {\n  prompt = \"Fix the following code. Only output the result in format ```$filetype\\n...\\n```:\\n```$filetype\\n$text\\n```\",\n  replace = true,\n  extract = \"```$filetype\\n(.-)```\"\n}\n```\n\nYou can use the following properties per prompt:\n\n- `prompt`: (string | function) Prompt either as a string or a function which should return a string. The result can use the following placeholders:\n   - `$text`: Visually selected text or the content of the current buffer\n   - `$filetype`: File type of the buffer (e.g. `javascript`)\n   - `$input`: Additional user input\n   - `$register`: Value of the unnamed register (yanked text)\n- `replace`: `true` if the selected text shall be replaced with the generated output\n- `extract`: Regular expression used to extract the generated result\n- `model`: The model to use, default: `mistral`\n\n## Tip\n\nUser selections can be delegated to [Telescope](https:\u002F\u002Fgithub.com\u002Fnvim-telescope\u002Ftelescope.nvim) with [telescope-ui-select](https:\u002F\u002Fgithub.com\u002Fnvim-telescope\u002Ftelescope-ui-select.nvim).\n","# gen.nvim\n\n使用可自定义提示的 LLM 生成文本\n\n\u003Cdiv align=\"center\">\n\n![gen_nvim](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FDavid-Kunz_gen.nvim_readme_40bf1a46dcdf.png)\n\n\u003C\u002Fdiv>\n\n## 视频\n\n\u003Cdiv align=\"center\">\n\n[![Neovim 中的本地 LLM：gen.nvim](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FDavid-Kunz_gen.nvim_readme_1935bfc030e6.jpg)](https:\u002F\u002Fyoutu.be\u002FFIZt7MinpMY?si=KChSuJJDyrcTdYiM)\n\n\u003C\u002Fdiv>\n\n## 需求\n\n- 安装了适当模型的 [Ollama](https:\u002F\u002Follama.ai\u002F)，例如 [`llama3.2`](https:\u002F\u002Follama.com\u002Flibrary\u002Fllama3.2)、[`mistral`](https:\u002F\u002Follama.ai\u002Flibrary\u002Fmistral) 等。\n- [Curl](https:\u002F\u002Fcurl.se\u002F)\n\n## 安装\n\n使用你喜欢的插件管理器安装，例如 [lazy.nvim](https:\u002F\u002Fgithub.com\u002Ffolke\u002Flazy.nvim)。\n\nLazy 示例配置：\n\n```lua\n-- 最简配置\n{ \"David-Kunz\u002Fgen.nvim\" },\n\n```\n\n```lua\n\n-- 自定义参数（含默认值）\n{\n    \"David-Kunz\u002Fgen.nvim\",\n    opts = {\n        model = \"mistral\", -- 默认使用的模型。\n        quit_map = \"q\", -- 设置关闭响应窗口的键映射\n        retry_map = \"\u003Cc-r>\", -- 设置重新发送当前提示的键映射\n        accept_map = \"\u003Cc-cr>\", -- 设置用最新结果替换之前选中文本的键映射\n        host = \"localhost\", -- 运行 Ollama 服务的主机。\n        port = \"11434\", -- Ollama 服务监听的端口。\n        display_mode = \"float\", -- 显示模式。可为 \"float\"、\"split\"、\"horizontal-split\" 或 \"vertical-split\"。\n        show_prompt = false, -- 显示提交给 Ollama 的提示。可为 true（3 行）或 \"full\"。\n        show_model = false, -- 在聊天会话开始时显示正在使用的模型。\n        no_auto_close = false, -- 不自动关闭窗口。\n        file = false, -- 将请求负载写入临时文件，以缩短命令长度。\n        hidden = false, -- 隐藏生成窗口（若为 true，则会隐式设置 `prompt.replace = true`），需 Neovim >= 0.10。\n        init = function(options) pcall(io.popen, \"ollama serve > \u002Fdev\u002Fnull 2>&1 &\") end,\n        -- 初始化 Ollama 的函数。\n        command = function(options)\n            local body = {model = options.model, stream = true}\n            return \"curl --silent --no-buffer -X POST http:\u002F\u002F\" .. options.host .. \":\" .. options.port .. \"\u002Fapi\u002Fchat -d $body\"\n        end,\n        -- 调用 Ollama 服务的命令。可使用占位符 $prompt、$model 和 $body（经过 shell 转义）。\n        -- 也可以直接指定命令字符串。\n        -- 执行的命令必须返回一个包含 { response, context } 的 JSON 对象\n        -- （context 属性为可选）。\n        -- list_models = '\u003Comitted lua function>', -- 获取模型名称列表。\n        result_filetype = \"markdown\", -- 配置结果缓冲区的文件类型。\n        debug = false -- 打印错误及执行的命令。\n    }\n},\n```\n\n所有可用模型请参见 [这里](https:\u002F\u002Follama.com\u002Flibrary)。\n\n或者，你也可以调用 `setup` 函数：\n\n```lua\nrequire('gen').setup({\n  -- 同上\n})\n```\n\n\n\n## 使用方法\n\n使用 `Gen` 命令根据预定义和可自定义的提示生成文本。\n\n示例键映射：\n\n```lua\nvim.keymap.set({ 'n', 'v' }, '\u003Cleader>]', ':Gen\u003CCR>')\n```\n\n你还可以直接通过 [预定义提示](.\u002Flua\u002Fgen\u002Fprompts.lua) 或自定义提示来调用：\n\n```lua\nvim.keymap.set('v', '\u003Cleader>]', ':Gen Enhance_Grammar_Spelling\u003CCR>')\n```\n\n对话开始后，整个上下文都会被发送到 LLM。这样你就可以继续提问：\n\n```lua\n:Gen Chat\n```\n\n窗口关闭后，将开启一个新的会话。\n\n对于不会自动替换先前选中文本的提示（`replace = false`），你可以使用 `\u003Cc-cr>` 将选中文本替换为生成的内容。\n\n你还可以从已安装的所有模型中选择一个模型：\n\n```lua\nrequire('gen').select_model()\n```\n\n## 自定义提示\n\n所有提示都定义在 `require('gen').prompts` 中，你可以对其进行扩展或修改。\n\n示例：\n```lua\nrequire('gen').prompts['Elaborate_Text'] = {\n  prompt = \"详细阐述以下文本：\\n$text\",\n  replace = true\n}\nrequire('gen').prompts['Fix_Code'] = {\n  prompt = \"修复以下代码。仅以 ```$filetype\\n...\\n``` 格式输出结果：\\n```$filetype\\n$text\\n```\",\n  replace = true,\n  extract = \"```$filetype\\n(.-)```\"\n}\n```\n\n每个提示可以使用以下属性：\n\n- `prompt`: （字符串 | 函数）提示可以是字符串，也可以是一个返回字符串的函数。结果中可以使用以下占位符：\n   - `$text`: 可视化选中的文本或当前缓冲区的内容。\n   - `$filetype`: 缓冲区的文件类型（如 `javascript`）。\n   - `$input`: 用户额外输入。\n   - `$register`: 未命名寄存器的值（即复制的内容）。\n- `replace`: 如果希望用生成的内容替换选中文本，则设置为 `true`。\n- `extract`: 用于提取生成结果的正则表达式。\n- `model`: 要使用的模型，默认为 `mistral`。\n\n## 小贴士\n\n用户选择可以通过 [Telescope](https:\u002F\u002Fgithub.com\u002Fnvim-telescope\u002Ftelescope.nvim) 结合 [telescope-ui-select](https:\u002F\u002Fgithub.com\u002Fnvim-telescope\u002Ftelescope-ui-select.nvim) 来实现。","# gen.nvim 快速上手指南\n\n`gen.nvim` 是一个强大的 Neovim 插件，允许你使用本地大语言模型（LLM）生成文本、优化代码或进行对话。它支持自定义提示词，并默认集成 Ollama 作为后端。\n\n## 环境准备\n\n在开始之前，请确保你的系统已安装以下依赖：\n\n1.  **Ollama**: 用于运行本地大模型。\n    *   访问官网下载：[https:\u002F\u002Follama.ai\u002F](https:\u002F\u002Follama.ai\u002F)\n    *   安装完成后，拉取一个模型（例如 `mistral` 或 `llama3.2`）：\n        ```bash\n        ollama pull mistral\n        ```\n    *   确保 Ollama 服务正在运行（通常安装后会自动启动，或手动运行 `ollama serve`）。\n\n2.  **Curl**: 用于发送 HTTP 请求。\n    *   **Linux (Debian\u002FUbuntu)**: `sudo apt install curl`\n    *   **macOS**: 系统自带，或通过 `brew install curl` 更新。\n    *   **Windows**: 建议使用 WSL2 或在 PowerShell 中确保 `curl` 可用。\n\n## 安装步骤\n\n推荐使用 [lazy.nvim](https:\u002F\u002Fgithub.com\u002Ffolke\u002Flazy.nvim) 进行安装。在你的 Neovim 配置文件中（通常是 `lua\u002Fplugins\u002Fgen.lua` 或 `init.lua`），添加以下配置：\n\n### 最小化配置\n```lua\n{ \"David-Kunz\u002Fgen.nvim\" },\n```\n\n### 推荐配置（自定义参数）\n你可以指定默认模型、窗口显示模式及快捷键映射：\n\n```lua\n{\n    \"David-Kunz\u002Fgen.nvim\",\n    opts = {\n        model = \"mistral\", -- 默认使用的模型\n        quit_map = \"q\", -- 关闭响应窗口的按键\n        retry_map = \"\u003Cc-r>\", -- 重新发送当前提示词的按键\n        accept_map = \"\u003Cc-cr>\", -- 用最新结果替换之前选中的内容\n        host = \"localhost\", -- Ollama 服务地址\n        port = \"11434\", -- Ollama 服务端口\n        display_mode = \"float\", -- 显示模式：\"float\", \"split\", \"horizontal-split\", \"vertical-split\"\n        show_prompt = false, -- 是否显示提交给 Ollama 的提示词\n        show_model = false, -- 是否在会话开始时显示当前模型\n        no_auto_close = false, -- 是否禁止自动关闭窗口\n        init = function(options) pcall(io.popen, \"ollama serve > \u002Fdev\u002Fnull 2>&1 &\") end, -- 可选：自动启动 Ollama\n        command = function(options)\n            local body = {model = options.model, stream = true}\n            return \"curl --silent --no-buffer -X POST http:\u002F\u002F\" .. options.host .. \":\" .. options.port .. \"\u002Fapi\u002Fchat -d $body\"\n        end,\n        result_filetype = \"markdown\", -- 结果缓冲区的文件类型\n        debug = false -- 开启调试模式打印错误和命令\n    },\n},\n```\n\n安装完成后，重启 Neovim 或运行 `:Lazy sync` 即可完成安装。\n\n## 基本使用\n\n### 1. 基础命令\n在普通模式或可视模式下，输入以下命令即可根据预设提示词生成内容：\n\n```vim\n:Gen\n```\n\n### 2. 配置快捷键\n为了方便使用，建议在配置中添加快捷键映射：\n\n```lua\n-- 在普通模式和可视模式下使用 \u003Cleader>] 唤起生成菜单\nvim.keymap.set({ 'n', 'v' }, '\u003Cleader>]', ':Gen\u003CCR>')\n\n-- 直接调用特定提示词（例如：增强语法和拼写）\nvim.keymap.set('v', '\u003Cleader>e', ':Gen Enhance_Grammar_Spelling\u003CCR>')\n```\n\n### 3. 常用场景\n\n*   **生成\u002F修改代码或文本**：\n    选中一段文本，按下映射的快捷键（如 `\u003Cleader>]`），选择对应的提示词（如 `Fix_Code` 或 `Elaborate_Text`），AI 将直接在浮动窗口中输出结果。如果配置了 `replace = true`，结果会自动替换原文本。\n\n*   **多轮对话 (Chat)**：\n    开始一次对话后，上下文会被保留。你可以继续输入：\n    ```vim\n    :Gen Chat\n    ```\n    来追问问题。关闭生成窗口后，下一次操作将开启全新的对话会话。\n\n*   **手动替换结果**：\n    对于未自动替换结果的提示词，生成完毕后，在结果窗口按下 `\u003Cc-cr>` (Ctrl+Enter) 即可将生成的内容替换掉原先选中的文本。\n\n*   **切换模型**：\n    如果你想临时更换模型，可以运行：\n    ```lua\n    require('gen').select_model()\n    ```\n    这将列出所有已安装的 Ollama 模型供你选择。\n\n### 4. 自定义提示词 (进阶)\n你可以在配置中扩展或修改内置提示词：\n\n```lua\nrequire('gen').prompts['My_Custom_Prompt'] = {\n  prompt = \"将以下代码转换为 Python:\\n$text\",\n  replace = true\n}\n```\n支持占位符：`$text` (选中内容), `$filetype` (文件类型), `$input` (用户额外输入)。","一位后端开发者正在 Neovim 中紧急重构一段遗留的 Python 数据处理脚本，需要在不离开编辑器的情况下快速优化代码逻辑并补充文档。\n\n### 没有 gen.nvim 时\n- **上下文频繁切换**：必须复制代码片段，切换到浏览器打开 LLM 网页版，粘贴后再将结果复制回编辑器，打断心流。\n- **重复劳动繁琐**：每次请求都要手动输入“请优化这段代码并添加类型提示”等固定指令，效率低下。\n- **多轮对话困难**：若需针对生成结果进行追问（如“改成异步版本”），需在网页端重新组织上下文，难以保持连贯的修改历史。\n- **隐私与配置顾虑**：担心敏感业务逻辑上传至公共云服务，且无法灵活切换本地部署的不同参数模型进行测试。\n\n### 使用 gen.nvim 后\n- **编辑器内闭环操作**：选中代码后直接通过快捷键调用 `Gen Enhance_Code` 预设指令，利用本地 Ollama 运行的 Mistral 模型秒级返回结果并原地替换。\n- **自定义指令复用**：预先配置好针对团队规范的 Prompt（如“遵循 PEP8 并增加 Docstring\"），一键触发，无需重复输入。\n- **无缝多轮迭代**：在浮动窗口中直接使用 `:Gen Chat` 延续当前上下文，连续发出“增加异常处理”、“优化内存占用”等指令，像与结对编程伙伴一样自然交流。\n- **灵活模型调度**：随时通过 `select_model` 命令在本地轻量模型与高精度模型间切换，既保证响应速度又兼顾复杂逻辑的准确性，且数据完全留存本地。\n\ngen.nvim 将大语言模型深度融入 Neovim 工作流，让开发者在不中断编码思路的前提下，享受本地化、可定制的智能辅助体验。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FDavid-Kunz_gen.nvim_1935bfc0.jpg","David-Kunz","Dr. David A. Kunz","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FDavid-Kunz_ebc1fe08.jpg",null,"SAP","https:\u002F\u002Fgithub.com\u002FDavid-Kunz",[82],{"name":83,"color":84,"percentage":85},"Lua","#000080",100,1521,127,"2026-04-03T12:06:45","Unlicense","Linux, macOS, Windows","未说明 (依赖外部 Ollama 服务，GPU 需求取决于所选模型及 Ollama 配置)","未说明 (依赖外部 Ollama 服务及所选模型大小)",{"notes":94,"python":95,"dependencies":96},"该工具是 Neovim 插件，本身不直接运行 AI 模型，而是通过 HTTP 请求调用本地运行的 Ollama 服务。用户需自行安装并配置 Ollama 及相应的 LLM 模型（如 llama3.2, mistral 等）。默认端口为 11434。若使用隐藏窗口功能需 Neovim 版本 >= 0.10。","未说明",[97,98,99],"Neovim >= 0.10 (部分功能需要)","Ollama","Curl",[15,36],"2026-03-27T02:49:30.150509","2026-04-06T08:39:58.247061",[104,109,114,119,124,129],{"id":105,"question_zh":106,"answer_zh":107,"source_url":108},13881,"为什么在视觉模式下选中多行文本时，$text 变量只捕获了一个字符？","这是因为键位映射使用了 `\u003Ccmd>` 而不是 `:`。`\u003Ccmd>` 在执行命令时不会正确保留视觉模式的选区范围。请将您的键位映射从 `\u003Ccmd>Gen\u003CCR>` 修改为 `:Gen\u003CCR>`。\n\n正确的配置示例：\n```lua\nvim.keymap.set({ 'n', 'v' }, '\u003Cleader>]', ':Gen\u003CCR>')\n```\n修改后，选中多行文本再触发命令即可正常捕获全部内容。","https:\u002F\u002Fgithub.com\u002FDavid-Kunz\u002Fgen.nvim\u002Fissues\u002F84",{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},13882,"使用 which-key 插件或特定键位绑定时，为什么缓冲区内容为空导致 $text 参数失效？","当使用 `\u003Ccmd>` 前缀触发命令时，可能会导致 which-key 插件干扰或无法正确获取视觉模式下的选区内容，使得 `$text` 参数为空。\n\n解决方案是将所有相关的 `\u003Ccmd>Gen...` 调用更改为 `:Gen...` 形式。例如，将键位绑定中的 `\u003Ccmd>Gen\u003CCR>` 改为 `:Gen\u003CCR>`，这样就能正常获取选区文本并传递给插件。","https:\u002F\u002Fgithub.com\u002FDavid-Kunz\u002Fgen.nvim\u002Fissues\u002F16",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},13883,"如何在 Docker 容器中配合 Ollama 使用此插件？","目前插件已切换到基于 HTTP 的调用机制，不再原生支持直接的 Docker 容器选项。推荐方案是在运行 Ollama 的 Docker 容器中将端口映射到宿主机（例如 `-p 11434:11434`），然后插件通过标准的 HTTP 接口连接即可。\n\n如果必须使用命令行方式，可以尝试以下配置（需自行调整容器名称）：\n```lua\nM.command = 'docker exec -it some_container ollama run $model $prompt'\nM.json_response = false\n```\n但官方建议使用端口映射配合 HTTP 模式，这是更稳定且推荐的做法。","https:\u002F\u002Fgithub.com\u002FDavid-Kunz\u002Fgen.nvim\u002Fissues\u002F17",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},13884,"提示词（Prompt）中包含单引号或双引号时为什么无法正常工作？","这通常是由于 Shell 转义问题引起的，特别是在 Windows 系统上。当命令通过 `cmd` 调用时，双引号需要被特殊处理。\n\n如果遇到此问题，请检查 Neovim 的 Shell 配置是否正确：\n1. 运行 `:help 'shell'`、`:help 'shellquote'` 和 `:help 'shellxquote'` 查看相关文档。\n2. 确保 Neovim 能正确识别您使用的 Shell。\n\n该问题在某些版本中已通过修复 JSON 编码和 Shell 转义逻辑解决，如果仍遇到问题，建议更新插件到最新版本或检查系统 Shell 配置。","https:\u002F\u002Fgithub.com\u002FDavid-Kunz\u002Fgen.nvim\u002Fissues\u002F4",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},13885,"运行 :Gen 命令后输出窗口为空或没有反应，可能是什么原因？","这种情况通常由以下原因导致：\n1. **模型未安装或未运行**：确保 Ollama 服务正在运行，且指定的模型已下载（使用 `ollama list` 检查）。\n2. **错误信息未显示**：插件可能在后台报错但未在窗口中展示。请尝试在普通文件缓冲区（而非侧边栏如 NeoTree）中运行命令测试。\n3. **窗口大小问题**：输出窗口的大小依赖于当前活动窗口，尝试在不同的分割窗口中运行命令。\n\n如果问题依旧，建议检查 Ollama 服务端日志，或暂时禁用其他可能干扰缓冲区的插件（如文件树插件）进行排查。","https:\u002F\u002Fgithub.com\u002FDavid-Kunz\u002Fgen.nvim\u002Fissues\u002F71",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},13886,"输出窗口保持空白，但在终端直接运行命令却正常，如何调试？","如果终端直接运行命令正常但插件内无输出，可能是由于插件使用伪终端（pseudoterminal）启动进程，导致 Neovim 的某些特性（如 Treesitter 高亮）未加载或行为不同。\n\n调试建议：\n1. 确认 Neovim 版本兼容性（建议 v0.9+）。\n2. 尝试手动设置文件类型和高亮：在输出缓冲区执行 `:set filetype=markdown` 和 `:set syntax=on` 看是否有变化。\n3. 检查插件是否成功创建了输出缓冲区，可以通过 `:ls` 查看缓冲区列表。\n\n如果是因为伪终端导致的渲染问题，可能需要等待插件更新以支持原生代码编辑器窗口模式。","https:\u002F\u002Fgithub.com\u002FDavid-Kunz\u002Fgen.nvim\u002Fissues\u002F32",[]]