本地模型终于能打了:Gemma+LM Studio+Pi智能体实战笔记


本地模型运行指南 2026 | Gemma LM Studio Pi 智能体配置教程

本地跑AI模型终于好用了!

以前本地跑模型又慢又笨,现在真不一样了。我试过Mistral 7B、Gemma 3、OpenAI OSS-20B、Qwen 3 MOE还有Qwen 2.5 Coder这些模型,搭配llama.cpp、Ollama、LM Studio这些工具,折腾下来最大的感受就是:本地模型终于能正经干活了。

本地模型的能力进化

早期本地模型简直没法用。速度慢得像蜗牛,装起来麻烦得要死,写代码还不准。那时候大家都说本地模型跟云端模型差着十万八千里,这话确实没毛病。但对我来说,GPT-OSS出来之后情况就变了。我的判断标准特别简单:用完之后还得再拿API模型查一遍吗?GPT-OSS是我第一个不怎么需要复查的本地模型。

现在本地模型已经成了我的快速私人搜索引擎。遇到开发问题,不用上网搜,直接问本地模型,几秒钟就出答案。虽然这些模型不知道最新的事,但大部分开发问题根本不需要最新信息。

Gemma 4系列出来之后就更夸张了。我现在能用本地模型做智能体编程,让模型自己写代码、改代码、跑代码,准确率和速度能达到前沿模型的75%左右。放在半年前想都不敢想。

Gemma-4-12b-qat的实际表现

我一直在用LM Studio跑gemma-4-26b-a4b,最近刚出的gemma-4-12b-qat更猛。体积更小,跑得更快,准确率还没怎么下降。这模型特别有意思的地方在于它的设计思路:如果性能和价格都有限制,架构上该怎么取舍?在现在这种疯狂堆算力的环境下,这个问题很少人认真想过。

我用本地模型干了不少实事。把一个Jupyter笔记本重构成了五六个模块的Python项目,让模型自动给代码加上泛型类型提示。现在大部分前沿模型都能自动干这事,但以前本地模型根本做不到。

还拿它改博客文章、写单元测试。最绝的是让模型从零搭一个推荐系统的双塔模型,就是那种完全空白让它自己发挥。生成的东西虽然基础,但放在去年我根本不信本地模型能干这事。

本地模型跑智能体的环境配置

想自己试的话需要三样东西:本地模型推理引擎、智能体框架、模型文件。让智能体框架连上本地推理服务就行。

我现在用Pi做智能体框架,LM Studio做推理服务器。虽然直接拿llama.cpp可能更快,但这组合已经够用了。

配置Pi和LM Studio联动的步骤其实很简单。Pi的models.json里加上LM Studio的配置:

json
"lmstudio": {
      "baseUrl": "http://host.docker.internal:1234/v1",
      "api": "openai-completions",
      "apiKey": "not-needed",
      "models": [
        {
          "id": "google/gemma-4-12b-qat",
          "input": [
            "text",
            "image"
          ]
        }
      ]
    }

这里baseUrl指向LM Studio开的本地服务,默认是1234端口。apiKey随便填因为本地服务不需要鉴权。模型ID填你要用的具体模型名字就行。

Docker容器里的安全配置

我所有智能体工作流都跑在Docker容器里,只给最基本的执行权限。这样模型万一抽风删文件也伤不到物理硬盘。

Docker Compose配置长这样:

yaml
services:
  pi:
    build:
      context: .
      dockerfile: Dockerfile
    image: pi-agent:0.74.0
    init: true
    stdin_open: true
    tty: true
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
      OPENAI_API_KEY: ${OPENAI_API_KEY:-not-needed}
      GEMINI_API_KEY: ${GEMINI_API_KEY:-}
      OPENAI_API_BASE: ${OPENAI_API_BASE:-http://host.docker.internal:1234/v1}
      WHATEVER_API_KEY: ${WHATEVER_API_KEY:-}
    volumes:
      - ${HOME}/.pi/agent/models.json:/config/models.json
      - ${WORKSPACE:-.}:/workspace
      - pi-config:/config
      - pi-sessions:/sessions
    working_dir: /workspace

volumes:
  pi-config:
  pi-sessions:

extra_hosts那块是关键,让容器能通过host.docker.internal访问宿主机的LM Studio服务。volumes把模型配置文件挂载进去,这样Pi才知道连哪个模型。

Pi启动脚本的改造

启动Pi的bash脚本做了点调整。核心是处理工作目录和容器名字:

bash
#!/usr/bin/env bash

SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

WORKSPACE_DIR="${WORKSPACE:-$(pwd)}"
case "$WORKSPACE_DIR" in
  /*) ;; 
  *)  WORKSPACE_DIR="$(cd -- "$WORKSPACE_DIR" && pwd)" ;; 
esac
export WORKSPACE="$WORKSPACE_DIR"

sandbox="${PI_SANDBOX:-0}"
pi_args=()

while (($#)); do
  case "$1" in

    --sandbox)    sandbox=1 ;;
    --no-sandbox) sandbox=0 ;;
    *)            pi_args+=("$1") ;;

  esac
  shift
done

compose_files=( -f "$SCRIPT_DIR/docker-compose.yml" )
if [[ "$sandbox" == "1" ]]; then
  compose_files+=( -f "$SCRIPT_DIR/docker-compose.sandbox.yml" )
fi

repo_slug="$(basename -- "$WORKSPACE_DIR" | tr -c 'a-zA-Z0-9_.-' '-' | sed 's/^-*//')"
[[ -z "$repo_slug" ]] && repo_slug="workspace"
container_name="pi-${repo_slug}-$$"

api_key_args=(
  -e OPENAI_API_KEY
  -e DEEPSEEK_API_KEY
  -e ANTHROPIC_API_KEY
  -e GEMINI_API_KEY
)

cmd=(
  docker compose
  --project-directory "$SCRIPT_DIR"
  "${compose_files[@]}"
  run --rm
  --name "$container_name"
  "${api_key_args[@]}"
  pi
)

if ((${#pi_args[@]})); then
  cmd+=("${pi_args[@]}")
fi

exec "${cmd[@]}"

脚本根据当前目录生成唯一的容器名字,避免多个项目冲突。--sandbox参数可以切到更严格的沙箱模式,跑不信任的代码时特别有用。

跑本地模型碰到的坑

本地模型问题确实还有。推理速度还是慢,尤其模型大的时候。上下文窗口受硬件限制,我64GB内存的机器KV缓存动不动就涨到64GB。生态工具虽然方便多了但新模型刚出的时候经常遇到提示词模板对不上。好在这些问题社区修得特别快,三五天就有人给出解决方案。

生产环境用还差点意思。速度、稳定性、上下文长度都不太够。但做实验、写个人项目、日常开发辅助完全够了。

本地模型的好处

好处是真不少。能看token是怎么生成的,每一步都看得清清楚楚。能改上下文窗口看性能怎么变,能换量化方式,能让模型互相PK。在GPU上怎么处理token的全过程都能盯着看。

智能体这边也能调。改系统提示词、调参数,所有东西都在自己手里。不像云端模型黑盒一个啥都看不见。

我这几个月用Pi翻LM Studio的日志,发现大部分时间都在查文档、搜代码示例。这些活看着简单,但半年前本地模型根本干不了。

我还在做一个抓Arxiv热门论文的应用,顺手让Pi分析了我的历史使用记录,发现全是这类查询。不意外,因为我一直在搞Rijksearch这个项目。

未来展望

本地模型工具只会越来越好。LM Studio这种一键启动的工具、HuggingFace的"Use This Model"按钮都让上手门槛低了好多。社区修bug快,新模型出来配置方法马上有人分享。

虽然离正经生产软件还有距离,但方向特别对。每次新模型出来都能感受到进步,不像以前那种挤牙膏。现在六个月的变化顶过去两年。

我自己在Docker里跑Pi,模型放LM Studio里,这组合目前最顺手。以后可能直接换llama.cpp追求速度,或者换其他智能体框架试试。反正现在选择多,想怎么折腾都行。

本地模型跑智能体这件事真的从"能不能"变成"怎么才能更好"了。门槛越来越低,能做的事越来越多,接下来就看社区怎么把速度和上下文窗口这些短板补上了。

总结

本文以本地模型实践者的视角,分享当前本地模型在编程辅助、智能体工作流中的实际表现。作者使用M2 Mac运行Gemma-4-12b-qat等模型,配合LM Studio和Pi智能体框架,在Docker容器中构建了完整的本地开发环境。文章详细记录了模型能力从"不可用"到"基本可用"的演进过程,并提供了具体的配置代码和部署方案。