目标
- 断网可用的任务托管式编程AI框架
要求
- 应用本地化:claude code和opencode本地部署,不走官方服务器
- 算力本地化:已有openai的api和apikey
- 权限隔离 :程序需要运行在虚拟化容器内,方便隔离
- 操作便捷:容器内系统支持远程终端和远程界面(有些编程和调试需要界面操作)
- 运维便捷:数据与容器分离具备持久化;整套脚本化可重复
需求
- 操作系统架构
- 场景A
- 宿主机:已知windows10
- 虚拟机技术:wsl2,vmware,virtualbox,docker?为了后续预备,虚拟机需要支持调用nvidia显卡
- 虚拟机系统:nixos,ubuntu,alpine,centos?需要同时支持远程终端和远程桌面
- 场景A
- 应用架构
- claude code
- 运行环境:虚拟机linux系统
- 算力API:用claude code router切换源指向本地api
- 参数设置:oh my claude code的开源配置方案
- opencode
- 运行环境:虚拟机linux系统
- 算力API:配置上本地api
- 参数设置:oh my opencode的开源配置方案
- claude code
- 编程应用
- cli命令行自动生成设计方案、测试框架、业务代码、使用手册
- ide配合debug
部署方案(本地qwen4B)
- 操作系统架构设计
- 场景 A (宿主机:Windows 10)
- 针对 Windows 10 环境,为了实现 GPU 加速并兼容 Linux 系统,推荐采用 WSL2 + Docker 的混合架构。
- 宿主机层 (Host): 操作系统: Windows 10/11,提供宿主进程管理、NVIDIA 驱动调用通道及 Docker Desktop 运行时环境。
- 虚拟化/容器层 (Guest):
WSL2(推荐) >Docker>VMware/VirtualBox- WSL2 基于 Linux Kernel,性能接近原生,天然支持调用宿主机的 NVIDIA GPU。相比传统虚拟机(VirtualBox/VMware),其启动速度更快且 I/O 延迟更低。
- 若需更复杂的图形界面直通,可考虑 VMware Workstation Pro + Docker Desktop 方案。
- 系统镜像:
- 推荐:
Ubuntu 24.04 LTS:理由: Ubuntu 生态最丰富,对 AI 框架(PyTorch, Hugging Face)支持最好; - Alpine 用于极致轻量:Alpine 占用内存极小。
- 两者均完美支持远程终端 (SSH) 和远程桌面 (VNC/Remote Desktop)。
- 推荐:
- 场景 A (宿主机:Windows 10)
- 应用架构设计
- Claude Code
- 运行环境: WSL2 或 Docker 容器内的 Linux 系统。
- 算力 API 对接方案:
- 利用
claude code router(开源项目) 实现流量转发。 - 配置环境变量
OPENAI_API_KEY指向本地的 OpenRouter 实例(该实例已配置为调用本地部署的 LLM)。 - 关键步骤: 在
config.toml或环境变量中修改model指向本地模型路径,并设置proxy_url或API_URL指向本地服务地址。
- 利用
- 参数调优方案 (oh my claude code):
- 启用开源配置模板,调整
temperature,max_tokens,system_prompt。 - 针对断网场景,优化上下文窗口管理策略,防止内存溢出。
- 启用开源配置模板,调整
- Opencode
- 运行环境: WSL2 或 Docker 容器内的 Linux 系统(建议与 Claude Code 共用镜像以节省资源)。
- 算力 API 对接方案:
- 直接配置
OPENAI_API_KEY环境变量,指向本地 OpenRouter 服务。 - 确保
OPENCODE_CONFIG文件指向本地加载的路径。
- 直接配置
- 参数调优方案 (oh my opencode):
- 参考开源社区最佳实践,设置高并发时的令牌限制(Token Limit),防止本地 GPU OOM。
- Claude Code
- 编程应用集成
- CLI 命令行自动生成
- 功能: 在终端直接输入提示词,触发容器内的 LLM API。
- 输出控制: 利用 Docker stdin/stdout 重定向,将生成的设计方案、测试框架、业务代码及使用手册直接打印至控制台或保存至指定文件路径。
- IDE 配合 Debug (Remote Development)
- 工具链: VS Code + Remote-SSH / WSL Remote Containers Extension。
- 操作流:
- 在本地 VS Code 中打开项目。
- 通过插件将代码编辑窗口映射到远程容器。
- 利用 Opencode/Claude Code 的 AI 功能,直接对容器内的代码进行重构、补全和调试。
- CLI 命令行自动生成
- 部署方案 (执行脚本)
- 为实现“运维便捷”与“数据持久化”,采用 Docker Compose 编排一切。
- 核心架构
- Network: Docker Network,隔离应用流量。
- Volumes:
ai-models(挂载本地模型目录),logs(日志分离)。 - Services:
llm-server: 运行 Ollama 或 LM Studio,暴露 gRPC/HTTP API。claude-wrapper: 代理层,负责路由和参数转换。opencode-wrapper: 代理层。
version: '3.8'
services:
# 1. LLM 后端服务 (本地模型)
llm-server:
image: ollama/ollama:latest
container_name: local-llm
ports:
- "11434:11434" # gRPC Port
volumes:
- ./models:/root/.ollama # 持久化模型文件
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
# 2. Claude Code Wrapper
claude-wrapper:
image: python:3.11-slim
container_name: claude-code-local
working_dir: /app
command: ["python", "claude_router.py"]
volumes:
- ./scripts:/app/scripts # 持久化脚本逻辑
environment:
OPENAI_API_BASE: http://llm-server:11434/api/generate
OPENAI_API_KEY: ${LOCAL_OPENAI_KEY}
depends_on:
- llm-server
# 3. Opencode Wrapper (可复用镜像)
opencode-wrapper:
image: python:3.11-slim
container_name: opencode-local
working_dir: /app
command: ["python", "opencode_router.py"]
volumes:
- ./scripts:/app/scripts
environment:
OPENAI_API_BASE: http://llm-server:11434/api/generate
OPENAI_API_KEY: ${LOCAL_OPENAI_KEY}
depends_on:
- llm-server
volumes:
ai-models-data:
logs-data:初始化与运行脚本 (shell)
生成配置:
bash scripts/init_config.sh-> 自动读取.env并生成各工具的配置文件。一键部署:
docker-compose up -d --build数据分离: 修改容器挂载路径,将大模型权重、历史对话日志存储在宿主机目录,确保重启后数据不丢失