CodeBuilder —— 在本地 GPU 上运行你的 AI 编程智能体

作者:澎涛 | 分类:科技 | 发布时间:2026-07-25 10:52:58 | 阅读:11 | 点赞:0 | 点踩:0
标签: 编程智能体

CodeBuilder —— 在本地 GPU 上运行你的 AI 编程智能体

开源项目 | Node.js + Ollama | 任务管理 | 流式对话 | 终端调试 | 沙箱执行

引言

2024 年,AI 编程助手已经不算新鲜事物。GitHub Copilot、Cursor、Claude Code……选择很多,但它们都有一个共同点:你的代码必须离开本地,上传到别人的服务器。对于企业内网环境、隐私敏感项目,或者 simply 不想每个月交 20 美元的人来说,这不是一个理想的选择。

CodeBuilder 的诞生,源于一个朴素的想法:既然本地已经有一块 RTX 4060,为什么不让它直接运行 AI 来帮我写代码?不需要 API Key,不需要网络请求,甚至不需要联网。你只需要 Ollama 和一个浏览器。


项目概览

CodeBuilder 是一个基于 Node.js 的 AI 编程智能体,后端通过 Ollama HTTP API 直接调用本地大语言模型,前端是一个纯原生 JavaScript 构建的 Web IDE 界面。它不依赖 LangChain、不依赖任何第三方 AI 服务,所有代码生成、对话推理、文件管理都在本地完成。


功能说明🗂️ 分任务项目管理每个任务独立目录,源代码、执行输出、对话历史分门别类存放,支持子目录结构💬 流式对话交互输入提示词后立即看到 "CodeBuilder 正在思考…",token 级流式输出,体验接近 ChatGPT🖥️ 集成终端调试内置终端面板,支持实时命令执行。生成 .NET 项目后直接 dotnet run,无需离开界面🛡️ 代码沙箱执行JavaScript、Python、Shell 等代码在隔离临时目录中运行,30 秒超时保护,执行完自动清理

系统架构

CodeBuilder 采用前后端分离架构,后端 Express 提供 REST API 和 SSE 流式推送,前端纯原生 JavaScript 实现所有交互逻辑,零外部 CDN 依赖。

┌──────────────┐     HTTP/SSE      ┌─────────────────────────────┐     /api/chat     ┌──────────────┐
│              │ ───────────────▶ │                             │ ──────────────▶ │              │
│  Web IDE     │                   │       Node.js + Express      │                 │    Ollama    │
│  浏览器       │                   │                             │                 │              │
│  HTML/CSS/JS │ ◀─────────────── │  REST API 路由               │                 │  qwen2.5-    │
│              │     SSE 流式       │  ├─ Chat 服务 (SSE 流式)     │                 │  coder:7b    │
└──────────────┘                   │  ├─ TaskManager (文件管理)   │                 │  gemma3:4b   │
                                    │  ├─ SandboxService (沙箱)   │                 │  qwen3:4b     │
                                    │  └─ TerminalService (终端)   │                 └──────────────┘
                                    └─────────────────────────────┘
                                           │                │
                                           ▼                ▼
                                    本地磁盘 (tasks/)   sandbox/ 临时目录

技术栈: Node.js 22 · Express 4 · Ollama · Qwen2.5-Coder · Gemma3 · SSE · child_process · fs-extra


核心功能详解

1. 智能体模式:不只是问答,是编程

市面上很多"AI 编程工具"本质上只是代码补全或问答机器人。CodeBuilder 从设计之初就把自己定位为一个编程智能体:当你说"用 C# .NET 8 写一个 WPF 计算器"时,它不会只给你一段代码片段,而是会:

  • 规划完整的项目文件结构
  • 按依赖顺序生成文件(.csproj → App.xaml → MainWindow.xaml → ViewModels/…)
  • 确保 namespace、x:Class、using 引用互相匹配
  • 每个代码块自动标注 // file: filename.ext
  • 自动提取并保存到任务目录的正确位置
系统提示词设计:每次对话开始时,CodeBuilder 会自动注入系统提示词,告诉 AI:"你是一个编程智能体,必须输出完整文件,必须标注文件路径,修改已有文件时必须输出完整内容而非片段。" 同时,当前任务的已有文件列表也会作为上下文附加进去,让 AI 知道"我正在修改一个已存在的项目"。


2. 文件树:目录层级,一目了然

生成的代码文件按任务目录组织,支持完整的子目录结构。文件树面板实时显示当前任务的所有文件和目录,点击目录可折叠/展开,点击文件打开独立代码查看弹窗。不再是对话流里混着代码块,而是清晰的文件系统视图。


3. 集成终端:生成即运行

最影响 AI 编程效率的环节,往往是"生成完代码后怎么运行"。CodeBuilder 在界面底部内置了一个终端面板,直接连接 child_process.spawn,通过 SSE 实时推送 stdout/stderr。

对于 .NET 项目,它会自动检测 .csproj 文件并在项目目录执行 dotnet run;对于 Node.js 项目执行 node;对于 Python 执行 python。编译错误、运行时异常,直接在终端中看到,然后你把报错贴回对话框,AI 就会输出修复后的完整文件。

$ dotnet run
  正在生成...
  Calculator -> D:\tasks\...\Calculator.dll
Unhandled exception: System.NullReferenceException
   at Calculator.MainWindow..ctor()
[进程退出,代码: 1]
$

4. 多模型支持,按场景切换

CodeBuilder 默认使用 qwen2.5-coder:7b 作为编码模型(RTX 4060 8GB 显存的甜点选择),同时支持 gemma3:4b 和 qwen3:4b 作为轻量备选。你可以在每条消息前切换模型,让大模型和小模型各司其职。


模型参数量显存占用适用场景qwen2.5-coder:7b7.6B (Q4_K_M)~5GB代码生成(推荐)gemma3:4b4.3B (Q4_K_M)~3GB轻量通用任务qwen3:4b4.0B (Q4_K_M)~2.5GB快速响应

技术亮点

零外部依赖的前端

整个前端没有使用 React、Vue、Angular 或任何 UI 框架,也没有引入 jQuery、Tailwind 或 CDN 资源。所有交互逻辑用原生 JavaScript 手写,CSS 用 CSS Variables 管理主题,打包体积为零 —— 因为根本不用打包。

这个选择在一开始看起来是"偷懒",但在企业内网环境中却成为了一项关键优势:无需 npm install 前端依赖,无需配置构建工具,一个静态 HTML 文件就能跑。

// 没有 import React from 'react'
// 没有 npm run build
// 没有 webpack.config.js

const state = {
  tasks: [],
  currentTask: null,
  messages: [],
  isStreaming: false
};

// 原生 fetch + ReadableStream
const reader = res.body.getReader();

流式 SSE 的精妙之处

Ollama 的 /api/chat 接口返回 NDJSON 流,每行是一个 JSON 对象。前端使用 fetch().body.getReader() 读取 ReadableStream,逐行解析后通过自定义 SSE 格式推送给 UI。这里的关键是解析器必须足够鲁棒:要处理缓冲区残留、不完整的 JSON 行、以及模型偶尔输出的非法字符。


文件名智能推断

AI 输出代码块时并不总是标注文件名。CodeBuilder 实现了四级文件名推断策略:从代码注释提取(// file: Program.cs)、从语言标签提取(```csharp:Program.cs)、从代码内容推断(C# class 名 → 文件名)、兜底命名。覆盖 50+ 种语言扩展名映射,从常见的 js/py/cs 到 Dockerfile、Cargo.toml、go.mod 等特殊文件。


谁适合用 CodeBuilder

适用人群说明🏢 企业内网开发者无法访问外网 API,但有本地 GPU 和 Ollama。CodeBuilder 让内网环境也能享受 AI 编程辅助🔒 隐私敏感项目代码不能离开本地机器。所有推理在本地完成,对话历史保存在本地磁盘,不上传任何数据💰 预算有限的个人开发者不想每月支付 Copilot/Cursor 订阅费。一次性投入 GPU,长期免费使用本地模型🧪 AI 模型实验者想对比不同本地模型(Qwen、Gemma、Llama 等)的代码生成能力。CodeBuilder 支持任意 Ollama 模型

快速开始

前提:已安装 Node.js 和 Ollama,并拉取了至少一个模型(如 qwen2.5-coder:7b)。

  1. 克隆项目 — 将项目下载到本地,进入目录
  2. 安装依赖 — 运行 npm install 安装 Express、CORS、fs-extra 等后端依赖
  3. 配置模型 — 编辑 .env 文件,确认 OLLAMA_HOST 和 DEFAULT_MODEL 指向你的本地设置
  4. 启动服务 — 运行 npm start,打开浏览器访问 http://localhost:3000
# 安装依赖
npm install

# 启动服务
npm start

# 开发模式(自动重启)
npm run dev

结语

CodeBuilder 不是一个想取代 Copilot 或 Cursor 的工具。它的定位很明确:在本地免费离线的环境下,给你一个可用的 AI 编程助手。7B 参数的本地模型当然不如 Claude 3.5 Sonnet 聪明,但对于中小型项目、原型开发、学习实验来说,已经足够好用。

更重要的是,它证明了"本地 AI 编程"这件事是完全可行的。随着模型效率持续提升(Qwen3、Gemma3 的 4B 模型已经能在消费级显卡上跑出不错的速度),以及量化技术的进步,本地运行大模型写代码的体验只会越来越好。

如果你有一块闲置的 GPU,不妨试试看。让 RTX 4060 不只是用来打游戏 —— 它也可以是你的编程搭档。


CodeBuilder — AI Coding Agent with Local Ollama LLMs Built with Node.js + Express + 原生 JavaScript


评论 (0)

登录 后发表评论

暂无评论