还在古法编程?免费使用AI编程助手OpenCode 与完全本地化配置
前言
✨ OpenCode 核心特点
✅ 完全开源 — MIT 许可,GitHub 超 109k Stars
✅ 零成本模型接入 — 官方提供免费模型,也支持任意本地或云模型
✅ 纯本地运行 — 数据不出内网,满足企业级安全合规要求
✅ 现代化 Web UI — 无需命令行,开箱即用
✅ 广泛兼容性 — 支持 llama.cpp、Ollama、vLLM、LM Studio 及所有 OpenAI 兼容 API
✅ 全周期开发能力 — 深度集成代码生成、调试、测试、重构、回溯等场景
📌 核心理念:你的代码,只属于你。AI 能力,尽在掌控。
LLM大模型配置
OpenCode 支持大多 LLM 提供商,可根据需求灵活选择:
1. 官方免费模型(OpenCode Zen)
OpenCode 官方提供 Zen 模型服务,包含经过严格测试与优化的免费编码模型,无需配置即可使用:
✅ 适合快速上手、无本地 GPU 资源的用户❌ 需联网,不适用于完全离线环境
2. 部署本地 LLM 服务
如果注重隐私或希望完全离线运行,推荐部署本地大模型。,典型配置如下:
-
模型:
Qwen3.5-35B-A3B-UD-Q4_K_M.gguf -
(MoE 架构,激活参数仅 3B,推理性能超越 Qwen3-235B)
-
推理后端:
llama.cpp(以server模式运行) -
API 地址:
http://10.0.0.10:8001/v1
验证服务是否正常:
curl http://10.0.0.10:8001/v1/models
预期返回包含模型 ID 的 JSON 列表。
⚠️ 注意:该地址需能被 OpenCode 容器访问。
3. 接入 OpenAI / Claude / Gemini 等云 API
OpenCode 同样支持主流云模型,只需提供 API Key:
💡 支持 75+ 模型提供商(通过 Models.dev),包括 Anthropic、Google、Mistral、DeepSeek 等。
Docker 部署 Web UI / CLI 服务
快速体验
docker run -d \
--name opencode-quick \
--restart unless-stopped \
--entrypoint opencode \
-p 3000:3000 \
-v ./config:/root/.config/opencode \
-v ./data:/root/.local/share/opencode \
-v ./workspace:/workspace \
-e WORKDIR=/workspace \
ghcr.io/anomalyco/opencode:latest \
web --hostname 0.0.0.0 --port 3000
-
./workspace:挂载项目代码(AI 可读写此目录) -
./config:配置文件路径,存放opencode.json配置文件 -
./data:存储会话、缓存等运行时数据 -
🌐 访问:http://{宿主机ip}:3000
完整部署(推荐用于生产或长期使用)
1. 编写 Dockerfile
# --- Stage 1: Extraction ---
# Use the official uv image to provide the binaries.
FROM ghcr.io/astral-sh/uv:latest AS uv_bin
# --- Stage 2: Runtime Environment ---
# Using debian:bookworm-slim instead of full Ubuntu to significantly reduce image size
# while maintaining full compatibility with Python wheels and C-extensions.
FROM ubuntu:24.04
ARG LOCAL_TOOLS="curl ca-certificates git"
# Consolidate environment variables to reduce layers.
# UV_PYTHON_INSTALL_DIR: Ensures Python toolchains are stored in the persistent cache volume.
# UV_LINK_MODE: Set to 'copy' to avoid performance warnings on different filesystems.
# UV_PYTHON_PREFERENCE: Ensures uv respects .python-version from your workspace.
ENV DEBIAN_FRONTEND=noninteractive \
HOME=/home/opencode \
UV_PROJECT_ENVIRONMENT=/home/opencode/.venv \
UV_CACHE_DIR=/home/opencode/.cache/uv \
UV_PYTHON_INSTALL_DIR=/home/opencode/.cache/uv/python \
UV_LINK_MODE=copy \
UV_PYTHON_PREFERENCE=managed \
PATH="/home/opencode/.opencode/bin:/home/opencode/.venv/bin:$PATH"
# Combine system update, dependency installation, user creation, and directory prep.
# This single RUN command reduces the number of intermediate image layers.
RUN apt-get update && apt-get install -y --no-install-recommends $LOCAL_TOOLS \
&& useradd -m -s /bin/bash opencode \
&& mkdir -p /home/opencode/.local/share/opencode \
/home/opencode/.config/opencode \
/home/opencode/.cache/uv \
/home/opencode/.venv \
/workspace \
&& chown -R opencode:opencode /home/opencode /workspace \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Copy uv binaries from the extraction stage.
COPY --from=uv_bin /uv /uvx /bin/
# Copy the entrypoint script and set correct permissions
COPY --chown=opencode:opencode ./entrypoint.sh /home/opencode/entrypoint.sh
RUN chmod +x /home/opencode/entrypoint.sh
# Install the OpenCode CLI (before switching to non-root user)
# The installer automatically places the binary into $HOME/.opencode/bin.
RUN curl -fsSL https://opencode.ai/install | bash || \
(echo "⚠️ OpenCode install failed, trying alternative method..." && \
curl -fsSL https://github.com/opencode-ai/opencode/releases/latest/download/opencode-linux-x64 -o /home/opencode/.opencode/bin/opencode && \
chmod +x /home/opencode/.opencode/bin/opencode)
# Run as root to allow apt-get and dpkg commands without sudo
USER root
WORKDIR /workspace
# Define the entrypoint script as the default execution path
ENTRYPOINT ["/home/opencode/entrypoint.sh"]
2. 编写 entrypoint.sh
#!/bin/bash
# Exit immediately if a command exits with a non-zero status
set -e
# ============================================
# .NET 8 SDK 安装逻辑 (通过环境变量控制)
# ============================================
if [ "$INSTALL_DOTNET" = "true" ]; then
echo "🛠️ [Entrypoint] .NET 8 SDK 安装模式已启用。"
# 检查是否已安装 .NET SDK
if command -v dotnet &> /dev/null; then
echo "✅ [Entrypoint] .NET SDK 已安装,跳过安装。"
else
echo "📥 [Entrypoint] 开始安装 .NET 8 SDK..."
# 安装依赖
apt-get update
apt-get install -y wget
# 下载并安装 Microsoft APT 仓库配置
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# 安装 .NET SDK 8.0
apt-get update
apt-get install -y dotnet-sdk-8.0
# 清理缓存
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "✅ [Entrypoint] .NET 8 SDK 安装完成!"
echo "📌 版本信息:"
dotnet --version
fi
else
echo "⏭️ [Entrypoint] INSTALL_DOTNET 为 false。跳过 .NET SDK 安装。"
fi
# ============================================
# Python 依赖安装逻辑
# ============================================
if [ "$INSTALL_DEPS" = "true" ]; then
echo "🛠️ [Entrypoint] 完整设置模式已启用。"
# 初始化虚拟环境
uv venv -q /home/opencode/.venv
if [ -f "requirements.txt" ]; then
echo "📦 [Entrypoint] 从 requirements.txt 安装依赖..."
uv pip install -q -r requirements.txt
elif [ -f "pyproject.toml" ]; then
echo "📦 [Entrypoint] 从 pyproject.toml 同步依赖..."
uv sync -q
else
echo "ℹ️ [Entrypoint] 未找到依赖文件,但已创建虚拟环境。"
fi
else
echo "⏭️ [Entrypoint] INSTALL_DEPS 为 false。跳过虚拟环境和依赖安装。"
fi
# ============================================
# 启动主应用
# ============================================
echo "🚀 [Entrypoint] 启动 OpenCode..."
# opencode
opencode web --hostname 0.0.0.0 --port 3000
3. 编写 docker-compose.yml
version: '3.8'
services:
opencode:
image: opencode-net:latest
container_name: opencode-net
restart: unless-stopped
ports:
- "3005:3000"
volumes:
- ./opencode/config:/home/opencode/.config/opencode
- ./opencode/data:/home/opencode/.local/share/opencode
- /data/ai/workspace:/workspace
environment:
- WORKDIR=/workspace
# 设置 Git 用户信息,防止 AI 提交代码时报错
- GIT_AUTHOR_NAME=opencode
- GIT_AUTHOR_EMAIL=bot@opencode.ai
# 如果 NAS 需要代理访问 OpenAI/Google,请取消注释以下行
# - HTTP_PROXY=http://192.168.x.x:7890
# - HTTPS_PROXY=http://192.168.x.x:7890
#安装 requirements.txt 依赖
- INSTALL_DEPS=false
# 安装 .net sdk
- INSTALL_DOTNET=false
networks:
- opencode_net
networks:
opencode_net:
driver: bridge
4. 打包镜像
docker build -t opencode-net:latest .
5. 启动服务
docker compose up -d
6. 配置模型接入(config/opencode.json)
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"local-llama-cpp": {
"npm": "@ai-sdk/openai-compatible",
"name": "Llama.cpp Model Runner",
"options": {
"baseURL": "http://192.168.1.10:8001/v1",
"apiKey": "not-needed"
},
"models": {
"Qwen3.5-35B-A3B-UD-Q4_K_M": {
"name": "Qwen3.5-35B-A3B-UD-Q4_K_M",
"limit": { "contextWindow": 128000, "maxOutputTokens": 64000, "context": 0, "output": 64000 }
}
}
}
}
}
7. 访问 Web 界面
打开浏览器访问:
👉 http://{宿主机ip}:3005
首次加载完成后,即可开始与 AI 协作编程
终端 CLI 与 VS Code 插件集成
CLI 安装与配置
## 在终端安装 cli
npm install -g opencode-ai
## 查看安装版本
opencode --version
## 运行
opecode
## 选择模型
/models
配置文件路径:
-
Linux / macOS:
~/.config/opencode/opencode.json -
Windows:
%USERPROFILE%\.config\opencode\opencode.json
💡 配置内容与上面
config/opencode.json完全一致,可直接复用。
VS Code 插件
安装插件:OpenCode, 配置文件也是:~/.config/opencode/opencode.json

方案对比:Web UI vs 终端 CLI
常见问题与安全建议
🔒 安全最佳实践
-
对外提供服务,添加服务验证,避免直接暴露 3000 端口(避免直接暴露 3000 端口)
-
限制
workspace挂载范围,禁止挂载/、/home等系统目录 -
生产环境 Dockerfile 使用非root 用户
✅ 现在,打开浏览器,即可享受安全、高效、完全自主的 AI 编程体验!
文章转载自:JohnCHsu
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)