过去很长一段时间,我把本地模型当成另一个聊天窗口在用——粘贴错误,复制答案,回到编辑器,运行测试,再复制下一个错误,循环往复。
这样能用,但浪费了很多可能性。
Gemma 4吸引我的地方,不只是它是带多模态能力的开源模型家族,有针对不同硬件配置的变体。更在于它让我重新思考一种 setup:模型不再孤立地待在浏览器标签页里,而是嵌入本地开发工作流。
这次实验的目标很简单:我想要一个完全本地运行的开发助手,能跟我一起推理,能理解视觉和文本上下文,能读取项目文件,并且在合适的时候直接操作代码仓库——不用把整个代码库发给外部服务。
为此,我搭了一套组件互相配合的栈。
核心思路是:Gemma 4 的真正价值,在于它从"盒子里的模型"变成本地开发架构的一部分。
这套栈做了职责分离。Ollama 跑在宿主机上,因为在 macOS Apple Silicon 上,这是利用本地运行时的实际路径。界面层跑在 Docker 里。Open WebUI 是我思考、对比、检查视觉上下文、生成辅助图片的地方。OpenHands 是我从对话转向行动的地方。
这种分离改变了体验。
Google 把 Gemma 4 定位为面向不同硬件和使用场景的开源模型家族。这对本地开发很重要,因为不是所有任务都需要同一个模型。
在我的工作流里,有四项能力特别关键。
第一,模型尺寸变成路由决策。有时我只想快速确认一个函数,有时想要对跨模块改动做深度 review。这是不同的任务。
第二,更长的上下文改变了模型处理代码的方式。一个有用的编程助手需要理解代码规范、邻近文件、之前的决策和测试结构。
第三,agent 需要的不仅是好的文本生成。编程 agent 必须持有指令、使用工具、读取结果、自我修正。模型重要,周围的架构同样重要。
第四,多模态改变了软件任务的描述方式。有时上下文不在 .py 或 .ts 文件里,而是一张 UI 崩了的截图、一张架构图、一个线框、生成的素材、一张图表,或者错误截图。
热门跟贴