<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI开发工具 on 诚实雷达</title><link>https://honestradar.com/tags/ai%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/</link><description>Recent content in AI开发工具 on 诚实雷达</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 15 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://honestradar.com/tags/ai%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml"/><item><title>用 VPS 搭建 AI 编程助手工作台：自托管 Continue.dev + 代码解释器 + 私有 LLM</title><link>https://honestradar.com/vps-hosting/ai-coding-agent-vps-self-host-2026/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://honestradar.com/vps-hosting/ai-coding-agent-vps-self-host-2026/</guid><description>&lt;img src="https://honestradar.com/images/ai-coding-agent-vps-self-host-2026.jpg" alt="Featured image of post 用 VPS 搭建 AI 编程助手工作台：自托管 Continue.dev + 代码解释器 + 私有 LLM" /&gt;&lt;h2 id="导语cursor-每月-20-刀你的代码数据真的安全吗"&gt;导语：Cursor 每月 20 刀，你的代码数据真的安全吗？
&lt;/h2&gt;&lt;p&gt;你用 Cursor、Copilot 或 Claude Code 写代码的时候有没有想过——你的私有代码仓库、API Key、客户数据，全都在别人的服务器上跑了一遍推理。对于个人开发者来说这可能是个小问题，但对于做 SaaS 产品的团队、处理客户数据的开发者，或者对代码安全有严格要求的独立创业者来说，这就不是一个能忽视的风险了。&lt;/p&gt;
&lt;p&gt;2026 年，开源 AI 编程模型已经成熟到可以在普通 VPS 上流畅运行。你不需要花 $20/月订阅 Cursor Pro，也不需要把代码送到云端——一台 $10/月、4核8GB 的 VPS 就能搭建一套完整的 &lt;strong&gt;AI 编程工作台&lt;/strong&gt;：VS Code 在线版 + Continue.dev 插件 + 自托管代码解释器 + 私有 LLM 推理。&lt;/p&gt;
&lt;p&gt;本文手把手教你从零搭建这套方案，涵盖 VPS 选型、环境部署、模型选择和成本对比。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;说明&lt;/strong&gt;：本文包含 VPS 服务商 affiliate 链接。通过链接购买，我们可能获得佣金，但不会影响你的价格。我们只推荐适合实际部署场景的海外服务。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="什么是-ai-编程工作台"&gt;什么是 AI 编程工作台？
&lt;/h2&gt;&lt;p&gt;传统的 IDE（VS Code、JetBrains）本地运行，AI 能力来自云端 API。而 &lt;strong&gt;AI 编程工作台&lt;/strong&gt; 是把整个开发环境搬到 VPS 上，包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;在线 IDE&lt;/strong&gt; — 通过浏览器访问 VS Code（code-server），随时随地开发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 编码助手&lt;/strong&gt; — Continue.dev 等开源插件，支持多种 LLM 后端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;私有代码解释器&lt;/strong&gt; — 在 VPS 上运行沙箱化的 Python/Node 代码执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自托管 LLM&lt;/strong&gt; — 本地跑 Llama 3.1、Qwen 或 DeepSeek，不调用外部 API&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套方案的核心理念是：&lt;strong&gt;你的代码、你的数据、你的推理，全部在你自己的 VPS 上完成。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="vps-选型多少钱能跑起-ai-编程"&gt;VPS 选型：多少钱能跑起 AI 编程？
&lt;/h2&gt;&lt;p&gt;AI 编程工作台对 VPS 的要求比传统网站高不少——你需要足够的 RAM 来加载 LLM 模型，足够的 CPU 来推理，以及稳定的网络来维持 SSH 和浏览器连接。&lt;/p&gt;
&lt;h3 id="最低配置-vs-推荐配置"&gt;最低配置 vs 推荐配置
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;配置级别&lt;/th&gt;
 &lt;th&gt;vCPU&lt;/th&gt;
 &lt;th&gt;RAM&lt;/th&gt;
 &lt;th&gt;存储&lt;/th&gt;
 &lt;th&gt;月价区间&lt;/th&gt;
 &lt;th&gt;能做什么&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;入门级&lt;/td&gt;
 &lt;td&gt;2核&lt;/td&gt;
 &lt;td&gt;4GB&lt;/td&gt;
 &lt;td&gt;40GB NVMe&lt;/td&gt;
 &lt;td&gt;$4-6&lt;/td&gt;
 &lt;td&gt;code-server + 本地小模型（7B 量化）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;推荐级&lt;/td&gt;
 &lt;td&gt;4核&lt;/td&gt;
 &lt;td&gt;8GB&lt;/td&gt;
 &lt;td&gt;80GB NVMe&lt;/td&gt;
 &lt;td&gt;$8-15&lt;/td&gt;
 &lt;td&gt;完整方案：code-server + Continue.dev + 代码解释器 + 7B/13B 模型&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;进阶级&lt;/td&gt;
 &lt;td&gt;4核&lt;/td&gt;
 &lt;td&gt;16GB&lt;/td&gt;
 &lt;td&gt;160GB NVMe&lt;/td&gt;
 &lt;td&gt;$20-30&lt;/td&gt;
 &lt;td&gt;跑 13B 未量化模型或多模型切换&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="推荐服务商"&gt;推荐服务商
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;RackNerd&lt;/strong&gt; 在这个价位段性价比最高，4核8GB 配置月付约 $8-10：&lt;/p&gt;
&lt;p&gt;👉 &lt;a class="link" href="https://racknerd.com/aff.php?aff=19978" target="_blank" rel="noopener"
 &gt;Check RackNerd VPS Plans&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hostinger&lt;/strong&gt; 的 KVM 2 计划（2核4GB）月付约 $6，KVM 4（4核8GB）约 $12，面板易用：&lt;/p&gt;
&lt;p&gt;👉 &lt;a class="link" href="https://www.hostinger.com/vps-hosting?REFERRALCODE=JZ1ZL8465QCG" target="_blank" rel="noopener"
 &gt;Check Hostinger VPS Deals&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vultr&lt;/strong&gt; 提供灵活的按小时计费，4核8GB 纽约/新加坡节点约 $15/月，适合需要快速启停的场景：&lt;/p&gt;
&lt;p&gt;👉 &lt;a class="link" href="https://www.vultr.com/?ref=9706229" target="_blank" rel="noopener"
 &gt;Check Vultr VPS Plans&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-1部署-code-server在线-vs-code"&gt;Step 1：部署 code-server（在线 VS Code）
&lt;/h2&gt;&lt;p&gt;code-server 是 VS Code 的服务器版本，让你通过浏览器使用完整的 VS Code 体验。&lt;/p&gt;
&lt;h3 id="一键安装"&gt;一键安装
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# SSH 到你的 VPS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh root@your-vps-ip
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装 code-server（官方推荐方式）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://code-server.dev/install.sh | sh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 启动服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;code-server --bind-addr 0.0.0.0:8080 --auth password
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装完成后，code-server 会生成一个随机密码。你可以用 &lt;code&gt;~/.config/code-server/config.yaml&lt;/code&gt; 设置固定密码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;bind-addr&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0.0.0.0&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;auth&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;password&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;your-strong-password-here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;cert&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="配置反向代理nginx--ssl"&gt;配置反向代理（Nginx + SSL）
&lt;/h3&gt;&lt;p&gt;为了让 code-server 通过域名安全访问，配置 Nginx 反向代理：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装 Nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt install -y nginx certbot python3-certbot-nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建 Nginx 配置 /etc/nginx/sites-available/code-server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;server&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;listen&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server_name&lt;/span&gt; &lt;span style="color:#e6db74"&gt;code.yourdomain.com&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;location&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_pass&lt;/span&gt; &lt;span style="color:#e6db74"&gt;http://127.0.0.1:8080&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;Upgrade&lt;/span&gt; $http_upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;Connection&lt;/span&gt; &lt;span style="color:#e6db74"&gt;upgrade&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;Host&lt;/span&gt; $host;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;X-Real-IP&lt;/span&gt; $remote_addr;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 申请 SSL 证书&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;certbot --nginx -d code.yourdomain.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 重启 Nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现在你可以通过 &lt;code&gt;https://code.yourdomain.com&lt;/code&gt; 访问在线 VS Code 了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-2安装-continuedev-插件"&gt;Step 2：安装 Continue.dev 插件
&lt;/h2&gt;&lt;p&gt;Continue.dev 是目前最成熟的开源 AI 编码助手，支持 VS Code、JetBrains、Neovim 等编辑器，并且可以对接多种 LLM 后端（本地模型、OpenAI、Claude、Gemini 等）。&lt;/p&gt;
&lt;h3 id="在-code-server-中安装"&gt;在 code-server 中安装
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;https://code.yourdomain.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;进入 Extensions 市场，搜索 &amp;ldquo;Continue&amp;rdquo;&lt;/li&gt;
&lt;li&gt;点击 Install&lt;/li&gt;
&lt;li&gt;安装后，Continue 图标会出现在编辑器左侧栏&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="配置-continuedev"&gt;配置 Continue.dev
&lt;/h3&gt;&lt;p&gt;Continue 的核心配置文件是 &lt;code&gt;.continue/config.json&lt;/code&gt;（在项目根目录或全局配置）。以下是适配自托管 LLM 的配置示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;models&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Qwen 2.5 7B (本地)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;qwen2.5:7b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Llama 3.1 8B (本地)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;llama3.1:8b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;GPT-4o (云端备用)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;openai&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;gpt-4o&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;apiKey&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;sk-your-key-here&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;tabAutocompleteModel&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Codestral (快速补全)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;codestral:latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;embeddingsProvider&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;nomic-embed-text:latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;关键点&lt;/strong&gt;：Continue.dev 的优势在于 &lt;strong&gt;模型可切换&lt;/strong&gt;——你可以把本地小模型作为默认，遇到复杂问题时一键切换到 GPT-4o 或 Claude，既省钱又不牺牲能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-3自托管-ollama本地-llm-推理引擎"&gt;Step 3：自托管 Ollama（本地 LLM 推理引擎）
&lt;/h2&gt;&lt;p&gt;Ollama 是 2026 年最流行的本地 LLM 推理框架，一条命令就能跑起来，支持 Llama 3.1、Qwen 2.5、Mistral、Codestral 等数十个模型。&lt;/p&gt;
&lt;h3 id="安装-ollama"&gt;安装 Ollama
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 一键安装 Ollama&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://ollama.com/install.sh | sh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 启动 Ollama 服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl start ollama
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl enable ollama
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拉取模型（以 Qwen 2.5 7B 为例）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ollama pull qwen2.5:7b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拉取代码专用模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ollama pull codestral:latest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拉取嵌入模型（用于 Continue 的 RAG）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ollama pull nomic-embed-text:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="模型选择指南"&gt;模型选择指南
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;模型&lt;/th&gt;
 &lt;th&gt;参数量&lt;/th&gt;
 &lt;th&gt;量化后 RAM 占用&lt;/th&gt;
 &lt;th&gt;适合场景&lt;/th&gt;
 &lt;th&gt;推理速度（4核VPS）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Qwen 2.5 7B&lt;/td&gt;
 &lt;td&gt;7B&lt;/td&gt;
 &lt;td&gt;~5GB&lt;/td&gt;
 &lt;td&gt;通用编码、对话&lt;/td&gt;
 &lt;td&gt;~15 tok/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Llama 3.1 8B&lt;/td&gt;
 &lt;td&gt;8B&lt;/td&gt;
 &lt;td&gt;~6GB&lt;/td&gt;
 &lt;td&gt;通用编码、推理&lt;/td&gt;
 &lt;td&gt;~12 tok/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Codestral Mamba&lt;/td&gt;
 &lt;td&gt;7.8B&lt;/td&gt;
 &lt;td&gt;~4GB&lt;/td&gt;
 &lt;td&gt;代码补全（极快）&lt;/td&gt;
 &lt;td&gt;~30 tok/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;DeepSeek Coder V2&lt;/td&gt;
 &lt;td&gt;16B&lt;/td&gt;
 &lt;td&gt;~10GB&lt;/td&gt;
 &lt;td&gt;复杂代码生成&lt;/td&gt;
 &lt;td&gt;~8 tok/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Gemma 2 9B&lt;/td&gt;
 &lt;td&gt;9B&lt;/td&gt;
 &lt;td&gt;~6GB&lt;/td&gt;
 &lt;td&gt;文档理解、分析&lt;/td&gt;
 &lt;td&gt;~10 tok/s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;推荐组合&lt;/strong&gt;：日常编码用 Qwen 2.5 7B 或 Codestral，复杂任务切换到云端 API。如果你的 VPS 内存达到 16GB，可以尝试 DeepSeek Coder V2 或 Gemma 2 27B。&lt;/p&gt;
&lt;h3 id="通过-api-访问-ollama"&gt;通过 API 访问 Ollama
&lt;/h3&gt;&lt;p&gt;Ollama 启动后会自动监听 &lt;code&gt;http://localhost:11434&lt;/code&gt;，Continue.dev 和其他工具都通过 OpenAI-compatible API 与之通信：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 测试 Ollama API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl http://localhost:11434/api/chat -d &lt;span style="color:#e6db74"&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;model&amp;#34;: &amp;#34;qwen2.5:7b&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;stream&amp;#34;: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="step-4搭建代码解释器沙箱"&gt;Step 4：搭建代码解释器沙箱
&lt;/h2&gt;&lt;p&gt;代码解释器（Code Interpreter）是 AI 编程工作台的进阶功能——它能让 LLM 在你的 VPS 上安全地执行 Python/Node 代码，自动生成图表、处理数据、运行测试。&lt;/p&gt;
&lt;h3 id="方案-ajupyter-notebook--docker-隔离"&gt;方案 A：Jupyter Notebook + Docker 隔离
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建 Docker Compose 文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;gt; ~/code-interpreter/docker-compose.yml &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;version: &amp;#39;3.8&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; jupyter:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; image: jupyter/scipy-notebook:latest
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - &amp;#34;8888:8888&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; environment:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - JUPYTER_ENABLE_LB=1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - GRANT_SUDO=yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - ./notebooks:/home/jovyan/work
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; deploy:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; resources:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; limits:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; memory: 4G
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; cpus: &amp;#39;2&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/code-interpreter &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过 &lt;code&gt;http://your-vps-ip:8888&lt;/code&gt; 访问 Jupyter，LLM 可以通过 API 调用 Jupyter 执行代码单元。&lt;/p&gt;
&lt;h3 id="方案-b轻量级-python-代码执行-api"&gt;方案 B：轻量级 Python 代码执行 API
&lt;/h3&gt;&lt;p&gt;如果你只需要简单的代码执行能力，可以搭建一个轻量 API：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建代码执行服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/code-executor &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; cd ~/code-executor
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;gt; server.py &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;PYEOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;from fastapi import FastAPI
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;from pydantic import BaseModel
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;import subprocess
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;import json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;import time
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;app = FastAPI()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;class CodeRequest(BaseModel):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; code: str
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; language: str = &amp;#34;python&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; timeout: int = 30
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;@app.post(&amp;#34;/execute&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;def execute_code(req: CodeRequest):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; start = time.time()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; try:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; result = subprocess.run(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; [&amp;#34;python3&amp;#34;, &amp;#34;-c&amp;#34;, req.code],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; capture_output=True, text=True,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; timeout=req.timeout
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; return {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;stdout&amp;#34;: result.stdout,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;stderr&amp;#34;: result.stderr,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;returncode&amp;#34;: result.returncode,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;elapsed_seconds&amp;#34;: round(time.time() - start, 3)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; except subprocess.TimeoutExpired:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; return {&amp;#34;error&amp;#34;: &amp;#34;timeout&amp;#34;, &amp;#34;elapsed_seconds&amp;#34;: req.timeout}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;PYEOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install fastapi uvicorn
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 启动服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uvicorn server:app --host 0.0.0.0 --port &lt;span style="color:#ae81ff"&gt;9000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -X POST http://localhost:9000/execute &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -H &lt;span style="color:#e6db74"&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -d &lt;span style="color:#e6db74"&gt;&amp;#39;{&amp;#34;code&amp;#34;: &amp;#34;print(\\\&amp;#34;Hello from VPS!\\\&amp;#34;); import sys; print(sys.version)&amp;#34;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;安全提示&lt;/strong&gt;：代码执行沙箱务必限制内存和 CPU 使用（Docker cgroups 或 systemd resource limits），防止恶意代码耗尽服务器资源。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-5配置反向代理和域名"&gt;Step 5：配置反向代理和域名
&lt;/h2&gt;&lt;p&gt;为了让整套工作台通过域名安全访问，建议用 Nginx 做反向代理：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装 Nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install -y nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建站点配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;gt; /etc/nginx/sites-available/ai-workspace &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;NGINX&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; listen 80;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; server_name ai.yourdomain.com;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; # code-server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; location / {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_pass http://127.0.0.1:8080;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_set_header Upgrade $http_upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_set_header Connection upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_set_header Host $host;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_set_header X-Real-IP $remote_addr;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; # Ollama API（限制外部直接访问）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; location /api/ {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_pass http://127.0.0.1:11434;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_set_header Host $host;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; # 代码执行 API
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; location /exec/ {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_pass http://127.0.0.1:9000;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; proxy_set_header Host $host;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;NGINX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ln -s /etc/nginx/sites-available/ai-workspace /etc/nginx/sites-enabled/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nginx -t &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; systemctl reload nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 申请 SSL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;certbot --nginx -d ai.yourdomain.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="成本对比自建-vs-订阅"&gt;成本对比：自建 vs 订阅
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;方案&lt;/th&gt;
 &lt;th&gt;月成本&lt;/th&gt;
 &lt;th&gt;隐私&lt;/th&gt;
 &lt;th&gt;灵活性&lt;/th&gt;
 &lt;th&gt;适合人群&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Cursor Pro&lt;/td&gt;
 &lt;td&gt;$20/月&lt;/td&gt;
 &lt;td&gt;❌ 代码上云&lt;/td&gt;
 &lt;td&gt;锁定 Cursor&lt;/td&gt;
 &lt;td&gt;个人开发者&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;GitHub Copilot&lt;/td&gt;
 &lt;td&gt;$10/月&lt;/td&gt;
 &lt;td&gt;❌ 代码上云&lt;/td&gt;
 &lt;td&gt;仅限 VS Code&lt;/td&gt;
 &lt;td&gt;VS Code 用户&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Claude Code&lt;/td&gt;
 &lt;td&gt;$20/月&lt;/td&gt;
 &lt;td&gt;❌ 代码上云&lt;/td&gt;
 &lt;td&gt;命令行专用&lt;/td&gt;
 &lt;td&gt;终端用户&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;自建工作台&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;$8-15/月 (VPS)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;✅ 完全私有&lt;/td&gt;
 &lt;td&gt;任意编辑器 + 任意模型&lt;/td&gt;
 &lt;td&gt;注重隐私的团队&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;自建的优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一次付费，无限使用——不像 API 按 token 计费，本地模型调用次数没有限制&lt;/li&gt;
&lt;li&gt;模型可以随时更换——Qwen、Llama、Mistral、DeepSeek，哪个好用切换哪个&lt;/li&gt;
&lt;li&gt;代码和数据完全不离开你的 VPS——适合处理客户代码、商业逻辑&lt;/li&gt;
&lt;li&gt;可以叠加多个模型——简单任务用 7B 模型（快且省资源），复杂任务用 13B+ 模型&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="进阶搭建-ai-编程知识库"&gt;进阶：搭建 AI 编程知识库
&lt;/h2&gt;&lt;p&gt;有了自托管 LLM 之后，你可以进一步用 Continue.dev 的 &lt;strong&gt;RAG（检索增强生成）&lt;/strong&gt; 功能，让 AI 助手理解你的整个代码库：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Continue.dev 内置了代码索引功能，会自动扫描你的项目文件&lt;/li&gt;
&lt;li&gt;搭配 &lt;code&gt;nomic-embed-text&lt;/code&gt; 嵌入模型，AI 能精准定位相关代码片段&lt;/li&gt;
&lt;li&gt;在聊天中输入 &amp;ldquo;@workspace&amp;rdquo; 即可在整个项目上下文中提问&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;你: @workspace 帮我找到处理用户认证的所有文件
AI: 找到了以下相关文件：
 - src/auth/login.ts (第 45-120 行)
 - src/auth/middleware.ts (第 12-67 行)
 - src/auth/token-refresh.ts (第 30-89 行)
 需要我详细分析哪个文件？
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这对于大型项目的代码理解和重构非常有用，而且所有索引和推理都在你的 VPS 上完成。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="常见问题"&gt;常见问题
&lt;/h2&gt;&lt;h3 id="q4核8gb-的-vps-跑-llm-会不会很慢"&gt;Q：4核8GB 的 VPS 跑 LLM 会不会很慢？
&lt;/h3&gt;&lt;p&gt;7B 参数的模型在量化（Q4_K_M）后大约占用 5-6GB RAM，推理速度约 10-15 tokens/秒。对于代码补全和日常对话完全够用。如果遇到复杂推理任务，可以切换到云端 API 作为后备。&lt;/p&gt;
&lt;h3 id="q需要-gpu-吗"&gt;Q：需要 GPU 吗？
&lt;/h3&gt;&lt;p&gt;对于 7B-13B 模型，CPU 推理已经够用。GPU 主要加速 30B+ 的大模型。如果你的 VPS 支持 GPU 附加（Vultr GPU 实例约 $0.6/小时），可以考虑，但大多数编码场景 CPU 就够了。&lt;/p&gt;
&lt;h3 id="q如何备份我的-ai-编程工作台"&gt;Q：如何备份我的 AI 编程工作台？
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;code-server 配置：&lt;code&gt;~/.config/code-server/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ollama 模型：&lt;code&gt;~/.ollama/models/&lt;/code&gt;（可以用 &lt;code&gt;ollama push&lt;/code&gt; 推送到远程仓库）&lt;/li&gt;
&lt;li&gt;项目代码：Git 远程仓库&lt;/li&gt;
&lt;li&gt;建议每月做一次 &lt;code&gt;tar czf backup-$(date +%Y%m%d).tar.gz ~/.config/code-server ~/.ollama&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="q这套方案能跑-deepseek-r1-这种推理模型吗"&gt;Q：这套方案能跑 DeepSeek R1 这种推理模型吗？
&lt;/h3&gt;&lt;p&gt;可以，但需要更多内存。DeepSeek R1 Distill Qwen 32B 量化后约需 20GB+ RAM，所以需要 16GB 以上的 VPS 或 Dedicated Server。RackNerd 的专用服务器方案（aff=19978）提供了高性价比的 16GB+ 选项。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="总结你的-ai-编程工作台应该在你自己的-vps-上"&gt;总结：你的 AI 编程工作台，应该在你自己的 VPS 上
&lt;/h2&gt;&lt;p&gt;2026 年的开源 AI 生态已经成熟到足以支撑一套完整的自托管编程工作台。你不需要为 Cursor Pro 或 GitHub Copilot 支付昂贵的月费，也不需要把代码送到云端。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;搭建这套方案的最低门槛&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VPS：4核8GB，$8-15/月（RackNerd / Hostinger / Vultr）&lt;/li&gt;
&lt;li&gt;软件：code-server + Ollama + Continue.dev（全部免费开源）&lt;/li&gt;
&lt;li&gt;时间：30 分钟部署完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;核心优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;隐私安全——代码和数据完全私有&lt;/li&gt;
&lt;li&gt;成本可控——一次 VPS 费用，无限模型调用&lt;/li&gt;
&lt;li&gt;灵活扩展——随时添加新模型、新工具、新服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👉 &lt;a class="link" href="https://racknerd.com/aff.php?aff=19978" target="_blank" rel="noopener"
 &gt;在 RackNerd 上搭建你的 AI 编程工作台&lt;/a&gt;
👉 &lt;a class="link" href="https://www.hostinger.com/vps-hosting?REFERRALCODE=JZ1ZL8465QCG" target="_blank" rel="noopener"
 &gt;试试 Hostinger VPS（易用面板）&lt;/a&gt;
👉 &lt;a class="link" href="https://www.vultr.com/?ref=9706229" target="_blank" rel="noopener"
 &gt;Vultr 按小时计费，灵活启停&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>