feat: enable override prompt templates directory (#2387)

This commit is contained in:
doodleEsc
2025-07-02 14:43:17 +08:00
committed by GitHub
parent 6bbf3d2004
commit 4329ed79f4
4 changed files with 100 additions and 6 deletions

View File

@@ -940,7 +940,9 @@ Avante 利用 [Claude 文本编辑器工具](https://docs.anthropic.com/en/docs/
- `suggesting`:与 Tab 流上的 `require("avante").get_suggestion():suggest()` 一起使用。
- `cursor-planning`:与 Tab 流上的 `require("avante").toggle()` 一起使用,但仅在启用 cursor 规划模式时。
用户可以通过 `Config.system_prompt` 自定义系统提示。我们建议根据您的需要在自定义 Autocmds 中调用此方法:
用户可以通过 `Config.system_prompt` `Config.override_prompt_dir` 自定义系统提示。
`Config.system_prompt` 允许您设置全局系统提示。我们建议根据您的需要在自定义 Autocmds 中调用此方法:
```lua
vim.api.nvim_create_autocmd("User", {
@@ -951,6 +953,28 @@ vim.api.nvim_create_autocmd("User", {
vim.keymap.set("n", "<leader>am", function() vim.api.nvim_exec_autocmds("User", { pattern = "ToggleMyPrompt" }) end, { desc = "avante: toggle my prompt" })
```
`Config.override_prompt_dir` 允许您指定一个目录,其中包含您自己的自定义提示模板,这将覆盖内置模板。如果您想在 Neovim 配置之外维护一组自定义提示,这将非常有用。它可以是一个表示目录路径的字符串,也可以是一个返回表示目录路径的字符串的函数。
```lua
-- 示例:使用特定目录中的提示进行覆盖
require("avante").setup({
override_prompt_dir = vim.fn.expand("~/.config/nvim/avante_prompts"),
})
-- 示例:使用函数(动态目录)中的提示进行覆盖
require("avante").setup({
override_prompt_dir = function()
-- 确定提示目录的逻辑
return vim.fn.expand("~/.config/nvim/my_dynamic_prompts")
end,
})
```
> [!WARNING]
>
> 如果您自定 `base.avanterules`,请一定要确保 `{% block custom_prompt %}{% endblock %}` 和 `{% block extra_prompt %}{% endblock %}` 存在,否则可能会导致整个插件无法使用。
> 如果您不清楚具体原因或者您不知道自己在干什么,请不要覆盖内置 prompt。内置 prompt 工作得非常好。
如果希望为每种模式自定义提示,`avante.nvim` 将根据给定缓冲区的项目根目录检查是否包含以下模式:`*.{mode}.avanterules`
根目录层次结构的规则: