feat 啟用AI Ollama程式編輯助手功能
This commit is contained in:
parent
479540f0b2
commit
eba0ff804e
@ -1,6 +1,8 @@
|
|||||||
{{- $name := promptStringOnce . "name" "請輸入您的姓名" -}}
|
{{- $name := promptStringOnce . "name" "請輸入您的姓名" -}}
|
||||||
{{- $email := promptStringOnce . "email" "輸入您的Email地址" -}}
|
{{- $email := promptStringOnce . "email" "輸入您的Email地址" -}}
|
||||||
{{- $signingkey := promptStringOnce . "signingkey" "輸入您的GPG金鑰ID (可從 gpg --list-secret-keys --keyid-format=long 去找)" -}}
|
{{- $signingkey := promptStringOnce . "signingkey" "輸入您的GPG金鑰ID (若不使用,直接留空。可從 gpg --list-secret-keys --keyid-format=long 去找)" -}}
|
||||||
|
{{- $ollamaUrl := promptStringOnce . "ollamaUrl" "輸入您的Ollama URL (若不使用,直接留空)" -}}
|
||||||
|
{{- $ollamaKey := promptStringOnce . "ollamaKey" "輸入您的Ollama ApiKey (若不使用,直接留空)" -}}
|
||||||
|
|
||||||
{{- $hosttype_choices := list "desktop" "server" "unroot_server" "manual" -}}
|
{{- $hosttype_choices := list "desktop" "server" "unroot_server" "manual" -}}
|
||||||
{{- $hosttype := promptChoice "What type of host are you on" $hosttype_choices -}}
|
{{- $hosttype := promptChoice "What type of host are you on" $hosttype_choices -}}
|
||||||
@ -39,3 +41,7 @@ sourceDir = "~/.local/share/chezmoi"
|
|||||||
enableSixel = {{ $enableSixel }} {{/* TODO: packages.toml還沒處理 */}}
|
enableSixel = {{ $enableSixel }} {{/* TODO: packages.toml還沒處理 */}}
|
||||||
noGUI = {{ not $enableGUI }}
|
noGUI = {{ not $enableGUI }}
|
||||||
enableYcm = {{ $enableYcm }}
|
enableYcm = {{ $enableYcm }}
|
||||||
|
enableOllama = {{ not (not $ollamaUrl) }}
|
||||||
|
ollamaUrl = {{ $ollamaUrl | quote }}
|
||||||
|
ollamaKey = {{ $ollamaKey | quote }}
|
||||||
|
|
||||||
|
@ -8,6 +8,13 @@ dconf.ini
|
|||||||
.config/nvim/lua/plugins/components/image.lua
|
.config/nvim/lua/plugins/components/image.lua
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* ---- 若不啟用AI Ollama伺服器 ----------------------------------------- */ -}}
|
||||||
|
{{ if not .enableOllama }}
|
||||||
|
.config/nvim/lua/plugins/components/ai.lua
|
||||||
|
.continue/config.yaml
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
{{/* ---- 沒有圖形界面 ---------------------------------------------------- */ -}}
|
{{/* ---- 沒有圖形界面 ---------------------------------------------------- */ -}}
|
||||||
{{ if .noGUI }}
|
{{ if .noGUI }}
|
||||||
.config/iterm2/
|
.config/iterm2/
|
||||||
|
@ -0,0 +1,132 @@
|
|||||||
|
-- if true then return {} end -- 暫時停用
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"yetone/avante.nvim",
|
||||||
|
|
||||||
|
-- Key Bindings
|
||||||
|
-- Leaderaa show sidebar
|
||||||
|
-- Leaderat toggle sidebar visibility
|
||||||
|
-- Leaderar refresh sidebar
|
||||||
|
-- Leaderaf switch sidebar focus
|
||||||
|
-- Leadera? select model
|
||||||
|
-- Leaderae edit selected blocks
|
||||||
|
-- LeaderaS stop current AI request
|
||||||
|
-- Leaderah select between chat histories
|
||||||
|
-- co choose ours
|
||||||
|
-- ct choose theirs
|
||||||
|
-- ca choose all theirs
|
||||||
|
-- c0 choose none
|
||||||
|
-- cb choose both
|
||||||
|
-- cc choose cursor
|
||||||
|
-- ]x move to previous conflict
|
||||||
|
-- [x move to next conflict
|
||||||
|
-- [[ jump to previous codeblocks (results window)
|
||||||
|
-- ]] jump to next codeblocks (results windows)
|
||||||
|
|
||||||
|
event = "VeryLazy",
|
||||||
|
version = false, -- Never set this value to "*"! Never!
|
||||||
|
keys = {
|
||||||
|
{ "<C-A-i>", "<cmd>AvanteToggle<cr>", desc = "Avante Chat Toggle" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
provider = "openai",
|
||||||
|
openai = {
|
||||||
|
endpoint = {{ print .ollamaUrl "/v1" | quote }},
|
||||||
|
model = "qwen2.5-coder:7b", -- your desired model (or use gpt-4o, etc.)
|
||||||
|
timeout = 30000, -- Timeout in milliseconds, increase this for reasoning models
|
||||||
|
-- temperature = 0,
|
||||||
|
-- max_completion_tokens = 8192, -- Increase this to include reasoning tokens (for reasoning models)
|
||||||
|
-- reasoning_effort = "medium", -- low|medium|high, only used for reasoning models
|
||||||
|
disable_tools = true, -- Open-source models often do not support tools.
|
||||||
|
},
|
||||||
|
|
||||||
|
auto_suggestions_provider = "ollama",
|
||||||
|
ollama = {
|
||||||
|
api_key_name = "OLLAMA_API_KEY",
|
||||||
|
endpoint = {{ .ollamaUrl | quote }},
|
||||||
|
model = "qwen2.5-coder:1.5b",
|
||||||
|
disable_tools = true, -- Open-source models often do not support tools.
|
||||||
|
},
|
||||||
|
|
||||||
|
behaviour = {
|
||||||
|
auto_suggestions = false, -- Experimental stage
|
||||||
|
auto_set_highlight_group = true,
|
||||||
|
auto_set_keymaps = true,
|
||||||
|
auto_apply_diff_after_generation = false,
|
||||||
|
support_paste_from_clipboard = false,
|
||||||
|
minimize_diff = true, -- Whether to remove unchanged lines when applying a code block
|
||||||
|
enable_token_counting = true, -- Whether to enable token counting. Default to true.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
|
||||||
|
build = "make",
|
||||||
|
-- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"stevearc/dressing.nvim",
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
--- The below dependencies are optional,
|
||||||
|
"echasnovski/mini.pick", -- for file_selector provider mini.pick
|
||||||
|
"nvim-telescope/telescope.nvim", -- for file_selector provider telescope
|
||||||
|
"hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
|
||||||
|
"ibhagwan/fzf-lua", -- for file_selector provider fzf
|
||||||
|
"nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
|
||||||
|
"zbirenbaum/copilot.lua", -- for providers='copilot'
|
||||||
|
{
|
||||||
|
-- support for image pasting
|
||||||
|
"HakonHarnes/img-clip.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
-- recommended settings
|
||||||
|
default = {
|
||||||
|
embed_image_as_base64 = false,
|
||||||
|
prompt_for_file_name = false,
|
||||||
|
drag_and_drop = {
|
||||||
|
insert_mode = true,
|
||||||
|
},
|
||||||
|
-- required for Windows users
|
||||||
|
use_absolute_path = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
-- Make sure to set this up properly if you have lazy=true
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
opts = {
|
||||||
|
file_types = { "markdown", "Avante" },
|
||||||
|
},
|
||||||
|
ft = { "markdown", "Avante" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
-- 這裡動態設定 Neovim 的環境變數(不會傳給 shell)
|
||||||
|
vim.env.OPENAI_API_KEY = {{ .ollamaKey | quote }}
|
||||||
|
vim.env.OLLAMA_API_KEY = {{ .ollamaKey | quote }}
|
||||||
|
require("avante").setup(opts)
|
||||||
|
|
||||||
|
-- -- 配置 Copilot
|
||||||
|
-- require("copilot").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'huggingface/llm.nvim',
|
||||||
|
dependencies = { 'kevinhwang91/nvim-ufo' }, -- 確保 ufo 先載入
|
||||||
|
event = 'VeryLazy', -- 啟動後自動載入
|
||||||
|
opts = {
|
||||||
|
model = "qwen2.5-coder:1.5b",
|
||||||
|
backend = "openai",
|
||||||
|
url = {{ .ollamaUrl | quote }}, -- llm-ls uses "/api/generate"
|
||||||
|
api_token = {{ .ollamaKey | quote }},
|
||||||
|
-- -- cf https://github.com/ollama/ollama/blob/main/docs/api.md#parameters
|
||||||
|
request_body = {
|
||||||
|
-- Modelfile options for the model you use
|
||||||
|
options = {
|
||||||
|
temperature = 0.2,
|
||||||
|
top_p = 0.95,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
@ -46,9 +46,15 @@ return {
|
|||||||
component_separators = { left = '', right = ''},
|
component_separators = { left = '', right = ''},
|
||||||
section_separators = { left = '', right = ''},
|
section_separators = { left = '', right = ''},
|
||||||
disabled_filetypes = {
|
disabled_filetypes = {
|
||||||
statusline = {},
|
statusline = {
|
||||||
|
'Avante',
|
||||||
|
'AvanteSelectedFiles',
|
||||||
|
},
|
||||||
winbar = {},
|
winbar = {},
|
||||||
{'undotree'}
|
{
|
||||||
|
'undotree',
|
||||||
|
'AvanteInput',
|
||||||
|
}
|
||||||
},
|
},
|
||||||
ignore_focus = {},
|
ignore_focus = {},
|
||||||
always_divide_middle = true,
|
always_divide_middle = true,
|
||||||
|
87
dot_continue/config.yaml.tmpl
Normal file
87
dot_continue/config.yaml.tmpl
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
name: Local Assistant
|
||||||
|
version: 1.0.0
|
||||||
|
schema: v1
|
||||||
|
models:
|
||||||
|
- name: qwen2.5-coder:7b
|
||||||
|
provider: ollama
|
||||||
|
model: qwen2.5-coder:7b
|
||||||
|
apiBase: {{ .ollamaUrl }}
|
||||||
|
apiKey: {{ .ollamaKey }}
|
||||||
|
roles:
|
||||||
|
- chat
|
||||||
|
- edit
|
||||||
|
- apply
|
||||||
|
- name: qwen2.5-coder:1.5b
|
||||||
|
provider: ollama
|
||||||
|
model: qwen2.5-coder:1.5b
|
||||||
|
apiBase: {{ .ollamaUrl }}
|
||||||
|
apiKey: {{ .ollamaKey }}
|
||||||
|
roles:
|
||||||
|
- autocomplete
|
||||||
|
- name: mxbai-embed-large
|
||||||
|
provider: ollama
|
||||||
|
model: mxbai-embed-large
|
||||||
|
apiBase: {{ .ollamaUrl }}
|
||||||
|
apiKey: {{ .ollamaKey }}
|
||||||
|
roles:
|
||||||
|
- embed
|
||||||
|
- name: codellama:13b
|
||||||
|
provider: ollama
|
||||||
|
model: codellama:13b
|
||||||
|
apiBase: {{ .ollamaUrl }}
|
||||||
|
apiKey: {{ .ollamaKey }}
|
||||||
|
- name: llama3.1-claude
|
||||||
|
provider: ollama
|
||||||
|
model: incept5/llama3.1-claude
|
||||||
|
apiBase: {{ .ollamaUrl }}/
|
||||||
|
apiKey: {{ .ollamaKey }}
|
||||||
|
# - name: deepseek-coder
|
||||||
|
# provider: ollama
|
||||||
|
# model: deepseek-coder
|
||||||
|
# apiBase: {{ .ollamaUrl }}
|
||||||
|
# apiKey: {{ .ollamaKey }}
|
||||||
|
|
||||||
|
# tabAutocompleteModel:
|
||||||
|
# title: qwen2.5-coder:1.5b
|
||||||
|
# provider: ollama
|
||||||
|
# model: qwen2.5-coder:1.5b
|
||||||
|
|
||||||
|
# embeddingsProvider:
|
||||||
|
# provider: ollama
|
||||||
|
# model: mxbai-embed-large
|
||||||
|
|
||||||
|
context:
|
||||||
|
- provider: code
|
||||||
|
- provider: docs
|
||||||
|
- provider: diff
|
||||||
|
- provider: terminal
|
||||||
|
- provider: problems
|
||||||
|
- provider: folder
|
||||||
|
- provider: codebase
|
||||||
|
|
||||||
|
# models:
|
||||||
|
# - name: Llama 3.1 8B
|
||||||
|
# provider: ollama
|
||||||
|
# model: llama3.1:8b
|
||||||
|
# roles:
|
||||||
|
# - chat
|
||||||
|
# - edit
|
||||||
|
# - apply
|
||||||
|
# - name: Qwen2.5-Coder 1.5B
|
||||||
|
# provider: ollama
|
||||||
|
# model: qwen2.5-coder:1.5b-base
|
||||||
|
# roles:
|
||||||
|
# - autocomplete
|
||||||
|
# - name: Nomic Embed
|
||||||
|
# provider: ollama
|
||||||
|
# model: nomic-embed-text:latest
|
||||||
|
# roles:
|
||||||
|
# - embed
|
||||||
|
# context:
|
||||||
|
# - provider: code
|
||||||
|
# - provider: docs
|
||||||
|
# - provider: diff
|
||||||
|
# - provider: terminal
|
||||||
|
# - provider: problems
|
||||||
|
# - provider: folder
|
||||||
|
# - provider: codebase
|
Loading…
x
Reference in New Issue
Block a user