claude code|opencode + 私有算力的方案设计

目标

  1. 断网可用的任务托管式编程AI框架

要求

  1. 应用本地化:claude code和opencode本地部署,不走官方服务器
  2. 算力本地化:已有openai的api和apikey
  3. 权限隔离 :程序需要运行在虚拟化容器内,方便隔离
  4. 操作便捷:容器内系统支持远程终端和远程界面(有些编程和调试需要界面操作)
  5. 运维便捷:数据与容器分离具备持久化;整套脚本化可重复

需求

  1. 操作系统架构
    1. 场景A
      1. 宿主机:已知windows10
      2. 虚拟机技术:wsl2,vmware,virtualbox,docker?为了后续预备,虚拟机需要支持调用nvidia显卡
      3. 虚拟机系统:nixos,ubuntu,alpine,centos?需要同时支持远程终端和远程桌面
  2. 应用架构
    1. claude code
      1. 运行环境:虚拟机linux系统
      2. 算力API:用claude code router切换源指向本地api
      3. 参数设置:oh my claude code的开源配置方案
    2. opencode
      1. 运行环境:虚拟机linux系统
      2. 算力API:配置上本地api
      3. 参数设置:oh my opencode的开源配置方案
  3. 编程应用
    1. cli命令行自动生成设计方案、测试框架、业务代码、使用手册
    2. ide配合debug

部署方案(本地qwen4B)

  1. 操作系统架构设计
    1. 场景 A (宿主机:Windows 10)
      1. 针对 Windows 10 环境,为了实现 GPU 加速并兼容 Linux 系统,推荐采用 WSL2 + Docker 的混合架构。
      2. 宿主机层 (Host): 操作系统: Windows 10/11,提供宿主进程管理、NVIDIA 驱动调用通道及 Docker Desktop 运行时环境。
      3. 虚拟化/容器层 (Guest): WSL2 (推荐) > Docker > VMware/VirtualBox
        • WSL2 基于 Linux Kernel,性能接近原生,天然支持调用宿主机的 NVIDIA GPU。相比传统虚拟机(VirtualBox/VMware),其启动速度更快且 I/O 延迟更低。
        • 若需更复杂的图形界面直通,可考虑 VMware Workstation Pro + Docker Desktop 方案。
      4. 系统镜像:
        • 推荐: Ubuntu 24.04 LTS:理由: Ubuntu 生态最丰富,对 AI 框架(PyTorch, Hugging Face)支持最好;
        • Alpine 用于极致轻量:Alpine 占用内存极小。
        • 两者均完美支持远程终端 (SSH) 和远程桌面 (VNC/Remote Desktop)。
  2. 应用架构设计
    1. Claude Code
      1. 运行环境: WSL2 或 Docker 容器内的 Linux 系统。
      2. 算力 API 对接方案:
        • 利用 claude code router (开源项目) 实现流量转发。
        • 配置环境变量 OPENAI_API_KEY 指向本地的 OpenRouter 实例(该实例已配置为调用本地部署的 LLM)。
        • 关键步骤: 在 config.toml 或环境变量中修改 model 指向本地模型路径,并设置 proxy_urlAPI_URL 指向本地服务地址。
      3. 参数调优方案 (oh my claude code):
        • 启用开源配置模板,调整 temperature, max_tokens, system_prompt
        • 针对断网场景,优化上下文窗口管理策略,防止内存溢出。
    2. Opencode
      1. 运行环境: WSL2 或 Docker 容器内的 Linux 系统(建议与 Claude Code 共用镜像以节省资源)。
      2. 算力 API 对接方案:
        • 直接配置 OPENAI_API_KEY 环境变量,指向本地 OpenRouter 服务。
        • 确保 OPENCODE_CONFIG 文件指向本地加载的路径。
      3. 参数调优方案 (oh my opencode):
        • 参考开源社区最佳实践,设置高并发时的令牌限制(Token Limit),防止本地 GPU OOM。
  3. 编程应用集成
    1. CLI 命令行自动生成
      1. 功能: 在终端直接输入提示词,触发容器内的 LLM API。
      2. 输出控制: 利用 Docker stdin/stdout 重定向,将生成的设计方案、测试框架、业务代码及使用手册直接打印至控制台或保存至指定文件路径。
    2. IDE 配合 Debug (Remote Development)
      1. 工具链: VS Code + Remote-SSH / WSL Remote Containers Extension。
      2. 操作流:
        • 在本地 VS Code 中打开项目。
        • 通过插件将代码编辑窗口映射到远程容器。
        • 利用 Opencode/Claude Code 的 AI 功能,直接对容器内的代码进行重构、补全和调试。
  4. 部署方案 (执行脚本)
    1. 为实现“运维便捷”与“数据持久化”,采用 Docker Compose 编排一切。
    2. 核心架构
      1. Network: Docker Network,隔离应用流量。
      2. Volumes: ai-models (挂载本地模型目录), logs (日志分离)。
      3. 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

  • 数据分离: 修改容器挂载路径,将大模型权重、历史对话日志存储在宿主机目录,确保重启后数据不丢失