起因:单位不允许项目源代码上互联网,又想用AI辅助,VSCode的Continue插件是个好选择。然而,Continue插件对Qwen3-Coder-Next(以及Qwen3-Coder)的支持不好,要改配置文件。参考(https://www.jamesflare.com/zh-cn/vllm-continue-autocomplete-qwen3-coder/)设置,对话正常,补全无效。
原因分析:Qwen3-Coder-Next的FIM会生成Markdown代码块而不是纯代码,Continue插件的停止token包含```导致直接停止。修改prompt直接跳过这个就好了。
解决方法:把promptTemplates里面的autocomplete设置成"<|im_start|>system\nYou are a code completion assistant.<|im_end|>\n<|im_start|>user\n<|fim_prefix|>{{{prefix}}}<|fim_suffix|>{{{suffix}}}<|fim_middle|><|im_end|>\n<|im_start|>assistant\n```\n"
其实就是增加了```\n。理论上Qwen3-Coder也可以用。
附完整config.yaml配置(Ollama后端)
name: Local Assistant
version: 1.0.0
schema: v1
models:
- name: Qwen3-Coder-Next
provider: ollama
model: unsloth/Qwen3-Coder-Next:UD-Q4_K_S # 这模型是我自己用GGUF转的(下面有介绍),请修改为正确的名字
defaultCompletionOptions:
contextLength: 65536 # 根据需要改
temperature: 1.0
maxTokens: 32768 # 根据需要改
topP: 0.95
topK: 40
roles:
- chat
- edit
- autocomplete
- apply
capabilities:
- tool_use
promptTemplates:
autocomplete: "<|im_start|>system\nYou are a code completion assistant.<|im_end|>\n<|im_start|>user\n<|fim_prefix|>{{{prefix}}}<|fim_suffix|>{{{suffix}}}<|fim_middle|><|im_end|>\n<|im_start|>assistant\n```\n" Ollama用的modelfile(TEMPLATE部分直接抄的模型,可能还能再优化一下……)
FROM ./Qwen3-Coder-Next-UD-Q4_K_S.gguf
TEMPLATE """{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{ else if eq .Role "assistant" }}<|im_start|>assistant
{{ .Content }}{{ if not $last }}<|im_end|>
{{ end }}
{{- end }}
{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
{{ end }}
{{- end }}"""
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
PARAMETER stop <|endoftext|>
PARAMETER temperature 1.0
PARAMETER top_k 40
PARAMETER top_p 0.95
PARAMETER min_p 0.01 GGUF去这里下载:https://modelscope.cn/models/unsloth/Qwen3-Coder-Next-GGUF/files。基本上越大效果越好,但是不要爆显存。我有48GB显存,选的Qwen3-Coder-Next-UD-Q4_K_S.gguf。