为什么选 Devstral-Small 做基座
Mistral 与 All Hands AI 联合开源的 Devstral-Small-2505 在 SWE-Bench Verified 拿到 46.8%,比前代开源 SoTA 高 6 个百分点;24 B 参数量却能在单张 RTX 4090(24 GB)跑 128 k 上下文,Apache 2.0 许可证,商业友好。对于想在本地 “vibe coding” 的开发者,它是目前唯一兼顾性能与版权安全的 24 B 代码模型。
终端即时代码补全的三种集成路线
| 路线 | 场景 | 安装成本 | 首 token 延迟 * |
|---|---|---|---|
| continue + devstral-small | VS Code 内嵌补全 | 2 min | 600 ms |
| aider + devstral-small | 终端对话式重构 | 1 min | 650 ms |
| openhands + devstral-small | 全代理改多文件 | 5 min | 800 ms |
| *RTX 4090 + AWQ 4-bit 实测,batch=1,下同 |
继续阅读前,请先拉起模型服务:
# 一键启动 vLLM + AWQ 4-bit
vllm serve mistralai/Devstral-Small-2505 \
--quantization awq \
--tensor-parallel-size 1 \
--max-model-len 16384 \
--port 8000
A. continue 方案(最快上手)
- VS Code 装 Continue 插件
~/.continue/config.json加一段:
{
"models": [{
"title": "devstral-local",
"provider": "openai",
"model": "mistralai/Devstral-Small-2505",
"apiBase": "http://localhost:8000/v1"
}]
}
- 重启 VS Code,Tab 键即可触发补全。
B. aider 方案(终端党)
pip install aider-chat
export OPENAI_API_BASE=http://localhost:8000/v1
aider --model mistralai/Devstral-Small-2505 \
--yes-always # 自动应用建议
在命令行直接 aider src/main.py 就能对话式重构。
C. openhands 方案(全代理)
docker 一行:
docker run -it --rm -p 3000:3000 \
-e LLM_API_KEY=local \
-e LLM_MODEL=mistralai/Devstral-Small-2505 \
-e LLM_BASE_URL=http://host.docker.internal:8000/v1 \
docker.all-hands.dev/all-hands-ai/openhands:0.39
浏览器打开 http://localhost:3000,输入 “把 /app 下的 Flask 接口改成 FastAPI”,代理会自动改完并跑通测试。
本地蒸馏 4-bit/8-bit 参数表
| 量化方案 | 峰值显存 | 首 token | 吞吐量 (tok/s) | 回滚阈值 |
|---|---|---|---|---|
| FP16 | 46 GB | 420 ms | 28 | — |
| 8-bit (BitsAndBytes) | 26 GB | 550 ms | 25 | >22 GB |
| 4-bit AWQ | 18 GB | 600 ms | 22 | >20 GB |
| 4-bit GPTQ | 17 GB | 680 ms | 20 | >19 GB |
在 RTX 4090 上,AWQ 4-bit 是最佳甜点:显存占用 18 GB,留 6 GB 给 IDE、浏览器,防止 OOM。
监控与自动回滚
生产化最怕显存炸掉。用 30 行脚本把 vLLM 套上 Prometheus 指标:
# vllm_exporter.py
from prometheus_client import start_http_server, Gauge
import nvidia_ml_py3 as nv
import time, vllm
g = Gauge('gpu_mem_used_mb', 'GPU memory used')
def loop():
nv.nvmlInit()
handle = nv.nvmlDeviceGetHandleByIndex(0)
while True:
info = nv.nvmlDeviceGetMemoryInfo(handle)
g.set(info.used // 1024**2)
time.sleep(5)
if __name__ == '__main__':
start_http_server(8001)
loop()
Grafana 里加两条告警:
gpu_mem_used_mb > 22000→ 自动重启容器,换 8-bit 检查点vllm:token_per_second < 15→ 发 Slack 提醒,人工介入
一键复现
仓库已放 Makefile:
git clone https://github.com/yourname/devstral-vibe-cli
cd devstral-vibe-cli
make vibe-cli # 自动拉模型、装依赖、起服务、打开 hands
30 分钟后你就能在本地拥有 “类 Devstral2” 的 vibe coding 环境,而真正的 Devstral2 发布时,只需改一行模型名即可原地升级。
资料来源
- Mistral AI 官方博客对 Devstral-Small-2505 的性能描述,InfoQ 中文翻译,2025-05-28
- awesome-vibe-coding 项目对社区 CLI 工具的整理,GitHub 2025-12 版