Hotdry.
ai-systems

Devstral2 本地 CLI 流式调用:零依赖构建多 Agent 编排沙箱

用 Mistral Vibe CLI 把 Devstral2 跑在本地,三分钟搭出隔离沙箱,让多 Agent 在 Git 快照里安全试错。

Mistral 在 12 月 9 日一次性放出两张王牌:123 B 参数的 Devstral2 在 SWE-Bench Verified 拿到 72.2 % 新高,以及一条叫 Mistral Vibe 的命令行界面,主打「氛围编程」—— 把自然语言直接编译成可执行工作流。对想在本地试水的开发者来说,真正的甜点不是最大杯模型,而是 24 B 的 Devstral Small:Apache 2.0 许可证、单卡 4090 可跑、上下文 128 k,足够把整个代码库塞进去做 Agent 编排。下面给出一条「零依赖」路线,让你用 Vibe CLI 在 5 分钟内搭出多 Agent 沙箱,并附带可落地的流式参数与回滚策略。

一、三种本地流式形态,30 秒选型

形态 启动命令 适用场景 显存峰值
ollama ollama run devstral-small:24b 个人笔记本、离线航班 14 GB
vLLM vllm serve mistralai/Devstral-Small-2505 服务器多并发 16 GB
Vibe CLI vibe --model local/devstral-small 编排沙箱、自然语言驱动 14 GB + 2 GB 守护进程

如果目标是把「人话」转成「多步骤代码改动」,直接选 Vibe CLI;它内置了 file、git、command 三套 Tool,用 24 B 模型当「规划大脑」,无需额外写 Agent 框架。

二、一条命令搭出隔离沙箱

Vibe 0.4 以上版本自带 --sandbox 参数,会在当前仓库根目录生成 .vibe/env 虚拟环境,并自动把 Python 依赖装进去;退出后沙箱可一键清理。

# 安装(Linux/macOS)
curl -sSL https://install.mistral.ai/vibe | bash

# 首次初始化,拉取 24 B 模型
vibe init --model local/devstral-small --sandbox

# 流式对话,实时回显 token
vibe chat --stream \
  --prompt "把 utils/ 下所有函数加上类型注解,并补全单元测试,要求 pytest 通过率 100%"

说明:

  • --stream 把生成过程打到 stdout,方便 CI 实时日志;
  • 128 k 上下文窗口足够一次塞 400 个 Python 文件;
  • 若显存吃紧,加 --num-predict 4096 让模型提前停笔。

三、多 Agent 分工:Small24B 当「大脑」,Vibe 当「手脚」

Vibe 把 Tool 调用做成 JSON Lines 流,格式兼容 OpenAI Function Calling,因此可以把「规划」与执行解耦:

  1. Planner Agent(24 B)(--role planner)
    • 只负责阅读全局代码,输出多步计划,不真正落盘。
  2. Worker Agent(同一模型,--role worker)
    • 收到计划后,调用 file/write、file/patch、command/python 等 Tool 逐步执行。
  3. Guard Agent(可选,4 B 小模型即可)
    • 每步 diff 后用 git diff --no-index 做白名单校验,禁止写入 requirements.txt 之外的依赖。

这样即使 24 B 模型偶尔「幻觉」出危险指令,也被 Guard 层拦截;同时 Planner 与 Worker 分离,可并行跑多仓库,提高吞吐。

四、可落地参数清单

参数 理由
--max-tokens 8192 128 k 上下文里留 100 k 给输入,输出 8 k 足够一次完整函数
--temperature 0.15 代码生成需高确定性,0.15 在 SWE-Bench 上最优
--top-p 0.95 保留少量随机性,防止死循环
--repeat-penalty 1.05 降低重复 import 语句
--batch-size 8 本地 4090 24 GB 可并行 8 路,吞吐量 ≈ 220 tok/s

量化方案:

  • 显存 < 16 GB 时,用 bitsandbytes 8-bit 量化,吞吐下降 12%,显存省 35%。
  • 纯 CPU 场景(32 GB RAM),开 ggml-q4_0 量化,速度 18 tok/s,可接受。

五、Git worktree 快照:30 秒回滚策略

Vibe 在每次 vibe chat 前自动创建 worktree 快照,命名规则 vibe/<timestamp>,失败时可秒级回退:

# 查看历史快照
git worktree list

# 回滚到最近快照
git worktree remove vibe/1702189352  # 先删坏快照
git worktree add -b vibe/rollback vibe/1702189300

CI 集成示例(GitHub Actions):

- name: Run Vibe Agent
  run: |
    vibe chat --stream \
      --prompt "修复 flake8 报告的 F401 未使用导入" \
      --max-tokens 4096 --temperature 0.1
- name: Check regression
  run: |
    pytest tests/ || (git worktree add ../rollback && exit 1)

若测试失败,Action 自动把 rollback 目录上传成 artifact,开发者本地 git worktree add 即可继续调试。

六、常见坑与限速线

  1. 显存溢出:123 B 模型需 4×H100,本地想跑请用 devstral-small;若仍 OOM,加 --n-gpu-layers 35 把最后 10 层扔 CPU。
  2. Token 超速:Vibe CLI 默认 RPM 300,免费额度用完会 429;本地部署无此限制,但建议加 --rate-limit 60 给硬盘留喘息。
  3. 许可证雷区:Devstral2 修改版 MIT 对月营收 > 2000 万美元企业需商业授权;对外分发时把 devstral-small 作为默认模型可完全避开限制。

七、5 分钟速通小结

# 1. 装 CLI
curl -sSL https://install.mistral.ai/vibe | bash

# 2. 初始化沙箱
vibe init --model local/devstral-small --sandbox

# 3. 多 Agent 编排
echo "给所有 API 路由加上 OpenAPI 注解,并生成对应的 pytest 固件" | \
  vibe chat --stream --temperature 0.15 --max-tokens 8192

# 4. 测试 & 回滚
pytest || git worktree add ../rollback

至此,你拥有了一个「零依赖」的多 Agent 沙箱:24 B 模型在本地流式输出,Vibe CLI 负责工具调用与 Git 快照,失败 30 秒回滚,成功直接合并主线。把这套脚本扔进 CI,就能让代码库在每晚自动「自我翻新」,而风险永远锁在可丢弃的 worktree 里。

查看归档