CLI 编程智能体
创建本地 CLI 编程智能体
基本理念
使用 Ollama 打开 DGX Spark 运行本地编码模型并连接 CLI 编码智能体。这个 playbook 支持一个选项:OpenCode。每个智能体与 Ollama 的内置连接启动方法 (ollama launch),因此您可以 无需环境变量、提供商配置文件或外部云 API。
选择您的 CLI 智能体
选择与您要使用的 CLI 智能体相匹配的选项卡:
OpenCode:直接从 Ollama 启动的开源 CLI。
您将完成的任务
您将运行本地编码模型 (Qwen3.6) 在配备 Ollama 的 DGX Spark 上启动使用单个命令选择 CLI 智能体,端到端完成一个小的编码任务。
开始之前需要了解的内容
熟悉 Linux 命令行基础知识
具备运行基于终端的工具和编辑器的经验
熟悉 Python 进行简短的编码任务
预备知识
使用 DGX Spark 和 NVIDIA DGX OS 7.3.1 (基于 Ubuntu 24.04.4 LTS)
可通过互联网下载模型权重
Ollama v0.15 或更高版本 (对于 ollama launch)
GPU 显存取决于您选择的 Qwen3.6 版本:
qwen3.6:latest ( 35B-a3b,MoE) – 约 24GB,256K 上下文
qwen3.6:35b-a3b - mtp-q4_K_M - 约 22GB
qwen3.6:35b-a3b-q8_0 - ~ 39GB,更高质量的量子
qwen3.6:35b-a3b-bf16 - 约 71GB,全精度 (适合 Spark 的统一内存)
时间和风险
时长:约 15-25 分钟 (主要是模型下载时间)
风险级别:低
如果网络连接不稳定,大型模型下载可能会失败
低于 0.15 的 Ollama 版本不支持 ollama launch
回滚:停止 Ollama 并删除下载的模型 ~/.ollama/models
上次更新时间:2026 年 4 月 16 日
切换到 ollama launch 并将默认模型升级到 Qwen3.6
第 1 步:确认您的环境
说明:在安装任何内容之前,请验证操作系统版本和 GPU 是否可见。
cat /etc/os-release | head -n 2 nvidia-smi
预期输出应显示 Ubuntu 24.04.4 LTS ( DGX OS 7.3.1 基准版本) 和检测到的 GPU。
第 2 步:安装或更新 Ollama
说明:安装 Ollama 或者确保它是最新的 ollama launch。
curl -fsSL https://ollama.com/install.sh | sh ollama --version
如果已安装 Ollama,只需验证版本即可:
ollama --version
预期输出应显示 Ollama v0.15 或更新版本。
第 3 步:Pull Qwen3.6
说明:下载 Qwen3.6 模型权重。
ollama pull qwen3.6
如果您需要不同的内存占用空间或精度,可以选择以下变体:
ollama pull qwen3.6:35b-a3b-mtp-q4_K_M # MTP-enabled Q4_K_M build for local Ollama on DGX Spark (~21.7GB) ollama pull qwen3.6:35b-a3b-q8_0 # Higher-quality 8-bit quant (~39GB) ollama pull qwen3.6:35b-a3b-bf16 # Full precision (~71GB)
预期输出应显示 qwen3.6 在 ollama list。
第 4 步:测试本地推理 (可选)
说明:运行快速提示以确认模型加载。
ollama run qwen3.6
尝试以下提示:
Write a short README checklist for a Python project.
预期输出应显示模型响应。完成后,输入 /bye 或按 Ctrl+D 退出,然后继续。
第 5 步:使用 Ollama 启动 OpenCode
说明:使用 Ollama 的内置启动方法开始 OpenCode 与本地模型进行对比。无需 opencode.json 提供配置设置。
ollama launch opencode --model qwen3.6
如果您想在不立即启动的情况下预配置 OpenCode:
ollama launch opencode --config
预期输出应显示 OpenCode,首先 Ollama 预先选定为提供程序,然后 Qwen3.6 作为模型。Qwen3.6 默认附带 256K 上下文窗口。
第 6 步:完成一项小型编码任务
说明:创建一个小型存储库,让 OpenCode 实现函数并进行测试。
mkdir -p ~/cli-agent-demo cd ~/cli-agent-demo printf 'def add(a, b):\n """Return the sum of a and b."""\n pass\n' > math_utils.py printf 'import math_utils\n\n\ndef test_add():\n assert math_utils.add(1, 2) == 3\n' > test_math_utils.py
如果您尚未安装 pytest:
python3 -m venv .venv source .venv/bin/activate python3 -m pip install -U pytest
在 OpenCode 中:
Please implement add() in math_utils.py and make sure the test passes.
运行测试:
python3 -m pytest -q
预期输出应显示测试通过情况。完成后,运行 deactivate 退出虚拟环境。
第 7 步:清理和回滚
说明:删除模型并在不再需要服务时停止服务。
要停止该服务,请执行以下操作:
sudo systemctl stop ollama
警告:
这将删除下载的模型文件。
ollama rm qwen3.6
第 8 步:后续步骤
试用qwen3.6:35b-a3b-mtp-q4_K_M 或 bf16 不同质量 / VRAM 权衡的变体
在多文件更改或测试生成任务中使用 OpenCode
在更大的代码库上探索完整的 256K 上下文窗口
症状 |
原因 |
修复 |
|---|---|---|
ollama: command not found |
未安装 Ollama 或 PATH 未更新 |
重新运行 curl -fsSL https://ollama.com/install.sh | sh 打开一个新 shell |
ollama launch 报告未知命令 |
Ollama 的版本低于 v0.15 |
更新 Ollama: curl -fsSL https://ollama.com/install.sh | sh |
模型加载失败,并显示版本错误或 HTTP 412 |
Ollama 版本对模型来说太旧了 |
更新 Ollama: curl -fsSL https://ollama.com/install.sh | sh |
model not found 启动代理时 |
未提取模型 |
运行 ollama pull qwen3.6 然后重试 |
connection refused 本地主机:11434 |
Ollama 服务未运行 |
从开始 ollama serve 或 sudo systemctl start ollama |
ollama launch 立即退出 |
智能体集成初始化失败 |
重新运行 ollama launch ;如果问题仍然存在,请检查 journalctl -u ollama |
响应速度缓慢或 OOM 错误 |
模型变体过大,GPU 显存无法满足需求 |
切换到 qwen3.6:35b-a3b-nvfp4 或关闭其他 GPU 工作负载 |
python3 -m pip install -U pytest 报告 externally-managed-environment |
Ubuntu 24.04 可保护系统 Python 环境 |
首先创建并激活虚拟环境: python3 -m venv .venv && source .venv/bin/activate |
ollama pull 报告模型标签是分片 GGUF |
Ollama 不支持所选模型标签 |
使用步骤 3 中的 Qwen3.6 命令,而不是分片 GGUF 标签 |
ollama run 失败 CUDA error: context is destroyed 多 GPU 系统上 |
Ollama 正在混合 GPU 拓扑上进行初始化 |
将 Ollama 固定到一个 GPU 上。对于前景测试,请运行 CUDA_VISIBLE_DEVICES=0 ollama serve;对于系统服务,请添加 Environment="CUDA_VISIBLE_DEVICES=0" 连接到 Ollama systemd 下拉列表,然后重启 Ollama |
注意
DGX Spark 采用统一内存架构 (UMA) ,可实现动态内存共享 在 GPU 和 CPU 之间切换。如果您看到显存压力,请使用以下命令刷新缓冲区缓存:
sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'